root/tools/perf/scripts/python/Perf-Trace-Util/Context.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. perf_trace_context_common_pc
  2. perf_trace_context_common_flags
  3. perf_trace_context_common_lock_depth
  4. initperf_trace_context
  5. PyInit_perf_trace_context

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * Context.c.  Python interfaces for perf script.
   4  *
   5  * Copyright (C) 2010 Tom Zanussi <tzanussi@gmail.com>
   6  */
   7 
   8 #include <Python.h>
   9 #include "../../../util/trace-event.h"
  10 
  11 #if PY_MAJOR_VERSION < 3
  12 #define _PyCapsule_GetPointer(arg1, arg2) \
  13   PyCObject_AsVoidPtr(arg1)
  14 
  15 PyMODINIT_FUNC initperf_trace_context(void);
  16 #else
  17 #define _PyCapsule_GetPointer(arg1, arg2) \
  18   PyCapsule_GetPointer((arg1), (arg2))
  19 
  20 PyMODINIT_FUNC PyInit_perf_trace_context(void);
  21 #endif
  22 
  23 static PyObject *perf_trace_context_common_pc(PyObject *obj, PyObject *args)
  24 {
  25         static struct scripting_context *scripting_context;
  26         PyObject *context;
  27         int retval;
  28 
  29         if (!PyArg_ParseTuple(args, "O", &context))
  30                 return NULL;
  31 
  32         scripting_context = _PyCapsule_GetPointer(context, NULL);
  33         retval = common_pc(scripting_context);
  34 
  35         return Py_BuildValue("i", retval);
  36 }
  37 
  38 static PyObject *perf_trace_context_common_flags(PyObject *obj,
  39                                                  PyObject *args)
  40 {
  41         static struct scripting_context *scripting_context;
  42         PyObject *context;
  43         int retval;
  44 
  45         if (!PyArg_ParseTuple(args, "O", &context))
  46                 return NULL;
  47 
  48         scripting_context = _PyCapsule_GetPointer(context, NULL);
  49         retval = common_flags(scripting_context);
  50 
  51         return Py_BuildValue("i", retval);
  52 }
  53 
  54 static PyObject *perf_trace_context_common_lock_depth(PyObject *obj,
  55                                                       PyObject *args)
  56 {
  57         static struct scripting_context *scripting_context;
  58         PyObject *context;
  59         int retval;
  60 
  61         if (!PyArg_ParseTuple(args, "O", &context))
  62                 return NULL;
  63 
  64         scripting_context = _PyCapsule_GetPointer(context, NULL);
  65         retval = common_lock_depth(scripting_context);
  66 
  67         return Py_BuildValue("i", retval);
  68 }
  69 
  70 static PyMethodDef ContextMethods[] = {
  71         { "common_pc", perf_trace_context_common_pc, METH_VARARGS,
  72           "Get the common preempt count event field value."},
  73         { "common_flags", perf_trace_context_common_flags, METH_VARARGS,
  74           "Get the common flags event field value."},
  75         { "common_lock_depth", perf_trace_context_common_lock_depth,
  76           METH_VARARGS, "Get the common lock depth event field value."},
  77         { NULL, NULL, 0, NULL}
  78 };
  79 
  80 #if PY_MAJOR_VERSION < 3
  81 PyMODINIT_FUNC initperf_trace_context(void)
  82 {
  83         (void) Py_InitModule("perf_trace_context", ContextMethods);
  84 }
  85 #else
  86 PyMODINIT_FUNC PyInit_perf_trace_context(void)
  87 {
  88         static struct PyModuleDef moduledef = {
  89                 PyModuleDef_HEAD_INIT,
  90                 "perf_trace_context",   /* m_name */
  91                 "",                     /* m_doc */
  92                 -1,                     /* m_size */
  93                 ContextMethods,         /* m_methods */
  94                 NULL,                   /* m_reload */
  95                 NULL,                   /* m_traverse */
  96                 NULL,                   /* m_clear */
  97                 NULL,                   /* m_free */
  98         };
  99         return PyModule_Create(&moduledef);
 100 }
 101 #endif

/* [<][>][^][v][top][bottom][index][help] */