Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 1922 → Rev 1923

/trunk/uspace/klog/klog.c
40,6 → 40,7
#include <ipc/services.h>
#include <as.h>
#include <kernel/ipc/irq.h>
#include <sysinfo.h>
 
/* Pointer to klog area */
static char *klog;
72,7 → 73,9
}
klog = mapping;
 
if (ipc_register_irq(IPC_IRQ_KLOG, NULL)) {
int inr = sysinfo_value("klog.inr");
int devno = sysinfo_value("klog.devno");
if (ipc_register_irq(inr, devno, 0, NULL)) {
printf("Error registering for klog service.\n");
return 0;
}
/trunk/uspace/kbd/arch/sparc64/src/kbd.c
58,7 → 58,7
int kbd_arch_init(void)
{
z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual") + 6;
ipc_register_irq(sysinfo_value("kbd.irq"), &z8530_kbd);
ipc_register_irq(sysinfo_value("kbd.inr"), sysinfo_value("kbd.devno"), 0, &z8530_kbd);
return 0;
}
 
/trunk/uspace/libc/include/ipc/ipc.h
83,8 → 83,8
extern int ipc_connect_to_me(int phoneid, int arg1, int arg2, ipcarg_t *phone);
extern int ipc_connect_me_to(int phoneid, int arg1, int arg2);
extern int ipc_hangup(int phoneid);
extern int ipc_register_irq(int irq, irq_code_t *code);
extern int ipc_unregister_irq(int irq);
extern int ipc_register_irq(int inr, int devno, int method, irq_code_t *code);
extern int ipc_unregister_irq(int inr, int devno);
extern int ipc_forward_fast(ipc_callid_t callid, int phoneid, int method, ipcarg_t arg1);
 
#endif
/trunk/uspace/libc/generic/ipc.c
449,14 → 449,30
return __SYSCALL1(SYS_IPC_HANGUP, phoneid);
}
 
int ipc_register_irq(int irq, irq_code_t *ucode)
/** Register IRQ notification.
*
* @param inr IRQ number.
* @param devno Device number of the device generating inr.
* @param method Use this method for notifying me.
* @param ucode Top-half pseudocode handler.
*
* @return Value returned by the kernel.
*/
int ipc_register_irq(int inr, int devno, int method, irq_code_t *ucode)
{
return __SYSCALL2(SYS_IPC_REGISTER_IRQ, irq, (sysarg_t) ucode);
return __SYSCALL4(SYS_IPC_REGISTER_IRQ, inr, devno, method, (sysarg_t) ucode);
}
 
int ipc_unregister_irq(int irq)
/** Unregister IRQ notification.
*
* @param inr IRQ number.
* @param devno Device number of the device generating inr.
*
* @return Value returned by the kernel.
*/
int ipc_unregister_irq(int inr, int devno)
{
return __SYSCALL1(SYS_IPC_UNREGISTER_IRQ, irq);
return __SYSCALL2(SYS_IPC_UNREGISTER_IRQ, inr, devno);
}
 
int ipc_forward_fast(ipc_callid_t callid, int phoneid, int method, ipcarg_t arg1)
/trunk/uspace/libc/generic/async.c
636,7 → 636,7
amsg_t *msg;
 
if (in_interrupt_handler) {
printf("Cannot send asynchronou request in interrupt handler.\n");
printf("Cannot send asynchronous request in interrupt handler.\n");
_exit(1);
}
 
662,7 → 662,7
amsg_t *msg;
 
if (in_interrupt_handler) {
printf("Cannot send asynchronou request in interrupt handler.\n");
printf("Cannot send asynchronous request in interrupt handler.\n");
_exit(1);
}