Files
external_libcamera/include/libcamera/base/semaphore.h
Hirokazu Honda b5d26eab4d libcamera: base: semaphore: Apply clang thread safety annotation
This annotates member functions and variables of Semaphore by
clang thread safety annotations.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
2022-11-11 16:25:46 +05:30

33 lines
714 B
C++

/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* semaphore.h - General-purpose counting semaphore
*/
#pragma once
#include <libcamera/base/private.h>
#include <libcamera/base/mutex.h>
namespace libcamera {
class Semaphore
{
public:
Semaphore(unsigned int n = 0);
unsigned int available() LIBCAMERA_TSA_EXCLUDES(mutex_);
void acquire(unsigned int n = 1) LIBCAMERA_TSA_EXCLUDES(mutex_);
bool tryAcquire(unsigned int n = 1) LIBCAMERA_TSA_EXCLUDES(mutex_);
void release(unsigned int n = 1) LIBCAMERA_TSA_EXCLUDES(mutex_);
private:
Mutex mutex_;
ConditionVariable cv_;
unsigned int available_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
};
} /* namespace libcamera */