[master] ab1eca8c7 vmod_debug: Add a VDP to allocate the thread_workspace

Nils Goroll nils.goroll at uplex.de
Mon Oct 28 12:12:05 UTC 2024


commit ab1eca8c73053e59c6a3f366e2cc4ae7f7ae7bcb
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Mon Oct 28 10:50:44 2024 +0100

    vmod_debug: Add a VDP to allocate the thread_workspace

diff --git a/vmod/vmod_debug_filters.c b/vmod/vmod_debug_filters.c
index f810e8d68..68fbb5566 100644
--- a/vmod/vmod_debug_filters.c
+++ b/vmod/vmod_debug_filters.c
@@ -630,6 +630,41 @@ xyzzy_chkcrc32(VRT_CTX, VCL_INT expected, VCL_ENUM mode_e)
 	cfg->expected = (uintmax_t)expected % UINT32_MAX;
 }
 
+/**********************************************************************
+ * reserve thread_workspace
+ */
+
+static int v_matchproto_(vdp_init_f)
+xyzzy_awshog_init(VRT_CTX, struct vdp_ctx *vdc, void **priv)
+{
+	struct ws *aws;
+	unsigned u;
+
+	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
+	CHECK_OBJ_NOTNULL(vdc, VDP_CTX_MAGIC);
+	CHECK_OBJ_ORNULL(vdc->oc, OBJCORE_MAGIC);
+	CHECK_OBJ_NOTNULL(vdc->hp, HTTP_MAGIC);
+	AN(vdc->clen);
+	AN(priv);
+
+	if (ctx->req != NULL)
+		aws = ctx->req->wrk->aws;
+	else if (ctx->bo != NULL)
+		aws = ctx->bo->wrk->aws;
+	else
+		WRONG("neither req nor bo");
+
+	u = WS_ReserveAll(aws);
+	WS_Release(aws, 0);
+	(void) WS_Alloc(aws, u);
+	return (1);
+}
+
+static const struct vdp xyzzy_vdp_awshog = {
+	.name  = "debug.awshog",
+	.init  = xyzzy_awshog_init
+};
+
 void
 debug_add_filters(VRT_CTX)
 {
@@ -639,6 +674,7 @@ debug_add_filters(VRT_CTX)
 	AZ(VRT_AddFilter(ctx, &xyzzy_vfp_slow, &xyzzy_vdp_slow));
 	AZ(VRT_AddFilter(ctx, NULL, &xyzzy_vdp_chksha256));
 	AZ(VRT_AddFilter(ctx, NULL, &xyzzy_vdp_chkcrc32));
+	AZ(VRT_AddFilter(ctx, NULL, &xyzzy_vdp_awshog));
 }
 
 void
@@ -650,4 +686,5 @@ debug_remove_filters(VRT_CTX)
 	VRT_RemoveFilter(ctx, NULL, &xyzzy_vdp_chunked);
 	VRT_RemoveFilter(ctx, NULL, &xyzzy_vdp_chksha256);
 	VRT_RemoveFilter(ctx, NULL, &xyzzy_vdp_chkcrc32);
+	VRT_RemoveFilter(ctx, NULL, &xyzzy_vdp_awshog);
 }


More information about the varnish-commit mailing list