diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-01-18 03:44:49 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-01-20 13:35:59 +0200 |
commit | 1d929967b7d5623ec49f0bbed3abe4fea480011e (patch) | |
tree | 5d37ad5cde2a0e2391c0f5dbe3559833172847a0 /src/libcamera/thread.cpp | |
parent | a39b91d44edfc737ddb26003f663ba26ee14e785 (diff) |
libcamera: thread: Add a method to return the ID of the current thread
The current thread ID is useful when logging message to debug
concurrency issues. Add a method to retrieve it.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/libcamera/thread.cpp')
-rw-r--r-- | src/libcamera/thread.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libcamera/thread.cpp b/src/libcamera/thread.cpp index 18ebd16a..fe32cd67 100644 --- a/src/libcamera/thread.cpp +++ b/src/libcamera/thread.cpp @@ -9,6 +9,9 @@ #include <atomic> #include <list> +#include <unistd.h> +#include <sys/syscall.h> +#include <sys/types.h> #include <libcamera/event_dispatcher.h> @@ -62,6 +65,7 @@ private: Thread *thread_; bool running_; + pid_t tid_; Mutex mutex_; @@ -108,6 +112,7 @@ ThreadData *ThreadData::current() * started, set it here. */ ThreadData *data = mainThread.data_; + data->tid_ = syscall(SYS_gettid); currentThreadData = data; return data; } @@ -189,6 +194,7 @@ void Thread::startThread() */ thread_local ThreadCleaner cleaner(this, &Thread::finishThread); + data_->tid_ = syscall(SYS_gettid); currentThreadData = data_; run(); @@ -309,6 +315,20 @@ Thread *Thread::current() } /** + * \brief Retrieve the ID of the current thread + * + * The thread ID corresponds to the Linux thread ID (TID) as returned by the + * gettid system call. + * + * \return The ID of the current thread + */ +pid_t Thread::currentId() +{ + ThreadData *data = ThreadData::current(); + return data->tid_; +} + +/** * \brief Set the event dispatcher * \param[in] dispatcher Pointer to the event dispatcher * |