Serene Runtime 1.0.0-dev
C runtime for the Serene programming language
Loading...
Searching...
No Matches
usdt.h File Reference

Go to the source code of this file.

Data Structures

struct  usdt_sema

Macros

#define USDT_MAJOR_VERSION   0
#define USDT_MINOR_VERSION   1
#define USDT_PATCH_VERSION   0
#define __usdt_va_args(...)
#define USDT(group, name, ...)
#define USDT_WITH_SEMA(group, name, ...)
#define USDT_IS_ACTIVE(group, name)
#define USDT_SEMA(sema)
 Underlying C global variable name for user-defined USDT semaphore with sema identifier.
#define USDT_DEFINE_SEMA(sema)
#define USDT_DECLARE_SEMA(sema)
#define USDT_SEMA_IS_ACTIVE(sema)
#define USDT_WITH_EXPLICIT_SEMA(sema, group, name, ...)
#define USDT_ARG_CONSTRAINT   nor
#define USDT_NOP   nop
#define __usdt_sema_name(group, name)
#define __usdt_sema_sec   __attribute__((section(".probes")))
#define __usdt_concat(a, b)
#define __usdt_apply(fn, n)
#define __usdt_nth(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, N, ...)
#define __usdt_narg(...)
#define __usdt_hash   #
#define __usdt_str_(x)
#define __usdt_str(x)
#define __usdt_asm_name(name)
#define __usdt_asm0()
#define __usdt_asm1(x)
#define __usdt_asm2(x, ...)
#define __usdt_asm3(x, ...)
#define __usdt_asm4(x, ...)
#define __usdt_asm5(x, ...)
#define __usdt_asm6(x, ...)
#define __usdt_asm7(x, ...)
#define __usdt_asm8(x, ...)
#define __usdt_asm9(x, ...)
#define __usdt_asm10(x, ...)
#define __usdt_asm11(x, ...)
#define __usdt_asm12(x, ...)
#define __usdt_asm(...)
#define __usdt_asm_addr   .4byte
#define __usdt_asm_strz_(x)
#define __usdt_asm_strz(x)
#define __usdt_asm_str_(x)
#define __usdt_asm_str(x)
#define __usdt_sema_none(sema)
#define __usdt_sema_implicit(sema)
#define __usdt_sema_explicit(sema)
#define __usdt_probe(group, name, sema_def, sema, ...)
#define __usdt_argref(id)
#define __usdt_asm_arg(n)
#define __usdt_asm_args0   /* no arguments */
#define __usdt_asm_args1   __usdt_asm_arg(1)
#define __usdt_asm_args2   __usdt_asm_args1 __usdt_asm1(.ascii " ") __usdt_asm_arg(2)
#define __usdt_asm_args3   __usdt_asm_args2 __usdt_asm1(.ascii " ") __usdt_asm_arg(3)
#define __usdt_asm_args4   __usdt_asm_args3 __usdt_asm1(.ascii " ") __usdt_asm_arg(4)
#define __usdt_asm_args5   __usdt_asm_args4 __usdt_asm1(.ascii " ") __usdt_asm_arg(5)
#define __usdt_asm_args6   __usdt_asm_args5 __usdt_asm1(.ascii " ") __usdt_asm_arg(6)
#define __usdt_asm_args7   __usdt_asm_args6 __usdt_asm1(.ascii " ") __usdt_asm_arg(7)
#define __usdt_asm_args8   __usdt_asm_args7 __usdt_asm1(.ascii " ") __usdt_asm_arg(8)
#define __usdt_asm_args9   __usdt_asm_args8 __usdt_asm1(.ascii " ") __usdt_asm_arg(9)
#define __usdt_asm_args10   __usdt_asm_args9 __usdt_asm1(.ascii " ") __usdt_asm_arg(10)
#define __usdt_asm_args11   __usdt_asm_args10 __usdt_asm1(.ascii " ") __usdt_asm_arg(11)
#define __usdt_asm_args12   __usdt_asm_args11 __usdt_asm1(.ascii " ") __usdt_asm_arg(12)
#define __usdt_asm_args(...)
#define __usdt_is_arr(x)
#define __usdt_arg_size(x)
#define __usdt_is_inttype(x)
#define __usdt_inttype(x)
#define __usdt_is_signed(x)
#define __usdt_asm_op(n, x)
#define __usdt_asm_ops0()
#define __usdt_asm_ops1(x)
#define __usdt_asm_ops2(a, x)
#define __usdt_asm_ops3(a, b, x)
#define __usdt_asm_ops4(a, b, c, x)
#define __usdt_asm_ops5(a, b, c, d, x)
#define __usdt_asm_ops6(a, b, c, d, e, x)
#define __usdt_asm_ops7(a, b, c, d, e, f, x)
#define __usdt_asm_ops8(a, b, c, d, e, f, g, x)
#define __usdt_asm_ops9(a, b, c, d, e, f, g, h, x)
#define __usdt_asm_ops10(a, b, c, d, e, f, g, h, i, x)
#define __usdt_asm_ops11(a, b, c, d, e, f, g, h, i, j, x)
#define __usdt_asm_ops12(a, b, c, d, e, f, g, h, i, j, k, x)
#define __usdt_asm_ops(...)

