summaryrefslogtreecommitdiffstats
path: root/jemalloc/test/rallocm.c
diff options
context:
space:
mode:
authorJason Evans <je@facebook.com>2010-09-17 22:46:18 (GMT)
committerJason Evans <je@facebook.com>2010-09-17 22:46:18 (GMT)
commit8e3c3c61b5bb676a705450708e7e79698cdc9e0c (patch)
tree5cb1ffd5b3cb231a9f69ae40b7bba8351455c2ea /jemalloc/test/rallocm.c
parent4cc6a60a4f3ee481bdde233d6fa72e256cb9477a (diff)
downloadjemalloc-8e3c3c61b5bb676a705450708e7e79698cdc9e0c.zip
jemalloc-8e3c3c61b5bb676a705450708e7e79698cdc9e0c.tar.gz
jemalloc-8e3c3c61b5bb676a705450708e7e79698cdc9e0c.tar.bz2
Add {,r,s,d}allocm().
Add allocm(), rallocm(), sallocm(), and dallocm(), which are a functional superset of malloc(), calloc(), posix_memalign(), malloc_usable_size(), and free().
Diffstat (limited to 'jemalloc/test/rallocm.c')
-rw-r--r--jemalloc/test/rallocm.c117
1 files changed, 117 insertions, 0 deletions
diff --git a/jemalloc/test/rallocm.c b/jemalloc/test/rallocm.c
new file mode 100644
index 0000000..b52bdb2
--- /dev/null
+++ b/jemalloc/test/rallocm.c
@@ -0,0 +1,117 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define JEMALLOC_MANGLE
+#include "jemalloc/jemalloc.h"
+
+int
+main(void)
+{
+ void *p, *q;
+ size_t sz, tsz;
+ int r;
+
+ fprintf(stderr, "Test begin\n");
+
+ r = allocm(&p, &sz, 42, 0);
+ if (r != ALLOCM_SUCCESS) {
+ fprintf(stderr, "Unexpected allocm() error\n");
+ abort();
+ }
+
+ q = p;
+ r = rallocm(&q, &tsz, sz, 0, ALLOCM_NO_MOVE);
+ if (r != ALLOCM_SUCCESS)
+ fprintf(stderr, "Unexpected rallocm() error\n");
+ if (q != p)
+ fprintf(stderr, "Unexpected object move\n");
+ if (tsz != sz) {
+ fprintf(stderr, "Unexpected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+
+ q = p;
+ r = rallocm(&q, &tsz, sz, 5, ALLOCM_NO_MOVE);
+ if (r != ALLOCM_SUCCESS)
+ fprintf(stderr, "Unexpected rallocm() error\n");
+ if (q != p)
+ fprintf(stderr, "Unexpected object move\n");
+ if (tsz != sz) {
+ fprintf(stderr, "Unexpected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+
+ q = p;
+ r = rallocm(&q, &tsz, sz + 5, 0, ALLOCM_NO_MOVE);
+ if (r != ALLOCM_ERR_NOT_MOVED)
+ fprintf(stderr, "Unexpected rallocm() result\n");
+ if (q != p)
+ fprintf(stderr, "Unexpected object move\n");
+ if (tsz != sz) {
+ fprintf(stderr, "Unexpected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+
+ q = p;
+ r = rallocm(&q, &tsz, sz + 5, 0, 0);
+ if (r != ALLOCM_SUCCESS)
+ fprintf(stderr, "Unexpected rallocm() error\n");
+ if (q == p)
+ fprintf(stderr, "Expected object move\n");
+ if (tsz == sz) {
+ fprintf(stderr, "Expected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+ p = q;
+ sz = tsz;
+
+ r = rallocm(&q, &tsz, 8192, 0, 0);
+ if (r != ALLOCM_SUCCESS)
+ fprintf(stderr, "Unexpected rallocm() error\n");
+ if (q == p)
+ fprintf(stderr, "Expected object move\n");
+ if (tsz == sz) {
+ fprintf(stderr, "Expected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+ p = q;
+ sz = tsz;
+
+ r = rallocm(&q, &tsz, 16384, 0, 0);
+ if (r != ALLOCM_SUCCESS)
+ fprintf(stderr, "Unexpected rallocm() error\n");
+ if (tsz == sz) {
+ fprintf(stderr, "Expected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+ p = q;
+ sz = tsz;
+
+ r = rallocm(&q, &tsz, 8192, 0, ALLOCM_NO_MOVE);
+ if (r != ALLOCM_SUCCESS)
+ fprintf(stderr, "Unexpected rallocm() error\n");
+ if (q != p)
+ fprintf(stderr, "Unexpected object move\n");
+ if (tsz == sz) {
+ fprintf(stderr, "Expected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+ sz = tsz;
+
+ r = rallocm(&q, &tsz, 16384, 0, ALLOCM_NO_MOVE);
+ if (r != ALLOCM_SUCCESS)
+ fprintf(stderr, "Unexpected rallocm() error\n");
+ if (q != p)
+ fprintf(stderr, "Unexpected object move\n");
+ if (tsz == sz) {
+ fprintf(stderr, "Expected size change: %zu --> %zu\n",
+ sz, tsz);
+ }
+ sz = tsz;
+
+ dallocm(p, 0);
+
+ fprintf(stderr, "Test end\n");
+ return (0);
+}