[master] 9588cfe7c Simple STV temp buffer implementation
Dridi Boukelmoune
dridi.boukelmoune at gmail.com
Mon Aug 30 08:31:06 UTC 2021
commit 9588cfe7c925081a5eeaa1f8ee6c6c949b92d519
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date: Tue Jun 22 11:48:55 2021 +0200
Simple STV temp buffer implementation
diff --git a/bin/varnishd/storage/storage_simple.c b/bin/varnishd/storage/storage_simple.c
index 7114398d8..bf7fc37b7 100644
--- a/bin/varnishd/storage/storage_simple.c
+++ b/bin/varnishd/storage/storage_simple.c
@@ -47,7 +47,11 @@
/*-------------------------------------------------------------------*/
static struct storage *
-sml_stv_alloc(const struct stevedore *stv, ssize_t size, int flags)
+objallocwithnuke(struct worker *, const struct stevedore *, ssize_t size,
+ int flags);
+
+static struct storage *
+sml_stv_alloc(const struct stevedore *stv, size_t size, int flags)
{
struct storage *st;
@@ -161,6 +165,39 @@ SML_allocobj(struct worker *wrk, const struct stevedore *stv,
return (1);
}
+void * v_matchproto_(storage_allocbuf_t)
+SML_AllocBuf(struct worker *wrk, const struct stevedore *stv, size_t size,
+ uintptr_t *ppriv)
+{
+ struct storage *st;
+
+ CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+ CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
+ AN(ppriv);
+
+ if (size > UINT_MAX)
+ return (NULL);
+ st = objallocwithnuke(wrk, stv, size, 0);
+ if (st == NULL)
+ return (NULL);
+ assert(st->space >= size);
+ st->len = size;
+ *ppriv = (uintptr_t)st;
+ return (st->ptr);
+}
+
+void v_matchproto_(storage_freebuf_t)
+SML_FreeBuf(struct worker *wrk, const struct stevedore *stv, uintptr_t priv)
+{
+ struct storage *st;
+
+ CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+ CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
+
+ CAST_OBJ_NOTNULL(st, (void *)priv, STORAGE_MAGIC);
+ sml_stv_free(stv, st);
+}
+
/*---------------------------------------------------------------------
*/
diff --git a/bin/varnishd/storage/storage_simple.h b/bin/varnishd/storage/storage_simple.h
index 4e63efb9d..3f288aef7 100644
--- a/bin/varnishd/storage/storage_simple.h
+++ b/bin/varnishd/storage/storage_simple.h
@@ -68,6 +68,9 @@ extern const struct obj_methods SML_methods;
struct object *SML_MkObject(const struct stevedore *, struct objcore *,
void *ptr);
+void *SML_AllocBuf(struct worker *, const struct stevedore *, size_t,
+ uintptr_t *);
+void SML_FreeBuf(struct worker *, const struct stevedore *, uintptr_t);
storage_allocobj_f SML_allocobj;
storage_panic_f SML_panic;
More information about the varnish-commit
mailing list