Changeset 2b017ba in mainline for uspace


Ignore:
Timestamp:
2006-10-16T20:51:55Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5f9b4d9a
Parents:
e3890b3f
Message:

Replace the old IRQ dispatcher and IPC notifier with new implementation.
Note that all architectures except for sparc64 are now broken
and don't even compile.

Location:
uspace
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/kbd/arch/sparc64/src/kbd.c

    re3890b3f r2b017ba  
    5959{
    6060        z8530_cmds[0].addr = (void *) sysinfo_value("kbd.address.virtual") + 6;
    61         ipc_register_irq(sysinfo_value("kbd.irq"), &z8530_kbd);
     61        ipc_register_irq(sysinfo_value("kbd.inr"), sysinfo_value("kbd.devno"), 0, &z8530_kbd);
    6262        return 0;
    6363}
  • uspace/klog/klog.c

    re3890b3f r2b017ba  
    4141#include <as.h>
    4242#include <kernel/ipc/irq.h>
     43#include <sysinfo.h>
    4344
    4445/* Pointer to klog area */
     
    7374        klog = mapping;
    7475
    75         if (ipc_register_irq(IPC_IRQ_KLOG, NULL)) {
     76        int inr = sysinfo_value("klog.inr");
     77        int devno = sysinfo_value("klog.devno");
     78        if (ipc_register_irq(inr, devno, 0, NULL)) {
    7679                printf("Error registering for klog service.\n");
    7780                return 0;
  • uspace/libc/generic/async.c

    re3890b3f r2b017ba  
    637637
    638638        if (in_interrupt_handler) {
    639                 printf("Cannot send asynchronou request in interrupt handler.\n");
     639                printf("Cannot send asynchronous request in interrupt handler.\n");
    640640                _exit(1);
    641641        }
     
    663663
    664664        if (in_interrupt_handler) {
    665                 printf("Cannot send asynchronou request in interrupt handler.\n");
     665                printf("Cannot send asynchronous request in interrupt handler.\n");
    666666                _exit(1);
    667667        }
  • uspace/libc/generic/ipc.c

    re3890b3f r2b017ba  
    450450}
    451451
    452 int ipc_register_irq(int irq, irq_code_t *ucode)
    453 {
    454         return __SYSCALL2(SYS_IPC_REGISTER_IRQ, irq, (sysarg_t) ucode);
    455 }
    456 
    457 int ipc_unregister_irq(int irq)
    458 {
    459         return __SYSCALL1(SYS_IPC_UNREGISTER_IRQ, irq);
     452/** Register IRQ notification.
     453 *
     454 * @param inr IRQ number.
     455 * @param devno Device number of the device generating inr.
     456 * @param method Use this method for notifying me.
     457 * @param ucode Top-half pseudocode handler.
     458 *
     459 * @return Value returned by the kernel.
     460 */
     461int ipc_register_irq(int inr, int devno, int method, irq_code_t *ucode)
     462{
     463        return __SYSCALL4(SYS_IPC_REGISTER_IRQ, inr, devno, method, (sysarg_t) ucode);
     464}
     465
     466/** Unregister IRQ notification.
     467 *
     468 * @param inr IRQ number.
     469 * @param devno Device number of the device generating inr.
     470 *
     471 * @return Value returned by the kernel.
     472 */
     473int ipc_unregister_irq(int inr, int devno)
     474{
     475        return __SYSCALL2(SYS_IPC_UNREGISTER_IRQ, inr, devno);
    460476}
    461477
  • uspace/libc/include/ipc/ipc.h

    re3890b3f r2b017ba  
    8484extern int ipc_connect_me_to(int phoneid, int arg1, int arg2);
    8585extern int ipc_hangup(int phoneid);
    86 extern int ipc_register_irq(int irq, irq_code_t *code);
    87 extern int ipc_unregister_irq(int irq);
     86extern int ipc_register_irq(int inr, int devno, int method, irq_code_t *code);
     87extern int ipc_unregister_irq(int inr, int devno);
    8888extern int ipc_forward_fast(ipc_callid_t callid, int phoneid, int method, ipcarg_t arg1);
    8989
Note: See TracChangeset for help on using the changeset viewer.