/usr/share/systemtap/tapset/logging.stp is in systemtap-common 1.7-1+deb7u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | // logging tapset
// Copyright (C) 2005-2011 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: This function logs data. log sends the
* message immediately to staprun and to the bulk transport
* (relayfs) if it is being used. If the last character given
* is not a newline, then one is added. This function is not
* as effecient as printf and should be used only for urgent
* messages.
*/
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: This function sends a warning message immediately to
* staprun. It is also sent over the bulk transport (relayfs) if it is
* being used. If the last characater is not a newline, the one is added.
*/
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
%}
/**
* sfunction printk - Send a message to the kernel trace buffer
*
* @level: an integer for the severity level (0=KERN_EMERG ... 7=KERN_DEBUG)
* @msg: The formatted message string
*
* Description: Print a line of text to the kernel dmesg/console with the
* given severity. An implicit end-of-line is added. This function may
* not be safely called from all kernel probe contexts, so is restricted
* to guru mode only.
*/
function printk (level:long,msg:string) %{ /* guru */
printk (THIS->level == 0 ? KERN_EMERG "%s\n":
THIS->level == 1 ? KERN_ALERT "%s\n":
THIS->level == 2 ? KERN_CRIT "%s\n":
THIS->level == 3 ? KERN_ERR "%s\n":
THIS->level == 4 ? KERN_WARNING "%s\n":
THIS->level == 5 ? KERN_NOTICE "%s\n":
THIS->level == 6 ? KERN_INFO "%s\n":
THIS->level == 7 ? KERN_DEBUG "%s\n":
#ifdef KERN_DEFAULT
KERN_DEFAULT "%s\n"
#else
KERN_INFO "%s\n"
#endif
, THIS->msg);
%}
|