[master] df0a067 Make the VSC-set create/destroy functions part of VRT

Poul-Henning Kamp phk at FreeBSD.org
Wed Sep 27 21:49:06 UTC 2017


commit df0a067deb035035bafcb0cb4173c1d3cd7c2752
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Sep 27 21:47:39 2017 +0000

    Make the VSC-set create/destroy functions part of VRT

diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am
index d2d32e6..84c1df2 100644
--- a/bin/varnishd/Makefile.am
+++ b/bin/varnishd/Makefile.am
@@ -139,7 +139,6 @@ nobase_pkginclude_HEADERS = \
 	cache/cache_filter.h \
 	cache/cache_backend.h \
 	cache/cache_director.h \
-	common/common_vsm.h \
 	common/common_param.h \
 	waiter/waiter.h
 
diff --git a/bin/varnishd/cache/cache_shmlog.c b/bin/varnishd/cache/cache_shmlog.c
index 1c24dc2..4099403 100644
--- a/bin/varnishd/cache/cache_shmlog.c
+++ b/bin/varnishd/cache/cache_shmlog.c
@@ -36,7 +36,6 @@
 #include <stdlib.h>
 
 #include "common/heritage.h"
-#include "common/common_vsm.h"
 
 #include "vend.h"
 #include "vgz.h"
@@ -501,8 +500,8 @@ VSM_Init(void)
 	VSC_C_main = VSC_main_New("");
 	AN(VSC_C_main);
 
