sbrk.c
来自「用于嵌入式Linux系统的标准C的库函数」· C语言 代码 · 共 44 行
C
44 行
/* sbrk support *//* The current plan is to have one sbrk handler for all cpus. Hence use `asm' for each global variable here to avoid the cpu prefix. We can't intrude on the user's namespace (another reason to use asm). */#include <sys/types.h>#include <sys/syscall.h>#include <errno.h>#include <stddef.h>/* These variables are publicly accessible for debugging purposes. The user is also free to set sbrk_size to something different. See mem-layout.c. */extern int sbrk_size asm ("sbrk_size");caddr_t sbrk_start asm ("sbrk_start");caddr_t sbrk_loc asm ("sbrk_loc");/*caddr_t _sbrk_r (struct _reent *, size_t) asm ("__sbrk_r");*//* FIXME: We need a semaphore here. */caddr_t_sbrk_r (struct _reent *r, size_t nbytes){ caddr_t result; if ( /* Ensure we don't underflow. */ sbrk_loc + nbytes < sbrk_start /* Ensure we don't overflow. */ || sbrk_loc + nbytes > sbrk_start + sbrk_size) { errno = ENOMEM; return ((caddr_t) -1); } result = sbrk_loc; sbrk_loc += nbytes; return result;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?