spis_t
#define SPIS_ZERO ((spis_t){})
#define SPIS_ALL ((spis_t){{ U64_MAX, U64_MAX }})
static inline bool spis_is_zero(spis_t s)
static inline bool spis_equal(spis_t a, spis_t b)
static inline spis_t spis_or(spis_t a, spis_t b)
return (spis_t){{ a.v[0] | b.v[0], a.v[1] | b.v[1] }};
static inline spis_t spis_and(spis_t a, spis_t b)
return (spis_t){{ a.v[0] & b.v[0], a.v[1] & b.v[1] }};
static inline spis_t spis_not(spis_t s)
return (spis_t){{ ~s.v[0], ~s.v[1] }};
static inline bool spis_test_bit(spis_t s, u32 slot)
static inline void spis_or_range(spis_t *mask, u32 lo, u32 hi)
spis_t mask;
spis_t may_read; /* stack slots that may be read by this instruction */
spis_t must_write; /* stack slots written by this instruction */
spis_t live_before; /* stack slots that may be read by this insn and its successors */
static int mark_stack_read(struct func_instance *instance, u32 frame, u32 insn_idx, spis_t mask)
static int mark_stack_write(struct func_instance *instance, u32 frame, u32 insn_idx, spis_t mask)
spis_t new_before, new_after;
static char *fmt_spis_mask(struct bpf_verifier_env *env, int frame, bool first, spis_t spis)