]> granicus.if.org Git - strace/blobdiff - defs.h
Remove linux/ptp_clock.h
[strace] / defs.h
diff --git a/defs.h b/defs.h
index d83f4edc963376f95ff69d9bc7255462ebe6785c..afb2cb0b3e10c1c2b3d0bf76b22b6b156d58c871 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -58,6 +58,8 @@
 #include "kernel_types.h"
 #include "macros.h"
 #include "mpers_type.h"
+#include "string_to_uint.h"
+#include "supported_personalities.h"
 #include "sysent.h"
 #include "xmalloc.h"
 
@@ -73,15 +75,6 @@ const char *strerror(int);
 extern char *stpcpy(char *dst, const char *src);
 #endif
 
-/* macros */
-#ifndef MAX
-# define MAX(a, b)             (((a) > (b)) ? (a) : (b))
-#endif
-#ifndef MIN
-# define MIN(a, b)             (((a) < (b)) ? (a) : (b))
-#endif
-#define CLAMP(val, min, max) MIN(MAX(min, val), max)
-
 /* Glibc has an efficient macro for sigemptyset
  * (it just does one or two assignments of 0 to internal vector of longs).
  */
@@ -136,27 +129,6 @@ extern char *stpcpy(char *dst, const char *src);
 # define ERESTART_RESTARTBLOCK 516
 #endif
 
-#if defined X86_64
-# define SUPPORTED_PERSONALITIES 3
-# define PERSONALITY2_WORDSIZE  4
-# define PERSONALITY2_KLONGSIZE PERSONALITY0_KLONGSIZE
-#elif defined AARCH64 \
-   || defined POWERPC64 \
-   || defined RISCV \
-   || defined SPARC64 \
-   || defined TILE \
-   || defined X32
-# define SUPPORTED_PERSONALITIES 2
-#else
-# define SUPPORTED_PERSONALITIES 1
-#endif
-
-#if defined TILE && defined __tilepro__
-# define DEFAULT_PERSONALITY 1
-#else
-# define DEFAULT_PERSONALITY 0
-#endif
-
 #define PERSONALITY0_WORDSIZE  SIZEOF_LONG
 #define PERSONALITY0_KLONGSIZE SIZEOF_KERNEL_LONG_T
 #define PERSONALITY0_INCLUDE_PRINTERS_DECLS "native_printer_decls.h"
@@ -167,6 +139,11 @@ extern char *stpcpy(char *dst, const char *src);
 # define PERSONALITY1_KLONGSIZE PERSONALITY1_WORDSIZE
 #endif
 
+#if SUPPORTED_PERSONALITIES > 2
+# define PERSONALITY2_WORDSIZE  4
+# define PERSONALITY2_KLONGSIZE PERSONALITY0_KLONGSIZE
+#endif
+
 #if SUPPORTED_PERSONALITIES > 1 && defined HAVE_M32_MPERS
 # define PERSONALITY1_INCLUDE_PRINTERS_DECLS "m32_printer_decls.h"
 # define PERSONALITY1_INCLUDE_PRINTERS_DEFS "m32_printer_defs.h"
@@ -194,15 +171,22 @@ typedef struct ioctlent {
        unsigned int code;
 } struct_ioctlent;
 
+#define INJECT_F_SIGNAL 1
+#define INJECT_F_RETVAL 2
+
+struct inject_data {
+       uint16_t flags;
+       uint16_t signo;
+       int rval;
+};
+
 struct inject_opts {
        uint16_t first;
        uint16_t step;
-       uint16_t signo;
-       int rval;
+       struct inject_data data;
 };
 
 #define MAX_ERRNO_VALUE                        4095
