/uspace/trunk/ns/ns.c |
---|
15,10 → 15,14 |
ipcarg_t retval, arg1, arg2; |
printf("NS:Name service started.\n"); |
// ipc_register_irq(1); |
while (1) { |
callid = ipc_wait_for_call(&call, 0); |
printf("NS:Call phone=%lX..", call.phoneid); |
switch (IPC_GET_METHOD(call)) { |
case IPC_M_INTERRUPT: |
printf("GOT INTERRUPT\n"); |
break; |
case IPC_M_PHONE_HUNGUP: |
printf("Phone hung up.\n"); |
retval = 0; |
54,6 → 58,7 |
retval = ENOENT; |
break; |
} |
if (! (callid & IPC_CALLID_NOTIFICATION)) |
ipc_answer(callid, retval, arg1, arg2); |
} |
} |
/uspace/trunk/libipc/include/ipc.h |
---|
63,5 → 63,7 |
int ipc_connect_to_me(int phoneid, int arg1, int arg2, ipcarg_t *phone); |
int ipc_connect_me_to(int phoneid, int arg1, int arg2); |
int ipc_hangup(int phoneid); |
int ipc_register_irq(int irq); |
int ipc_unregister_irq(int irq); |
#endif |
/uspace/trunk/libipc/generic/ipc.c |
---|
261,3 → 261,13 |
{ |
return __SYSCALL1(SYS_IPC_HANGUP, phoneid); |
} |
int ipc_register_irq(int irq) |
{ |
return __SYSCALL1(SYS_IPC_REGISTER_IRQ, irq); |
} |
int ipc_unregister_irq(int irq) |
{ |
return __SYSCALL1(SYS_IPC_UNREGISTER_IRQ, irq); |
} |