sched/headers, timekeeping: Move the timer tick function prototypes to <linux/timekee...
[linux-2.6-block.git] / include / linux / mm_types_task.h
CommitLineData
2e58f173
IM
1#ifndef _LINUX_MM_TYPES_TASK_H
2#define _LINUX_MM_TYPES_TASK_H
3
9e7d2e44
IM
4/*
5 * Here are the definitions of the MM data types that are embedded in 'struct task_struct'.
6 *
7 * (These are defined separately to decouple sched.h from mm_types.h as much as possible.)
8 */
9
2e58f173
IM
10#include <linux/types.h>
11#include <linux/threads.h>
12#include <linux/atomic.h>
13
14#include <asm/page.h>
15
9e7d2e44
IM
16#define USE_SPLIT_PTE_PTLOCKS (NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS)
17#define USE_SPLIT_PMD_PTLOCKS (USE_SPLIT_PTE_PTLOCKS && \
18 IS_ENABLED(CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK))
19#define ALLOC_SPLIT_PTLOCKS (SPINLOCK_SIZE > BITS_PER_LONG/8)
20
21/*
22 * The per task VMA cache array:
23 */
24#define VMACACHE_BITS 2
25#define VMACACHE_SIZE (1U << VMACACHE_BITS)
26#define VMACACHE_MASK (VMACACHE_SIZE - 1)
27
28struct vmacache {
29 u32 seqnum;
30 struct vm_area_struct *vmas[VMACACHE_SIZE];
31};
32
33enum {
34 MM_FILEPAGES, /* Resident file mapping pages */
35 MM_ANONPAGES, /* Resident anonymous pages */
36 MM_SWAPENTS, /* Anonymous swap entries */
37 MM_SHMEMPAGES, /* Resident shared memory pages */
38 NR_MM_COUNTERS
39};
40
41#if USE_SPLIT_PTE_PTLOCKS && defined(CONFIG_MMU)
42#define SPLIT_RSS_COUNTING
43/* per-thread cached information, */
44struct task_rss_stat {
45 int events; /* for synchronization threshold */
46 int count[NR_MM_COUNTERS];
47};
48#endif /* USE_SPLIT_PTE_PTLOCKS */
49
50struct mm_rss_stat {
51 atomic_long_t count[NR_MM_COUNTERS];
52};
53
54struct page_frag {
55 struct page *page;
56#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
57 __u32 offset;
58 __u32 size;
59#else
60 __u16 offset;
61 __u16 size;
62#endif
63};
64
2e58f173 65#endif /* _LINUX_MM_TYPES_TASK_H */