diff options
author | Mark Stapp <mjs@voltanet.io> | 2021-03-24 18:57:11 +0100 |
---|---|---|
committer | Mark Stapp <mjs@voltanet.io> | 2021-04-20 18:48:06 +0200 |
commit | 42ddefe8166dc5fc3514a96d5da683fa7a308a87 (patch) | |
tree | 652ba198f863d14d894fdd07273599a0d95dd03e /lib/zlog.c | |
parent | Merge pull request #8373 from mjstapp/fix_ospf_timeval_dump (diff) | |
download | frr-42ddefe8166dc5fc3514a96d5da683fa7a308a87.tar.xz frr-42ddefe8166dc5fc3514a96d5da683fa7a308a87.zip |
libs: add api to enable immediate output of zlog
The log module buffers outgoing messages by default; add an
api to turn that off, and emit messages immediately.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
Diffstat (limited to 'lib/zlog.c')
-rw-r--r-- | lib/zlog.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/zlog.c b/lib/zlog.c index 24800c6e6..a99fd71f0 100644 --- a/lib/zlog.c +++ b/lib/zlog.c @@ -81,6 +81,11 @@ static gid_t zlog_gid = -1; DECLARE_ATOMLIST(zlog_targets, struct zlog_target, head); static struct zlog_targets_head zlog_targets; +/* Global setting for buffered vs immediate output. The default is + * per-pthread buffering. + */ +static bool default_immediate; + /* cf. zlog.h for additional comments on this struct. * * Note: you MUST NOT pass the format string + va_list to non-FRR format @@ -395,7 +400,7 @@ static void vzlog_tls(struct zlog_tls *zlog_tls, const struct xref_logmsg *xref, struct zlog_msg *msg; char *buf; bool ignoremsg = true; - bool immediate = false; + bool immediate = default_immediate; /* avoid further processing cost if no target wants this message */ rcu_read_lock(); @@ -714,6 +719,14 @@ struct zlog_target *zlog_target_replace(struct zlog_target *oldzt, return oldzt; } +/* + * Enable or disable 'immediate' output - default is to buffer + * each pthread's messages. + */ +void zlog_set_immediate(bool set_p) +{ + default_immediate = set_p; +} /* common init */ |