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.s...@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
N떑꿩�r툤y鉉싕b쾊Ф푤v�^�)頻{.n�+돴쪐{콗喩zX㎍썳變}찠꼿쟺�&j:+v돣�쳭喩zZ+€�+zf"톒쉱�~넮녬i鎬z�췿ⅱ�?솳鈺�&�)刪f뷌^j푹y쬶끷@A첺뛴
0띠h��뭝

Reply via email to