lkml.org 
[lkml]   [2015]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] tools/liblockdep: change current_obj from thread-local storage to non thread-local storage

current_obj is declared as a thread-local storage.
This prevent to detect locking problem between multiple threads because
each thread has it's own current_obj. liblockdep can only detect locking problem in a single
thread. However, pthread_mutex_xxx, pthread_rwlock_xxx functions are mainly used for synchro
nization of data between multiple threads.
This patch changes current_obj to non thread-local storage. and current_obj.pid is getting
from getpid system call.

Signed-off-by: Eunbong Song <eunb.song@samsung.com>
---
tools/lib/lockdep/common.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/lib/lockdep/common.c b/tools/lib/lockdep/common.c
index 8ef602f..6b9a6eb 100644
--- a/tools/lib/lockdep/common.c
+++ b/tools/lib/lockdep/common.c
@@ -5,7 +5,7 @@
#include <unistd.h>
#include <sys/syscall.h>

-static __thread struct task_struct current_obj;
+static struct task_struct current_obj;

/* lockdep wants these */
bool debug_locks = true;
@@ -26,7 +26,7 @@ struct task_struct *__curr(void)
if (current_obj.pid == 0) {
/* Makes lockdep output pretty */
prctl(PR_GET_NAME, current_obj.comm);
- current_obj.pid = syscall(__NR_gettid);
+ current_obj.pid = syscall(__NR_getpid);
}

return &current_obj;
--
1.7.0.1
\
 
 \ /
  Last update: 2015-04-23 09:01    [W:0.173 / U:0.152 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site