[lkml]   [2012]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH] ptrace: add ability to get clear_tid_address
    Zero is written at clear_tid_address, when the process exits.
    This functionality is used by pthread_join().

    sys_set_tid_address() changes this address for current task.

    Before this patch clear_tid_address could not be got from user space.
    I want to dump a full state of a task, so I need this address.
    Also I think it may be useful for debugging a multithreading program.

    I am not sure that ptrace is suitable place. It may be added in prctl,
    but I think it's a bit useless and strange. I can't image a real
    situation (avoid checkpointing) when a thread will want to get own
    clear_tid_address from itself, this address is used by parent ussually.

    Signed-off-by: Andrew Vagin <>
    include/linux/ptrace.h | 3 +++
    kernel/ptrace.c | 3 +++
    2 files changed, 6 insertions(+), 0 deletions(-)

    diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
    index c2f1f6a..79b84a3 100644
    --- a/include/linux/ptrace.h
    +++ b/include/linux/ptrace.h
    @@ -51,6 +51,9 @@
    #define PTRACE_INTERRUPT 0x4207
    #define PTRACE_LISTEN 0x4208

    +/* Get clear_child_tid address */
    +#define PTRACE_GET_TID_ADDRESS 0x4209
    /* flags in @data for PTRACE_SEIZE */
    #define PTRACE_SEIZE_DEVEL 0x80000000 /* temp flag for development */

    diff --git a/kernel/ptrace.c b/kernel/ptrace.c
    index 00ab2ca..ed7fbe7 100644
    --- a/kernel/ptrace.c
    +++ b/kernel/ptrace.c
    @@ -845,6 +845,9 @@ int ptrace_request(struct task_struct *child, long request,
    + return put_user(child->clear_child_tid, (int __user **) data);

     \ /
      Last update: 2012-02-03 12:15    [W:0.022 / U:5.960 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site