Changeset 7ad3c2f in mainline for libc/generic/mmap.c
- Timestamp:
- 2006-03-14T16:34:17Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 00c4994
- Parents:
- 79522a7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libc/generic/mmap.c
r79522a7 r7ad3c2f 30 30 #include <unistd.h> 31 31 32 /** Mremap syscall */ 32 33 void *mremap(void *address, size_t size, unsigned long flags) 33 34 { 34 35 return (void *) __SYSCALL3(SYS_MREMAP, (sysarg_t ) address, (sysarg_t) size, (sysarg_t) flags); 35 36 } 37 38 39 static size_t heapsize = 0; 40 /* Start of heap linker symbol */ 41 extern char _heap; 42 43 /** Sbrk emulation 44 * 45 * @param size New area that should be allocated or negative, 46 if it should be shrinked 47 * @return Pointer to newly allocated area 48 */ 49 void *sbrk(ssize_t incr) 50 { 51 void *res; 52 /* Check for invalid values */ 53 if (incr < 0 && -incr > heapsize) 54 return NULL; 55 /* Check for too large value */ 56 if (incr > 0 && incr+heapsize < heapsize) 57 return NULL; 58 /* Check for too small values */ 59 if (incr < 0 && incr+heapsize > heapsize) 60 return NULL; 61 62 res = mremap(&_heap, heapsize + incr,0); 63 if (!res) 64 return NULL; 65 res = (void *)&_heap + incr; 66 heapsize += incr; 67 return res; 68 }
Note:
See TracChangeset
for help on using the changeset viewer.