Macro Definition Documentation

◆ __usdt_apply

#define __usdt_apply ( fn,
n )
Value:
int n
Definition acutest.h:525
#define __usdt_concat(a, b)
Definition usdt.h:330

Definition at line 331 of file usdt.h.

◆ __usdt_arg_size

#define __usdt_arg_size ( x)
Value:
(__usdt_is_arr(x) ? sizeof(void *) : sizeof(x))
#define __usdt_is_arr(x)
Definition usdt.h:484

Definition at line 485 of file usdt.h.

◆ __usdt_argref

#define __usdt_argref ( id)
Value:
%[id]

Definition at line 462 of file usdt.h.

◆ __usdt_asm

#define __usdt_asm ( ...)
Value:
__usdt_apply(__usdt_asm, __usdt_narg(__VA_ARGS__))(__VA_ARGS__)
#define __usdt_apply(fn, n)
Definition usdt.h:331
#define __usdt_asm(...)
Definition usdt.h:366
#define __usdt_narg(...)
Definition usdt.h:341

Definition at line 366 of file usdt.h.

◆ __usdt_asm0

#define __usdt_asm0 ( )
Value:
"\n"

Definition at line 353 of file usdt.h.

◆ __usdt_asm1

#define __usdt_asm1 ( x)
Value:
__usdt_str(x) "\n"
#define __usdt_str(x)
Definition usdt.h:347

Definition at line 354 of file usdt.h.

◆ __usdt_asm10

#define __usdt_asm10 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm9(__VA_ARGS__)
#define __usdt_asm9(x,...)
Definition usdt.h:362

Definition at line 363 of file usdt.h.

◆ __usdt_asm11

#define __usdt_asm11 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm10(__VA_ARGS__)
#define __usdt_asm10(x,...)
Definition usdt.h:363

Definition at line 364 of file usdt.h.

◆ __usdt_asm12

#define __usdt_asm12 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm11(__VA_ARGS__)
#define __usdt_asm11(x,...)
Definition usdt.h:364

Definition at line 365 of file usdt.h.

◆ __usdt_asm2

#define __usdt_asm2 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm1(__VA_ARGS__)
#define __usdt_asm1(x)
Definition usdt.h:354

Definition at line 355 of file usdt.h.

◆ __usdt_asm3

#define __usdt_asm3 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm2(__VA_ARGS__)
#define __usdt_asm2(x,...)
Definition usdt.h:355

Definition at line 356 of file usdt.h.

◆ __usdt_asm4

#define __usdt_asm4 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm3(__VA_ARGS__)
#define __usdt_asm3(x,...)
Definition usdt.h:356

Definition at line 357 of file usdt.h.

◆ __usdt_asm5

#define __usdt_asm5 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm4(__VA_ARGS__)
#define __usdt_asm4(x,...)
Definition usdt.h:357

Definition at line 358 of file usdt.h.

◆ __usdt_asm6

#define __usdt_asm6 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm5(__VA_ARGS__)
#define __usdt_asm5(x,...)
Definition usdt.h:358

Definition at line 359 of file usdt.h.

◆ __usdt_asm7

#define __usdt_asm7 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm6(__VA_ARGS__)
#define __usdt_asm6(x,...)
Definition usdt.h:359

Definition at line 360 of file usdt.h.

◆ __usdt_asm8

#define __usdt_asm8 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm7(__VA_ARGS__)
#define __usdt_asm7(x,...)
Definition usdt.h:360

Definition at line 361 of file usdt.h.

◆ __usdt_asm9

#define __usdt_asm9 ( x,
... )
Value:
__usdt_str(x) "," __usdt_asm8(__VA_ARGS__)
#define __usdt_asm8(x,...)
Definition usdt.h:361

Definition at line 362 of file usdt.h.

◆ __usdt_asm_addr

#define __usdt_asm_addr   .4byte

Definition at line 371 of file usdt.h.

◆ __usdt_asm_arg

#define __usdt_asm_arg ( n)
Value:
__usdt_asm_str(%c[__usdt_asz##n]) \
__usdt_asm1(.ascii "@") \
__usdt_asm_str(__usdt_argref(__usdt_aval##n))
#define __usdt_argref(id)
Definition usdt.h:462
#define __usdt_asm_str(x)
Definition usdt.h:377

Definition at line 465 of file usdt.h.

465#define __usdt_asm_arg(n) __usdt_asm_str(%c[__usdt_asz##n]) \
466 __usdt_asm1(.ascii "@") \
467 __usdt_asm_str(__usdt_argref(__usdt_aval##n))

◆ __usdt_asm_args

#define __usdt_asm_args ( ...)
Value:
#define __usdt_asm_args(...)
Definition usdt.h:482

Definition at line 482 of file usdt.h.

◆ __usdt_asm_args0

#define __usdt_asm_args0   /* no arguments */

Definition at line 469 of file usdt.h.

◆ __usdt_asm_args1

#define __usdt_asm_args1   __usdt_asm_arg(1)

Definition at line 470 of file usdt.h.

◆ __usdt_asm_args10

#define __usdt_asm_args10   __usdt_asm_args9 __usdt_asm1(.ascii " ") __usdt_asm_arg(10)

Definition at line 479 of file usdt.h.

◆ __usdt_asm_args11

#define __usdt_asm_args11   __usdt_asm_args10 __usdt_asm1(.ascii " ") __usdt_asm_arg(11)

Definition at line 480 of file usdt.h.

◆ __usdt_asm_args12

#define __usdt_asm_args12   __usdt_asm_args11 __usdt_asm1(.ascii " ") __usdt_asm_arg(12)

Definition at line 481 of file usdt.h.

◆ __usdt_asm_args2

#define __usdt_asm_args2   __usdt_asm_args1 __usdt_asm1(.ascii " ") __usdt_asm_arg(2)

Definition at line 471 of file usdt.h.

◆ __usdt_asm_args3

#define __usdt_asm_args3   __usdt_asm_args2 __usdt_asm1(.ascii " ") __usdt_asm_arg(3)

Definition at line 472 of file usdt.h.

◆ __usdt_asm_args4

#define __usdt_asm_args4   __usdt_asm_args3 __usdt_asm1(.ascii " ") __usdt_asm_arg(4)

Definition at line 473 of file usdt.h.

◆ __usdt_asm_args5

#define __usdt_asm_args5   __usdt_asm_args4 __usdt_asm1(.ascii " ") __usdt_asm_arg(5)

Definition at line 474 of file usdt.h.

◆ __usdt_asm_args6

#define __usdt_asm_args6   __usdt_asm_args5 __usdt_asm1(.ascii " ") __usdt_asm_arg(6)

Definition at line 475 of file usdt.h.

◆ __usdt_asm_args7

#define __usdt_asm_args7   __usdt_asm_args6 __usdt_asm1(.ascii " ") __usdt_asm_arg(7)

Definition at line 476 of file usdt.h.

◆ __usdt_asm_args8

#define __usdt_asm_args8   __usdt_asm_args7 __usdt_asm1(.ascii " ") __usdt_asm_arg(8)

Definition at line 477 of file usdt.h.

◆ __usdt_asm_args9

#define __usdt_asm_args9   __usdt_asm_args8 __usdt_asm1(.ascii " ") __usdt_asm_arg(9)

Definition at line 478 of file usdt.h.

◆ __usdt_asm_name

#define __usdt_asm_name ( name)
Value:
__asm__(__usdt_str(name))

Definition at line 350 of file usdt.h.

◆ __usdt_asm_op

#define __usdt_asm_op ( n,
x )
Value:
[__usdt_asz##n] "n" ((__usdt_is_signed(x) ? (int)-1 : 1) * (int)__usdt_arg_size(x)), \
[__usdt_aval##n] __usdt_str(USDT_ARG_CONSTRAINT)(x)
#define USDT_ARG_CONSTRAINT
Definition usdt.h:308
#define __usdt_arg_size(x)
Definition usdt.h:485
#define __usdt_is_signed(x)
Definition usdt.h:524

Definition at line 528 of file usdt.h.

528#define __usdt_asm_op(n, x) \
529 [__usdt_asz##n] "n" ((__usdt_is_signed(x) ? (int)-1 : 1) * (int)__usdt_arg_size(x)), \
530 [__usdt_aval##n] __usdt_str(USDT_ARG_CONSTRAINT)(x)

◆ __usdt_asm_ops

#define __usdt_asm_ops ( ...)
Value:
__usdt_apply(__usdt_asm_ops, __usdt_narg(__VA_ARGS__))(__VA_ARGS__)
#define __usdt_asm_ops(...)
Definition usdt.h:545

Definition at line 545 of file usdt.h.

◆ __usdt_asm_ops0

#define __usdt_asm_ops0 ( )
Value:
[__usdt_dummy] "g" (0)

Definition at line 532 of file usdt.h.

◆ __usdt_asm_ops1

#define __usdt_asm_ops1 ( x)
Value:
#define __usdt_asm_op(n, x)
Definition usdt.h:528

Definition at line 533 of file usdt.h.

◆ __usdt_asm_ops10

#define __usdt_asm_ops10 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
x )
Value:
__usdt_asm_ops9(a,b,c,d,e,f,g,h,i), __usdt_asm_op(10, x)
#define __usdt_asm_ops9(a, b, c, d, e, f, g, h, x)
Definition usdt.h:541

Definition at line 542 of file usdt.h.

◆ __usdt_asm_ops11

#define __usdt_asm_ops11 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
x )
Value:
__usdt_asm_ops10(a,b,c,d,e,f,g,h,i,j), __usdt_asm_op(11, x)
#define __usdt_asm_ops10(a, b, c, d, e, f, g, h, i, x)
Definition usdt.h:542

Definition at line 543 of file usdt.h.

◆ __usdt_asm_ops12

#define __usdt_asm_ops12 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
x )
Value:
__usdt_asm_ops11(a,b,c,d,e,f,g,h,i,j,k), __usdt_asm_op(12, x)
#define __usdt_asm_ops11(a, b, c, d, e, f, g, h, i, j, x)
Definition usdt.h:543

Definition at line 544 of file usdt.h.

◆ __usdt_asm_ops2

#define __usdt_asm_ops2 ( a,
x )
Value:
#define __usdt_asm_ops1(x)
Definition usdt.h:533

Definition at line 534 of file usdt.h.

◆ __usdt_asm_ops3

#define __usdt_asm_ops3 ( a,
b,
x )
Value:
#define __usdt_asm_ops2(a, x)
Definition usdt.h:534

Definition at line 535 of file usdt.h.

◆ __usdt_asm_ops4

#define __usdt_asm_ops4 ( a,
b,
c,
x )
Value:
#define __usdt_asm_ops3(a, b, x)
Definition usdt.h:535

Definition at line 536 of file usdt.h.

◆ __usdt_asm_ops5

#define __usdt_asm_ops5 ( a,
b,
c,
d,
x )
Value:
#define __usdt_asm_ops4(a, b, c, x)
Definition usdt.h:536

Definition at line 537 of file usdt.h.

◆ __usdt_asm_ops6

#define __usdt_asm_ops6 ( a,
b,
c,
d,
e,
x )
Value:
__usdt_asm_ops5(a,b,c,d,e), __usdt_asm_op(6, x)
#define __usdt_asm_ops5(a, b, c, d, x)
Definition usdt.h:537

Definition at line 538 of file usdt.h.

◆ __usdt_asm_ops7

#define __usdt_asm_ops7 ( a,
b,
c,
d,
e,
f,
x )
Value:
__usdt_asm_ops6(a,b,c,d,e,f), __usdt_asm_op(7, x)
#define __usdt_asm_ops6(a, b, c, d, e, x)
Definition usdt.h:538

