(root)/
strace-6.5/
src/
number_set.h
       1  /*
       2   * Copyright (c) 2016-2018 Dmitry V. Levin <ldv@strace.io>
       3   * Copyright (c) 2017-2023 The strace developers.
       4   * All rights reserved.
       5   *
       6   * SPDX-License-Identifier: LGPL-2.1-or-later
       7   */
       8  
       9  #ifndef STRACE_NUMBER_SET_H
      10  # define STRACE_NUMBER_SET_H
      11  
      12  # include "gcc_compat.h"
      13  
      14  struct number_set;
      15  
      16  extern bool
      17  number_set_array_is_empty(const struct number_set *, unsigned int idx);
      18  
      19  extern bool
      20  is_number_in_set(unsigned int number, const struct number_set *);
      21  
      22  extern bool
      23  is_number_in_set_array(unsigned int number, const struct number_set *, unsigned int idx);
      24  
      25  extern bool
      26  is_complete_set(const struct number_set *, unsigned int max_numbers);
      27  
      28  extern bool
      29  is_complete_set_array(const struct number_set *, const unsigned int *,
      30  		      const unsigned int nmemb);
      31  
      32  extern void
      33  add_number_to_set(unsigned int number, struct number_set *);
      34  
      35  extern void
      36  add_number_to_set_array(unsigned int number, struct number_set *, unsigned int idx);
      37  
      38  extern void
      39  clear_number_set_array(struct number_set *, unsigned int nmemb);
      40  
      41  extern void
      42  invert_number_set_array(struct number_set *, unsigned int nmemb);
      43  
      44  extern struct number_set *
      45  alloc_number_set_array(unsigned int nmemb) ATTRIBUTE_MALLOC;
      46  
      47  extern void
      48  free_number_set_array(struct number_set *, unsigned int nmemb);
      49  
      50  enum status_t {
      51  	STATUS_SUCCESSFUL,
      52  	STATUS_FAILED,
      53  	STATUS_UNFINISHED,
      54  	STATUS_UNAVAILABLE,
      55  	STATUS_DETACHED,
      56  	NUMBER_OF_STATUSES
      57  };
      58  
      59  enum quiet_bits {
      60  	/** Do not print messages on tracee attach/detach. */
      61  	QUIET_ATTACH,
      62  	/** Do not print messages on tracee exits. */
      63  	QUIET_EXIT,
      64  	/** Do not print messages about path tracing path resolution. */
      65  	QUIET_PATH_RESOLVE,
      66  	/** Do not print messages on personality change. */
      67  	QUIET_PERSONALITY,
      68  	/** Do not print messages on superseding execve. */
      69  	QUIET_THREAD_EXECVE,
      70  
      71  	NUM_QUIET_BITS
      72  };
      73  
      74  enum decode_fd_bits {
      75  	DECODE_FD_PATH,
      76  	DECODE_FD_SOCKET,
      77  	DECODE_FD_DEV,
      78  	DECODE_FD_PIDFD,
      79  	DECODE_FD_SIGNALFD,
      80  
      81  	NUM_DECODE_FD_BITS
      82  };
      83  
      84  enum decode_pid_bits {
      85  	DECODE_PID_NS_TRANSLATION,
      86  	DECODE_PID_COMM,
      87  
      88  	NUM_DECODE_PID_BITS
      89  };
      90  
      91  extern bool quiet_set_updated;
      92  extern bool decode_fd_set_updated;
      93  
      94  extern struct number_set *read_set;
      95  extern struct number_set *write_set;
      96  extern struct number_set *signal_set;
      97  extern struct number_set *status_set;
      98  extern struct number_set *quiet_set;
      99  extern struct number_set *decode_fd_set;
     100  extern struct number_set *decode_pid_set;
     101  extern struct number_set *trace_set;
     102  extern struct number_set *trace_fd_set;
     103  
     104  #endif /* !STRACE_NUMBER_SET_H */