diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-10-16 04:24:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-16 12:42:53 -0400 |
commit | c92ff1bde06f69d59b40f3194016aee51cc5da55 (patch) | |
tree | d365a7723a05a073ed715c6f4e99363e27516d04 /include/linux/sched.h | |
parent | c0bc9875b701c588e448302d41181995c21e8040 (diff) |
move mm_struct and vm_area_struct
Move the definitions of struct mm_struct and struct vma_area_struct to
include/mm_types.h. This allows to define more function in asm/pgtable.h
and friends with inline assemblies instead of macros. Compile tested on
i386, powerpc, powerpc64, s390-32, s390-64 and x86_64.
[aurelien@aurel32.net: build fix]
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 74 |
1 files changed, 1 insertions, 73 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 228e0a8ce248..285ee4827a3c 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1,8 +1,6 @@ | |||
1 | #ifndef _LINUX_SCHED_H | 1 | #ifndef _LINUX_SCHED_H |
2 | #define _LINUX_SCHED_H | 2 | #define _LINUX_SCHED_H |
3 | 3 | ||
4 | #include <linux/auxvec.h> /* For AT_VECTOR_SIZE */ | ||
5 | |||
6 | /* | 4 | /* |
7 | * cloning flags: | 5 | * cloning flags: |
8 | */ | 6 | */ |
@@ -58,12 +56,12 @@ struct sched_param { | |||
58 | #include <linux/cpumask.h> | 56 | #include <linux/cpumask.h> |
59 | #include <linux/errno.h> | 57 | #include <linux/errno.h> |
60 | #include <linux/nodemask.h> | 58 | #include <linux/nodemask.h> |
59 | #include <linux/mm_types.h> | ||
61 | 60 | ||
62 | #include <asm/system.h> | 61 | #include <asm/system.h> |
63 | #include <asm/semaphore.h> | 62 | #include <asm/semaphore.h> |
64 | #include <asm/page.h> | 63 | #include <asm/page.h> |
65 | #include <asm/ptrace.h> | 64 | #include <asm/ptrace.h> |
66 | #include <asm/mmu.h> | ||
67 | #include <asm/cputime.h> | 65 | #include <asm/cputime.h> |
68 | 66 | ||
69 | #include <linux/smp.h> | 67 | #include <linux/smp.h> |
@@ -319,7 +317,6 @@ extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); | |||
319 | #define add_mm_counter(mm, member, value) atomic_long_add(value, &(mm)->_##member) | 317 | #define add_mm_counter(mm, member, value) atomic_long_add(value, &(mm)->_##member) |
320 | #define inc_mm_counter(mm, member) atomic_long_inc(&(mm)->_##member) | 318 | #define inc_mm_counter(mm, member) atomic_long_inc(&(mm)->_##member) |
321 | #define dec_mm_counter(mm, member) atomic_long_dec(&(mm)->_##member) | 319 | #define dec_mm_counter(mm, member) atomic_long_dec(&(mm)->_##member) |
322 | typedef atomic_long_t mm_counter_t; | ||
323 | 320 | ||
324 | #else /* NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS */ | 321 | #else /* NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS */ |
325 | /* | 322 | /* |
@@ -331,7 +328,6 @@ typedef atomic_long_t mm_counter_t; | |||
331 | #define add_mm_counter(mm, member, value) (mm)->_##member += (value) | 328 | #define add_mm_counter(mm, member, value) (mm)->_##member += (value) |
332 | #define inc_mm_counter(mm, member) (mm)->_##member++ | 329 | #define inc_mm_counter(mm, member) (mm)->_##member++ |
333 | #define dec_mm_counter(mm, member) (mm)->_##member-- | 330 | #define dec_mm_counter(mm, member) (mm)->_##member-- |
334 | typedef unsigned long mm_counter_t; | ||
335 | 331 | ||
336 | #endif /* NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS */ | 332 | #endif /* NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS */ |
337 | 333 | ||
@@ -368,74 +364,6 @@ extern int get_dumpable(struct mm_struct *mm); | |||
368 | #define MMF_DUMP_FILTER_DEFAULT \ | 364 | #define MMF_DUMP_FILTER_DEFAULT \ |
369 | ((1 << MMF_DUMP_ANON_PRIVATE) | (1 << MMF_DUMP_ANON_SHARED)) | 365 | ((1 << MMF_DUMP_ANON_PRIVATE) | (1 << MMF_DUMP_ANON_SHARED)) |
370 | 366 | ||
371 | struct mm_struct { | ||
372 | struct vm_area_struct * mmap; /* list of VMAs */ | ||
373 | struct rb_root mm_rb; | ||
374 | struct vm_area_struct * mmap_cache; /* last find_vma result */ | ||
375 | unsigned long (*get_unmapped_area) (struct file *filp, | ||
376 | unsigned long addr, unsigned long len, | ||
377 | unsigned long pgoff, unsigned long flags); | ||
378 | void (*unmap_area) (struct mm_struct *mm, unsigned long addr); | ||
379 | unsigned long mmap_base; /* base of mmap area */ | ||
380 | unsigned long task_size; /* size of task vm space */ | ||
381 | unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */ | ||
382 | unsigned long free_area_cache; /* first hole of size cached_hole_size or larger */ | ||
383 | pgd_t * pgd; | ||
384 | atomic_t mm_users; /* How many users with user space? */ | ||
385 | atomic_t mm_count; /* How many references to "struct mm_struct" (users count as 1) */ | ||
386 | int map_count; /* number of VMAs */ | ||
387 | struct rw_semaphore mmap_sem; | ||
388 | spinlock_t page_table_lock; /* Protects page tables and some counters */ | ||
389 | |||
390 | struct list_head mmlist; /* List of maybe swapped mm's. These are globally strung | ||
391 | * together off init_mm.mmlist, and are protected | ||
392 | * by mmlist_lock | ||
393 | */ | ||
394 | |||
395 | /* Special counters, in some configurations protected by the | ||
396 | * page_table_lock, in other configurations by being atomic. | ||
397 | */ | ||
398 | mm_counter_t _file_rss; | ||
399 | mm_counter_t _anon_rss; | ||
400 | |||
401 | unsigned long hiwater_rss; /* High-watermark of RSS usage */ | ||
402 | unsigned long hiwater_vm; /* High-water virtual memory usage */ | ||
403 | |||
404 | unsigned long total_vm, locked_vm, shared_vm, exec_vm; | ||
405 | unsigned long stack_vm, reserved_vm, def_flags, nr_ptes; | ||
406 | unsigned long start_code, end_code, start_data, end_data; | ||
407 | unsigned long start_brk, brk, start_stack; | ||
408 | unsigned long arg_start, arg_end, env_start, env_end; | ||
409 | |||
410 | unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */ | ||
411 | |||
412 | cpumask_t cpu_vm_mask; | ||
413 | |||
414 | /* Architecture-specific MM context */ | ||
415 | mm_context_t context; | ||
416 | |||
417 | /* Swap token stuff */ | ||
418 | /* | ||
419 | * Last value of global fault stamp as seen by this process. | ||
420 | * In other words, this value gives an indication of how long | ||
421 | * it has been since this task got the token. | ||
422 | * Look at mm/thrash.c | ||
423 | */ | ||
424 | unsigned int faultstamp; | ||
425 | unsigned int token_priority; | ||
426 | unsigned int last_interval; | ||
427 | |||
428 | unsigned long flags; /* Must use atomic bitops to access the bits */ | ||
429 | |||
430 | /* coredumping support */ | ||
431 | int core_waiters; | ||
432 | struct completion *core_startup_done, core_done; | ||
433 | |||
434 | /* aio bits */ | ||
435 | rwlock_t ioctx_list_lock; | ||
436 | struct kioctx *ioctx_list; | ||
437 | }; | ||
438 | |||
439 | struct sighand_struct { | 367 | struct sighand_struct { |
440 | atomic_t count; | 368 | atomic_t count; |
441 | struct k_sigaction action[_NSIG]; | 369 | struct k_sigaction action[_NSIG]; |