_ENTRY
_ENTRY(__CONCAT(_dl_,n)) \
#define SRPL_NEXT(_sr, _e, _ENTRY) SLIST_NEXT(_e, _ENTRY)
#define SRPL_FOLLOW(_sr, _e, _ENTRY) SLIST_NEXT(_e, _ENTRY)
#define SRPL_FOREACH(_c, _srp, _sl, _ENTRY) \
SLIST_FOREACH(_c, _sl, _ENTRY)
#define SRPL_NEXT_LOCKED(_e, _ENTRY) SLIST_NEXT(_e, _ENTRY)
#define SRPL_FOREACH_LOCKED(_c, _sl, _ENTRY) \
SLIST_FOREACH(_c, _sl, _ENTRY)
#define SRPL_FOREACH_SAFE_LOCKED(_c, _sl, _ENTRY, _tc) \
SLIST_FOREACH_SAFE(_c, _sl, _ENTRY, _tc)
#define SRPL_INSERT_HEAD_LOCKED(_rc, _sl, _e, _ENTRY) \
SLIST_INSERT_HEAD(_sl, _e, _ENTRY); \
#define SRPL_INSERT_AFTER_LOCKED(_rc, _se, _e, _ENTRY) \
SLIST_INSERT_AFTER(_se, _e, _ENTRY); \
#define SRPL_REMOVE_LOCKED(_rc, _sl, _e, _type, _ENTRY) \
SLIST_REMOVE(_sl, _e, _type, _ENTRY); \
#define ENTRY(y) _ENTRY(y); endbr64; _PROF_PROLOGUE
_ENTRY(INTRENTRY_LABEL(label)) /* from kernel */ \
#define ENTRY(y) _ENTRY(y); _PROF_PROLOGUE
#define ENTRY_NP(y) _ENTRY(y)
#define ASENTRY(y) _ENTRY(y); _PROF_PROLOGUE
#define ASENTRY_NP(y) _ENTRY(y)
#define ENTRY(y) _ENTRY(y); bti c; _PROF_PROLOGUE
#define ENTRY_NP(y) _ENTRY(y); bti c
#define ASENTRY(y) _ENTRY(y); bti c; _PROF_PROLOGUE
#define ASENTRY_NP(y) _ENTRY(y); bti c
#define ENTRY(y) _ENTRY(y); _PROF_PROLOGUE
#define NENTRY(y) _ENTRY(y)
#define ASENTRY(y) _ENTRY(y); _PROF_PROLOGUE
#define NASENTRY(y) _ENTRY(y)
#define ENTRY(name) _ENTRY(name)
#define ASENTRY(name) _ENTRY(name)
_ENTRY(WQE),
_ENTRY(CMD),
_ENTRY(SG)
#define ENTRY(y) _ENTRY(y); _PROF_PROLOGUE(y)
#define ASENTRY(y) _ENTRY(y); _PROF_PROLOGUE(y)
#define ENTRY(y) _ENTRY(y); _PROF_PROLOGUE(y)
#define ASENTRY(y) _ENTRY(y); _PROF_PROLOGUE(y)
#define ENTRY(y) _ENTRY(y); _PROF_PROLOGUE
#define ENTRY_NP(y) _ENTRY(y)
#define ASENTRY(y) _ENTRY(y); _PROF_PROLOGUE
#define ASENTRY_NP(y) _ENTRY(y)
#define ENTRY(y) _ENTRY(y) _PROF_PROLOGUE
#define NENTRY(y) _ENTRY(y)
#define ASENTRY(y) _ENTRY(y) _PROF_PROLOGUE
#define ENTRY(name) _ENTRY(name); _PROF_PROLOGUE
#define NENTRY(name) _ENTRY(name)
#define ASENTRY(name) _ENTRY(name); _PROF_PROLOGUE
#define SRPL_NEXT(_sr, _e, _ENTRY) srp_enter((_sr), &(_e)->_ENTRY.se_next)
#define SRPL_FOLLOW(_sr, _e, _ENTRY) srp_follow((_sr), &(_e)->_ENTRY.se_next)
#define SRPL_FOREACH(_c, _sr, _sl, _ENTRY) \
(_c) = SRPL_FOLLOW(_sr, _c, _ENTRY))
#define SRPL_NEXT_LOCKED(_e, _ENTRY) \
srp_get_locked(&(_e)->_ENTRY.se_next)
#define SRPL_FOREACH_LOCKED(_c, _sl, _ENTRY) \
(_c) = SRPL_NEXT_LOCKED((_c), _ENTRY))
#define SRPL_FOREACH_SAFE_LOCKED(_c, _sl, _ENTRY, _tc) \
(_c) && ((_tc) = SRPL_NEXT_LOCKED(_c, _ENTRY), 1); \
#define SRPL_INSERT_HEAD_LOCKED(_rc, _sl, _e, _ENTRY) do { \
srp_init(&(_e)->_ENTRY.se_next); \
&(_e)->_ENTRY.se_next, head); \
#define SRPL_INSERT_AFTER_LOCKED(_rc, _se, _e, _ENTRY) do { \
srp_init(&(_e)->_ENTRY.se_next); \
next = SRPL_NEXT_LOCKED(_se, _ENTRY); \
&(_e)->_ENTRY.se_next, next); \
&(_se)->_ENTRY.se_next, (_e)); \
#define SRPL_REMOVE_LOCKED(_rc, _sl, _e, _type, _ENTRY) do { \
ref = &c->_ENTRY.se_next; \
n = SRPL_NEXT_LOCKED(c, _ENTRY); \
srp_update_locked(&(_rc)->srpl_gc, &c->_ENTRY.se_next, NULL); \