-#define INJECT_OPTS_RVAL_DEFAULT       (-(MAX_ERRNO_VALUE + 1))
 
 /* Trace Control Block */
 struct tcb {
@@ -267,17 +251,17 @@ struct tcb {
 #define QUAL_VERBOSE   0x004   /* decode the structures of this syscall */
 #define QUAL_RAW       0x008   /* print all args in hex for this syscall */
 #define QUAL_INJECT    0x010   /* tamper with this system call on purpose */
-#define QUAL_SIGNAL    0x100   /* report events with this signal */
-#define QUAL_READ      0x200   /* dump data read from this file descriptor */
-#define QUAL_WRITE     0x400   /* dump data written to this file descriptor */
 
 #define DEFAULT_QUAL_FLAGS (QUAL_TRACE | QUAL_ABBREV | QUAL_VERBOSE)
 
 #define entering(tcp)  (!((tcp)->flags & TCB_INSYSCALL))
 #define exiting(tcp)   ((tcp)->flags & TCB_INSYSCALL)
 #define syserror(tcp)  ((tcp)->u_error != 0)
+#define traced(tcp)    ((tcp)->qual_flg & QUAL_TRACE)
 #define verbose(tcp)   ((tcp)->qual_flg & QUAL_VERBOSE)
 #define abbrev(tcp)    ((tcp)->qual_flg & QUAL_ABBREV)
+#define raw(tcp)       ((tcp)->qual_flg & QUAL_RAW)
+#define inject(tcp)    ((tcp)->qual_flg & QUAL_INJECT)
 #define filtered(tcp)  ((tcp)->flags & TCB_FILTERED)
 #define hide_log(tcp)  ((tcp)->flags & TCB_HIDE_LOG)
 
@@ -301,6 +285,8 @@ extern const struct xlat open_mode_flags[];
 extern const struct xlat resource_flags[];
 extern const struct xlat routing_scopes[];
 extern const struct xlat routing_table_ids[];
+extern const struct xlat routing_types[];
+extern const struct xlat seccomp_ret_action[];
 extern const struct xlat setns_types[];
 extern const struct xlat sg_io_info[];
 extern const struct xlat socketlayers[];
@@ -321,6 +307,8 @@ extern const struct xlat whence_codes[];
 #define RVAL_NONE      040     /* Print nothing */
 
 #define RVAL_DECODED   0100    /* syscall decoding finished */
+#define RVAL_IOCTL_DECODED 0200        /* ioctl sub-parser successfully decoded
+                                  the argument */
 
 #define IOCTL_NUMBER_UNKNOWN 0
 #define IOCTL_NUMBER_HANDLED 1
@@ -367,7 +355,6 @@ typedef enum {
        CFLAG_BOTH
 } cflag_t;
 extern cflag_t cflag;
-extern bool debug_flag;
 extern bool Tflag;
 extern bool iflag;
 extern bool count_wallclock;
@@ -377,7 +364,8 @@ extern unsigned int show_fd_path;
 /* are we filtering traces based on paths? */
 extern struct path_set {
        const char **paths_selected;
-       unsigned int num_selected;
+       size_t num_selected;
+       size_t size;
 } global_path_set;
 #define tracing_paths (global_path_set.num_selected != 0)
 extern unsigned xflag;
@@ -510,15 +498,6 @@ void dyxlat_add_pair(struct dyxlat *, uint64_t val, const char *str, size_t len)
 const struct xlat *genl_families_xlat(void);
 
 extern unsigned long get_pagesize(void);
-extern int
-string_to_uint_ex(const char *str, char **endptr,
-                 unsigned int max_val, const char *accepted_ending);
-extern int string_to_uint(const char *str);
-static inline int
-string_to_uint_upto(const char *const str, unsigned int max_val)
-{
-       return string_to_uint_ex(str, NULL, max_val, NULL);
-}
 extern int next_set_bit(const void *bit_array, unsigned cur_bit, unsigned size_bits);
 
 /*
@@ -658,6 +637,7 @@ struct strace_stat;
 extern void print_struct_stat(struct tcb *, const struct strace_stat *const st);
 
 struct strace_statfs;
+struct strace_keyctl_kdf_params;
 
 extern void
 print_struct_statfs(struct tcb *, kernel_ulong_t addr);
@@ -667,12 +647,6 @@ print_struct_statfs64(struct tcb *, kernel_ulong_t addr, kernel_ulong_t size);
 
 extern void print_ifindex(unsigned int);
 
-struct number_set;
-extern struct number_set read_set;
-extern struct number_set write_set;
-extern struct number_set signal_set;
-
-extern bool is_number_in_set(unsigned int number, const struct number_set *);
 extern void qualify(const char *);
 extern unsigned int qual_flags(const unsigned int);
 
@@ -684,6 +658,7 @@ name ## _ioctl(struct tcb *, unsigned int request, kernel_ulong_t arg)      \
 DECL_IOCTL(dm);
 DECL_IOCTL(file);
 DECL_IOCTL(fs_x);
+DECL_IOCTL(kvm);
 DECL_IOCTL(nsfs);
 DECL_IOCTL(ptp);
 DECL_IOCTL(scsi);