[PATCH 2/3] Make vmod_debug register for expiry callbacks

Poul-Henning Kamp phk at phk.freebsd.dk
Wed Feb 25 20:40:41 CET 2015


--------
In message <1424876415-8809-2-git-send-email-martin at varnish-software.com>, Mart
in Blix Grydeland writes:

I'm not so keen on vmod_debug _always_ doing this, in particular not
the VSL spamming.

Isn't there some more delicate way we can do it ?  From vcl_init{} maybe ?

>---
> lib/libvmod_debug/vmod_debug.c | 33 +++++++++++++++++++++++++++++++++
> 1 file changed, 33 insertions(+)
>
>diff --git a/lib/libvmod_debug/vmod_debug.c b/lib/libvmod_debug/vmod_debug.c
>index 7bd719f..69256d2 100644
>--- a/lib/libvmod_debug/vmod_debug.c
>+++ b/lib/libvmod_debug/vmod_debug.c
>@@ -38,6 +38,26 @@
> 
> static int n_init = 0;
> 
>+static struct exp_callback exp_cb;
>+
>+static void __match_proto__(exp_callback_f)
>+exp_cb_insert(struct worker *wrk, struct objcore *oc, void *priv)
>+{
>+
>+	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
>+	VSL(SLT_Debug, 0, "exp_cb_insert: %p", oc);
>+	assert(priv == &exp_cb);
>+}
>+
>+static void __match_proto__(exp_callback_f)
>+exp_cb_remove(struct worker *wrk, struct objcore *oc, void *priv)
>+{
>+
>+	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
>+	VSL(SLT_Debug, 0, "exp_cb_remove: %p", oc);
>+	assert(priv == &exp_cb);
>+}
>+
> VCL_VOID __match_proto__(td_debug_panic)
> vmod_panic(VRT_CTX, const char *str, ...)
> {
>@@ -74,6 +94,10 @@ fini_function(void *priv)
> 
> 	assert(n_init > 0);
> 	n_init--;
>+	if (n_init == 0) {
>+		EXP_Dereg_Callback(&exp_cb);
>+		VSL(SLT_Debug, 0, "exp_cb: deregistered");
>+	}
> }
> 
> int
>@@ -83,6 +107,15 @@ init_function(struct vmod_priv *priv, const struct VCL_conf *cfg)
> 
> 	priv->priv = &n_init;
> 	priv->free = fini_function;
>+	if (n_init == 0) {
>+		memset(&exp_cb, 0, sizeof exp_cb);
>+		exp_cb.magic = EXP_CALLBACK_MAGIC;
>+		exp_cb.cb_insert = exp_cb_insert;
>+		exp_cb.cb_remove = exp_cb_remove;
>+		exp_cb.priv = &exp_cb;
>+		EXP_Reg_Callback(&exp_cb);
>+		VSL(SLT_Debug, 0, "exp_cb: registered");
>+	}
> 	n_init++;
> 	return (0);
> }
>-- 
>2.1.4
>

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.



More information about the varnish-dev mailing list