Definition at line 539 of file usdt.h.

◆ __usdt_asm_ops8

#define __usdt_asm_ops8 ( a,
b,
c,
d,
e,
f,
g,
x )
Value:
__usdt_asm_ops7(a,b,c,d,e,f,g), __usdt_asm_op(8, x)
#define __usdt_asm_ops7(a, b, c, d, e, f, x)
Definition usdt.h:539

Definition at line 540 of file usdt.h.

◆ __usdt_asm_ops9

#define __usdt_asm_ops9 ( a,
b,
c,
d,
e,
f,
g,
h,
x )
Value:
__usdt_asm_ops8(a,b,c,d,e,f,g,h), __usdt_asm_op(9, x)
#define __usdt_asm_ops8(a, b, c, d, e, f, g, x)
Definition usdt.h:540

Definition at line 541 of file usdt.h.

◆ __usdt_asm_str

#define __usdt_asm_str ( x)
Value:
#define __usdt_asm_str_(x)
Definition usdt.h:376

Definition at line 377 of file usdt.h.

◆ __usdt_asm_str_

#define __usdt_asm_str_ ( x)
Value:
__usdt_asm1(.ascii #x)

Definition at line 376 of file usdt.h.

◆ __usdt_asm_strz

#define __usdt_asm_strz ( x)
Value:
#define __usdt_asm_strz_(x)
Definition usdt.h:374

Definition at line 375 of file usdt.h.

◆ __usdt_asm_strz_

#define __usdt_asm_strz_ ( x)
Value:
__usdt_asm1(.asciz #x)

Definition at line 374 of file usdt.h.

◆ __usdt_concat

#define __usdt_concat ( a,
b )
Value:
a ## b

Definition at line 330 of file usdt.h.

◆ __usdt_hash

#define __usdt_hash   #

Definition at line 345 of file usdt.h.

◆ __usdt_inttype

#define __usdt_inttype ( x)
Value:
__typeof(__builtin_choose_expr(__usdt_is_inttype(x), (x), 0U))
#define __usdt_is_inttype(x)
Definition usdt.h:522

Definition at line 523 of file usdt.h.

◆ __usdt_is_arr

#define __usdt_is_arr ( x)
Value:
(__builtin_classify_type(x) == 14 || __builtin_classify_type(x) == 5)

Definition at line 484 of file usdt.h.

◆ __usdt_is_inttype

#define __usdt_is_inttype ( x)
Value:
(__builtin_classify_type(x) >= 1 && __builtin_classify_type(x) <= 4)

Definition at line 522 of file usdt.h.

◆ __usdt_is_signed

#define __usdt_is_signed ( x)
Value:
#define __usdt_inttype(x)
Definition usdt.h:523

Definition at line 524 of file usdt.h.

◆ __usdt_narg

#define __usdt_narg ( ...)
Value:
__usdt_nth(_, ##__VA_ARGS__, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define __usdt_nth(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, N,...)
Definition usdt.h:334

Definition at line 341 of file usdt.h.

◆ __usdt_nth

#define __usdt_nth ( _,
_1,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
_10,
_11,
_12,
N,
... )
Value:
N

Definition at line 334 of file usdt.h.

◆ __usdt_probe

#define __usdt_probe ( group,
name,
sema_def,
sema,
... )
Value:
do { \
sema_def(sema) \
__asm__ __volatile__ ( \
__usdt_asm3( .pushsection .note.stapsdt, "", "note") \
__usdt_asm1( .balign 4) \
__usdt_asm3( .4byte 992f-991f,994f-993f,3) \
__usdt_asm1(991: .asciz "stapsdt") \
__usdt_asm1(992: .balign 4) \
__usdt_asm1( __usdt_asm_addr _.stapsdt.base) \
__usdt_asm_strz(group) \
__usdt_asm_args(__VA_ARGS__) \
__usdt_asm1( .ascii "\0") \
__usdt_asm1(994: .balign 4) \
__usdt_asm1( .popsection) \
__usdt_asm1(.ifndef _.stapsdt.base) \
__usdt_asm5( .pushsection .stapsdt.base,"aG","progbits",.stapsdt.base,comdat)\
__usdt_asm1( .weak _.stapsdt.base) \
__usdt_asm1( .hidden _.stapsdt.base) \
__usdt_asm1(_.stapsdt.base:) \
__usdt_asm1( .space 1) \
__usdt_asm2( .size _.stapsdt.base, 1) \
__usdt_asm1( .popsection) \
__usdt_asm1(.endif) \
:: __usdt_asm_ops(__VA_ARGS__) \
); \
} while (0)
#define USDT_NOP
Definition usdt.h:318
#define __usdt_asm_strz(x)
Definition usdt.h:375
#define __usdt_asm_addr
Definition usdt.h:371

