summaryrefslogtreecommitdiff
path: root/lib/frr_zmq.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/frr_zmq.h')
-rw-r--r--lib/frr_zmq.h42
1 files changed, 29 insertions, 13 deletions
diff --git a/lib/frr_zmq.h b/lib/frr_zmq.h
index 4303df9ccd..d30cf8a841 100644
--- a/lib/frr_zmq.h
+++ b/lib/frr_zmq.h
@@ -67,18 +67,32 @@ extern void *frrzmq_context;
extern void frrzmq_init(void);
extern void frrzmq_finish(void);
-#define debugargdef const char *funcname, const char *schedfrom, int fromln
+#define _xref_zmq_a(type, f, d, call) \
+ ({ \
+ static const struct xref_threadsched _xref \
+ __attribute__((used)) = { \
+ .xref = XREF_INIT(XREFT_THREADSCHED, NULL, __func__), \
+ .funcname = #f, \
+ .dest = #d, \
+ .thread_type = THREAD_ ## type, \
+ }; \
+ XREF_LINK(_xref.xref); \
+ call; \
+ }) \
+ /* end */
/* core event registration, one of these 2 macros should be used */
#define frrzmq_thread_add_read_msg(m, f, e, a, z, d) \
- funcname_frrzmq_thread_add_read(m, f, NULL, e, a, z, d, #f, __FILE__, \
- __LINE__)
+ _xref_zmq_a(READ, f, d, \
+ _frrzmq_thread_add_read(&_xref, m, f, NULL, e, a, z, d))
+
#define frrzmq_thread_add_read_part(m, f, e, a, z, d) \
- funcname_frrzmq_thread_add_read(m, NULL, f, e, a, z, d, #f, __FILE__, \
- __LINE__)
+ _xref_zmq_a(READ, f, d, \
+ _frrzmq_thread_add_read(&_xref, m, NULL, f, e, a, z, d))
+
#define frrzmq_thread_add_write_msg(m, f, e, a, z, d) \
- funcname_frrzmq_thread_add_write(m, f, e, a, z, d, #f, __FILE__, \
- __LINE__)
+ _xref_zmq_a(WRITE, f, d, \
+ _frrzmq_thread_add_write(&_xref, m, f, e, a, z, d))
struct cb_core;
struct frrzmq_cb;
@@ -104,16 +118,18 @@ struct frrzmq_cb;
* may schedule the event to run as soon as libfrr is back in its main
* loop.
*/
-extern int funcname_frrzmq_thread_add_read(
- struct thread_master *master, void (*msgfunc)(void *arg, void *zmqsock),
+extern int _frrzmq_thread_add_read(
+ const struct xref_threadsched *xref, struct thread_master *master,
+ void (*msgfunc)(void *arg, void *zmqsock),
void (*partfunc)(void *arg, void *zmqsock, zmq_msg_t *msg,
unsigned partnum),
void (*errfunc)(void *arg, void *zmqsock), void *arg, void *zmqsock,
- struct frrzmq_cb **cb, debugargdef);
-extern int funcname_frrzmq_thread_add_write(
- struct thread_master *master, void (*msgfunc)(void *arg, void *zmqsock),
+ struct frrzmq_cb **cb);
+extern int _frrzmq_thread_add_write(
+ const struct xref_threadsched *xref, struct thread_master *master,
+ void (*msgfunc)(void *arg, void *zmqsock),
void (*errfunc)(void *arg, void *zmqsock), void *arg, void *zmqsock,
- struct frrzmq_cb **cb, debugargdef);
+ struct frrzmq_cb **cb);
extern void frrzmq_thread_cancel(struct frrzmq_cb **cb, struct cb_core *core);