aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2012-05-10 15:01:23 -0700
committerH. Peter Anvin <hpa@linux.intel.com>2012-05-10 15:01:23 -0700
commit26cebd536042c9ec00eb5cc44c83bd2079751426 (patch)
treec6f1153f554a492e38ee353cbbb4a25c9aaee71a
parent7649a96452442acaccf14498293676ef2c445504 (diff)
downloadklibc-26cebd536042c9ec00eb5cc44c83bd2079751426.tar.gz
[klibc] Add zalloc() function
Although not standard, the zalloc() function is so useful and common that we might as well include it. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--usr/include/malloc.h1
-rw-r--r--usr/klibc/calloc.c9
-rw-r--r--usr/klibc/zalloc.c17
3 files changed, 19 insertions, 8 deletions
diff --git a/usr/include/malloc.h b/usr/include/malloc.h
index 277316704b713..eb5fe340599d8 100644
--- a/usr/include/malloc.h
+++ b/usr/include/malloc.h
@@ -15,6 +15,7 @@
__extern void free(void *);
__extern __mallocfunc void *malloc(size_t);
+__extern __mallocfunc void *zalloc(size_t);
__extern __mallocfunc void *calloc(size_t, size_t);
__extern __mallocfunc void *realloc(void *, size_t);
diff --git a/usr/klibc/calloc.c b/usr/klibc/calloc.c
index 3db76649dccba..53dcc6b2f6bf6 100644
--- a/usr/klibc/calloc.c
+++ b/usr/klibc/calloc.c
@@ -9,12 +9,5 @@
void *calloc(size_t nmemb, size_t size)
{
- void *ptr;
-
- size *= nmemb;
- ptr = malloc(size);
- if (ptr)
- memset(ptr, 0, size);
-
- return ptr;
+ return zalloc(nmemb * size);
}
diff --git a/usr/klibc/zalloc.c b/usr/klibc/zalloc.c
new file mode 100644
index 0000000000000..0a5e823ac502c
--- /dev/null
+++ b/usr/klibc/zalloc.c
@@ -0,0 +1,17 @@
+/*
+ * zalloc.c
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+void *zalloc(size_t size)
+{
+ void *ptr;
+
+ ptr = malloc(size);
+ if (ptr)
+ memset(ptr, 0, size);
+
+ return ptr;
+}