memory.c 1.56 KB
Newer Older
1
/* -*- mode: C; c-basic-offset: 4 -*- */
2
#ident "Copyright (c) 2007, 2008 Tokutek Inc.  All rights reserved."
3

4
#include "toku_portability.h"
Yoni Fogel's avatar
Yoni Fogel committed
5 6 7 8 9 10
#include "memory.h"
#include "toku_assert.h"

#include <string.h>
#include <malloc.h>
#include <errno.h>
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
11

12
int toku_memory_check=0;
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
13

14 15 16 17 18
int toku_calloc_counter = 0;
int toku_malloc_counter = 0;
int toku_realloc_counter = 0;
int toku_free_counter = 0;

Yoni Fogel's avatar
Yoni Fogel committed
19
void *toku_calloc(size_t nmemb, size_t size) {
20
    toku_calloc_counter++;
21
    return calloc(nmemb, size);
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
22
}
23

24
void *toku_malloc(size_t size) {
25
    toku_malloc_counter++;
26
    return malloc(size);
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
27
}
28

29
void *toku_xmalloc(size_t size) {
30
    void *r = toku_malloc(size);
31 32 33 34
    if (r==0) abort();
    return r;
}

35
void *toku_tagmalloc(size_t size, enum typ_tag typtag) {
Bradley C. Kuszmaul's avatar
Bradley C. Kuszmaul committed
36
    //printf("%s:%d tagmalloc\n", __FILE__, __LINE__);
37
    void *r = toku_malloc(size);
38
    if (!r) return 0;
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
39 40 41 42 43
    assert(size>sizeof(int));
    ((int*)r)[0] = typtag;
    return r;
}

Yoni Fogel's avatar
Yoni Fogel committed
44
void *toku_realloc(void *p, size_t size) {
45
    toku_realloc_counter++;
46
    return realloc(p, size);
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
47 48
}

49
void toku_free(void* p) {
50
    toku_free_counter++;
51
    free(p);
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
52 53
}

54
void toku_free_n(void* p, size_t size __attribute__((unused))) {
55
    toku_free(p);
56 57
}

Yoni Fogel's avatar
Yoni Fogel committed
58
void *toku_memdup (const void *v, size_t len) {
59
    void *r=toku_malloc(len);
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
60 61 62
    memcpy(r,v,len);
    return r;
}
63

64
char *toku_strdup (const char *s) {
65
    return toku_memdup(s, strlen(s)+1);
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
66 67
}

68
void toku_memory_check_all_free (void) {
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
69 70
}

71
int toku_get_n_items_malloced (void) { return 0; }
72
void toku_print_malloced_items (void) {
Bradley C. Kuszmaul's avatar
Rename  
Bradley C. Kuszmaul committed
73
}
74

75
void toku_malloc_report (void) {
76
}
77

78
void toku_malloc_cleanup (void) {
79
}