Add xmalloc(), xcalloc() functions.
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 29 Jan 2005 18:20:17 +0000 (18:20 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Sat, 29 Jan 2005 18:20:17 +0000 (18:20 +0000)
src/threads/malloc.c
src/threads/malloc.h

index 8e6b4591ea87ecae09337ae5d741c89a68bdcb9a..9c83e3d438f780199166c3c92aa0893aa842f98f 100644 (file)
@@ -153,6 +153,19 @@ malloc (size_t size)
   return b;
 }
 
+/* Obtains and returns a new block of at least SIZE bytes.
+   Panics if memory is not available.  It is unacceptable for the
+   kernel to panic in normal operation, so this function should
+   only be used during kernel initialization. */
+void *
+xmalloc (size_t size) 
+{
+  void *p = malloc (size);
+  if (p == NULL && size > 0)
+    PANIC ("memory exhausted");
+  return p;
+}
+
 /* Allocates and return A times B bytes initialized to zeroes.
    Returns a null pointer if memory is not available. */
 void *
@@ -174,6 +187,19 @@ calloc (size_t a, size_t b)
   return p;
 }
 
+/* Allocates and return A times B bytes initialized to zeroes.
+   Panics if memory is not available.  It is unacceptable for the
+   kernel to panic in normal operation, so this function should
+   only be used during kernel initialization. */
+void *
+xcalloc (size_t a, size_t b) 
+{
+  void *p = calloc (a, b);
+  if (p == NULL && a > 0 && b > 0)
+    PANIC ("memory exhausted");
+  return p;
+}
+
 /* Frees block P, which must have been previously allocated with
    malloc() or calloc(). */
 void
index 2f191557817347e1f9c8d5c6bf6aacc710d79b79..4f0d0bf32f370557e0a13a0dfaa1f1f2f50df4cb 100644 (file)
@@ -6,7 +6,9 @@
 
 void malloc_init (void);
 void *malloc (size_t) __attribute__ ((malloc));
+void *xmalloc (size_t) __attribute__ ((malloc));
 void *calloc (size_t, size_t) __attribute__ ((malloc));
+void *xcalloc (size_t, size_t) __attribute__ ((malloc));
 void free (void *);
 
 #endif /* threads/malloc.h */