summaryrefslogtreecommitdiffstats
path: root/usr/klibc/brk.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/klibc/brk.c')
-rw-r--r--usr/klibc/brk.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/usr/klibc/brk.c b/usr/klibc/brk.c
new file mode 100644
index 0000000..df0bb7b
--- /dev/null
+++ b/usr/klibc/brk.c
@@ -0,0 +1,29 @@
+/* brk.c - Change data segment size */
+
+/* Written 2000 by Werner Almesberger */
+
+#include <stddef.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include "malloc.h"
+
+#if !_KLIBC_NO_MMU /* uClinux doesn't have brk() */
+
+char *__current_brk;
+
+/*
+ * The Linux brk() isn't what most people expect, so we call the
+ * system call __brk() and provide a wrapper.
+ */
+int brk(void *end_data_segment)
+{
+ char *new_brk;
+
+ new_brk = __brk(end_data_segment);
+ if (new_brk != end_data_segment)
+ return -1;
+ __current_brk = new_brk;
+ return 0;
+}
+
+#endif