📄 sbrk.c
字号:
/* 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -