From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933386Ab2CZS6k (ORCPT ); Mon, 26 Mar 2012 14:58:40 -0400 Received: from mx1.redhat.com ([209.132.183.28]:20476 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933124Ab2CZS5W (ORCPT ); Mon, 26 Mar 2012 14:57:22 -0400 From: Andrea Arcangeli To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: Hillf Danton , Dan Smith , Peter Zijlstra , Linus Torvalds , Andrew Morton , Thomas Gleixner , Ingo Molnar , Paul Turner , Suresh Siddha , Mike Galbraith , "Paul E. McKenney" , Lai Jiangshan , Bharata B Rao , Lee Schermerhorn , Rik van Riel , Johannes Weiner Subject: [PATCH 08/39] autonuma: mm_autonuma and sched_autonuma data structures Date: Mon, 26 Mar 2012 19:45:55 +0200 Message-Id: <1332783986-24195-9-git-send-email-aarcange@redhat.com> In-Reply-To: <1332783986-24195-1-git-send-email-aarcange@redhat.com> References: <1332783986-24195-1-git-send-email-aarcange@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- include/linux/autonuma_types.h | 54 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 54 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..818e7c7 --- /dev/null +++ b/include/linux/autonuma_types.h @@ -0,0 +1,54 @@ +#ifndef _LINUX_AUTONUMA_TYPES_H +#define _LINUX_AUTONUMA_TYPES_H + +#ifdef CONFIG_AUTONUMA + +#include + +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); + +struct sched_autonuma { + int autonuma_node; + bool autonuma_stop_one_cpu; /* reset 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 */