cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

workqueue.h (2970B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#undef TRACE_SYSTEM
      3#define TRACE_SYSTEM workqueue
      4
      5#if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)
      6#define _TRACE_WORKQUEUE_H
      7
      8#include <linux/tracepoint.h>
      9#include <linux/workqueue.h>
     10
     11struct pool_workqueue;
     12
     13/**
     14 * workqueue_queue_work - called when a work gets queued
     15 * @req_cpu:	the requested cpu
     16 * @pwq:	pointer to struct pool_workqueue
     17 * @work:	pointer to struct work_struct
     18 *
     19 * This event occurs when a work is queued immediately or once a
     20 * delayed work is actually queued on a workqueue (ie: once the delay
     21 * has been reached).
     22 */
     23TRACE_EVENT(workqueue_queue_work,
     24
     25	TP_PROTO(int req_cpu, struct pool_workqueue *pwq,
     26		 struct work_struct *work),
     27
     28	TP_ARGS(req_cpu, pwq, work),
     29
     30	TP_STRUCT__entry(
     31		__field( void *,	work	)
     32		__field( void *,	function)
     33		__string( workqueue,	pwq->wq->name)
     34		__field( int,	req_cpu	)
     35		__field( int,	cpu	)
     36	),
     37
     38	TP_fast_assign(
     39		__entry->work		= work;
     40		__entry->function	= work->func;
     41		__assign_str(workqueue, pwq->wq->name);
     42		__entry->req_cpu	= req_cpu;
     43		__entry->cpu		= pwq->pool->cpu;
     44	),
     45
     46	TP_printk("work struct=%p function=%ps workqueue=%s req_cpu=%d cpu=%d",
     47		  __entry->work, __entry->function, __get_str(workqueue),
     48		  __entry->req_cpu, __entry->cpu)
     49);
     50
     51/**
     52 * workqueue_activate_work - called when a work gets activated
     53 * @work:	pointer to struct work_struct
     54 *
     55 * This event occurs when a queued work is put on the active queue,
     56 * which happens immediately after queueing unless @max_active limit
     57 * is reached.
     58 */
     59TRACE_EVENT(workqueue_activate_work,
     60
     61	TP_PROTO(struct work_struct *work),
     62
     63	TP_ARGS(work),
     64
     65	TP_STRUCT__entry(
     66		__field( void *,	work	)
     67	),
     68
     69	TP_fast_assign(
     70		__entry->work		= work;
     71	),
     72
     73	TP_printk("work struct %p", __entry->work)
     74);
     75
     76/**
     77 * workqueue_execute_start - called immediately before the workqueue callback
     78 * @work:	pointer to struct work_struct
     79 *
     80 * Allows to track workqueue execution.
     81 */
     82TRACE_EVENT(workqueue_execute_start,
     83
     84	TP_PROTO(struct work_struct *work),
     85
     86	TP_ARGS(work),
     87
     88	TP_STRUCT__entry(
     89		__field( void *,	work	)
     90		__field( void *,	function)
     91	),
     92
     93	TP_fast_assign(
     94		__entry->work		= work;
     95		__entry->function	= work->func;
     96	),
     97
     98	TP_printk("work struct %p: function %ps", __entry->work, __entry->function)
     99);
    100
    101/**
    102 * workqueue_execute_end - called immediately after the workqueue callback
    103 * @work:	pointer to struct work_struct
    104 * @function:   pointer to worker function
    105 *
    106 * Allows to track workqueue execution.
    107 */
    108TRACE_EVENT(workqueue_execute_end,
    109
    110	TP_PROTO(struct work_struct *work, work_func_t function),
    111
    112	TP_ARGS(work, function),
    113
    114	TP_STRUCT__entry(
    115		__field( void *,	work	)
    116		__field( void *,	function)
    117	),
    118
    119	TP_fast_assign(
    120		__entry->work		= work;
    121		__entry->function	= function;
    122	),
    123
    124	TP_printk("work struct %p: function %ps", __entry->work, __entry->function)
    125);
    126
    127#endif /*  _TRACE_WORKQUEUE_H */
    128
    129/* This part must be outside protection */
    130#include <trace/define_trace.h>