linux/samples/tracepoints/tracepoint-sample.c
<<
>>
Prefs
   1/* tracepoint-sample.c
   2 *
   3 * Executes a tracepoint when /proc/tracepoint-sample is opened.
   4 *
   5 * (C) Copyright 2007 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
   6 *
   7 * This file is released under the GPLv2.
   8 * See the file COPYING for more details.
   9 */
  10
  11#include <linux/module.h>
  12#include <linux/sched.h>
  13#include <linux/proc_fs.h>
  14#include "tp-samples-trace.h"
  15
  16DEFINE_TRACE(subsys_event);
  17DEFINE_TRACE(subsys_eventb);
  18
  19struct proc_dir_entry *pentry_sample;
  20
  21static int my_open(struct inode *inode, struct file *file)
  22{
  23        int i;
  24
  25        trace_subsys_event(inode, file);
  26        for (i = 0; i < 10; i++)
  27                trace_subsys_eventb();
  28        return -EPERM;
  29}
  30
  31static const struct file_operations mark_ops = {
  32        .open = my_open,
  33        .llseek = noop_llseek,
  34};
  35
  36static int __init sample_init(void)
  37{
  38        printk(KERN_ALERT "sample init\n");
  39        pentry_sample = proc_create("tracepoint-sample", 0444, NULL,
  40                &mark_ops);
  41        if (!pentry_sample)
  42                return -EPERM;
  43        return 0;
  44}
  45
  46static void __exit sample_exit(void)
  47{
  48        printk(KERN_ALERT "sample exit\n");
  49        remove_proc_entry("tracepoint-sample", NULL);
  50}
  51
  52module_init(sample_init)
  53module_exit(sample_exit)
  54
  55MODULE_LICENSE("GPL");
  56MODULE_AUTHOR("Mathieu Desnoyers");
  57MODULE_DESCRIPTION("Tracepoint sample");
  58