📄 smplock.h
字号:
#ifndef __ASM_SH_SMPLOCK_H#define __ASM_SH_SMPLOCK_H/* * 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. */#include <linux/config.h>#ifndef CONFIG_SMP#define lock_kernel() do { } while(0)#define unlock_kernel() do { } while(0)#define release_kernel_lock(task, cpu, depth) ((depth) = 1)#define reacquire_kernel_lock(task, cpu, depth) do { } while(0)#else#error "We do not support SMP on SH yet"/* * Default SMP lock implementation */#include <linux/interrupt.h>#include <asm/spinlock.h>extern spinlock_t kernel_flag;/* * Getting the big kernel lock. * * This cannot happen asynchronously, * so we only need to worry about other * CPU's. */extern __inline__ void lock_kernel(void){ if (!++current->lock_depth) spin_lock(&kernel_flag);}extern __inline__ void unlock_kernel(void){ if (--current->lock_depth < 0) spin_unlock(&kernel_flag);}/* * Release global kernel lock and global interrupt lock */#define release_kernel_lock(task, cpu) \do { \ if (task->lock_depth >= 0) \ spin_unlock(&kernel_flag); \ release_irqlock(cpu); \ __sti(); \} while (0)/* * Re-acquire the kernel lock */#define reacquire_kernel_lock(task) \do { \ if (task->lock_depth >= 0) \ spin_lock(&kernel_flag); \} while (0)#endif /* CONFIG_SMP */#endif /* __ASM_SH_SMPLOCK_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -