mm/vmacache, sched/headers: Introduce 'struct vmacache' and move it from <linux/sched.h> to <linux/mm_types>
The <linux/sched.h> header includes various vmacache related defines, which are arguably misplaced. Move them to mm_types.h and minimize the sched.h impact by putting all task vmacache state into a new 'struct vmacache' structure. No change in functionality. Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@ -60,7 +60,7 @@ static inline bool vmacache_valid_mm(struct mm_struct *mm)
|
||||
void vmacache_update(unsigned long addr, struct vm_area_struct *newvma)
|
||||
{
|
||||
if (vmacache_valid_mm(newvma->vm_mm))
|
||||
current->vmacache[VMACACHE_HASH(addr)] = newvma;
|
||||
current->vmacache.vmas[VMACACHE_HASH(addr)] = newvma;
|
||||
}
|
||||
|
||||
static bool vmacache_valid(struct mm_struct *mm)
|
||||
@ -71,12 +71,12 @@ static bool vmacache_valid(struct mm_struct *mm)
|
||||
return false;
|
||||
|
||||
curr = current;
|
||||
if (mm->vmacache_seqnum != curr->vmacache_seqnum) {
|
||||
if (mm->vmacache_seqnum != curr->vmacache.seqnum) {
|
||||
/*
|
||||
* First attempt will always be invalid, initialize
|
||||
* the new cache for this task here.
|
||||
*/
|
||||
curr->vmacache_seqnum = mm->vmacache_seqnum;
|
||||
curr->vmacache.seqnum = mm->vmacache_seqnum;
|
||||
vmacache_flush(curr);
|
||||
return false;
|
||||
}
|
||||
@ -93,7 +93,7 @@ struct vm_area_struct *vmacache_find(struct mm_struct *mm, unsigned long addr)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < VMACACHE_SIZE; i++) {
|
||||
struct vm_area_struct *vma = current->vmacache[i];
|
||||
struct vm_area_struct *vma = current->vmacache.vmas[i];
|
||||
|
||||
if (!vma)
|
||||
continue;
|
||||
@ -121,7 +121,7 @@ struct vm_area_struct *vmacache_find_exact(struct mm_struct *mm,
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < VMACACHE_SIZE; i++) {
|
||||
struct vm_area_struct *vma = current->vmacache[i];
|
||||
struct vm_area_struct *vma = current->vmacache.vmas[i];
|
||||
|
||||
if (vma && vma->vm_start == start && vma->vm_end == end) {
|
||||
count_vm_vmacache_event(VMACACHE_FIND_HITS);
|
||||
|
Reference in New Issue
Block a user