Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 1306 → Rev 1307

//uspace/trunk/libc/include/as.h
33,7 → 33,8
#include <task.h>
 
extern void *as_area_create(void *address, size_t size, int flags);
extern void *as_area_resize(void *address, size_t size, int flags);
extern int as_area_resize(void *address, size_t size, int flags);
extern int as_area_destroy(void *address);
extern int as_area_accept(task_id_t id, void *base, size_t size, int flags);
extern int as_area_send(task_id_t id, void *base);
 
//uspace/trunk/libc/generic/as.c
51,13 → 51,24
* @param size New requested size of the area.
* @param flags Currently unused.
*
* @return address on success, (void *) -1 otherwise.
* @return Zero on success or a code from @ref errno.h on failure.
*/
void *as_area_resize(void *address, size_t size, int flags)
int as_area_resize(void *address, size_t size, int flags)
{
return (void *) __SYSCALL3(SYS_AS_AREA_RESIZE, (sysarg_t ) address, (sysarg_t) size, (sysarg_t) flags);
return __SYSCALL3(SYS_AS_AREA_RESIZE, (sysarg_t ) address, (sysarg_t) size, (sysarg_t) flags);
}
 
/** Destroy address space area.
*
* @param address Virtual address pointing into the address space area being destroyed.
*
* @return Zero on success or a code from @ref errno.h on failure.
*/
int as_area_destroy(void *address)
{
return __SYSCALL1(SYS_AS_AREA_DESTROY, (sysarg_t ) address);
}
 
/** Prepare to accept address space area.
*
* @param id Task ID of the donor task.
110,6 → 121,7
*/
void *sbrk(ssize_t incr)
{
int rc;
void *res;
/* Check for invalid values */
if (incr < 0 && -incr > heapsize)
121,8 → 133,8
if (incr < 0 && incr+heapsize > heapsize)
return NULL;
 
res = as_area_resize(&_heap, heapsize + incr,0);
if (!res)
rc = as_area_resize(&_heap, heapsize + incr,0);
if (rc != 0)
return NULL;
/* Compute start of new area */