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).
*/
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 {
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[];
#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
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);