Definition at line 409 of file usdt.h.

409#define __usdt_probe(group, name, sema_def, sema, ...) do { \
410 sema_def(sema) \
411 __asm__ __volatile__ ( \
412 __usdt_asm( 990: USDT_NOP) \
413 __usdt_asm3( .pushsection .note.stapsdt, "", "note") \
414 __usdt_asm1( .balign 4) \
415 __usdt_asm3( .4byte 992f-991f,994f-993f,3) \
416 __usdt_asm1(991: .asciz "stapsdt") \
417 __usdt_asm1(992: .balign 4) \
418 __usdt_asm1(993: __usdt_asm_addr 990b) \
419 __usdt_asm1( __usdt_asm_addr _.stapsdt.base) \
420 __usdt_asm1( __usdt_asm_addr sema) \
421 __usdt_asm_strz(group) \
422 __usdt_asm_strz(name) \
423 __usdt_asm_args(__VA_ARGS__) \
424 __usdt_asm1( .ascii "\0") \
425 __usdt_asm1(994: .balign 4) \
426 __usdt_asm1( .popsection) \
427 __usdt_asm1(.ifndef _.stapsdt.base) \
428 __usdt_asm5( .pushsection .stapsdt.base,"aG","progbits",.stapsdt.base,comdat)\
429 __usdt_asm1( .weak _.stapsdt.base) \
430 __usdt_asm1( .hidden _.stapsdt.base) \
431 __usdt_asm1(_.stapsdt.base:) \
432 __usdt_asm1( .space 1) \
433 __usdt_asm2( .size _.stapsdt.base, 1) \
434 __usdt_asm1( .popsection) \
435 __usdt_asm1(.endif) \
436 :: __usdt_asm_ops(__VA_ARGS__) \
437 ); \
438} while (0)

