[PATCH v4 2/5] drm: Add private data field to trace control block
Mike Frysinger
vapier at gentoo.org
Tue Aug 25 21:12:23 UTC 2015
On 24 Aug 2015 14:42, Patrik Jakobsson wrote:
> We need to be able to store private data in the tcb across it's
> lifetime. To ensure proper destruction of the data a free_priv_data
> callback must be provided if an allocation is stored in priv_data. The
> callback is executed automatically when the life of the tcb ends.
>
> * defs.h: Add extern declaration of free_tcb_priv_data.
> (struct tcb): Add priv_data and free_priv_data.
> * strace.c (free_tcb_priv_data): New function
> (drop_tcb): Execute free_tcb_priv_data callback
> * syscall.c (trace_syscall_exiting): Execute free_tcb_priv_data callback
>
> Signed-off-by: Patrik Jakobsson <patrik.jakobsson at linux.intel.com>
> ---
> defs.h | 6 ++++++
> strace.c | 14 ++++++++++++++
> syscall.c | 1 +
> 3 files changed, 21 insertions(+)
>
> diff --git a/defs.h b/defs.h
> index 9059026..bc3bd83 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -266,6 +266,10 @@ struct tcb {
> int u_error; /* Error code */
> long scno; /* System call number */
> long u_arg[MAX_ARGS]; /* System call arguments */
> +
> + void *priv_data; /* Private data for syscall decoding functions */
> + void (*free_priv_data)(void *); /* Callback for freeing priv_data */
should we name these _priv_data and _free_priv_data and provides accessor
functions ? i worry that code paths might stomp on each other by accident
and we don't end up noticing.
static void set_tcb_priv_data(struct tcb *tcp, void *data, void (*free_data)(void *))
{
assert(tcp->_priv_data == NULL && tcp->_free_priv_data == NULL);
...
}
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20150825/dedce9ff/attachment.bin>
More information about the Strace-devel
mailing list