// logging tapset // Copyright (C) 2005, 2006, 2007 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. /** * sfunction log - Send a line to the common trace buffer. * @msg: The formatted message string. * * Description: An implicit end-of-line is added. * Same as println() with a single string argument. */ function log (msg:string) %{ /* unprivileged */ _stp_printf ("%s\n", THIS->msg); %} /** * sfunction warn - Send a line to the warning stream. * @msg: The formatted message string. * * Description: An implicit end-of-line is added. staprun * prepends the string "WARNING:". */ function warn (msg:string) %{ /* unprivileged */ _stp_warn ("%s", THIS->msg); %} /** * sfunction exit - Start shutting down probing script. * * Description: This only enqueues a request to start * shutting down the script. New probes will not fire * (except "end" probes), but all currently * running ones may complete their work. */ function exit () %{ /* unprivileged */ atomic_set (&session_state, STAP_SESSION_STOPPING); _stp_exit (); %} /** * sfunction error - Send an error message. * @msg: The formatted message string. * * Description: An implicit end-of-line is added. staprun prepends * the string "ERROR:". Sending an error message aborts the currently * running probe. Depending on the MAXERRORS parameter, it may * trigger an exit(). */ function error (msg:string) %{ /* unprivileged */ /* This is an assignment of a local char[] to a global char*. It would normally be just as unsafe as returning a pointer to a local variable from a function. However, the translated code ensures that upon an error (last_error != NULL), the context stack is only ever unwound, and not reused, before the probe-level stp-error call. */ CONTEXT->last_error = THIS->msg; CONTEXT->last_stmt = NULL; %} function stp_print_binary(n:long, arg1:long, arg2:long, arg3:long, arg4:long) %{ _stp_print_binary (THIS->n, THIS->arg1, THIS->arg2, THIS->arg3, THIS->arg4); %} /** * sfunction ftrace - Send a message to the ftrace ring-buffer. * @msg: The formatted message string. * * Description: If the ftrace ring-buffer is configured & available, * see /debugfs/tracing/trace for the message. Otherwise, the * message may be quietly dropped. An implicit end-of-line is added. */ function ftrace (msg:string) %{ #ifdef STAPCONF_TRACE_PRINTK static char *fmt = "%s\n"; trace_printk (fmt, THIS->msg); /* The "fmt" is designed to be non __builtin_constant_p(), so as to defeat trace_printk -> __trace_bprintk optimization. That's because bprintk doesn't save the incoming strings, only their addresses. */ #endif %}