diff options
author | Eric Anholt <anholt@freebsd.org> | 2003-08-29 19:16:13 +0000 |
---|---|---|
committer | Eric Anholt <anholt@freebsd.org> | 2003-08-29 19:16:13 +0000 |
commit | a7aebb6dac3287374721dd2101a4584f12c63c82 (patch) | |
tree | 7fa20b6fd3b750d18f0ed5709e2a8458ff4a4ab6 | |
parent | db781291164dfa10538776748df7af901c6b20a2 (diff) |
Add DRM(calloc), which is convenient, used by the new sis code, and takes
advantage of M_ZERO on BSDs.
-rw-r--r-- | bsd-core/drmP.h | 1 | ||||
-rw-r--r-- | bsd-core/drm_memory.c | 5 | ||||
-rw-r--r-- | bsd/drmP.h | 1 | ||||
-rw-r--r-- | bsd/drm_memory.h | 5 | ||||
-rw-r--r-- | linux-core/drmP.h | 1 | ||||
-rw-r--r-- | linux-core/drm_memory.h | 12 | ||||
-rw-r--r-- | linux-core/drm_memory_debug.h | 11 | ||||
-rw-r--r-- | linux/drmP.h | 1 | ||||
-rw-r--r-- | linux/drm_memory.h | 12 | ||||
-rw-r--r-- | linux/drm_memory_debug.h | 11 |
10 files changed, 60 insertions, 0 deletions
diff --git a/bsd-core/drmP.h b/bsd-core/drmP.h index ff4cd895..9cd41b8d 100644 --- a/bsd-core/drmP.h +++ b/bsd-core/drmP.h @@ -401,6 +401,7 @@ extern int DRM(version)( DRM_IOCTL_ARGS ); extern void DRM(mem_init)(void); extern void DRM(mem_uninit)(void); extern void *DRM(alloc)(size_t size, int area); +extern void *DRM(calloc)(size_t nmemb, size_t size, int area); extern void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area); extern void DRM(free)(void *pt, size_t size, int area); diff --git a/bsd-core/drm_memory.c b/bsd-core/drm_memory.c index edd9ffa6..dc0d3753 100644 --- a/bsd-core/drm_memory.c +++ b/bsd-core/drm_memory.c @@ -58,6 +58,11 @@ void *DRM(alloc)(size_t size, int area) return malloc(size, DRM(M_DRM), M_NOWAIT); } +void *DRM(calloc)(size_t nmemb, size_t size, int area) +{ + return malloc(size * nmemb, DRM(M_DRM), M_NOWAIT | M_ZERO); +} + void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area) { void *pt; @@ -401,6 +401,7 @@ extern int DRM(version)( DRM_IOCTL_ARGS ); extern void DRM(mem_init)(void); extern void DRM(mem_uninit)(void); extern void *DRM(alloc)(size_t size, int area); +extern void *DRM(calloc)(size_t nmemb, size_t size, int area); extern void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area); extern void DRM(free)(void *pt, size_t size, int area); diff --git a/bsd/drm_memory.h b/bsd/drm_memory.h index edd9ffa6..dc0d3753 100644 --- a/bsd/drm_memory.h +++ b/bsd/drm_memory.h @@ -58,6 +58,11 @@ void *DRM(alloc)(size_t size, int area) return malloc(size, DRM(M_DRM), M_NOWAIT); } +void *DRM(calloc)(size_t nmemb, size_t size, int area) +{ + return malloc(size * nmemb, DRM(M_DRM), M_NOWAIT | M_ZERO); +} + void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area) { void *pt; diff --git a/linux-core/drmP.h b/linux-core/drmP.h index e80f7788..8a995dbe 100644 --- a/linux-core/drmP.h +++ b/linux-core/drmP.h @@ -817,6 +817,7 @@ extern void DRM(mem_init)(void); extern int DRM(mem_info)(char *buf, char **start, off_t offset, int request, int *eof, void *data); extern void *DRM(alloc)(size_t size, int area); +extern void *DRM(calloc)(size_t nmemb, size_t size, int area); extern void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area); extern void DRM(free)(void *pt, size_t size, int area); diff --git a/linux-core/drm_memory.h b/linux-core/drm_memory.h index 4ac7bac5..59e86b0c 100644 --- a/linux-core/drm_memory.h +++ b/linux-core/drm_memory.h @@ -226,6 +226,18 @@ void *DRM(alloc)(size_t size, int area) return kmalloc(size, GFP_KERNEL); } +/** Wrapper around kmalloc() */ +void *DRM(calloc)(size_t size, size_t nmemb, int area) +{ + void *addr; + + addr = kmalloc(size * nmemb, GFP_KERNEL); + if (addr != NULL) + memset((void *)addr, 0, size * nmemb); + + return addr; +} + /** Wrapper around kmalloc() and kfree() */ void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area) { diff --git a/linux-core/drm_memory_debug.h b/linux-core/drm_memory_debug.h index 3ef2a05c..fae419ec 100644 --- a/linux-core/drm_memory_debug.h +++ b/linux-core/drm_memory_debug.h @@ -167,6 +167,17 @@ void *DRM(alloc)(size_t size, int area) return pt; } +void *DRM(calloc)(size_t size, size_t nmemb, int area) +{ + void *addr; + + addr = DRM(alloc)(nmemb * size, area); + if (addr != NULL) + memset((void *)addr, 0, size * nmemb); + + return addr; +} + void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area) { void *pt; diff --git a/linux/drmP.h b/linux/drmP.h index e80f7788..8a995dbe 100644 --- a/linux/drmP.h +++ b/linux/drmP.h @@ -817,6 +817,7 @@ extern void DRM(mem_init)(void); extern int DRM(mem_info)(char *buf, char **start, off_t offset, int request, int *eof, void *data); extern void *DRM(alloc)(size_t size, int area); +extern void *DRM(calloc)(size_t nmemb, size_t size, int area); extern void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area); extern void DRM(free)(void *pt, size_t size, int area); diff --git a/linux/drm_memory.h b/linux/drm_memory.h index 4ac7bac5..59e86b0c 100644 --- a/linux/drm_memory.h +++ b/linux/drm_memory.h @@ -226,6 +226,18 @@ void *DRM(alloc)(size_t size, int area) return kmalloc(size, GFP_KERNEL); } +/** Wrapper around kmalloc() */ +void *DRM(calloc)(size_t size, size_t nmemb, int area) +{ + void *addr; + + addr = kmalloc(size * nmemb, GFP_KERNEL); + if (addr != NULL) + memset((void *)addr, 0, size * nmemb); + + return addr; +} + /** Wrapper around kmalloc() and kfree() */ void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area) { diff --git a/linux/drm_memory_debug.h b/linux/drm_memory_debug.h index 3ef2a05c..fae419ec 100644 --- a/linux/drm_memory_debug.h +++ b/linux/drm_memory_debug.h @@ -167,6 +167,17 @@ void *DRM(alloc)(size_t size, int area) return pt; } +void *DRM(calloc)(size_t size, size_t nmemb, int area) +{ + void *addr; + + addr = DRM(alloc)(nmemb * size, area); + if (addr != NULL) + memset((void *)addr, 0, size * nmemb); + + return addr; +} + void *DRM(realloc)(void *oldpt, size_t oldsize, size_t size, int area) { void *pt; |