linux/tools/lib/traceevent/plugin_jbd2.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2010 Red Hat Inc, Steven Rostedt <srostedt@redhat.com>
   3 *
   4 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   5 * This program is free software; you can redistribute it and/or
   6 * modify it under the terms of the GNU Lesser General Public
   7 * License as published by the Free Software Foundation;
   8 * version 2.1 of the License (not later!)
   9 *
  10 * This program is distributed in the hope that it will be useful,
  11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13 * GNU Lesser General Public License for more details.
  14 *
  15 * You should have received a copy of the GNU Lesser General Public
  16 * License along with this program; if not,  see <http://www.gnu.org/licenses>
  17 *
  18 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  19 */
  20#include <stdio.h>
  21#include <stdlib.h>
  22#include <string.h>
  23
  24#include "event-parse.h"
  25
  26#define MINORBITS       20
  27#define MINORMASK       ((1U << MINORBITS) - 1)
  28
  29#define MAJOR(dev)      ((unsigned int) ((dev) >> MINORBITS))
  30#define MINOR(dev)      ((unsigned int) ((dev) & MINORMASK))
  31
  32static unsigned long long
  33process_jbd2_dev_to_name(struct trace_seq *s, unsigned long long *args)
  34{
  35        unsigned int dev = args[0];
  36
  37        trace_seq_printf(s, "%d:%d", MAJOR(dev), MINOR(dev));
  38        return 0;
  39}
  40
  41static unsigned long long
  42process_jiffies_to_msecs(struct trace_seq *s, unsigned long long *args)
  43{
  44        unsigned long long jiffies = args[0];
  45
  46        trace_seq_printf(s, "%lld", jiffies);
  47        return jiffies;
  48}
  49
  50int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
  51{
  52        pevent_register_print_function(pevent,
  53                                       process_jbd2_dev_to_name,
  54                                       PEVENT_FUNC_ARG_STRING,
  55                                       "jbd2_dev_to_name",
  56                                       PEVENT_FUNC_ARG_INT,
  57                                       PEVENT_FUNC_ARG_VOID);
  58
  59        pevent_register_print_function(pevent,
  60                                       process_jiffies_to_msecs,
  61                                       PEVENT_FUNC_ARG_LONG,
  62                                       "jiffies_to_msecs",
  63                                       PEVENT_FUNC_ARG_LONG,
  64                                       PEVENT_FUNC_ARG_VOID);
  65        return 0;
  66}
  67
  68void PEVENT_PLUGIN_UNLOADER(struct pevent *pevent)
  69{
  70        pevent_unregister_print_function(pevent, process_jbd2_dev_to_name,
  71                                         "jbd2_dev_to_name");
  72
  73        pevent_unregister_print_function(pevent, process_jiffies_to_msecs,
  74                                         "jiffies_to_msecs");
  75}
  76