#include "arch/arch.h"
#include "os/os.h"
#include "smalloc.h"
+#include "log.h"
#define SMALLOC_REDZONE /* define to detect memory corruption */
#define SMALLOC_BPI (sizeof(unsigned int) * 8)
#define SMALLOC_BPL (SMALLOC_BPB * SMALLOC_BPI)
-#define INITIAL_SIZE 8192*1024 /* new pool size */
-#define MAX_POOLS 128 /* maximum number of pools to setup */
+#define INITIAL_SIZE 16*1024*1024 /* new pool size */
+#define MAX_POOLS 1 /* maximum number of pools to setup */
#define SMALLOC_PRE_RED 0xdeadbeefU
#define SMALLOC_POST_RED 0x5aa55aa5U
nr_pools++;
return 0;
out_fail:
- fprintf(stderr, "smalloc: failed adding pool\n");
+ log_err("smalloc: failed adding pool\n");
if (pool->map)
munmap(pool->map, pool->mmap_size);
return 1;
unsigned int *postred = postred_ptr(hdr);
if (hdr->prered != SMALLOC_PRE_RED) {
- fprintf(stderr, "smalloc pre redzone destroyed!\n");
- fprintf(stderr, " ptr=%p, prered=%x, expected %x\n",
+ log_err("smalloc pre redzone destroyed!\n"
+ " ptr=%p, prered=%x, expected %x\n",
hdr, hdr->prered, SMALLOC_PRE_RED);
assert(0);
}
if (*postred != SMALLOC_POST_RED) {
- fprintf(stderr, "smalloc post redzone destroyed!\n");
- fprintf(stderr, " ptr=%p, postred=%x, expected %x\n",
+ log_err("smalloc post redzone destroyed!\n"
+ " ptr=%p, postred=%x, expected %x\n",
hdr, *postred, SMALLOC_POST_RED);
assert(0);
}
return NULL;
}
+void *scalloc(size_t nmemb, size_t size)
+{
+ void *ret;
+
+ ret = smalloc(nmemb * size);
+ if (ret)
+ memset(ret, 0, nmemb * size);
+
+ return ret;
+}
+
char *smalloc_strdup(const char *str)
{
char *ptr;