libcamera v0.1.0+127-8e215127-dirty (2023-12-02T01:06:12+00:00)
Supporting cameras in Linux since 2019
semaphore.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * Copyright (C) 2019, Google Inc.
4 *
5 * semaphore.h - General-purpose counting semaphore
6 */
7
8#pragma once
9
10#include <libcamera/base/private.h>
11
13
14namespace libcamera {
15
17{
18public:
19 Semaphore(unsigned int n = 0);
20
21 unsigned int available() LIBCAMERA_TSA_EXCLUDES(mutex_);
22 void acquire(unsigned int n = 1) LIBCAMERA_TSA_EXCLUDES(mutex_);
23 bool tryAcquire(unsigned int n = 1) LIBCAMERA_TSA_EXCLUDES(mutex_);
24 void release(unsigned int n = 1) LIBCAMERA_TSA_EXCLUDES(mutex_);
25
26private:
27 Mutex mutex_;
29 unsigned int available_ LIBCAMERA_TSA_GUARDED_BY(mutex_);
30};
31
32} /* namespace libcamera */
std::condition_variable wrapper integrating with MutexLocker
Definition: mutex.h:130
std::mutex wrapper with clang thread safety annotation
Definition: mutex.h:122
General-purpose counting semaphore.
Definition: semaphore.h:17
void release(unsigned int n=1) LIBCAMERA_TSA_EXCLUDES(mutex_)
Release n resources.
Definition: semaphore.cpp:94
void acquire(unsigned int n=1) LIBCAMERA_TSA_EXCLUDES(mutex_)
Acquire n resources.
Definition: semaphore.cpp:56
unsigned int available() LIBCAMERA_TSA_EXCLUDES(mutex_)
Retrieve the number of available resources.
Definition: semaphore.cpp:42
Semaphore(unsigned int n=0)
Construct a semaphore with n resources.
Definition: semaphore.cpp:33
bool tryAcquire(unsigned int n=1) LIBCAMERA_TSA_EXCLUDES(mutex_)
Try to acquire n resources without blocking.
Definition: semaphore.cpp:76
Mutex classes with clang thread safety annotation.
Top-level libcamera namespace.
Definition: backtrace.h:17