glib/glib/glib.stp.in
Philip Withnall cfb692825a glib: Add more GLib main context SystemTap and DTrace probes
Expand the set of available probes, and add a few more output parameters
to some of the existing ones to make them more useful. I do not know if
this breaks any existing stability guarantees for GLib’s SystemTap
tapset, as it is effectively just adding some more local variables in
the user’s probe.

https://bugzilla.gnome.org/show_bug.cgi?id=759813
2016-06-15 16:15:12 -04:00

589 lines
21 KiB
Plaintext

global gquarks
/* This is needed to keep track of gquark for use in other probes.*/
probe process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("quark__new")
{
gquarks[pid(), $arg2] = user_string($arg1)
}
/**
* probe glib.quark_new - Called when a #GQuark is initially created
* @quark: integer value for the quark
* @str: string form of the quark
*/
probe glib.quark_new = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("quark__new")
{
str = user_string ($arg1);
quark = $arg2;
probestr = sprintf("glib.quark_new(%s) -> %d", str, quark);
}
/**
* probe glib.mem_alloc - Called when a malloc block is initially requested
* @mem: Raw memory pointer returned
* @n_bytes: number of bytes
* @zeroed: Boolean value, %TRUE if this block was filled with NUL bytes
* @failable: Boolean value, %TRUE if program execution can continue on allocation failure
*/
probe glib.mem_alloc = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("mem__alloc")
{
mem = $arg1;
n_bytes = $arg2;
zeroed = $arg3;
failable = $arg4;
probestr = sprintf("glib.mem_alloc(n_bytes=%d) -> %p", n_bytes, mem);
}
/**
* probe glib.mem_free - Called when a malloc block freed
*/
probe glib.mem_free = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("mem__free")
{
mem = $arg1; /* ARG: @mem: Raw memory pointer */
probestr = sprintf("glib.mem_free(mem=%p)", mem);
}
/**
* probe glib.mem_realloc - Called when a malloc block is resized
* @mem: Raw memory pointer returned
* @old_mem: Original memory pointer
* @n_bytes: number of bytes
* @failable: Boolean value, %TRUE if program execution can continue on allocation failure
*/
probe glib.mem_realloc = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("mem__realloc")
{
mem = $arg1;
old_mem = $arg2;
n_bytes = $arg3;
failable = $arg4;
probestr = sprintf("glib.mem_realloc(old_mem=%p, n_bytes=%d) -> %p", old_mem, n_bytes, mem);
}
/**
* probe glib.slice_alloc - Called when g_slice_alloc() is used
* @mem: Raw memory pointer returned
* @n_bytes: number of bytes
*/
probe glib.slice_alloc = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("slice__alloc")
{
mem = $arg1;
n_bytes = $arg2;
probestr = sprintf("glib.slice_alloc(n_bytes=%d) -> %p", n_bytes, mem);
}
/**
* probe glib.slice_free - Called when memory slice is freed
* @mem: Raw memory pointer returned
* @n_bytes: Number of bytes
*/
probe glib.slice_free = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("slice__free")
{
mem = $arg1;
n_bytes = $arg2;
probestr = sprintf("glib.slice_free(n_bytes=%d) -> %p", n_bytes, mem);
}
/**
* probe glib.main_after_prepare - Called after preparing a GSource
* @source: source pointer
* @prepare: prepare function pointer
* @source_timeout: callback function pointer
*/
probe glib.main_after_prepare = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__after_prepare")
{
source = $arg1;
prepare = $arg2;
source_timeout = $arg3;
probestr = sprintf("glib.main_after_prepare(source=%p, prepare=%p) -> %u", source, prepare, source_timeout);
}
/**
* probe glib.main_after_check - Called after checking a GSource
* @source: source pointer
* @check: check function pointer
* @result: result of the check call
*/
probe glib.main_after_check = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__after_check")
{
source = $arg1;
check = $arg2;
result = $arg3;
probestr = sprintf("glib.main_after_check(source=%p, check=%p) -> %u", source, check, result);
}
/**
* probe glib.main_before_dispatch - Called before dispatching a GSource
* @source: name of the source
* @source_ptr: source pointer
* @dispatch: dispatch function pointer
* @callback: callback function pointer
* @user_data: user data for @callback
*/
probe glib.main_before_dispatch = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__before_dispatch")
{
source = user_string2($arg1, "unnamed");
source_ptr = $arg2;
dispatch = $arg3;
callback = $arg4;
user_data = $arg5;
probestr = sprintf("glib.main_before_dispatch(source=%s(%p), dispatch=%p, callback=%p, user_data=%p)", source, source_ptr, dispatch, callback, user_data);
}
/**
* probe glib.main_after_dispatch - Called after dispatching a GSource
* @source: name of the source
* @source_ptr: source pointer
* @dispatch: dispatch function pointer
* @need_destroy: whether the source should be destroyed
*/
probe glib.main_after_dispatch = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__after_dispatch")
{
source = user_string2($arg1, "unnamed");
source_ptr = $arg2;
dispatch = $arg3;
need_destroy = $arg4;
probestr = sprintf("glib.main_after_dispatch(source=%s(%p), dispatch=%p) -> %u", source, source_ptr, dispatch, need_destroy);
}
/**
* probe glib.main_source_attach - Called when a #GSource is attached to a #GMainContext
* @source: name of the source
* @source_ptr: the #GSource
* @context: the #GMainContext the source is being attached to
* @id: the ID of the #GSource in the context
*/
probe glib.main_source_attach = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__source_attach")
{
source = user_string2($arg1, "unnamed");
source_ptr = $arg2;
context = $arg3;
id = $arg4;
probestr = sprintf("glib.main_source_attach(source=%s(%p), context=%p) -> %u", source, source_ptr, context, id);
}
/**
* probe glib.main_source_destroy - Called when a #GSource is destroyed from a #GMainContext
* @source: name of the source
* @source_ptr: the #GSource
* @context: the #GMainContext the source is being destroyed from
*/
probe glib.main_source_destroy = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__source_destroy")
{
source = user_string2($arg1, "unnamed");
source_ptr = $arg2;
context = $arg3;
probestr = sprintf("glib.main_source_destroy(source=%s(%p), context=%p)", source, source_ptr, context);
}
/*
* probe glib.main_context_default - Called when the default #GMainContext is created
* @context: pointer to the new default #GMainContext
*/
probe glib.main_context_default = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_default")
{
context = $arg1;
probestr = sprintf("glib.main_context_default() -> %p", context);
}
/**
* probe glib.main_context_new - Called when a #GMainContext is initially created
* @context: pointer to the new #GMainContext
*/
probe glib.main_context_new = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_new")
{
context = $arg1;
probestr = sprintf("glib.main_context_new() -> %p", context);
}
/**
* probe glib.main_context_acquire - Called when a thread tries to acquire a #GMainContext
* @context: the #GMainContext
* @success: TRUE if acquisition was successful; FALSE if there was contention
*/
probe glib.main_context_acquire = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_acquire")
{
context = $arg1;
success = $arg2;
probestr = sprintf("glib.main_context_acquire(context=%p) -> %u", context, success);
}
/**
* probe glib.main_context_release - Called when a thread releases a #GMainContext
* @context: the #GMainContext
*/
probe glib.main_context_release = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_release")
{
context = $arg1;
probestr = sprintf("glib.main_context_release(context=%p)", context);
}
/**
* probe glib.main_context_free - Called when a #GMainContext is freed
* @context: pointer to the #GMainContext to be freed
*/
probe glib.main_context_free = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_free")
{
context = $arg1;
probestr = sprintf("glib.main_context_free(context=%p)", context);
}
/**
* probe glib.main_context_push_thread_default - Called when a #GMainContext is pushed onto the thread default stack
* @context: a #GMainContext
*/
probe glib.main_context_push_thread_default = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_push_thread_default")
{
context = $arg1;
probestr = sprintf("glib.main_context_push_thread_default(context=%p)", context);
}
/**
* probe glib.main_context_pop_thread_default - Called when a #GMainContext is popped off the thread default stack
* @context: a #GMainContext
*/
probe glib.main_context_pop_thread_default = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_pop_thread_default")
{
context = $arg1;
probestr = sprintf("glib.main_context_pop_thread_default(context=%p)", context);
}
/**
* probe glib.main_context_before_prepare - Called before a #GMainContext calls prepare on all its #GSources
* @context: a #GMainContext
*/
probe glib.main_context_before_prepare = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_before_prepare")
{
context = $arg1;
probestr = sprintf("glib.main_context_before_prepare(context=%p)", context);
}
/**
* probe glib.main_context_after_prepare - Called after a #GMainContext calls prepare on all its #GSources
* @context: a #GMainContext
* @priority: priority of the highest priority ready #GSource
* @n_ready: number of #GSources ready
*/
probe glib.main_context_after_prepare = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_after_prepare")
{
context = $arg1;
priority = $arg2;
n_ready = $arg3;
probestr = sprintf("glib.main_context_after_prepare(context=%p) -> priority=%i,n_ready=%u", context, priority, n_ready);
}
/**
* probe glib.main_context_before_query - Called before a #GMainContext calls query on all its #GSources
* @context: a #GMainContext
* @max_priority: maximum priority #GSource to check
*/
probe glib.main_context_before_query = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_before_query")
{
context = $arg1;
max_priority = $arg2;
probestr = sprintf("glib.main_context_before_query(context=%p, max_priority=%i)", context, max_priority);
}
/**
* probe glib.main_context_after_query - Called after a #GMainContext calls query on all its #GSources
* @context: a #GMainContext
* @timeout: poll timeout to use
* @fds: array of FDs ready to be polled, of length @n_fds
* @n_fds: number of FDs ready to be polled
*/
probe glib.main_context_after_query = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_after_query")
{
context = $arg1;
timeout = $arg2;
fds = $arg3;
n_fds = $arg4;
probestr = sprintf("glib.main_context_after_query(context=%p) -> timeout=%u,fds=%p,n_fds=%u", context, timeout, fds, n_fds);
}
/**
* probe glib.main_context_before_check - Called before a #GMainContext calls check on all its #GSources
* @context: a #GMainContext
* @max_priority: maximum priority #GSource to check
* @fds: array of FDs to check, of length @n_fds
* @n_fds: number of FDs to check
*/
probe glib.main_context_before_check = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_before_check")
{
context = $arg1;
max_priority = $arg2;
fds = $arg3;
n_fds = $arg4;
probestr = sprintf("glib.main_context_before_check(context=%p, max_priority=%i, fds=%p, n_fds=%u)", context, max_priority, fds, n_fds);
}
/**
* probe glib.main_context_after_check - Called after a #GMainContext calls check on all its #GSources
* @context: a #GMainContext
* @n_ready: number of sources ready to be dispatched
*/
probe glib.main_context_after_check = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_after_check")
{
context = $arg1;
n_ready = $arg2;
probestr = sprintf("glib.main_context_after_check(context=%p) -> %u", context, n_ready);
}
/**
* probe glib.main_context_before_dispatch - Called before a #GMainContext calls dispatch on all its #GSources
* @context: a #GMainContext
*/
probe glib.main_context_before_dispatch = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_before_dispatch")
{
context = $arg1;
probestr = sprintf("glib.main_context_before_dispatch(context=%p)", context);
}
/**
* probe glib.main_context_after_dispatch - Called after a #GMainContext calls dispatch on all its #GSources
* @context: a #GMainContext
*/
probe glib.main_context_after_dispatch = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_after_dispatch")
{
context = $arg1;
probestr = sprintf("glib.main_context_after_dispatch(context=%p)", context);
}
/**
* probe glib.main_context_wakeup - Called when a wakeup call is made for a #GMainContext
* @context: a #GMainContext
*/
probe glib.main_context_wakeup = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_wakeup")
{
context = $arg1;
probestr = sprintf("glib.main_context_wakeup(context=%p)", context);
}
/**
* probe glib.main_context_wakeup_acknowledge - Called when a wakeup call is acknowledged by a #GMainContext
* @context: a #GMainContext
*/
probe glib.main_context_wakeup_acknowledge = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__context_wakeup_acknowledge")
{
context = $arg1;
probestr = sprintf("glib.main_context_wakeup_acknowledge(context=%p)", context);
}
/**
* probe glib.main_loop_new - Called when a #GMainLoop is initially created
* @loop: pointer to the new #GMainLoop
* @context: pointer to the parent #GMainContext
*/
probe glib.main_loop_new = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__loop_new")
{
loop = $arg1;
context = $arg2;
probestr = sprintf("glib.main_loop_new(%p) -> %p", context, loop);
}
/**
* probe glib.main_context_quit - Called when a #GMainLoop is quit
* @loop: pointer to the #GMainLoop to be quit
*/
probe glib.main_loop_quit = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("main__loop_quit")
{
loop = $arg1;
probestr = sprintf("glib.main_loop_quit(%p)", loop);
}
/**
* probe glib.idle_add - Called when g_idle_add() or g_idle_add_full() is called
* @source: the newly created idle #GSource
* @context: the #GMainContext the idle source was added to
* @id: the ID of the #GSource in the main context
* @priority: the priority of the idle source
* @func: the idle callback function
* @data: data to pass to the callback function
*/
probe glib.idle_add = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("idle__add")
{
source = $arg1;
context = $arg2;
id = $arg3;
priority = $arg4;
func = $arg5;
data = $arg6;
probestr = sprintf("glib.idle_add(%d, %p, %p) -> %p, %p, %u", priority, func, data, source, context, id);
}
/**
* probe glib.idle_dispatch - Called when an idle #GSource is dispatched
* @source: the idle #GSource
* @context: the #GMainContext the idle source was in
* @func: the idle callback function
* @data: data passed to the callback function
* @again: 1 if the idle function is to be scheduled again, 0 otherwise
*/
probe glib.idle_dispatch = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("idle__dispatch")
{
source = $arg1;
context = $arg2;
func = $arg3;
data = $arg4;
again = $arg5;
probestr = sprintf("glib.idle_dispatch(%p) -> %p, %p, %p, %u", source, context, func, data, again);
}
/**
* probe glib.timeout_add - Called when g_timeout_add() or g_timeout_add_full() is called
* @source: the newly created timeout #GSource
* @context: the #GMainContext the timeout source was added to
* @id: the ID of the #GSource in the main context
* @priority: the priority of the timeout source
* @interval: the time between dispatches of the source, in milliseconds
* @func: the timeout callback function
* @data: data to pass to the callback function
*/
probe glib.timeout_add = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("timeout__add")
{
source = $arg1;
context = $arg2;
id = $arg3;
priority = $arg4;
interval = $arg5;
func = $arg6;
data = $arg7;
probestr = sprintf("glib.timeout_add(%d, %u, %p, %p) -> %p, %p, %u", priority, interval, func, data, source, context, id);
}
/**
* probe glib.timeout_dispatch - Called when an timeout #GSource is dispatched
* @source: the timeout #GSource
* @context: the #GMainContext the timeout source was in
* @func: the timeout callback function
* @data: data passed to the callback function
* @again: 1 if the timeout is to be scheduled again, 0 otherwise
*/
probe glib.timeout_dispatch = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("timeout__dispatch")
{
source = $arg1;
context = $arg2;
func = $arg3;
data = $arg4;
again = $arg5;
probestr = sprintf("glib.timeout_dispatch(%p) -> %p, %p, %p, %u", source, context, func, data, again);
}
/**
* probe glib.source_new - Called when a new #GSource is created
* @source: the new #GSource
* @prepare: the prepare function for the #GSource
* @check: the check function for the #GSource
* @dispatch: the dispatch function for the #GSource
* @finalize: the finalize function for the #GSource
* @struct_size: the size of #GSource structure to allocate
*/
probe glib.source_new = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("source__new")
{
source = $arg1;
prepare = $arg2;
check = $arg3;
dispatch = $arg4;
finalize = $arg5;
struct_size = $arg6;
probestr = sprintf("glib.source_new(%p, %p, %p, %p, %u) -> %p", prepare, check, dispatch, finalize, struct_size, source);
}
/**
* probe glib.source_set_callback - Called when the callback on a #GSource is set
* @source: the #GSource
* @func: the new callback function for the source
* @data: data to pass to @func
* @notify: notify handler for @data
*/
probe glib.source_set_callback = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("source__set_callback")
{
source = $arg1;
func = $arg2;
data = $arg3;
notify = $arg4;
probestr = sprintf("glib.source_set_callback(%p, %p, %p, %p)", source, func, data, notify);
}
/**
* probe glib.source_set_callback_indirect - Called when an indirect callback on a #GSource is set
* @source: the #GSource
* @callback_data: data for @callback_funcs
* @ref: the indirect callback ref function
* @unref: the indirect callback unref function
* @get: the indirect callback getter function
*/
probe glib.source_set_callback_indirect = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("source__set_callback_indirect")
{
source = $arg1;
callback_data = $arg2;
ref = $arg3;
unref = $arg4;
get = $arg5;
probestr = sprintf("glib.source_set_callback_indirect(%p, %p, %p, %p, %p)", source, callback_data, ref, unref, get);
}
/**
* probe glib.source_set_ready_time - Called when the ready time is set on a #GSource
* @source: the #GSource
* @ready_time: the new ready time
*/
probe glib.source_set_ready_time = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("source__set_ready_time")
{
source = $arg1;
ready_time = $arg2;
probestr = sprintf("glib.source_set_ready_time(%p, %i)", source, ready_time);
}
/**
* probe glib.source_set_priority - Called when the priority is set on a #GSource
* @source: the #GSource
* @context: the context the source is attached to
* @priority: the new priority
*/
probe glib.source_set_priority = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("source__set_priority")
{
source = $arg1;
context = $arg2;
priority = $arg3;
probestr = sprintf("glib.source_set_priority(%p, %p, %i)", source, context, priority);
}
/**
* probe glib.source_set_name - Called when the name is set for a #GSource
* @source: the #GSource
* @name: the new name
*/
probe glib.source_set_name = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("source__set_name")
{
source = $arg1;
name = user_string($arg2);
probestr = sprintf("glib.source_set_name(%p, %s)", source, name);
}
/**
* probe glib.source_before_free - Called before a #GSource is finalised
* @source: the #GSource
* @context: the context the #GSource is attached to, if any
* @finalize: the finalize function about to be called
*/
probe glib.source_before_free = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("source__before_free")
{
source = $arg1;
context = $arg2;
finalize = $arg3;
probestr = sprintf("glib.source_before_free(%p, %p, %p)", source, context, finalize);
}
/**
* probe glib.thread_spawned - Called from a newly spawned GThread, before the thread function is called
* @func: the #GThreadFunc about to be executed
* @data: data to be passed to @func
* @name: (nullable): the thread name
*/
probe glib.thread_spawned = process("@ABS_GLIB_RUNTIME_LIBDIR@/libglib-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("thread__spawned")
{
func = $arg1;
data = $arg2;
name = user_string($arg3);
probestr = sprintf("glib.thread_spawned(%p, %p, %s)", func, data, name);
}