-	AN(proc_vsmw);
-	vsl_head = VSMW_Allocf(proc_vsmw, VSL_CLASS,
+	AN(heritage.proc_vsmw);
+	vsl_head = VSMW_Allocf(heritage.proc_vsmw, VSL_CLASS,
 	    cache_param->vsl_space, VSL_CLASS);
 	AN(vsl_head);
 	vsl_segsize = ((cache_param->vsl_space - sizeof *vsl_head) /
diff --git a/bin/varnishd/common/common_vsc.c b/bin/varnishd/common/common_vsc.c
index 1523cea..95952ed 100644
--- a/bin/varnishd/common/common_vsc.c
+++ b/bin/varnishd/common/common_vsc.c
@@ -36,19 +36,18 @@
 #include <string.h>
 #include <stdlib.h>
 
-#include "common/common_vsm.h"
-
 #include "vdef.h"
 #include "miniobj.h"
 #include "vas.h"
 #include "vend.h"
-#include "vsmw.h"
 #include "vgz.h"
 #include "vmb.h"
+#include "vrt.h"
+#include "vsmw.h"
 #include "vqueue.h"
 #include "vapi/vsc_int.h"
 
-struct vsmw *proc_vsmw;
+#include "common/heritage.h"
 
 /*--------------------------------------------------------------------*/
 
@@ -69,7 +68,7 @@ vsc_callback_f *vsc_lock;
 vsc_callback_f *vsc_unlock;
 
 void *
-VSC_Alloc(const char *nm, size_t sd, size_t sj, const unsigned char *zj,
+VRT_VSC_Alloc(const char *nm, size_t sd, size_t sj, const unsigned char *zj,
     size_t szj, const char *fmt, va_list va)
 {
 	char *p;
@@ -85,8 +84,8 @@ VSC_Alloc(const char *nm, size_t sd, size_t sj, const unsigned char *zj,
 	else
 		bprintf(buf, "%s.%s", nm, fmt);
 
-	AN(proc_vsmw);
-	p = VSMW_Allocv(proc_vsmw, VSC_CLASS, 8 + sd + sj, buf, va);
+	AN(heritage.proc_vsmw);
+	p = VSMW_Allocv(heritage.proc_vsmw, VSC_CLASS, 8 + sd + sj, buf, va);
 	AN(p);
 
 	memset(&vz, 0, sizeof vz);
@@ -111,19 +110,19 @@ VSC_Alloc(const char *nm, size_t sd, size_t sj, const unsigned char *zj,
 }
 
 void
-VSC_Destroy(const char *nm, const void *p)
+VRT_VSC_Destroy(const char *nm, const void *p)
 {
 	struct vsc_segs *vsg;
 
 	if (vsc_lock != NULL)
 		vsc_lock();
 
-	AN(proc_vsmw);
+	AN(heritage.proc_vsmw);
 	VTAILQ_FOREACH(vsg, &vsc_seglist, list) {
 		if (vsg->ptr != p)
 			continue;
 		assert(vsg->nm == nm);
-		VSMW_Free(proc_vsmw, &vsg->seg);
+		VSMW_Free(heritage.proc_vsmw, &vsg->seg);
 		VTAILQ_REMOVE(&vsc_seglist, vsg, list);
 		FREE_OBJ(vsg);
 		break;
diff --git a/bin/varnishd/common/common_vsm.h b/bin/varnishd/common/common_vsm.h
deleted file mode 100644
index f675d07..0000000
--- a/bin/varnishd/common/common_vsm.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * Copyright (c) 2006 Verdens Gang AS
- * Copyright (c) 2006-2017 Varnish Software AS
- * All rights reserved.
- *
- * Author: Poul-Henning Kamp <phk at phk.freebsd.dk>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-#ifdef COMMON_COMMON_VSM_H
-#error "Multiple includes of common/common_vsm.h"
-#endif
-#define COMMON_COMMON_VSM_H
-
-struct vsmw;
-
-extern struct vsmw *proc_vsmw;
-
-typedef void vsc_callback_f(void);
-
-extern vsc_callback_f *vsc_lock;
-extern vsc_callback_f *vsc_unlock;
-
-void *VSC_Alloc(const char *, size_t, size_t, const unsigned char *, size_t,
-    const char *, va_list);
-void VSC_Destroy(const char *, const void *);
diff --git a/bin/varnishd/common/heritage.h b/bin/varnishd/common/heritage.h
index b12e9ea..ebc30fe 100644
--- a/bin/varnishd/common/heritage.h
+++ b/bin/varnishd/common/heritage.h
@@ -89,6 +89,8 @@ struct heritage {
 	const char			*ident;
 
 	long				mgt_pid;
+
+	struct vsmw			*proc_vsmw;
 };
 
 extern struct heritage heritage;
@@ -116,3 +118,9 @@ int VCL_TestLoad(const char *);
 struct transport;
 void XPORT_Init(void);
 const struct transport *XPORT_Find(const char *name);
+
+/* common/common_vsc.c */
+typedef void vsc_callback_f(void);
+extern vsc_callback_f *vsc_lock;
+extern vsc_callback_f *vsc_unlock;
+
diff --git a/bin/varnishd/mgt/mgt_child.c b/bin/varnishd/mgt/mgt_child.c
index 9d908fb..1c1c41b 100644
--- a/bin/varnishd/mgt/mgt_child.c
+++ b/bin/varnishd/mgt/mgt_child.c
@@ -46,7 +46,6 @@
 
 #include "mgt/mgt.h"
 #include "common/heritage.h"
-#include "common/common_vsm.h"
 
 #include "vbm.h"
 #include "vcli_serve.h"
@@ -397,8 +396,8 @@ mgt_launch_child(struct cli *cli)
 
 		VJ_subproc(JAIL_SUBPROC_WORKER);
 
-		proc_vsmw = VSMW_New(heritage.vsm_fd, 0640, "_.index");
-		AN(proc_vsmw);
+		heritage.proc_vsmw = VSMW_New(heritage.vsm_fd, 0640, "_.index");
+		AN(heritage.proc_vsmw);
 
 		child_main();
 
diff --git a/bin/varnishd/mgt/mgt_shmem.c b/bin/varnishd/mgt/mgt_shmem.c
index eda3428..954c6e2 100644
--- a/bin/varnishd/mgt/mgt_shmem.c
+++ b/bin/varnishd/mgt/mgt_shmem.c
@@ -42,7 +42,6 @@
 
 #include "mgt/mgt.h"
 #include "common/heritage.h"
-#include "common/common_vsm.h"
 
 #include "vsm_priv.h"
 #include "vsmw.h"
@@ -101,7 +100,7 @@ mgt_SHM_Init(void)
 	mgt_vsmw = VSMW_New(fd, 0640, "_.index");
 	AN(mgt_vsmw);
 
-	proc_vsmw = mgt_vsmw;
+	heritage.proc_vsmw = mgt_vsmw;
 
 	/* Setup atexit handler */
 	AZ(atexit(mgt_shm_atexit));
diff --git a/include/vrt.h b/include/vrt.h
index 27fd57b..bb875e3 100644
--- a/include/vrt.h
+++ b/include/vrt.h
@@ -50,6 +50,8 @@
  *
  * 6.2 (scheduled for: 2018-03-15)
  *	VRT_Healthy() added
+ *	VRT_VSC_Alloc() added
+ *	VRT_VSC_Destroy() added
  * 6.1 (2017-09-15 aka 5.2)
  *	http_CollectHdrSep added
  *	VRT_purge modified (may fail a transaction, signature changed)
@@ -411,3 +413,9 @@ typedef int vcl_init_f(VRT_CTX);
 typedef void vcl_fini_f(VRT_CTX);
 typedef void vcl_func_f(VRT_CTX);
 typedef int vmod_event_f(VRT_CTX, struct vmod_priv *, enum vcl_event_e);
+
+#ifdef va_start	// XXX: hackish
+void *VRT_VSC_Alloc(const char *, size_t, size_t, const unsigned char *, size_t,
+    const char *, va_list);
+void VRT_VSC_Destroy(const char *, const void *);
+#endif
diff --git a/lib/libvcc/vsctool.py b/lib/libvcc/vsctool.py
index d21e06b..854968e 100644
--- a/lib/libvcc/vsctool.py
+++ b/lib/libvcc/vsctool.py
@@ -162,7 +162,7 @@ class vscset(object):
 		fo.write('#include <stdint.h>\n')
 		fo.write('#include "vdef.h"\n')
 		fo.write('#include "vas.h"\n')
-		fo.write('#include "common/common_vsm.h"\n')
+		fo.write('#include "vrt.h"\n')
 		fo.write('#include "VSC_%s.h"\n' % self.name)
 
 		fo.write("\n")
@@ -187,7 +187,7 @@ class vscset(object):
 		fo.write("\t" + self.struct + " *retval;\n")
 		fo.write("\n")
 		fo.write("\tva_start(ap, fmt);\n")
-		fo.write("\tretval = VSC_Alloc")
+		fo.write("\tretval = VRT_VSC_Alloc")
 		fo.write("(vsc_" + self.name + "_name, ")
 		fo.write("sizeof(" + self.struct + "),\n\t    ")
 		fo.write("vsc_" + self.name + "_jsonlen, ")
@@ -205,7 +205,7 @@ class vscset(object):
 		fo.write("{\n")
 		fo.write("\n")
 		fo.write("\tAN(pp);\n")
-		fo.write('\tVSC_Destroy(vsc_%s_name, *pp);\n' % self.name)
+		fo.write('\tVRT_VSC_Destroy(vsc_%s_name, *pp);\n' % self.name)
 		fo.write("\t*pp = NULL;\n")
 		fo.write("}\n")
 


More information about the varnish-commit mailing list