◆ __usdt_sema_explicit

#define __usdt_sema_explicit ( sema)
Value:
__asm__ __volatile__ ("" :: "m" (sema));

Definition at line 404 of file usdt.h.

404#define __usdt_sema_explicit(sema) \
405 __asm__ __volatile__ ("" :: "m" (sema));

◆ __usdt_sema_implicit

#define __usdt_sema_implicit ( sema)
Value:
__asm__ __volatile__ ( \
__usdt_asm1(.ifndef sema) \
__usdt_asm3( .pushsection .probes, "aw", "progbits") \
__usdt_asm1( .weak sema) \
__usdt_asm1( .hidden sema) \
__usdt_asm1( .align 2) \
__usdt_asm1(sema:) \
__usdt_asm1( .zero 2) \
__usdt_asm2( .type sema, @object) \
__usdt_asm2( .size sema, 2) \
__usdt_asm1( .popsection) \
__usdt_asm1(.endif) \
);

Definition at line 386 of file usdt.h.

386#define __usdt_sema_implicit(sema) \
387 __asm__ __volatile__ ( \
388 __usdt_asm1(.ifndef sema) \
389 __usdt_asm3( .pushsection .probes, "aw", "progbits") \
390 __usdt_asm1( .weak sema) \
391 __usdt_asm1( .hidden sema) \
392 __usdt_asm1( .align 2) \
393 __usdt_asm1(sema:) \
394 __usdt_asm1( .zero 2) \
395 __usdt_asm2( .type sema, @object) \
396 __usdt_asm2( .size sema, 2) \
397 __usdt_asm1( .popsection) \
398 __usdt_asm1(.endif) \
399 );

◆ __usdt_sema_name

#define __usdt_sema_name ( group,
name )
Value:
__usdt_sema_##group##__##name

Definition at line 326 of file usdt.h.

◆ __usdt_sema_none

#define __usdt_sema_none ( sema)

Definition at line 381 of file usdt.h.

◆ __usdt_sema_sec

#define __usdt_sema_sec   __attribute__((section(".probes")))

Definition at line 328 of file usdt.h.

◆ __usdt_str

#define __usdt_str ( x)
Value:
#define __usdt_str_(x)
Definition usdt.h:346

Definition at line 347 of file usdt.h.

◆ __usdt_str_

#define __usdt_str_ ( x)
Value:
#x

Definition at line 346 of file usdt.h.

◆ __usdt_va_args

#define __usdt_va_args ( ...)
Value:
, ##__VA_ARGS__

Definition at line 94 of file usdt.h.

◆ USDT

