patch-2.4.0-test7 linux/include/asm-sparc64/hardirq.h
Next file: linux/include/asm-sparc64/kdebug.h
Previous file: linux/include/asm-sparc64/fcntl.h
Back to the patch index
Back to the overall index
- Lines: 45
- Date:
Wed Aug 23 09:30:13 2000
- Orig file:
v2.4.0-test6/linux/include/asm-sparc64/hardirq.h
- Orig date:
Wed Aug 9 19:19:51 2000
diff -u --recursive --new-file v2.4.0-test6/linux/include/asm-sparc64/hardirq.h linux/include/asm-sparc64/hardirq.h
@@ -39,7 +39,7 @@
/*
* Are we in an interrupt context? Either doing bottom half
- * or hardware interrupt processing? On any cpu?
+ * or hardware interrupt processing?
*/
#define in_interrupt() ((local_irq_count(smp_processor_id()) + \
local_bh_count(smp_processor_id())) != 0)
@@ -52,22 +52,18 @@
#define hardirq_trylock(cpu) ((void)(cpu), local_irq_count(smp_processor_id()) == 0)
#define hardirq_endlock(cpu) do { (void)(cpu); } while(0)
-#define hardirq_enter(cpu) ((void)(cpu), local_irq_count(smp_processor_id())++)
-#define hardirq_exit(cpu) ((void)(cpu), local_irq_count(smp_processor_id())--)
-
#define synchronize_irq() barrier()
#else /* (CONFIG_SMP) */
static __inline__ int irqs_running(void)
{
- enum brlock_indices idx = BR_GLOBALIRQ_LOCK;
- int i, count = 0;
+ int i;
for (i = 0; i < smp_num_cpus; i++)
- count += (__brlock_array[cpu_logical_map(i)][idx] != 0);
-
- return count;
+ if (local_irq_count(cpu_logical_map(i)))
+ return 1;
+ return 0;
}
extern unsigned char global_irq_holder;
@@ -85,7 +81,7 @@
{
spinlock_t *lock = &__br_write_locks[BR_GLOBALIRQ_LOCK].lock;
- return (!irqs_running() && !spin_is_locked(lock));
+ return (!local_irq_count(cpu) && !spin_is_locked(lock));
}
#define hardirq_endlock(cpu) do { (void)(cpu); } while (0)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)