forked from Mirror/frr
lib: convert xref_threadsched to xref_eventsched
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
3905fb7393
commit
5163a1c560
16
lib/event.c
16
lib/event.c
|
@ -793,7 +793,7 @@ char *event_timer_to_hhmmss(char *buf, int buf_size, struct event *t_timer)
|
||||||
/* Get new thread. */
|
/* Get new thread. */
|
||||||
static struct event *thread_get(struct event_master *m, uint8_t type,
|
static struct event *thread_get(struct event_master *m, uint8_t type,
|
||||||
void (*func)(struct event *), void *arg,
|
void (*func)(struct event *), void *arg,
|
||||||
const struct xref_threadsched *xref)
|
const struct xref_eventsched *xref)
|
||||||
{
|
{
|
||||||
struct event *thread = event_list_pop(&m->unuse);
|
struct event *thread = event_list_pop(&m->unuse);
|
||||||
struct cpu_thread_history tmp;
|
struct cpu_thread_history tmp;
|
||||||
|
@ -947,7 +947,7 @@ done:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add new read thread. */
|
/* Add new read thread. */
|
||||||
void _event_add_read_write(const struct xref_threadsched *xref,
|
void _event_add_read_write(const struct xref_eventsched *xref,
|
||||||
struct event_master *m, void (*func)(struct event *),
|
struct event_master *m, void (*func)(struct event *),
|
||||||
void *arg, int fd, struct event **t_ptr)
|
void *arg, int fd, struct event **t_ptr)
|
||||||
{
|
{
|
||||||
|
@ -1026,7 +1026,7 @@ void _event_add_read_write(const struct xref_threadsched *xref,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _event_add_timer_timeval(const struct xref_threadsched *xref,
|
static void _event_add_timer_timeval(const struct xref_eventsched *xref,
|
||||||
struct event_master *m,
|
struct event_master *m,
|
||||||
void (*func)(struct event *), void *arg,
|
void (*func)(struct event *), void *arg,
|
||||||
struct timeval *time_relative,
|
struct timeval *time_relative,
|
||||||
|
@ -1080,7 +1080,7 @@ static void _event_add_timer_timeval(const struct xref_threadsched *xref,
|
||||||
|
|
||||||
|
|
||||||
/* Add timer event thread. */
|
/* Add timer event thread. */
|
||||||
void _event_add_timer(const struct xref_threadsched *xref,
|
void _event_add_timer(const struct xref_eventsched *xref,
|
||||||
struct event_master *m, void (*func)(struct event *),
|
struct event_master *m, void (*func)(struct event *),
|
||||||
void *arg, long timer, struct event **t_ptr)
|
void *arg, long timer, struct event **t_ptr)
|
||||||
{
|
{
|
||||||
|
@ -1095,7 +1095,7 @@ void _event_add_timer(const struct xref_threadsched *xref,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add timer event thread with "millisecond" resolution */
|
/* Add timer event thread with "millisecond" resolution */
|
||||||
void _event_add_timer_msec(const struct xref_threadsched *xref,
|
void _event_add_timer_msec(const struct xref_eventsched *xref,
|
||||||
struct event_master *m, void (*func)(struct event *),
|
struct event_master *m, void (*func)(struct event *),
|
||||||
void *arg, long timer, struct event **t_ptr)
|
void *arg, long timer, struct event **t_ptr)
|
||||||
{
|
{
|
||||||
|
@ -1110,7 +1110,7 @@ void _event_add_timer_msec(const struct xref_threadsched *xref,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add timer event thread with "timeval" resolution */
|
/* Add timer event thread with "timeval" resolution */
|
||||||
void _event_add_timer_tv(const struct xref_threadsched *xref,
|
void _event_add_timer_tv(const struct xref_eventsched *xref,
|
||||||
struct event_master *m, void (*func)(struct event *),
|
struct event_master *m, void (*func)(struct event *),
|
||||||
void *arg, struct timeval *tv, struct event **t_ptr)
|
void *arg, struct timeval *tv, struct event **t_ptr)
|
||||||
{
|
{
|
||||||
|
@ -1118,7 +1118,7 @@ void _event_add_timer_tv(const struct xref_threadsched *xref,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add simple event thread. */
|
/* Add simple event thread. */
|
||||||
void _event_add_event(const struct xref_threadsched *xref,
|
void _event_add_event(const struct xref_eventsched *xref,
|
||||||
struct event_master *m, void (*func)(struct event *),
|
struct event_master *m, void (*func)(struct event *),
|
||||||
void *arg, int val, struct event **t_ptr)
|
void *arg, int val, struct event **t_ptr)
|
||||||
{
|
{
|
||||||
|
@ -2055,7 +2055,7 @@ void event_call(struct event *thread)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Execute thread */
|
/* Execute thread */
|
||||||
void _event_execute(const struct xref_threadsched *xref, struct event_master *m,
|
void _event_execute(const struct xref_eventsched *xref, struct event_master *m,
|
||||||
void (*func)(struct event *), void *arg, int val)
|
void (*func)(struct event *), void *arg, int val)
|
||||||
{
|
{
|
||||||
struct event *thread;
|
struct event *thread;
|
||||||
|
|
26
lib/event.h
26
lib/event.h
|
@ -1,5 +1,5 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
/* Thread management routine header.
|
/* Event management routine header.
|
||||||
* Copyright (C) 1998 Kunihiro Ishiguro
|
* Copyright (C) 1998 Kunihiro Ishiguro
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ struct fd_handler {
|
||||||
nfds_t copycount;
|
nfds_t copycount;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct xref_threadsched {
|
struct xref_eventsched {
|
||||||
struct xref xref;
|
struct xref xref;
|
||||||
|
|
||||||
const char *funcname;
|
const char *funcname;
|
||||||
|
@ -120,7 +120,7 @@ struct event {
|
||||||
struct timeval real;
|
struct timeval real;
|
||||||
struct cpu_thread_history *hist; /* cache pointer to cpu_history */
|
struct cpu_thread_history *hist; /* cache pointer to cpu_history */
|
||||||
unsigned long yield; /* yield time in microseconds */
|
unsigned long yield; /* yield time in microseconds */
|
||||||
const struct xref_threadsched *xref; /* origin location */
|
const struct xref_eventsched *xref; /* origin location */
|
||||||
pthread_mutex_t mtx; /* mutex for thread.c functions */
|
pthread_mutex_t mtx; /* mutex for thread.c functions */
|
||||||
bool ignore_timer_late;
|
bool ignore_timer_late;
|
||||||
};
|
};
|
||||||
|
@ -174,9 +174,9 @@ struct cpu_thread_history {
|
||||||
|
|
||||||
#define _xref_t_a(addfn, type, m, f, a, v, t) \
|
#define _xref_t_a(addfn, type, m, f, a, v, t) \
|
||||||
({ \
|
({ \
|
||||||
static const struct xref_threadsched _xref __attribute__( \
|
static const struct xref_eventsched _xref __attribute__( \
|
||||||
(used)) = { \
|
(used)) = { \
|
||||||
.xref = XREF_INIT(XREFT_THREADSCHED, NULL, __func__), \
|
.xref = XREF_INIT(XREFT_EVENTSCHED, NULL, __func__), \
|
||||||
.funcname = #f, \
|
.funcname = #f, \
|
||||||
.dest = #t, \
|
.dest = #t, \
|
||||||
.event_type = EVENT_##type, \
|
.event_type = EVENT_##type, \
|
||||||
|
@ -197,9 +197,9 @@ struct cpu_thread_history {
|
||||||
|
|
||||||
#define event_execute(m, f, a, v) \
|
#define event_execute(m, f, a, v) \
|
||||||
({ \
|
({ \
|
||||||
static const struct xref_threadsched _xref __attribute__( \
|
static const struct xref_eventsched _xref __attribute__( \
|
||||||
(used)) = { \
|
(used)) = { \
|
||||||
.xref = XREF_INIT(XREFT_THREADSCHED, NULL, __func__), \
|
.xref = XREF_INIT(XREFT_EVENTSCHED, NULL, __func__), \
|
||||||
.funcname = #f, \
|
.funcname = #f, \
|
||||||
.dest = NULL, \
|
.dest = NULL, \
|
||||||
.event_type = EVENT_EXECUTE, \
|
.event_type = EVENT_EXECUTE, \
|
||||||
|
@ -214,32 +214,32 @@ void thread_master_set_name(struct event_master *master, const char *name);
|
||||||
extern void thread_master_free(struct event_master *m);
|
extern void thread_master_free(struct event_master *m);
|
||||||
extern void thread_master_free_unused(struct event_master *m);
|
extern void thread_master_free_unused(struct event_master *m);
|
||||||
|
|
||||||
extern void _event_add_read_write(const struct xref_threadsched *xref,
|
extern void _event_add_read_write(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*fn)(struct event *), void *arg, int fd,
|
void (*fn)(struct event *), void *arg, int fd,
|
||||||
struct event **tref);
|
struct event **tref);
|
||||||
|
|
||||||
extern void _event_add_timer(const struct xref_threadsched *xref,
|
extern void _event_add_timer(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*fn)(struct event *), void *arg, long t,
|
void (*fn)(struct event *), void *arg, long t,
|
||||||
struct event **tref);
|
struct event **tref);
|
||||||
|
|
||||||
extern void _event_add_timer_msec(const struct xref_threadsched *xref,
|
extern void _event_add_timer_msec(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*fn)(struct event *), void *arg, long t,
|
void (*fn)(struct event *), void *arg, long t,
|
||||||
struct event **tref);
|
struct event **tref);
|
||||||
|
|
||||||
extern void _event_add_timer_tv(const struct xref_threadsched *xref,
|
extern void _event_add_timer_tv(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*fn)(struct event *), void *arg,
|
void (*fn)(struct event *), void *arg,
|
||||||
struct timeval *tv, struct event **tref);
|
struct timeval *tv, struct event **tref);
|
||||||
|
|
||||||
extern void _event_add_event(const struct xref_threadsched *xref,
|
extern void _event_add_event(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*fn)(struct event *), void *arg, int val,
|
void (*fn)(struct event *), void *arg, int val,
|
||||||
struct event **tref);
|
struct event **tref);
|
||||||
|
|
||||||
extern void _event_execute(const struct xref_threadsched *xref,
|
extern void _event_execute(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*fn)(struct event *), void *arg, int val);
|
void (*fn)(struct event *), void *arg, int val);
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,7 @@ out_err:
|
||||||
cb->read.cb_error(cb->read.arg, cb->zmqsock);
|
cb->read.cb_error(cb->read.arg, cb->zmqsock);
|
||||||
}
|
}
|
||||||
|
|
||||||
int _frrzmq_event_add_read(const struct xref_threadsched *xref,
|
int _frrzmq_event_add_read(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*msgfunc)(void *arg, void *zmqsock),
|
void (*msgfunc)(void *arg, void *zmqsock),
|
||||||
void (*partfunc)(void *arg, void *zmqsock,
|
void (*partfunc)(void *arg, void *zmqsock,
|
||||||
|
@ -257,7 +257,7 @@ out_err:
|
||||||
cb->write.cb_error(cb->write.arg, cb->zmqsock);
|
cb->write.cb_error(cb->write.arg, cb->zmqsock);
|
||||||
}
|
}
|
||||||
|
|
||||||
int _frrzmq_event_add_write(const struct xref_threadsched *xref,
|
int _frrzmq_event_add_write(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*msgfunc)(void *arg, void *zmqsock),
|
void (*msgfunc)(void *arg, void *zmqsock),
|
||||||
void (*errfunc)(void *arg, void *zmqsock),
|
void (*errfunc)(void *arg, void *zmqsock),
|
||||||
|
|
|
@ -59,9 +59,9 @@ extern void frrzmq_finish(void);
|
||||||
|
|
||||||
#define _xref_zmq_a(type, f, d, call) \
|
#define _xref_zmq_a(type, f, d, call) \
|
||||||
({ \
|
({ \
|
||||||
static const struct xref_threadsched _xref __attribute__( \
|
static const struct xref_eventsched _xref __attribute__( \
|
||||||
(used)) = { \
|
(used)) = { \
|
||||||
.xref = XREF_INIT(XREFT_THREADSCHED, NULL, __func__), \
|
.xref = XREF_INIT(XREFT_EVENTSCHED, NULL, __func__), \
|
||||||
.funcname = #f, \
|
.funcname = #f, \
|
||||||
.dest = #d, \
|
.dest = #d, \
|
||||||
.event_type = EVENT_##type, \
|
.event_type = EVENT_##type, \
|
||||||
|
@ -108,14 +108,14 @@ struct frrzmq_cb;
|
||||||
* loop.
|
* loop.
|
||||||
*/
|
*/
|
||||||
extern int
|
extern int
|
||||||
_frrzmq_event_add_read(const struct xref_threadsched *xref,
|
_frrzmq_event_add_read(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*msgfunc)(void *arg, void *zmqsock),
|
void (*msgfunc)(void *arg, void *zmqsock),
|
||||||
void (*partfunc)(void *arg, void *zmqsock,
|
void (*partfunc)(void *arg, void *zmqsock,
|
||||||
zmq_msg_t *msg, unsigned partnum),
|
zmq_msg_t *msg, unsigned partnum),
|
||||||
void (*errfunc)(void *arg, void *zmqsock), void *arg,
|
void (*errfunc)(void *arg, void *zmqsock), void *arg,
|
||||||
void *zmqsock, struct frrzmq_cb **cb);
|
void *zmqsock, struct frrzmq_cb **cb);
|
||||||
extern int _frrzmq_event_add_write(const struct xref_threadsched *xref,
|
extern int _frrzmq_event_add_write(const struct xref_eventsched *xref,
|
||||||
struct event_master *master,
|
struct event_master *master,
|
||||||
void (*msgfunc)(void *arg, void *zmqsock),
|
void (*msgfunc)(void *arg, void *zmqsock),
|
||||||
void (*errfunc)(void *arg, void *zmqsock),
|
void (*errfunc)(void *arg, void *zmqsock),
|
||||||
|
|
|
@ -20,7 +20,7 @@ extern "C" {
|
||||||
enum xref_type {
|
enum xref_type {
|
||||||
XREFT_NONE = 0,
|
XREFT_NONE = 0,
|
||||||
|
|
||||||
XREFT_THREADSCHED = 0x100,
|
XREFT_EVENTSCHED = 0x100,
|
||||||
|
|
||||||
XREFT_LOGMSG = 0x200,
|
XREFT_LOGMSG = 0x200,
|
||||||
XREFT_ASSERT = 0x280,
|
XREFT_ASSERT = 0x280,
|
||||||
|
|
|
@ -40,7 +40,7 @@ tool available) could not be found. It should be included with the sources.
|
||||||
|
|
||||||
# constants, need to be kept in sync manually...
|
# constants, need to be kept in sync manually...
|
||||||
|
|
||||||
XREFT_THREADSCHED = 0x100
|
XREFT_EVENTSCHED = 0x100
|
||||||
XREFT_LOGMSG = 0x200
|
XREFT_LOGMSG = 0x200
|
||||||
XREFT_DEFUN = 0x300
|
XREFT_DEFUN = 0x300
|
||||||
XREFT_INSTALL_ELEMENT = 0x301
|
XREFT_INSTALL_ELEMENT = 0x301
|
||||||
|
@ -110,7 +110,7 @@ class XrefThreadSched(ELFDissectStruct, XrelfoJson):
|
||||||
struct = "xref_threadsched"
|
struct = "xref_threadsched"
|
||||||
|
|
||||||
|
|
||||||
Xref.containers[XREFT_THREADSCHED] = XrefThreadSched
|
Xref.containers[XREFT_EVENTSCHED] = XrefThreadSched
|
||||||
|
|
||||||
|
|
||||||
class XrefLogmsg(ELFDissectStruct, XrelfoJson):
|
class XrefLogmsg(ELFDissectStruct, XrelfoJson):
|
||||||
|
|
Loading…
Reference in a new issue