mmu_context.h

来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 74 行

H
74
字号
#ifndef __PARISC_MMU_CONTEXT_H#define __PARISC_MMU_CONTEXT_H#include <linux/mm.h>#include <asm/atomic.h>#include <asm/pgalloc.h>#include <asm/pgtable.h>static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk){}/* on PA-RISC, we actually have enough contexts to justify an allocator * for them.  prumpf */extern unsigned long alloc_sid(void);extern void free_sid(unsigned long);static inline intinit_new_context(struct task_struct *tsk, struct mm_struct *mm){	BUG_ON(atomic_read(&mm->mm_users) != 1);	mm->context = alloc_sid();	return 0;}static inline voiddestroy_context(struct mm_struct *mm){	free_sid(mm->context);	mm->context = 0;}static inline void load_context(mm_context_t context){	mtsp(context, 3);#if SPACEID_SHIFT == 0	mtctl(context << 1,8);#else	mtctl(context >> (SPACEID_SHIFT - 1),8);#endif}static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk){	if (prev != next) {		mtctl(__pa(next->pgd), 25);		load_context(next->context);	}}#define deactivate_mm(tsk,mm)	do { } while (0)static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next){	/*	 * Activate_mm is our one chance to allocate a space id	 * for a new mm created in the exec path. There's also	 * some lazy tlb stuff, which is currently dead code, but	 * we only allocate a space id if one hasn't been allocated	 * already, so we should be OK.	 */	BUG_ON(next == &init_mm); /* Should never happen */	if (next->context == 0)	    next->context = alloc_sid();	switch_mm(prev,next,current);}#endif

⌨️ 快捷键说明

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