Blame include/stap-probe.h

Packit Service 82fcde
/* Macros for defining Systemtap <sys/sdt.h> static probe points.
Packit Service 82fcde
   Copyright (C) 2012-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#ifndef _STAP_PROBE_H
Packit Service 82fcde
#define _STAP_PROBE_H 1
Packit Service 82fcde
Packit Service 82fcde
#ifdef USE_STAP_PROBE
Packit Service 82fcde
Packit Service 82fcde
# include <sys/sdt.h>
Packit Service 82fcde
Packit Service 82fcde
/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn).
Packit Service 82fcde
Packit Service 82fcde
   Without USE_STAP_PROBE, that does nothing but evaluates all
Packit Service 82fcde
   its arguments (to prevent bit rot, unlike e.g. assert).
Packit Service 82fcde
Packit Service 82fcde
   Systemtap's header defines the macros STAP_PROBE (provider, name) and
Packit Service 82fcde
   STAP_PROBEn (provider, name, arg1, ..., argn).  For "provider" we paste
Packit Service 82fcde
   in MODULE_NAME (libc, libpthread, etc.) automagically.
Packit Service 82fcde
Packit Service 82fcde
   The format of the arg parameters is discussed here:
Packit Service 82fcde
Packit Service 82fcde
   https://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation
Packit Service 82fcde
Packit Service 82fcde
   The precise details of how register names are specified is
Packit Service 82fcde
   architecture specific and can be found in the gdb and SystemTap
Packit Service 82fcde
   source code.  */
Packit Service 82fcde
Packit Service 82fcde
# define LIBC_PROBE(name, n, ...)	\
Packit Service 82fcde
  LIBC_PROBE_1 (MODULE_NAME, name, n, ## __VA_ARGS__)
Packit Service 82fcde
Packit Service 82fcde
# define LIBC_PROBE_1(lib, name, n, ...) \
Packit Service 82fcde
  STAP_PROBE##n (lib, name, ## __VA_ARGS__)
Packit Service 82fcde
Packit Service 82fcde
# define STAP_PROBE0		STAP_PROBE
Packit Service 82fcde
Packit Service 82fcde
# define LIBC_PROBE_ASM(name, template) \
Packit Service 82fcde
  STAP_PROBE_ASM (MODULE_NAME, name, template)
Packit Service 82fcde
Packit Service 82fcde
# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS
Packit Service 82fcde
Packit Service 82fcde
#else  /* Not USE_STAP_PROBE.  */
Packit Service 82fcde
Packit Service 82fcde
# ifndef __ASSEMBLER__
Packit Service 82fcde
/* Evaluate all the arguments and verify that N matches their number.  */
Packit Service 82fcde
#  define LIBC_PROBE(name, n, ...) STAP_PROBE##n (__VA_ARGS__)
Packit Service 82fcde
Packit Service 82fcde
#  define STAP_PROBE0()
Packit Service 82fcde
#  define STAP_PROBE1(a1)
Packit Service 82fcde
#  define STAP_PROBE2(a1, a2)
Packit Service 82fcde
#  define STAP_PROBE3(a1, a2, a3)
Packit Service 82fcde
#  define STAP_PROBE4(a1, a2, a3, a4)
Packit Service 82fcde
Packit Service 82fcde
# else
Packit Service 82fcde
#  define LIBC_PROBE(name, n, ...)		/* Nothing.  */
Packit Service 82fcde
# endif
Packit Service 82fcde
Packit Service 82fcde
# define LIBC_PROBE_ASM(name, template)		/* Nothing.  */
Packit Service 82fcde
# define LIBC_PROBE_ASM_OPERANDS(n, ...)	/* Nothing.  */
Packit Service 82fcde
Packit Service 82fcde
#endif	/* USE_STAP_PROBE.  */
Packit Service 82fcde
Packit Service 82fcde
#endif	/* stap-probe.h */