Define the two data structures that collect the per-process (in the mm) and per-thread (in the task_struct) statistical information that are the input of the CPU follow memory algorithms in the NUMA scheduler. Signed-off-by: Andrea Arcangeli <aarcange@xxxxxxxxxx> --- include/linux/autonuma_types.h | 57 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) create mode 100644 include/linux/autonuma_types.h diff --git a/include/linux/autonuma_types.h b/include/linux/autonuma_types.h new file mode 100644 index 0000000..65b175b --- /dev/null +++ b/include/linux/autonuma_types.h @@ -0,0 +1,57 @@ +#ifndef _LINUX_AUTONUMA_TYPES_H +#define _LINUX_AUTONUMA_TYPES_H + +#ifdef CONFIG_AUTONUMA + +#include <linux/numa.h> + +struct mm_autonuma { + struct list_head mm_node; + struct mm_struct *mm; + unsigned long numa_fault_tot; /* reset from here */ + unsigned long numa_fault_pass; + unsigned long numa_fault[0]; +}; + +extern int alloc_mm_autonuma(struct mm_struct *mm); +extern void free_mm_autonuma(struct mm_struct *mm); +extern void __init mm_autonuma_init(void); + +#define SCHED_AUTONUMA_FLAG_STOP_ONE_CPU (1<<0) +#define SCHED_AUTONUMA_FLAG_NEED_BALANCE (1<<1) + +struct sched_autonuma { + int autonuma_node; + unsigned int autonuma_flags; /* zeroed from here */ + unsigned long numa_fault_pass; + unsigned long numa_fault_tot; + unsigned long numa_fault[0]; +}; + +extern int alloc_sched_autonuma(struct task_struct *tsk, + struct task_struct *orig, + int node); +extern void __init sched_autonuma_init(void); +extern void free_sched_autonuma(struct task_struct *tsk); + +#else /* CONFIG_AUTONUMA */ + +static inline int alloc_mm_autonuma(struct mm_struct *mm) +{ + return 0; +} +static inline void free_mm_autonuma(struct mm_struct *mm) {} +static inline void mm_autonuma_init(void) {} + +static inline int alloc_sched_autonuma(struct task_struct *tsk, + struct task_struct *orig, + int node) +{ + return 0; +} +static inline void sched_autonuma_init(void) {} +static inline void free_sched_autonuma(struct task_struct *tsk) {} + +#endif /* CONFIG_AUTONUMA */ + +#endif /* _LINUX_AUTONUMA_TYPES_H */ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>