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:2.325 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site