⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 softirq.h

📁 嵌入式系统设计与实例开发实验教材二源码 多线程应用程序设计 串行端口程序设计 AD接口实验 CAN总线通信实验 GPS通信实验 Linux内核移植与编译实验 IC卡读写实验 SD驱动使
💻 H
字号:
#ifndef __ASM_SOFTIRQ_H#define __ASM_SOFTIRQ_H#include <asm/atomic.h>#include <asm/hardirq.h>#include <linux/stringify.h>#define __cpu_bh_enable(cpu) \		do { barrier(); local_bh_count(cpu)--; } while (0)#define cpu_bh_disable(cpu) \		do { local_bh_count(cpu)++; barrier(); } while (0)#define local_bh_disable()	cpu_bh_disable(smp_processor_id())#define __local_bh_enable()	__cpu_bh_enable(smp_processor_id())#define in_softirq() (local_bh_count(smp_processor_id()) != 0)/* * NOTE: this assembly code assumes: * *    (char *)&local_bh_count - 8 == (char *)&softirq_pending * * If you change the offsets in irq_stat then you have to * update this code as well. */#define local_bh_enable()						\do {									\	unsigned int *ptr = &local_bh_count(smp_processor_id());	\									\	barrier();							\	if (!--*ptr)							\		__asm__ __volatile__ (					\			"cmpl $0, -8(%0);"				\			"jnz 2f;"					\			"1:;"						\									\			".subsection 1;"				\			".ifndef _text_lock_" __stringify(KBUILD_BASENAME) "\n"		\			"_text_lock_" __stringify(KBUILD_BASENAME) ":\n"		\			".endif\n"					\			"2: pushl %%eax; pushl %%ecx; pushl %%edx;"	\			"call %c1;"					\			"popl %%edx; popl %%ecx; popl %%eax;"		\			"jmp 1b;"					\			".subsection 0;"				\									\		: /* no output */					\		: "r" (ptr), "i" (do_softirq)				\		/* no registers clobbered */ );				\} while (0)#endif	/* __ASM_SOFTIRQ_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -