From 1eb44f02701adb24ea42266da8d51b12589488ec Mon Sep 17 00:00:00 2001 From: Jake Burkholder Date: Tue, 5 Dec 2000 00:36:00 +0000 Subject: [PATCH] Remove the last of the MD netisr code. It is now all MI. Remove spending, which was unused now that all software interrupts have their own thread. Make the legacy schednetisr use an atomic op for setting bits in the netisr mask. Reviewed by: jhb --- sys/alpha/alpha/machdep.c | 27 --------------------------- sys/alpha/include/md_var.h | 1 - sys/amd64/amd64/machdep.c | 27 --------------------------- sys/amd64/include/md_var.h | 1 - sys/i386/i386/machdep.c | 27 --------------------------- sys/i386/include/asnames.h | 2 -- sys/i386/include/md_var.h | 1 - sys/i386/isa/ipl.s | 26 -------------------------- sys/ia64/ia64/machdep.c | 27 --------------------------- sys/ia64/include/md_var.h | 1 - sys/kern/kern_intr.c | 27 +++++++++++++++++++++++++++ sys/net/netisr.h | 6 +++++- sys/powerpc/include/md_var.h | 1 - 13 files changed, 32 insertions(+), 142 deletions(-) diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c index 9c3ace5ff70..e91ee192220 100644 --- a/sys/alpha/alpha/machdep.c +++ b/sys/alpha/alpha/machdep.c @@ -421,33 +421,6 @@ again: #endif /* SMP */ } -int -register_netisr(num, handler) - int num; - netisr_t *handler; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("register_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = handler; - return (0); -} - -int -unregister_netisr(num) - int num; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("unregister_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = NULL; - return (0); -} - /* * Retrieve the platform name from the DSR. */ diff --git a/sys/alpha/include/md_var.h b/sys/alpha/include/md_var.h index a2f70b622bd..94393192749 100644 --- a/sys/alpha/include/md_var.h +++ b/sys/alpha/include/md_var.h @@ -38,7 +38,6 @@ extern char esigcode[]; extern int szsigcode; extern int Maxmem; extern int busdma_swi_pending; -extern void (*netisrs[32]) __P((void)); struct fpreg; struct proc; diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 5c059291c6b..a6f92b16cd5 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -440,33 +440,6 @@ again: cpu_setregs(); } -int -register_netisr(num, handler) - int num; - netisr_t *handler; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("register_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = handler; - return (0); -} - -int -unregister_netisr(num) - int num; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("unregister_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = NULL; - return (0); -} - /* * Send an interrupt to process. * diff --git a/sys/amd64/include/md_var.h b/sys/amd64/include/md_var.h index 312d31367cf..5a2ed267787 100644 --- a/sys/amd64/include/md_var.h +++ b/sys/amd64/include/md_var.h @@ -54,7 +54,6 @@ extern char kstack[]; extern int need_pre_dma_flush; extern int need_post_dma_flush; #endif -extern void (*netisrs[32]) __P((void)); extern int nfs_diskless_valid; extern void (*ovbcopy_vector) __P((const void *from, void *to, size_t len)); extern char sigcode[]; diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 5c059291c6b..a6f92b16cd5 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -440,33 +440,6 @@ again: cpu_setregs(); } -int -register_netisr(num, handler) - int num; - netisr_t *handler; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("register_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = handler; - return (0); -} - -int -unregister_netisr(num) - int num; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("unregister_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = NULL; - return (0); -} - /* * Send an interrupt to process. * diff --git a/sys/i386/include/asnames.h b/sys/i386/include/asnames.h index b99b9af837b..d514b29d57c 100644 --- a/sys/i386/include/asnames.h +++ b/sys/i386/include/asnames.h @@ -252,8 +252,6 @@ #define __mtx_exit_giant_def _mtx_exit_giant_def #define _mul64 mul64 #define _net_imask net_imask -#define _netisr netisr -#define _netisrs netisrs #define _nfs_diskless nfs_diskless #define _nfs_diskless_valid nfs_diskless_valid #define _normalize normalize diff --git a/sys/i386/include/md_var.h b/sys/i386/include/md_var.h index 312d31367cf..5a2ed267787 100644 --- a/sys/i386/include/md_var.h +++ b/sys/i386/include/md_var.h @@ -54,7 +54,6 @@ extern char kstack[]; extern int need_pre_dma_flush; extern int need_post_dma_flush; #endif -extern void (*netisrs[32]) __P((void)); extern int nfs_diskless_valid; extern void (*ovbcopy_vector) __P((const void *from, void *to, size_t len)); extern char sigcode[]; diff --git a/sys/i386/isa/ipl.s b/sys/i386/isa/ipl.s index f5d4926de01..a079d2c5a43 100644 --- a/sys/i386/isa/ipl.s +++ b/sys/i386/isa/ipl.s @@ -68,25 +68,6 @@ _softnet_imask: .long 0 .globl _softtty_imask _softtty_imask: .long 0 -/* pending software interrupts */ - .globl _spending -_spending: .long 0 - -/* set with bits for which queue to service */ - .globl _netisr -_netisr: .long 0 - - .globl _netisrs -_netisrs: - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .long dummynetisr, dummynetisr, dummynetisr, dummynetisr - .text /* @@ -173,13 +154,6 @@ doreti_ast: movb $1,_intr_nesting_level /* for doreti_next to decrement */ jmp doreti_next - ALIGN_TEXT -dummynetisr: - MCOUNT - ret - - - #ifdef APIC_IO #include "i386/isa/apic_ipl.s" #else diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c index bc0ae1becb4..a4ff91a1df0 100644 --- a/sys/ia64/ia64/machdep.c +++ b/sys/ia64/ia64/machdep.c @@ -343,33 +343,6 @@ again: vm_pager_bufferinit(); } -int -register_netisr(num, handler) - int num; - netisr_t *handler; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("register_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = handler; - return (0); -} - -int -unregister_netisr(num) - int num; -{ - - if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { - printf("unregister_netisr: bad isr number: %d\n", num); - return (EINVAL); - } - netisrs[num] = NULL; - return (0); -} - static void identifycpu(void) { diff --git a/sys/ia64/include/md_var.h b/sys/ia64/include/md_var.h index fb1b4b55f0c..9e64106452d 100644 --- a/sys/ia64/include/md_var.h +++ b/sys/ia64/include/md_var.h @@ -37,7 +37,6 @@ extern char sigcode[]; extern char esigcode[]; extern int szsigcode; extern int Maxmem; -extern void (*netisrs[32]) __P((void)); struct fpreg; struct proc; diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index dcd422a2784..9ce6d6ddf26 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -275,6 +275,33 @@ legacy_setsoftnet() void (*netisrs[32]) __P((void)); u_int netisr; +int +register_netisr(num, handler) + int num; + netisr_t *handler; +{ + + if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { + printf("register_netisr: bad isr number: %d\n", num); + return (EINVAL); + } + netisrs[num] = handler; + return (0); +} + +int +unregister_netisr(num) + int num; +{ + + if (num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs)) ) { + printf("unregister_netisr: bad isr number: %d\n", num); + return (EINVAL); + } + netisrs[num] = NULL; + return (0); +} + static void swi_net(void *dummy) { diff --git a/sys/net/netisr.h b/sys/net/netisr.h index f227fb22dc9..621cf2268b9 100644 --- a/sys/net/netisr.h +++ b/sys/net/netisr.h @@ -71,7 +71,11 @@ void legacy_setsoftnet __P((void)); extern volatile unsigned int netisr; /* scheduling bits for network */ -#define schednetisr(anisr) { netisr |= 1 << (anisr); legacy_setsoftnet(); } +extern void (*netisrs[32]) __P((void)); +#define schednetisr(anisr) do { \ + atomic_set_rel_int(&netisr, 1 << (anisr)); \ + legacy_setsoftnet(); \ +} while (0) typedef void netisr_t __P((void)); diff --git a/sys/powerpc/include/md_var.h b/sys/powerpc/include/md_var.h index a2f70b622bd..94393192749 100644 --- a/sys/powerpc/include/md_var.h +++ b/sys/powerpc/include/md_var.h @@ -38,7 +38,6 @@ extern char esigcode[]; extern int szsigcode; extern int Maxmem; extern int busdma_swi_pending; -extern void (*netisrs[32]) __P((void)); struct fpreg; struct proc;