uintptr syssegbrk(va_list list) { int i; uintptr addr; Segment *s; addr = va_arg(list, uintptr); for(i = 0; i < NSEG; i++) { s = up->seg[i]; if(s == nil || addr < s->base || addr >= s->top) continue; switch(s->type&SG_TYPE) { case SG_TEXT: case SG_DATA: case SG_STACK: case SG_PHYSICAL: case SG_FIXED: error(Ebadarg); default: return (uintptr)ibrk(va_arg(list, uintptr), i); } } error(Ebadarg); return 0; /* not reached */ }
long syssegbrk(ulong *arg) { int i; ulong addr; Segment *s; addr = arg[0]; for(i = 0; i < NSEG; i++) { s = up->seg[i]; if(s == 0 || addr < s->base || addr >= s->top) continue; switch(s->type&SG_TYPE) { case SG_TEXT: case SG_DATA: case SG_STACK: error(Ebadarg); default: return ibrk(arg[1], i); } } error(Ebadarg); return 0; /* not reached */ }
/* For binary compatibility */ uintptr sysbrk_(va_list list) { return (uintptr)ibrk(va_arg(list, uintptr), BSEG); }
/* For binary compatibility */ long sysbrk_(ulong *arg) { return ibrk(arg[0], BSEG); }