Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1257 → Rev 1258

/kernel/trunk/generic/src/ipc/sysipc.c
36,8 → 36,8
#include <ipc/ipc.h>
#include <ipc/sysipc.h>
#include <ipc/ipcrsc.h>
#include <arch/interrupt.h>
 
 
#include <print.h>
#include <arch.h>
#include <proc/thread.h>
274,7 → 274,7
 
GET_CHECK_PHONE(phone, phoneid, return IPC_CALLRET_FATAL);
 
call = ipc_call_alloc();
call = ipc_call_alloc(0);
IPC_SET_METHOD(call->data, method);
IPC_SET_ARG1(call->data, arg1);
IPC_SET_ARG2(call->data, arg2);
302,7 → 302,7
 
GET_CHECK_PHONE(phone, phoneid, return IPC_CALLRET_FATAL);
 
call = ipc_call_alloc();
call = ipc_call_alloc(0);
copy_from_uspace(&call->data.args, &data->args, sizeof(call->data.args));
if (!(res=request_preprocess(call)))
ipc_call(phone, call);
441,6 → 441,14
if (!call)
return 0;
 
if (call->flags & IPC_CALL_NOTIF) {
ASSERT(! (call->flags & IPC_CALL_STATIC_ALLOC));
STRUCT_TO_USPACE(&calldata->args, &call->data.args);
ipc_call_free(call);
return ((__native)call) | IPC_CALLID_NOTIFICATION;
}
 
if (call->flags & IPC_CALL_ANSWERED) {
process_answer(call);
 
467,3 → 475,24
STRUCT_TO_USPACE(calldata, &call->data);
return (__native)call;
}
 
/** Connect irq handler to task */
__native sys_ipc_register_irq(__native irq)
{
if (irq >= IRQ_COUNT)
return -ELIMIT;
 
irq_ipc_bind_arch(irq);
return ipc_irq_register(&TASK->answerbox, irq);
}
 
/* Disconnect irq handler from task */
__native sys_ipc_unregister_irq(__native irq)
{
if (irq >= IRQ_COUNT)
return -ELIMIT;
 
ipc_irq_unregister(&TASK->answerbox, irq);
 
return 0;
}