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

wbt.h (3907B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#undef TRACE_SYSTEM
      3#define TRACE_SYSTEM wbt
      4
      5#if !defined(_TRACE_WBT_H) || defined(TRACE_HEADER_MULTI_READ)
      6#define _TRACE_WBT_H
      7
      8#include <linux/tracepoint.h>
      9#include "../../../block/blk-wbt.h"
     10
     11/**
     12 * wbt_stat - trace stats for blk_wb
     13 * @stat: array of read/write stats
     14 */
     15TRACE_EVENT(wbt_stat,
     16
     17	TP_PROTO(struct backing_dev_info *bdi, struct blk_rq_stat *stat),
     18
     19	TP_ARGS(bdi, stat),
     20
     21	TP_STRUCT__entry(
     22		__array(char, name, 32)
     23		__field(s64, rmean)
     24		__field(u64, rmin)
     25		__field(u64, rmax)
     26		__field(s64, rnr_samples)
     27		__field(s64, rtime)
     28		__field(s64, wmean)
     29		__field(u64, wmin)
     30		__field(u64, wmax)
     31		__field(s64, wnr_samples)
     32		__field(s64, wtime)
     33	),
     34
     35	TP_fast_assign(
     36		strlcpy(__entry->name, bdi_dev_name(bdi),
     37			ARRAY_SIZE(__entry->name));
     38		__entry->rmean		= stat[0].mean;
     39		__entry->rmin		= stat[0].min;
     40		__entry->rmax		= stat[0].max;
     41		__entry->rnr_samples	= stat[0].nr_samples;
     42		__entry->wmean		= stat[1].mean;
     43		__entry->wmin		= stat[1].min;
     44		__entry->wmax		= stat[1].max;
     45		__entry->wnr_samples	= stat[1].nr_samples;
     46	),
     47
     48	TP_printk("%s: rmean=%llu, rmin=%llu, rmax=%llu, rsamples=%llu, "
     49		  "wmean=%llu, wmin=%llu, wmax=%llu, wsamples=%llu",
     50		  __entry->name, __entry->rmean, __entry->rmin, __entry->rmax,
     51		  __entry->rnr_samples, __entry->wmean, __entry->wmin,
     52		  __entry->wmax, __entry->wnr_samples)
     53);
     54
     55/**
     56 * wbt_lat - trace latency event
     57 * @lat: latency trigger
     58 */
     59TRACE_EVENT(wbt_lat,
     60
     61	TP_PROTO(struct backing_dev_info *bdi, unsigned long lat),
     62
     63	TP_ARGS(bdi, lat),
     64
     65	TP_STRUCT__entry(
     66		__array(char, name, 32)
     67		__field(unsigned long, lat)
     68	),
     69
     70	TP_fast_assign(
     71		strlcpy(__entry->name, bdi_dev_name(bdi),
     72			ARRAY_SIZE(__entry->name));
     73		__entry->lat = div_u64(lat, 1000);
     74	),
     75
     76	TP_printk("%s: latency %lluus", __entry->name,
     77			(unsigned long long) __entry->lat)
     78);
     79
     80/**
     81 * wbt_step - trace wb event step
     82 * @msg: context message
     83 * @step: the current scale step count
     84 * @window: the current monitoring window
     85 * @bg: the current background queue limit
     86 * @normal: the current normal writeback limit
     87 * @max: the current max throughput writeback limit
     88 */
     89TRACE_EVENT(wbt_step,
     90
     91	TP_PROTO(struct backing_dev_info *bdi, const char *msg,
     92		 int step, unsigned long window, unsigned int bg,
     93		 unsigned int normal, unsigned int max),
     94
     95	TP_ARGS(bdi, msg, step, window, bg, normal, max),
     96
     97	TP_STRUCT__entry(
     98		__array(char, name, 32)
     99		__field(const char *, msg)
    100		__field(int, step)
    101		__field(unsigned long, window)
    102		__field(unsigned int, bg)
    103		__field(unsigned int, normal)
    104		__field(unsigned int, max)
    105	),
    106
    107	TP_fast_assign(
    108		strlcpy(__entry->name, bdi_dev_name(bdi),
    109			ARRAY_SIZE(__entry->name));
    110		__entry->msg	= msg;
    111		__entry->step	= step;
    112		__entry->window	= div_u64(window, 1000);
    113		__entry->bg	= bg;
    114		__entry->normal	= normal;
    115		__entry->max	= max;
    116	),
    117
    118	TP_printk("%s: %s: step=%d, window=%luus, background=%u, normal=%u, max=%u",
    119		  __entry->name, __entry->msg, __entry->step, __entry->window,
    120		  __entry->bg, __entry->normal, __entry->max)
    121);
    122
    123/**
    124 * wbt_timer - trace wb timer event
    125 * @status: timer state status
    126 * @step: the current scale step count
    127 * @inflight: tracked writes inflight
    128 */
    129TRACE_EVENT(wbt_timer,
    130
    131	TP_PROTO(struct backing_dev_info *bdi, unsigned int status,
    132		 int step, unsigned int inflight),
    133
    134	TP_ARGS(bdi, status, step, inflight),
    135
    136	TP_STRUCT__entry(
    137		__array(char, name, 32)
    138		__field(unsigned int, status)
    139		__field(int, step)
    140		__field(unsigned int, inflight)
    141	),
    142
    143	TP_fast_assign(
    144		strlcpy(__entry->name, bdi_dev_name(bdi),
    145			ARRAY_SIZE(__entry->name));
    146		__entry->status		= status;
    147		__entry->step		= step;
    148		__entry->inflight	= inflight;
    149	),
    150
    151	TP_printk("%s: status=%u, step=%d, inflight=%u", __entry->name,
    152		  __entry->status, __entry->step, __entry->inflight)
    153);
    154
    155#endif /* _TRACE_WBT_H */
    156
    157/* This part must be outside protection */
    158#include <trace/define_trace.h>