summaryrefslogtreecommitdiffstats
path: root/lib/zlog.c
diff options
context:
space:
mode:
authorMark Stapp <mjs@voltanet.io>2021-03-24 18:57:11 +0100
committerMark Stapp <mjs@voltanet.io>2021-04-20 18:48:06 +0200
commit42ddefe8166dc5fc3514a96d5da683fa7a308a87 (patch)
tree652ba198f863d14d894fdd07273599a0d95dd03e /lib/zlog.c
parentMerge pull request #8373 from mjstapp/fix_ospf_timeval_dump (diff)
downloadfrr-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.c15
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 */