#define USDT ( group,
name,
... )
Value:
__usdt_probe(group, name, __usdt_sema_none, 0, ##__VA_ARGS__)
#define __usdt_sema_none(sema)
Definition usdt.h:381
#define __usdt_probe(group, name, sema_def, sema,...)
Definition usdt.h:409

Definition at line 112 of file usdt.h.

112#define USDT(group, name, ...) \
113 __usdt_probe(group, name, __usdt_sema_none, 0, ##__VA_ARGS__)

◆ USDT_ARG_CONSTRAINT

#define USDT_ARG_CONSTRAINT   nor

Definition at line 308 of file usdt.h.

◆ USDT_DECLARE_SEMA

#define USDT_DECLARE_SEMA ( sema)
Value:
extern struct usdt_sema USDT_SEMA(sema) __usdt_asm_name(USDT_SEMA(sema))
#define __usdt_asm_name(name)
Definition usdt.h:350
#define USDT_SEMA(sema)
Underlying C global variable name for user-defined USDT semaphore with sema identifier.
Definition usdt.h:211

Definition at line 261 of file usdt.h.

261#define USDT_DECLARE_SEMA(sema) \
262 extern struct usdt_sema USDT_SEMA(sema) __usdt_asm_name(USDT_SEMA(sema))

◆ USDT_DEFINE_SEMA

#define USDT_DEFINE_SEMA ( sema)
Value:
__attribute__((visibility("hidden"))) = { 0 }
#define __usdt_sema_sec
Definition usdt.h:328

Definition at line 247 of file usdt.h.

247#define USDT_DEFINE_SEMA(sema) \
248 struct usdt_sema __usdt_sema_sec USDT_SEMA(sema) \
249 __usdt_asm_name(USDT_SEMA(sema)) \
250 __attribute__((visibility("hidden"))) = { 0 }

◆ USDT_IS_ACTIVE

#define USDT_IS_ACTIVE ( group,
name )
Value:
({ \
extern struct usdt_sema __usdt_sema_name(group, name) \
__usdt_sema_implicit(__usdt_sema_name(group, name)); \
__usdt_sema_name(group, name).active > 0; \
})
#define __usdt_sema_name(group, name)
Definition usdt.h:326

Definition at line 185 of file usdt.h.

185#define USDT_IS_ACTIVE(group, name) ({ \
186 extern struct usdt_sema __usdt_sema_name(group, name) \
187 __usdt_asm_name(__usdt_sema_name(group, name)); \
188 __usdt_sema_implicit(__usdt_sema_name(group, name)); \
189 __usdt_sema_name(group, name).active > 0; \
190})

◆ USDT_MAJOR_VERSION

#define USDT_MAJOR_VERSION   0

Definition at line 85 of file usdt.h.

◆ USDT_MINOR_VERSION

#define USDT_MINOR_VERSION   1

Definition at line 86 of file usdt.h.

◆ USDT_NOP

#define USDT_NOP   nop

Definition at line 318 of file usdt.h.

◆ USDT_PATCH_VERSION

#define USDT_PATCH_VERSION   0

Definition at line 87 of file usdt.h.

◆ USDT_SEMA

#define USDT_SEMA ( sema)
Value:
__usdt_sema_##sema

Underlying C global variable name for user-defined USDT semaphore with sema identifier.

Could be useful for debugging, but normally shouldn't be used explicitly.

Definition at line 211 of file usdt.h.

◆ USDT_SEMA_IS_ACTIVE

#define USDT_SEMA_IS_ACTIVE ( sema)
Value:
(USDT_SEMA(sema).active > 0)

Definition at line 279 of file usdt.h.

◆ USDT_WITH_EXPLICIT_SEMA

#define USDT_WITH_EXPLICIT_SEMA ( sema,
group,
name,
... )
Value:
__usdt_probe(group, name, __usdt_sema_explicit, USDT_SEMA(sema) __VA_OPT__(,) __VA_ARGS__)
#define __usdt_sema_explicit(sema)
Definition usdt.h:404

Definition at line 293 of file usdt.h.

293#define USDT_WITH_EXPLICIT_SEMA(sema, group, name, ...) \
294 __usdt_probe(group, name, __usdt_sema_explicit, USDT_SEMA(sema) __VA_OPT__(,) __VA_ARGS__)

◆ USDT_WITH_SEMA

#define USDT_WITH_SEMA ( group,
name,
... )
Value:
__usdt_probe(group, name, \
##__VA_ARGS__)
#define __usdt_sema_implicit(sema)
Definition usdt.h:386

Definition at line 161 of file usdt.h.

161#define USDT_WITH_SEMA(group, name, ...) \
162 __usdt_probe(group, name, \
163 __usdt_sema_implicit, __usdt_sema_name(group, name), \
164 ##__VA_ARGS__)