blob: 4f0a8c40d444206da239f399dd778461b893ef70 [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/*
2 * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
3 *
4 * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
5 */
6
7#include <unistd.h>
8#include <errno.h>
9
10
11/* Defined in brk.c. */
12extern void *__curbrk attribute_hidden;
13
14/* Extend the process's data space by INCREMENT.
15 If INCREMENT is negative, shrink data space by - INCREMENT.
16 Return start of new space allocated, or -1 for errors. */
17void * sbrk (intptr_t increment)
18{
19 void *oldbrk;
20
21 if (__curbrk == NULL)
22 if (brk (NULL) < 0) /* Initialize the break. */
23 return (void *) -1;
24
25 if (increment == 0)
26 return __curbrk;
27
28 oldbrk = __curbrk;
29 if (brk (oldbrk + increment) < 0)
30 return (void *) -1;
31
32 return oldbrk;
33}
34libc_hidden_def(sbrk)