summaryrefslogtreecommitdiffstats
path: root/runtime/probes/tasklet/stp_tasklet.c
diff options
context:
space:
mode:
authorhunt <hunt>2005-05-17 07:12:08 +0000
committerhunt <hunt>2005-05-17 07:12:08 +0000
commit3065e14cbd8f5114e32e6cbe64af570d6cdbf5ed (patch)
tree064893a2b6f926c70ff0f551790f1e25fe26638d /runtime/probes/tasklet/stp_tasklet.c
parentd1c9c59b3c4c6b5af9e64eaa1596edeb7e5da90d (diff)
downloadsystemtap-steved-3065e14cbd8f5114e32e6cbe64af570d6cdbf5ed.tar.gz
systemtap-steved-3065e14cbd8f5114e32e6cbe64af570d6cdbf5ed.tar.xz
systemtap-steved-3065e14cbd8f5114e32e6cbe64af570d6cdbf5ed.zip
Updated to work with latest runtime.
Diffstat (limited to 'runtime/probes/tasklet/stp_tasklet.c')
-rw-r--r--runtime/probes/tasklet/stp_tasklet.c71
1 files changed, 25 insertions, 46 deletions
diff --git a/runtime/probes/tasklet/stp_tasklet.c b/runtime/probes/tasklet/stp_tasklet.c
index c3581eb2..68569fb5 100644
--- a/runtime/probes/tasklet/stp_tasklet.c
+++ b/runtime/probes/tasklet/stp_tasklet.c
@@ -2,23 +2,21 @@
/* Useful for testing probes in interrupt context. */
/* Doesn't do anything useful as is. Put test code in the inst func */
-#define HASH_TABLE_BITS 8
-#define HASH_TABLE_SIZE (1<<HASH_TABLE_BITS)
-#define BUCKETS 16 /* largest histogram width */
-
#define STP_NETLINK_ONLY
#define STP_NUM_STRINGS 1
-
#include "runtime.h"
#include "probes.c"
+
MODULE_DESCRIPTION("test jprobes of tasklets");
MODULE_AUTHOR("Martin Hunt <hunt@redhat.com>");
void inst__rcu_process_callbacks(struct rcu_ctrlblk *rcp,
struct rcu_state *rsp, struct rcu_data *rdp)
-{
- _stp_log ("interrupt=%d\n", in_interrupt());
+{
+ _stp_printf ("count=%d irqs_disabled=%d in_interrupt=%d in_irq=%d",
+ preempt_count(), irqs_disabled(), in_interrupt(), in_irq());
+ _stp_print_flush();
jprobe_return();
}
@@ -30,57 +28,38 @@ static struct jprobe stp_probes[] = {
};
#define MAX_STP_PROBES (sizeof(stp_probes)/sizeof(struct jprobe))
-static unsigned n_subbufs = 4;
-module_param(n_subbufs, uint, 0);
-MODULE_PARM_DESC(n_subbufs, "number of sub-buffers per per-cpu buffer");
-
-static unsigned subbuf_size = 65536;
-module_param(subbuf_size, uint, 0);
-MODULE_PARM_DESC(subbuf_size, "size of each per-cpu sub-buffers");
-
static int pid;
module_param(pid, int, 0);
MODULE_PARM_DESC(pid, "daemon pid");
-static int init_stp(void)
+int init_module(void)
{
- int ret;
-
- if (!pid) {
- printk("init_dtr: Can't start without daemon pid\n");
- return -1;
- }
-
- if (_stp_transport_open(n_subbufs, subbuf_size, pid) < 0) {
- printk("init_dtr: Couldn't open transport\n");
- return -1;
- }
-
- ret = _stp_register_jprobes (stp_probes, MAX_STP_PROBES);
- printk("instrumentation is enabled...\n");
- return ret;
+ int ret;
+
+ if (!pid)
+ {
+ printk("init_dtr: Can't start without daemon pid\n");
+ return -1;
+ }
+
+ if (_stp_transport_open(n_subbufs, subbuf_size, pid) < 0) {
+ printk("init_dtr: Couldn't open transport\n");
+ return -1;
+ }
+
+ ret = _stp_register_jprobes (stp_probes, MAX_STP_PROBES);
+ return ret;
}
-static int exited; /* FIXME: this is a stopgap - if we don't do this
- * and are manually removed, bad things happen */
-
static void probe_exit (void)
{
- exited = 1;
-
- _stp_unregister_jprobes (stp_probes, MAX_STP_PROBES);
- _stp_log ("EXIT\n");
-
+ _stp_unregister_jprobes (stp_probes, MAX_STP_PROBES);
}
-static void cleanup_stp(void)
+
+void cleanup_module(void)
{
- if (!exited)
- probe_exit();
-
- _stp_transport_close();
+ _stp_transport_close();
}
-module_init(init_stp);
-module_exit(cleanup_stp);
MODULE_LICENSE("GPL");