[experimental-ims] 401ddc4 Make the VSM layout more hexdump friendly
Geoff Simmons
geoff at varnish-cache.org
Mon Jan 9 21:52:40 CET 2012
commit 401ddc4e9462b2c8476e945c6e148982ea7325e7
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Sun Nov 20 13:29:14 2011 +0000
Make the VSM layout more hexdump friendly
diff --git a/bin/varnishd/common/common_vsm.c b/bin/varnishd/common/common_vsm.c
index f525a1e..781b01c 100644
--- a/bin/varnishd/common/common_vsm.c
+++ b/bin/varnishd/common/common_vsm.c
@@ -137,7 +137,7 @@ VSM_common_new(void *p, ssize_t l)
sc->head = (void *)sc->b;
/* This should not be necessary, but just in case...*/
memset(sc->head, 0, sizeof *sc->head);
- sc->head->magic = VSM_HEAD_MAGIC;
+ memcpy(sc->head->marker, VSM_HEAD_MARKER, sizeof sc->head->marker);
sc->head->hdrsize = sizeof *sc->head;
sc->head->shm_size = l;
sc->head->alloc_seq = random() | 1;
@@ -145,8 +145,8 @@ VSM_common_new(void *p, ssize_t l)
ALLOC_OBJ(vr, VSM_RANGE_MAGIC);
AN(vr);
- vr->off = PRNDUP(sizeof(*sc->head));
- vr->len = l - vr->off;
+ vr->off = RUP2(sizeof(*sc->head), 16);
+ vr->len = RDN2(l - vr->off, 16);
VTAILQ_INSERT_TAIL(&sc->r_free, vr, list);
return (sc);
}
@@ -182,9 +182,8 @@ VSM_common_alloc(struct vsm_sc *sc, ssize_t size,
vsm_common_insert_free(sc, vr);
}
- size = PRNDUP(size);
- l1 = size + sizeof(struct VSM_chunk);
- l2 = size + 2 * sizeof(struct VSM_chunk);
+ l1 = RUP2(size + sizeof(struct VSM_chunk), 16);
+ l2 = RUP2(size + 2 * sizeof(struct VSM_chunk), 16);
/* Find space in free-list */
VTAILQ_FOREACH_SAFE(vr, &sc->r_free, list, vr2) {
@@ -227,7 +226,8 @@ VSM_common_alloc(struct vsm_sc *sc, ssize_t size,
vr->chunk = (void *)(sc->b + vr->off);
vr->ptr = (vr->chunk + 1);
- vr->chunk->magic = VSM_CHUNK_MAGIC;
+ memcpy(vr->chunk->marker, VSM_CHUNK_MARKER, sizeof vr->chunk->marker);
+ vr->chunk->len = vr->len;
strcpy(vr->chunk->class, class);
strcpy(vr->chunk->type, type);
strcpy(vr->chunk->ident, ident);
diff --git a/include/vapi/vsm_int.h b/include/vapi/vsm_int.h
index c33ba35..c0a2df9 100644
--- a/include/vapi/vsm_int.h
+++ b/include/vapi/vsm_int.h
@@ -98,8 +98,8 @@
#define VSM_FILENAME "_.vsm"
struct VSM_chunk {
-#define VSM_CHUNK_MAGIC 0xa15712e5 /* From /dev/random */
- unsigned magic;
+#define VSM_CHUNK_MARKER "VSMCHUNK"
+ char marker[8];
ssize_t len; /* Incl VSM_chunk */
ssize_t next; /* Offset in shmem */
char class[8];
@@ -108,8 +108,8 @@ struct VSM_chunk {
};
struct VSM_head {
-#define VSM_HEAD_MAGIC 0xe75f7e91 /* From /dev/random */
- unsigned magic;
+#define VSM_HEAD_MARKER "VSMHEAD0" /* Incr. as version# *
+ char marker[8];
ssize_t hdrsize;
ssize_t shm_size;
ssize_t first; /* Offset, first chunk */
More information about the varnish-commit
mailing list