]> granicus.if.org Git - strace/commit
Add private data field to struct tcb
authorPatrik Jakobsson <patrik.jakobsson@linux.intel.com>
Mon, 24 Aug 2015 12:42:47 +0000 (14:42 +0200)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 18 Jul 2016 22:12:44 +0000 (22:12 +0000)
commita1546a9550bb46bc8847da7d6432c8de0c3352c3
tree5ac0e6bba8e99a720c8bb9872c412ac82f981f06
parentdc84fa3646f6a4f9e81d47059fe0c84a9b70f3b4
Add private data field to struct tcb

We need to be able to store private data in the struct tcb across it's
lifetime.  To ensure proper deallocation of this stored data a callback
must be provided along with the data.  The callback is executed
automatically on exiting syscall, and when the life of the tcb ends.

* defs.h (struct tcb): Add _priv_data and _free_priv_data fields.
(get_tcb_priv_data, set_tcb_priv_data, free_tcb_priv_data):
New prototypes.
(get_tcb_priv_ulong, set_tcb_priv_ulong): New static inline functions.
* strace.c (get_tcb_priv_data, set_tcb_priv_data, free_tcb_priv_data):
New functions.
(droptcb): Call free_tcb_priv_data.
* syscall.c (trace_syscall_exiting): Call free_tcb_priv_data
when clearing TCB_INSYSCALL flag.

Signed-off-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
defs.h
strace.c
syscall.c