Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
9da7dc4e
Commit
9da7dc4e
authored
Apr 01, 2003
by
Linus Torvalds
Committed by
Linus Torvalds
Apr 01, 2003
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/softirq-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
4ff1af27
23aafe08
Changes
56
Show whitespace changes
Inline
Side-by-side
Showing
56 changed files
with
31 additions
and
608 deletions
+31
-608
arch/alpha/kernel/alpha_ksyms.c
arch/alpha/kernel/alpha_ksyms.c
+0
-1
arch/alpha/kernel/smp.c
arch/alpha/kernel/smp.c
+0
-1
arch/ia64/sn/kernel/sv.c
arch/ia64/sn/kernel/sv.c
+0
-1
arch/m68k/kernel/m68k_ksyms.c
arch/m68k/kernel/m68k_ksyms.c
+0
-1
arch/m68knommu/kernel/m68k_ksyms.c
arch/m68knommu/kernel/m68k_ksyms.c
+0
-1
arch/mips/kernel/mips_ksyms.c
arch/mips/kernel/mips_ksyms.c
+0
-1
arch/mips/kernel/smp.c
arch/mips/kernel/smp.c
+0
-1
arch/mips/mm/fault.c
arch/mips/mm/fault.c
+0
-1
arch/mips64/kernel/mips64_ksyms.c
arch/mips64/kernel/mips64_ksyms.c
+0
-1
arch/mips64/kernel/smp.c
arch/mips64/kernel/smp.c
+1
-1
arch/mips64/mm/fault.c
arch/mips64/mm/fault.c
+0
-1
arch/ppc/kernel/smp.c
arch/ppc/kernel/smp.c
+0
-1
arch/ppc/platforms/chrp_smp.c
arch/ppc/platforms/chrp_smp.c
+0
-1
arch/ppc/platforms/pmac_smp.c
arch/ppc/platforms/pmac_smp.c
+0
-1
arch/ppc64/kernel/smp.c
arch/ppc64/kernel/smp.c
+0
-1
arch/s390/kernel/s390_ksyms.c
arch/s390/kernel/s390_ksyms.c
+1
-1
arch/s390x/kernel/s390_ksyms.c
arch/s390x/kernel/s390_ksyms.c
+1
-1
arch/sparc/kernel/irq.c
arch/sparc/kernel/irq.c
+0
-1
arch/sparc/kernel/setup.c
arch/sparc/kernel/setup.c
+0
-1
arch/sparc/kernel/smp.c
arch/sparc/kernel/smp.c
+0
-1
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sparc_ksyms.c
+0
-1
arch/sparc/kernel/sun4d_smp.c
arch/sparc/kernel/sun4d_smp.c
+0
-1
arch/sparc/kernel/sun4m_smp.c
arch/sparc/kernel/sun4m_smp.c
+0
-1
arch/sparc64/kernel/irq.c
arch/sparc64/kernel/irq.c
+0
-1
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/smp.c
+0
-1
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sparc64_ksyms.c
+0
-1
arch/um/drivers/stdio_console.c
arch/um/drivers/stdio_console.c
+0
-1
arch/um/kernel/smp.c
arch/um/kernel/smp.c
+0
-1
arch/v850/kernel/v850_ksyms.c
arch/v850/kernel/v850_ksyms.c
+0
-1
crypto/internal.h
crypto/internal.h
+1
-1
include/asm-alpha/softirq.h
include/asm-alpha/softirq.h
+0
-21
include/asm-arm/hardirq.h
include/asm-arm/hardirq.h
+0
-1
include/asm-arm/softirq.h
include/asm-arm/softirq.h
+0
-20
include/asm-cris/softirq.h
include/asm-cris/softirq.h
+0
-30
include/asm-i386/hardirq.h
include/asm-i386/hardirq.h
+0
-1
include/asm-i386/softirq.h
include/asm-i386/softirq.h
+0
-20
include/asm-ia64/softirq.h
include/asm-ia64/softirq.h
+0
-26
include/asm-m68k/softirq.h
include/asm-m68k/softirq.h
+0
-24
include/asm-m68knommu/softirq.h
include/asm-m68knommu/softirq.h
+0
-20
include/asm-mips/softirq.h
include/asm-mips/softirq.h
+0
-45
include/asm-mips64/softirq.h
include/asm-mips64/softirq.h
+0
-57
include/asm-parisc/softirq.h
include/asm-parisc/softirq.h
+0
-20
include/asm-ppc/softirq.h
include/asm-ppc/softirq.h
+0
-31
include/asm-ppc64/softirq.h
include/asm-ppc64/softirq.h
+0
-27
include/asm-s390/softirq.h
include/asm-s390/softirq.h
+0
-42
include/asm-s390x/softirq.h
include/asm-s390x/softirq.h
+0
-42
include/asm-sh/softirq.h
include/asm-sh/softirq.h
+0
-30
include/asm-sparc/softirq.h
include/asm-sparc/softirq.h
+0
-31
include/asm-sparc64/softirq.h
include/asm-sparc64/softirq.h
+0
-25
include/asm-um/softirq.h
include/asm-um/softirq.h
+0
-13
include/asm-v850/softirq.h
include/asm-v850/softirq.h
+0
-20
include/asm-x86_64/softirq.h
include/asm-x86_64/softirq.h
+0
-22
include/linux/interrupt.h
include/linux/interrupt.h
+8
-1
include/linux/irq_cpustat.h
include/linux/irq_cpustat.h
+1
-0
include/linux/mtd/compatmac.h
include/linux/mtd/compatmac.h
+0
-1
kernel/softirq.c
kernel/softirq.c
+18
-8
No files found.
arch/alpha/kernel/alpha_ksyms.c
View file @
9da7dc4e
...
...
@@ -25,7 +25,6 @@
#include <asm/processor.h>
#include <asm/checksum.h>
#include <linux/interrupt.h>
#include <asm/softirq.h>
#include <asm/fpu.h>
#include <asm/irq.h>
#include <asm/machvec.h>
...
...
arch/alpha/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -35,7 +35,6 @@
#include <asm/pgtable.h>
#include <asm/pgalloc.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/mmu_context.h>
#include <asm/tlbflush.h>
...
...
arch/ia64/sn/kernel/sv.c
View file @
9da7dc4e
...
...
@@ -18,7 +18,6 @@
#include <asm/semaphore.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/current.h>
#include <asm/sn/sv.h>
...
...
arch/m68k/kernel/m68k_ksyms.c
View file @
9da7dc4e
...
...
@@ -17,7 +17,6 @@
#include <asm/semaphore.h>
#include <asm/checksum.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
asmlinkage
long
long
__ashldi3
(
long
long
,
int
);
asmlinkage
long
long
__ashrdi3
(
long
long
,
int
);
...
...
arch/m68knommu/kernel/m68k_ksyms.c
View file @
9da7dc4e
...
...
@@ -17,7 +17,6 @@
#include <asm/semaphore.h>
#include <asm/checksum.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/current.h>
extern
void
dump_thread
(
struct
pt_regs
*
,
struct
user
*
);
...
...
arch/mips/kernel/mips_ksyms.c
View file @
9da7dc4e
...
...
@@ -25,7 +25,6 @@
#include <asm/pgalloc.h>
#include <asm/semaphore.h>
#include <asm/sgi/sgihpc.h>
#include <asm/softirq.h>
#include <asm/uaccess.h>
#ifdef CONFIG_BLK_DEV_FD
#include <asm/floppy.h>
...
...
arch/mips/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -37,7 +37,6 @@
#include <asm/processor.h>
#include <asm/system.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/mmu_context.h>
#include <asm/delay.h>
#include <asm/smp.h>
...
...
arch/mips/mm/fault.c
View file @
9da7dc4e
...
...
@@ -22,7 +22,6 @@
#include <asm/hardirq.h>
#include <asm/pgalloc.h>
#include <asm/mmu_context.h>
#include <asm/softirq.h>
#include <asm/system.h>
#include <asm/uaccess.h>
...
...
arch/mips64/kernel/mips64_ksyms.c
View file @
9da7dc4e
...
...
@@ -24,7 +24,6 @@
#include <asm/page.h>
#include <asm/pgalloc.h>
#include <asm/semaphore.h>
#include <asm/softirq.h>
#include <asm/uaccess.h>
#include <asm/checksum.h>
...
...
arch/mips64/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -6,12 +6,12 @@
#include <linux/timex.h>
#include <linux/sched.h>
#include <linux/cache.h>
#include <linux/interrupt.h>
#include <asm/atomic.h>
#include <asm/processor.h>
#include <asm/system.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/mmu_context.h>
#include <asm/irq.h>
...
...
arch/mips64/mm/fault.c
View file @
9da7dc4e
...
...
@@ -24,7 +24,6 @@
#include <asm/hardirq.h>
#include <asm/pgalloc.h>
#include <asm/mmu_context.h>
#include <asm/softirq.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/ptrace.h>
...
...
arch/ppc/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -28,7 +28,6 @@
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/smp.h>
...
...
arch/ppc/platforms/chrp_smp.c
View file @
9da7dc4e
...
...
@@ -27,7 +27,6 @@
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/sections.h>
#include <asm/io.h>
#include <asm/prom.h>
...
...
arch/ppc/platforms/pmac_smp.c
View file @
9da7dc4e
...
...
@@ -35,7 +35,6 @@
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/sections.h>
#include <asm/io.h>
#include <asm/prom.h>
...
...
arch/ppc64/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -34,7 +34,6 @@
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/smp.h>
...
...
arch/s390/kernel/s390_ksyms.c
View file @
9da7dc4e
...
...
@@ -6,10 +6,10 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/smp.h>
#include <linux/interrupt.h>
#include <asm/checksum.h>
#include <asm/delay.h>
#include <asm/setup.h>
#include <asm/softirq.h>
#if CONFIG_IP_MULTICAST
#include <net/arp.h>
#endif
...
...
arch/s390x/kernel/s390_ksyms.c
View file @
9da7dc4e
...
...
@@ -8,11 +8,11 @@
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/smp.h>
#include <linux/interrupt.h>
#include <asm/checksum.h>
#include <asm/delay.h>
#include <asm/pgalloc.h>
#include <asm/setup.h>
#include <asm/softirq.h>
#if CONFIG_IP_MULTICAST
#include <net/arp.h>
#endif
...
...
arch/sparc/kernel/irq.c
View file @
9da7dc4e
...
...
@@ -45,7 +45,6 @@
#include <asm/pgalloc.h>
#include <asm/pgtable.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/pcic.h>
#include <asm/cacheflush.h>
...
...
arch/sparc/kernel/setup.c
View file @
9da7dc4e
...
...
@@ -43,7 +43,6 @@
#include <asm/kdebug.h>
#include <asm/mbus.h>
#include <asm/idprom.h>
#include <asm/softirq.h>
#include <asm/hardirq.h>
#include <asm/machines.h>
...
...
arch/sparc/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -30,7 +30,6 @@
#include <asm/pgtable.h>
#include <asm/oplib.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#define __KERNEL_SYSCALLS__
#include <linux/unistd.h>
...
...
arch/sparc/kernel/sparc_ksyms.c
View file @
9da7dc4e
...
...
@@ -40,7 +40,6 @@
#include <asm/smp.h>
#include <asm/mostek.h>
#include <asm/ptrace.h>
#include <asm/softirq.h>
#include <asm/hardirq.h>
#include <asm/user.h>
#include <asm/uaccess.h>
...
...
arch/sparc/kernel/sun4d_smp.c
View file @
9da7dc4e
...
...
@@ -29,7 +29,6 @@
#include <asm/pgtable.h>
#include <asm/oplib.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/sbus.h>
#include <asm/sbi.h>
...
...
arch/sparc/kernel/sun4m_smp.c
View file @
9da7dc4e
...
...
@@ -26,7 +26,6 @@
#include <asm/pgtable.h>
#include <asm/oplib.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#define __KERNEL_SYSCALLS__
#include <linux/unistd.h>
...
...
arch/sparc64/kernel/irq.c
View file @
9da7dc4e
...
...
@@ -33,7 +33,6 @@
#include <asm/timer.h>
#include <asm/smp.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/starfire.h>
#include <asm/uaccess.h>
#include <asm/cache.h>
...
...
arch/sparc64/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -31,7 +31,6 @@
#include <asm/pgtable.h>
#include <asm/oplib.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/uaccess.h>
#include <asm/timer.h>
#include <asm/starfire.h>
...
...
arch/sparc64/kernel/sparc64_ksyms.c
View file @
9da7dc4e
...
...
@@ -30,7 +30,6 @@
#include <asm/pgtable.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/softirq.h>
#include <asm/hardirq.h>
#include <asm/idprom.h>
#include <asm/svr4.h>
...
...
arch/um/drivers/stdio_console.c
View file @
9da7dc4e
...
...
@@ -18,7 +18,6 @@
#include "linux/interrupt.h"
#include "linux/slab.h"
#include "asm/current.h"
#include "asm/softirq.h"
#include "asm/hardirq.h"
#include "asm/irq.h"
#include "stdio_console.h"
...
...
arch/um/kernel/smp.c
View file @
9da7dc4e
...
...
@@ -17,7 +17,6 @@ unsigned long cpu_online_map = 1;
#include "asm/smp.h"
#include "asm/processor.h"
#include "asm/spinlock.h"
#include "asm/softirq.h"
#include "asm/hardirq.h"
#include "user_util.h"
#include "kern_util.h"
...
...
arch/v850/kernel/v850_ksyms.c
View file @
9da7dc4e
...
...
@@ -16,7 +16,6 @@
#include <asm/semaphore.h>
#include <asm/checksum.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/current.h>
...
...
crypto/internal.h
View file @
9da7dc4e
...
...
@@ -13,9 +13,9 @@
#define _CRYPTO_INTERNAL_H
#include <linux/mm.h>
#include <linux/highmem.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/kmap_types.h>
extern
enum
km_type
crypto_km_types
[];
...
...
include/asm-alpha/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef _ALPHA_SOFTIRQ_H
#define _ALPHA_SOFTIRQ_H
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && \
softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* _ALPHA_SOFTIRQ_H */
include/asm-arm/hardirq.h
View file @
9da7dc4e
...
...
@@ -5,7 +5,6 @@
#include <linux/cache.h>
#include <linux/threads.h>
/* softirq.h is sensitive to the offsets of these fields */
typedef
struct
{
unsigned
int
__softirq_pending
;
unsigned
int
__local_irq_count
;
...
...
include/asm-arm/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
__asm__("bl%? __do_softirq": : : "lr");
/* out of line */
\
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-cris/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <asm/atomic.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { \
local_bh_count(smp_processor_id())++; \
barrier(); \
} while (0)
#define __local_bh_enable() \
do { \
barrier(); \
local_bh_count(smp_processor_id())--; \
} while (0)
#define local_bh_enable() \
do { \
if (!--local_bh_count(smp_processor_id()) \
&& softirq_pending(smp_processor_id())) { \
do_softirq(); \
local_irq_enable(); \
} \
} while (0)
#define in_softirq() (local_bh_count(smp_processor_id()) != 0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-i386/hardirq.h
View file @
9da7dc4e
...
...
@@ -5,7 +5,6 @@
#include <linux/threads.h>
#include <linux/irq.h>
/* assembly code in softirq.h is sensitive to the offsets of these fields */
typedef
struct
{
unsigned
int
__softirq_pending
;
unsigned
int
__syscall_count
;
...
...
include/asm-i386/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-ia64/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef _ASM_IA64_SOFTIRQ_H
#define _ASM_IA64_SOFTIRQ_H
#include <linux/compiler.h>
/*
* Copyright (C) 1998-2002 Hewlett-Packard Co
* David Mosberger-Tang <davidm@hpl.hp.com>
*/
#include <linux/compiler.h>
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define __local_bh_enable() do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_disable() do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && local_softirq_pending())) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* _ASM_IA64_SOFTIRQ_H */
include/asm-m68k/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __M68K_SOFTIRQ_H
#define __M68K_SOFTIRQ_H
/*
* Software interrupts.. no SMP here either.
*/
#include <asm/atomic.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
include/asm-m68knommu/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-mips/softirq.h
deleted
100644 → 0
View file @
4ff1af27
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1997, 1998, 1999, 2000, 2001 Ralf Baechle
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
* Copyright (C) 1999, 2001 MIPS Technologies, Inc.
*/
#ifndef _ASM_SOFTIRQ_H
#define _ASM_SOFTIRQ_H
#include <asm/atomic.h>
#include <asm/hardirq.h>
extern
inline
void
cpu_bh_disable
(
int
cpu
)
{
local_bh_count
(
cpu
)
++
;
barrier
();
}
extern
inline
void
__cpu_bh_enable
(
int
cpu
)
{
barrier
();
local_bh_count
(
cpu
)
--
;
}
#define local_bh_disable() cpu_bh_disable(smp_processor_id())
#define __local_bh_enable() __cpu_bh_enable(smp_processor_id())
#define local_bh_enable() \
do { \
int cpu; \
\
barrier(); \
cpu = smp_processor_id(); \
if (!--local_bh_count(cpu) && softirq_pending(cpu)) \
do_softirq(); \
} while (0)
#define in_softirq() (local_bh_count(smp_processor_id()) != 0)
#define __cpu_raise_softirq(cpu, nr) set_bit(nr, &softirq_pending(cpu))
#endif
/* _ASM_SOFTIRQ_H */
include/asm-mips64/softirq.h
deleted
100644 → 0
View file @
4ff1af27
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1997, 1998, 1999, 2000, 2001 by Ralf Baechle
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
* Copyright (C) 2001 MIPS Technologies, Inc.
*/
#ifndef _ASM_SOFTIRQ_H
#define _ASM_SOFTIRQ_H
#include <asm/atomic.h>
#include <asm/hardirq.h>
extern
inline
void
cpu_bh_disable
(
int
cpu
)
{
local_bh_count
(
cpu
)
++
;
barrier
();
}
extern
inline
void
__cpu_bh_enable
(
int
cpu
)
{
barrier
();
local_bh_count
(
cpu
)
--
;
}
#define local_bh_disable() cpu_bh_disable(smp_processor_id())
#define __local_bh_enable() __cpu_bh_enable(smp_processor_id())
#define local_bh_enable() \
do { \
int cpu; \
\
barrier(); \
cpu = smp_processor_id(); \
if (!--local_bh_count(cpu) && softirq_pending(cpu)) \
do_softirq(); \
} while (0)
#define in_softirq() (local_bh_count(smp_processor_id()) != 0)
extern
inline
void
__cpu_raise_softirq
(
int
cpu
,
int
nr
)
{
unsigned
int
*
m
=
(
unsigned
int
*
)
&
softirq_pending
(
cpu
);
unsigned
int
temp
;
__asm__
__volatile__
(
"1:
\t
ll
\t
%0, %1
\t\t\t
# __cpu_raise_softirq
\n\t
"
"or
\t
%0, %2
\n\t
"
"sc
\t
%0, %1
\n\t
"
"beqz
\t
%0, 1b"
:
"=&r"
(
temp
),
"=m"
(
*
m
)
:
"ir"
(
1UL
<<
nr
),
"m"
(
*
m
)
:
"memory"
);
}
#endif
/* _ASM_SOFTIRQ_H */
include/asm-parisc/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <asm/atomic.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-ppc/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifdef __KERNEL__
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { \
preempt_count() += SOFTIRQ_OFFSET; \
barrier(); \
} while (0)
#define __local_bh_enable() \
do { \
barrier(); \
preempt_count() -= SOFTIRQ_OFFSET; \
} while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() \
&& softirq_pending(smp_processor_id()))) \
do_softirq(); \
if (preempt_count() == 0) \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
#endif
/* __KERNEL__ */
include/asm-ppc64/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-s390/softirq.h
deleted
100644 → 0
View file @
4ff1af27
/*
* include/asm-s390/softirq.h
*
* S390 version
*
* Derived from "include/asm-i386/softirq.h"
*/
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <linux/smp.h>
#include <linux/preempt.h>
#include <asm/atomic.h>
#include <asm/hardirq.h>
#include <asm/lowcore.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
extern
void
do_call_softirq
(
void
);
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (!in_interrupt() && softirq_pending(smp_processor_id())) \
/* Use the async. stack for softirq */
\
do_call_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-s390x/softirq.h
deleted
100644 → 0
View file @
4ff1af27
/*
* include/asm-s390/softirq.h
*
* S390 version
*
* Derived from "include/asm-i386/softirq.h"
*/
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <linux/smp.h>
#include <linux/preempt.h>
#include <asm/atomic.h>
#include <asm/hardirq.h>
#include <asm/lowcore.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
extern
void
do_call_softirq
(
void
);
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (!in_interrupt() && softirq_pending(smp_processor_id())) \
/* Use the async. stack for softirq */
\
do_call_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/asm-sh/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SH_SOFTIRQ_H
#define __ASM_SH_SOFTIRQ_H
#include <asm/atomic.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { \
local_bh_count(smp_processor_id())++; \
barrier(); \
} while (0)
#define __local_bh_enable() \
do { \
barrier(); \
local_bh_count(smp_processor_id())--; \
} while (0)
#define local_bh_enable() \
do { \
barrier(); \
if (!--local_bh_count(smp_processor_id()) \
&& softirq_pending(smp_processor_id())) { \
do_softirq(); \
} \
} while (0)
#define in_softirq() (local_bh_count(smp_processor_id()) != 0)
#endif
/* __ASM_SH_SOFTIRQ_H */
include/asm-sparc/softirq.h
deleted
100644 → 0
View file @
4ff1af27
/* softirq.h: 32-bit Sparc soft IRQ support.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
* Copyright (C) 1998-99 Anton Blanchard (anton@progsoc.uts.edu.au)
*/
#ifndef __SPARC_SOFTIRQ_H
#define __SPARC_SOFTIRQ_H
// #include <linux/threads.h> /* For NR_CPUS */
// #include <asm/atomic.h>
#include <asm/smp.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (!in_interrupt() && \
softirq_pending(smp_processor_id())) { \
do_softirq(); \
} \
preempt_check_resched(); \
} while (0)
#endif
/* __SPARC_SOFTIRQ_H */
include/asm-sparc64/softirq.h
deleted
100644 → 0
View file @
4ff1af27
/* softirq.h: 64-bit Sparc soft IRQ support.
*
* Copyright (C) 1997, 1998 David S. Miller (davem@caip.rutgers.edu)
*/
#ifndef __SPARC64_SOFTIRQ_H
#define __SPARC64_SOFTIRQ_H
#include <linux/preempt.h>
#include <asm/hardirq.h>
#include <asm/system.h>
/* for membar() */
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { __local_bh_enable(); \
if (unlikely(!in_interrupt() && \
softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* !(__SPARC64_SOFTIRQ_H) */
include/asm-um/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __UM_SOFTIRQ_H
#define __UM_SOFTIRQ_H
#include "linux/smp.h"
#include "asm/system.h"
#include "asm/processor.h"
/* A gratuitous name change */
#define i386_bh_lock um_bh_lock
#include "asm/arch/softirq.h"
#undef i386_bh_lock
#endif
include/asm-v850/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __V850_SOFTIRQ_H__
#define __V850_SOFTIRQ_H__
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __V850_SOFTIRQ_H__ */
include/asm-x86_64/softirq.h
deleted
100644 → 0
View file @
4ff1af27
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H
#include <linux/preempt.h>
#include <asm/hardirq.h>
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
void
do_softirq
(
void
);
#define local_bh_enable() \
do { \
__local_bh_enable(); \
if (unlikely(!in_interrupt() && softirq_pending(smp_processor_id()))) \
do_softirq(); \
preempt_check_resched(); \
} while (0)
#endif
/* __ASM_SOFTIRQ_H */
include/linux/interrupt.h
View file @
9da7dc4e
...
...
@@ -5,10 +5,10 @@
#include <linux/config.h>
#include <linux/linkage.h>
#include <linux/bitops.h>
#include <linux/preempt.h>
#include <asm/atomic.h>
#include <asm/hardirq.h>
#include <asm/ptrace.h>
#include <asm/softirq.h>
#include <asm/system.h>
struct
irqaction
{
...
...
@@ -36,6 +36,13 @@ extern void free_irq(unsigned int, void *);
# define save_and_cli(x) local_irq_save(x)
#endif
/* SoftIRQ primitives. */
#define local_bh_disable() \
do { preempt_count() += SOFTIRQ_OFFSET; barrier(); } while (0)
#define __local_bh_enable() \
do { barrier(); preempt_count() -= SOFTIRQ_OFFSET; } while (0)
extern
void
local_bh_enable
(
void
);
/* PLEASE, avoid to allocate new softirqs, if you need not _really_ high
frequency threaded job scheduling. For almost all the purposes
...
...
include/linux/irq_cpustat.h
View file @
9da7dc4e
...
...
@@ -29,6 +29,7 @@ extern irq_cpustat_t irq_stat[]; /* defined in asm/hardirq.h */
/* arch independent irq_stat fields */
#define softirq_pending(cpu) __IRQ_STAT((cpu), __softirq_pending)
#define local_softirq_pending() softirq_pending(smp_processor_id())
#define syscall_count(cpu) __IRQ_STAT((cpu), __syscall_count)
#define ksoftirqd_task(cpu) __IRQ_STAT((cpu), __ksoftirqd_task)
/* arch dependent irq_stat fields */
...
...
include/linux/mtd/compatmac.h
View file @
9da7dc4e
...
...
@@ -194,7 +194,6 @@ static inline int try_inc_mod_count(struct module *mod)
#define spin_unlock_bh(lock) do {spin_unlock(lock);end_bh_atomic();} while(0)
#else
#include <linux/interrupt.h>
#include <asm/softirq.h>
#include <linux/spinlock.h>
#endif
...
...
kernel/softirq.c
View file @
9da7dc4e
...
...
@@ -6,6 +6,7 @@
* Rewritten. Old one was good in 2.2, but in 2.3 it was immoral. --ANK (990903)
*/
#include <linux/module.h>
#include <linux/kernel_stat.h>
#include <linux/interrupt.h>
#include <linux/notifier.h>
...
...
@@ -55,15 +56,13 @@ asmlinkage void do_softirq()
__u32
pending
;
unsigned
long
flags
;
__u32
mask
;
int
cpu
;
if
(
in_interrupt
())
return
;
local_irq_save
(
flags
);
cpu
=
smp_processor_id
();
pending
=
softirq_pending
(
cpu
);
pending
=
local_softirq_pending
(
);
if
(
pending
)
{
struct
softirq_action
*
h
;
...
...
@@ -72,7 +71,7 @@ asmlinkage void do_softirq()
local_bh_disable
();
restart:
/* Reset the pending bitmask before enabling irqs */
softirq_pending
(
cpu
)
=
0
;
local_softirq_pending
(
)
=
0
;
local_irq_enable
();
...
...
@@ -87,19 +86,30 @@ asmlinkage void do_softirq()
local_irq_disable
();
pending
=
softirq_pending
(
cpu
);
pending
=
local_softirq_pending
(
);
if
(
pending
&
mask
)
{
mask
&=
~
pending
;
goto
restart
;
}
if
(
pending
)
wakeup_softirqd
(
cpu
);
wakeup_softirqd
(
smp_processor_id
()
);
__local_bh_enable
();
}
local_irq_restore
(
flags
);
}
void
local_bh_enable
(
void
)
{
__local_bh_enable
();
BUG_ON
(
irqs_disabled
());
if
(
unlikely
(
!
in_interrupt
()
&&
local_softirq_pending
()))
do_softirq
();
preempt_check_resched
();
}
EXPORT_SYMBOL
(
local_bh_enable
);
/*
* This function must run with irqs disabled!
*/
...
...
@@ -314,12 +324,12 @@ static int ksoftirqd(void * __bind_cpu)
ksoftirqd_task
(
cpu
)
=
current
;
for
(;;)
{
if
(
!
softirq_pending
(
cpu
))
if
(
!
local_softirq_pending
(
))
schedule
();
__set_current_state
(
TASK_RUNNING
);
while
(
softirq_pending
(
cpu
))
{
while
(
local_softirq_pending
(
))
{
do_softirq
();
cond_resched
();
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment