Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4616 → Rev 4617

/trunk/uspace/lib/libc/include/task.h
42,8 → 42,10
extern task_id_t task_get_id(void);
extern int task_set_name(const char *name);
extern task_id_t task_spawn(const char *path, char *const argv[]);
extern int task_wait(task_id_t id);
extern int task_wait(task_id_t id, int *retval);
extern int task_retval(int val);
 
 
#endif
 
/** @}
/trunk/uspace/lib/libc/include/ipc/ns.h
39,7 → 39,8
 
typedef enum {
NS_PING = IPC_FIRST_USER_METHOD,
NS_TASK_WAIT
NS_TASK_WAIT,
NS_RETVAL
} ns_request_t;
 
#endif
/trunk/uspace/lib/libc/generic/task.c
148,10 → 148,26
return 0;
}
 
int task_wait(task_id_t id)
int task_wait(task_id_t id, int *retval)
{
return (int) async_req_2_0(PHONE_NS, NS_TASK_WAIT, LOWER32(id), UPPER32(id));
ipcarg_t rv;
int rc;
 
rc = (int) async_req_2_1(PHONE_NS, NS_TASK_WAIT, LOWER32(id),
UPPER32(id), &rv);
*retval = rv;
 
return rc;
}
 
int task_retval(int val)
{
task_id_t id;
 
id = task_get_id();
return (int) async_req_3_0(PHONE_NS, NS_RETVAL, LOWER32(id),
UPPER32(id), val);
}
 
/** @}
*/
/trunk/uspace/lib/libc/generic/libc.c
61,6 → 61,8
 
void __main(void *pcb_ptr)
{
int retval;
 
__heap_init();
__async_init();
fibril_t *fibril = fibril_setup();
82,8 → 84,10
__stdio_init(__pcb->filc, __pcb->filv);
}
main(argc, argv);
retval = main(argc, argv);
 
__stdio_done();
(void) task_retval(retval);
}
 
void __exit(void)