v4l2: v4l2_camera: Apply clang thread safety annotation
This annotates member functions and variables of V4L2Camera 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>
This commit is contained in:
committed by
Umang Jain
parent
0efb2c17c1
commit
86735b12ec
@@ -71,11 +71,10 @@ std::vector<V4L2Camera::Buffer> V4L2Camera::completedBuffers()
|
||||
{
|
||||
std::vector<Buffer> v;
|
||||
|
||||
bufferLock_.lock();
|
||||
MutexLocker lock(bufferLock_);
|
||||
for (std::unique_ptr<Buffer> &metadata : completedBuffers_)
|
||||
v.push_back(*metadata.get());
|
||||
completedBuffers_.clear();
|
||||
bufferLock_.unlock();
|
||||
|
||||
return v;
|
||||
}
|
||||
@@ -278,7 +277,7 @@ int V4L2Camera::qbuf(unsigned int index)
|
||||
void V4L2Camera::waitForBufferAvailable()
|
||||
{
|
||||
MutexLocker locker(bufferMutex_);
|
||||
bufferCV_.wait(locker, [&] {
|
||||
bufferCV_.wait(locker, [&]() LIBCAMERA_TSA_REQUIRES(bufferMutex_) {
|
||||
return bufferAvailableCount_ >= 1 || !isRunning_;
|
||||
});
|
||||
if (isRunning_)
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
void bind(int efd);
|
||||
void unbind();
|
||||
|
||||
std::vector<Buffer> completedBuffers();
|
||||
std::vector<Buffer> completedBuffers() LIBCAMERA_TSA_EXCLUDES(bufferLock_);
|
||||
|
||||
int configure(libcamera::StreamConfiguration *streamConfigOut,
|
||||
const libcamera::Size &size,
|
||||
@@ -58,13 +58,14 @@ public:
|
||||
|
||||
int qbuf(unsigned int index);
|
||||
|
||||
void waitForBufferAvailable();
|
||||
bool isBufferAvailable();
|
||||
void waitForBufferAvailable() LIBCAMERA_TSA_EXCLUDES(bufferMutex_);
|
||||
bool isBufferAvailable() LIBCAMERA_TSA_EXCLUDES(bufferMutex_);
|
||||
|
||||
bool isRunning();
|
||||
|
||||
private:
|
||||
void requestComplete(libcamera::Request *request);
|
||||
void requestComplete(libcamera::Request *request)
|
||||
LIBCAMERA_TSA_EXCLUDES(bufferLock_);
|
||||
|
||||
std::shared_ptr<libcamera::Camera> camera_;
|
||||
std::unique_ptr<libcamera::CameraConfiguration> config_;
|
||||
@@ -77,11 +78,12 @@ private:
|
||||
std::vector<std::unique_ptr<libcamera::Request>> requestPool_;
|
||||
|
||||
std::deque<libcamera::Request *> pendingRequests_;
|
||||
std::deque<std::unique_ptr<Buffer>> completedBuffers_;
|
||||
std::deque<std::unique_ptr<Buffer>> completedBuffers_
|
||||
LIBCAMERA_TSA_GUARDED_BY(bufferLock_);
|
||||
|
||||
int efd_;
|
||||
|
||||
libcamera::Mutex bufferMutex_;
|
||||
libcamera::ConditionVariable bufferCV_;
|
||||
unsigned int bufferAvailableCount_;
|
||||
unsigned int bufferAvailableCount_ LIBCAMERA_TSA_GUARDED_BY(bufferMutex_);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user