lkml.org 
[lkml]   [2012]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/40] autonuma: core autonuma.h header
    Date
    This is the generic autonuma.h header that defines the generic
    AutoNUMA specific functions like autonuma_setup_new_exec,
    autonuma_split_huge_page, numa_hinting_fault, etc...

    As usual functions like numa_hinting_fault that only matter for builds
    with CONFIG_AUTONUMA=y are defined unconditionally, but they are only
    linked into the kernel if CONFIG_AUTONUMA=n. Their call sites are
    optimized away at build time (or kernel won't link).

    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    ---
    include/linux/autonuma.h | 41 +++++++++++++++++++++++++++++++++++++++++
    1 files changed, 41 insertions(+), 0 deletions(-)
    create mode 100644 include/linux/autonuma.h

    diff --git a/include/linux/autonuma.h b/include/linux/autonuma.h
    new file mode 100644
    index 0000000..85ca5eb
    --- /dev/null
    +++ b/include/linux/autonuma.h
    @@ -0,0 +1,41 @@
    +#ifndef _LINUX_AUTONUMA_H
    +#define _LINUX_AUTONUMA_H
    +
    +#ifdef CONFIG_AUTONUMA
    +
    +#include <linux/autonuma_flags.h>
    +
    +extern void autonuma_enter(struct mm_struct *mm);
    +extern void autonuma_exit(struct mm_struct *mm);
    +extern void __autonuma_migrate_page_remove(struct page *page);
    +extern void autonuma_migrate_split_huge_page(struct page *page,
    + struct page *page_tail);
    +extern void autonuma_setup_new_exec(struct task_struct *p);
    +
    +static inline void autonuma_migrate_page_remove(struct page *page)
    +{
    + if (ACCESS_ONCE(page->autonuma_migrate_nid) >= 0)
    + __autonuma_migrate_page_remove(page);
    +}
    +
    +#define autonuma_printk(format, args...) \
    + if (autonuma_debug()) printk(format, ##args)
    +
    +#else /* CONFIG_AUTONUMA */
    +
    +static inline void autonuma_enter(struct mm_struct *mm) {}
    +static inline void autonuma_exit(struct mm_struct *mm) {}
    +static inline void autonuma_migrate_page_remove(struct page *page) {}
    +static inline void autonuma_migrate_split_huge_page(struct page *page,
    + struct page *page_tail) {}
    +static inline void autonuma_setup_new_exec(struct task_struct *p) {}
    +
    +#endif /* CONFIG_AUTONUMA */
    +
    +extern pte_t __pte_numa_fixup(struct mm_struct *mm, struct vm_area_struct *vma,
    + unsigned long addr, pte_t pte, pte_t *ptep);
    +extern void __pmd_numa_fixup(struct mm_struct *mm, unsigned long addr,
    + pmd_t *pmd);
    +extern void numa_hinting_fault(struct page *page, int numpages);
    +
    +#endif /* _LINUX_AUTONUMA_H */

    \
     
     \ /
      Last update: 2012-06-28 15:21    [W:4.027 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site