linux/include/trace/events/random.h
<<
>>
Prefs
   1#undef TRACE_SYSTEM
   2#define TRACE_SYSTEM random
   3
   4#if !defined(_TRACE_RANDOM_H) || defined(TRACE_HEADER_MULTI_READ)
   5#define _TRACE_RANDOM_H
   6
   7#include <linux/writeback.h>
   8#include <linux/tracepoint.h>
   9
  10TRACE_EVENT(add_device_randomness,
  11        TP_PROTO(int bytes, unsigned long IP),
  12
  13        TP_ARGS(bytes, IP),
  14
  15        TP_STRUCT__entry(
  16                __field(          int,  bytes                   )
  17                __field(unsigned long,  IP                      )
  18        ),
  19
  20        TP_fast_assign(
  21                __entry->bytes          = bytes;
  22                __entry->IP             = IP;
  23        ),
  24
  25        TP_printk("bytes %d caller %pS",
  26                __entry->bytes, (void *)__entry->IP)
  27);
  28
  29DECLARE_EVENT_CLASS(random__mix_pool_bytes,
  30        TP_PROTO(const char *pool_name, int bytes, unsigned long IP),
  31
  32        TP_ARGS(pool_name, bytes, IP),
  33
  34        TP_STRUCT__entry(
  35                __field( const char *,  pool_name               )
  36                __field(          int,  bytes                   )
  37                __field(unsigned long,  IP                      )
  38        ),
  39
  40        TP_fast_assign(
  41                __entry->pool_name      = pool_name;
  42                __entry->bytes          = bytes;
  43                __entry->IP             = IP;
  44        ),
  45
  46        TP_printk("%s pool: bytes %d caller %pS",
  47                  __entry->pool_name, __entry->bytes, (void *)__entry->IP)
  48);
  49
  50DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes,
  51        TP_PROTO(const char *pool_name, int bytes, unsigned long IP),
  52
  53        TP_ARGS(pool_name, bytes, IP)
  54);
  55
  56DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes_nolock,
  57        TP_PROTO(const char *pool_name, int bytes, unsigned long IP),
  58
  59        TP_ARGS(pool_name, bytes, IP)
  60);
  61
  62TRACE_EVENT(credit_entropy_bits,
  63        TP_PROTO(const char *pool_name, int bits, int entropy_count,
  64                 int entropy_total, unsigned long IP),
  65
  66        TP_ARGS(pool_name, bits, entropy_count, entropy_total, IP),
  67
  68        TP_STRUCT__entry(
  69                __field( const char *,  pool_name               )
  70                __field(          int,  bits                    )
  71                __field(          int,  entropy_count           )
  72                __field(          int,  entropy_total           )
  73                __field(unsigned long,  IP                      )
  74        ),
  75
  76        TP_fast_assign(
  77                __entry->pool_name      = pool_name;
  78                __entry->bits           = bits;
  79                __entry->entropy_count  = entropy_count;
  80                __entry->entropy_total  = entropy_total;
  81                __entry->IP             = IP;
  82        ),
  83
  84        TP_printk("%s pool: bits %d entropy_count %d entropy_total %d "
  85                  "caller %pS", __entry->pool_name, __entry->bits,
  86                  __entry->entropy_count, __entry->entropy_total,
  87                  (void *)__entry->IP)
  88);
  89
  90TRACE_EVENT(push_to_pool,
  91        TP_PROTO(const char *pool_name, int pool_bits, int input_bits),
  92
  93        TP_ARGS(pool_name, pool_bits, input_bits),
  94
  95        TP_STRUCT__entry(
  96                __field( const char *,  pool_name               )
  97                __field(          int,  pool_bits               )
  98                __field(          int,  input_bits              )
  99        ),
 100
 101        TP_fast_assign(
 102                __entry->pool_name      = pool_name;
 103                __entry->pool_bits      = pool_bits;
 104                __entry->input_bits     = input_bits;
 105        ),
 106
 107        TP_printk("%s: pool_bits %d input_pool_bits %d",
 108                  __entry->pool_name, __entry->pool_bits,
 109                  __entry->input_bits)
 110);
 111
 112TRACE_EVENT(debit_entropy,
 113        TP_PROTO(const char *pool_name, int debit_bits),
 114
 115        TP_ARGS(pool_name, debit_bits),
 116
 117        TP_STRUCT__entry(
 118                __field( const char *,  pool_name               )
 119                __field(          int,  debit_bits              )
 120        ),
 121
 122        TP_fast_assign(
 123                __entry->pool_name      = pool_name;
 124                __entry->debit_bits     = debit_bits;
 125        ),
 126
 127        TP_printk("%s: debit_bits %d", __entry->pool_name,
 128                  __entry->debit_bits)
 129);
 130
 131TRACE_EVENT(add_input_randomness,
 132        TP_PROTO(int input_bits),
 133
 134        TP_ARGS(input_bits),
 135
 136        TP_STRUCT__entry(
 137                __field(          int,  input_bits              )
 138        ),
 139
 140        TP_fast_assign(
 141                __entry->input_bits     = input_bits;
 142        ),
 143
 144        TP_printk("input_pool_bits %d", __entry->input_bits)
 145);
 146
 147TRACE_EVENT(add_disk_randomness,
 148        TP_PROTO(dev_t dev, int input_bits),
 149
 150        TP_ARGS(dev, input_bits),
 151
 152        TP_STRUCT__entry(
 153                __field(        dev_t,  dev                     )
 154                __field(          int,  input_bits              )
 155        ),
 156
 157        TP_fast_assign(
 158                __entry->dev            = dev;
 159                __entry->input_bits     = input_bits;
 160        ),
 161
 162        TP_printk("dev %d,%d input_pool_bits %d", MAJOR(__entry->dev),
 163                  MINOR(__entry->dev), __entry->input_bits)
 164);
 165
 166TRACE_EVENT(xfer_secondary_pool,
 167        TP_PROTO(const char *pool_name, int xfer_bits, int request_bits,
 168                 int pool_entropy, int input_entropy),
 169
 170        TP_ARGS(pool_name, xfer_bits, request_bits, pool_entropy,
 171                input_entropy),
 172
 173        TP_STRUCT__entry(
 174                __field( const char *,  pool_name               )
 175                __field(          int,  xfer_bits               )
 176                __field(          int,  request_bits            )
 177                __field(          int,  pool_entropy            )
 178                __field(          int,  input_entropy           )
 179        ),
 180
 181        TP_fast_assign(
 182                __entry->pool_name      = pool_name;
 183                __entry->xfer_bits      = xfer_bits;
 184                __entry->request_bits   = request_bits;
 185                __entry->pool_entropy   = pool_entropy;
 186                __entry->input_entropy  = input_entropy;
 187        ),
 188
 189        TP_printk("pool %s xfer_bits %d request_bits %d pool_entropy %d "
 190                  "input_entropy %d", __entry->pool_name, __entry->xfer_bits,
 191                  __entry->request_bits, __entry->pool_entropy,
 192                  __entry->input_entropy)
 193);
 194
 195DECLARE_EVENT_CLASS(random__get_random_bytes,
 196        TP_PROTO(int nbytes, unsigned long IP),
 197
 198        TP_ARGS(nbytes, IP),
 199
 200        TP_STRUCT__entry(
 201                __field(          int,  nbytes                  )
 202                __field(unsigned long,  IP                      )
 203        ),
 204
 205        TP_fast_assign(
 206                __entry->nbytes         = nbytes;
 207                __entry->IP             = IP;
 208        ),
 209
 210        TP_printk("nbytes %d caller %pS", __entry->nbytes, (void *)__entry->IP)
 211);
 212
 213DEFINE_EVENT(random__get_random_bytes, get_random_bytes,
 214        TP_PROTO(int nbytes, unsigned long IP),
 215
 216        TP_ARGS(nbytes, IP)
 217);
 218
 219DEFINE_EVENT(random__get_random_bytes, get_random_bytes_arch,
 220        TP_PROTO(int nbytes, unsigned long IP),
 221
 222        TP_ARGS(nbytes, IP)
 223);
 224
 225DECLARE_EVENT_CLASS(random__extract_entropy,
 226        TP_PROTO(const char *pool_name, int nbytes, int entropy_count,
 227                 unsigned long IP),
 228
 229        TP_ARGS(pool_name, nbytes, entropy_count, IP),
 230
 231        TP_STRUCT__entry(
 232                __field( const char *,  pool_name               )
 233                __field(          int,  nbytes                  )
 234                __field(          int,  entropy_count           )
 235                __field(unsigned long,  IP                      )
 236        ),
 237
 238        TP_fast_assign(
 239                __entry->pool_name      = pool_name;
 240                __entry->nbytes         = nbytes;
 241                __entry->entropy_count  = entropy_count;
 242                __entry->IP             = IP;
 243        ),
 244
 245        TP_printk("%s pool: nbytes %d entropy_count %d caller %pS",
 246                  __entry->pool_name, __entry->nbytes, __entry->entropy_count,
 247                  (void *)__entry->IP)
 248);
 249
 250
 251DEFINE_EVENT(random__extract_entropy, extract_entropy,
 252        TP_PROTO(const char *pool_name, int nbytes, int entropy_count,
 253                 unsigned long IP),
 254
 255        TP_ARGS(pool_name, nbytes, entropy_count, IP)
 256);
 257
 258DEFINE_EVENT(random__extract_entropy, extract_entropy_user,
 259        TP_PROTO(const char *pool_name, int nbytes, int entropy_count,
 260                 unsigned long IP),
 261
 262        TP_ARGS(pool_name, nbytes, entropy_count, IP)
 263);
 264
 265TRACE_EVENT(random_read,
 266        TP_PROTO(int got_bits, int need_bits, int pool_left, int input_left),
 267
 268        TP_ARGS(got_bits, need_bits, pool_left, input_left),
 269
 270        TP_STRUCT__entry(
 271                __field(          int,  got_bits                )
 272                __field(          int,  need_bits               )
 273                __field(          int,  pool_left               )
 274                __field(          int,  input_left              )
 275        ),
 276
 277        TP_fast_assign(
 278                __entry->got_bits       = got_bits;
 279                __entry->need_bits      = need_bits;
 280                __entry->pool_left      = pool_left;
 281                __entry->input_left     = input_left;
 282        ),
 283
 284        TP_printk("got_bits %d still_needed_bits %d "
 285                  "blocking_pool_entropy_left %d input_entropy_left %d",
 286                  __entry->got_bits, __entry->got_bits, __entry->pool_left,
 287                  __entry->input_left)
 288);
 289
 290TRACE_EVENT(urandom_read,
 291        TP_PROTO(int got_bits, int pool_left, int input_left),
 292
 293        TP_ARGS(got_bits, pool_left, input_left),
 294
 295        TP_STRUCT__entry(
 296                __field(          int,  got_bits                )
 297                __field(          int,  pool_left               )
 298                __field(          int,  input_left              )
 299        ),
 300
 301        TP_fast_assign(
 302                __entry->got_bits       = got_bits;
 303                __entry->pool_left      = pool_left;
 304                __entry->input_left     = input_left;
 305        ),
 306
 307        TP_printk("got_bits %d nonblocking_pool_entropy_left %d "
 308                  "input_entropy_left %d", __entry->got_bits,
 309                  __entry->pool_left, __entry->input_left)
 310);
 311
 312#endif /* _TRACE_RANDOM_H */
 313
 314/* This part must be outside protection */
 315#include <trace/define_trace.h>
 316