linux/mm/shuffle.h
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2// Copyright(c) 2018 Intel Corporation. All rights reserved.
   3#ifndef _MM_SHUFFLE_H
   4#define _MM_SHUFFLE_H
   5#include <linux/jump_label.h>
   6
   7#define SHUFFLE_ORDER (MAX_ORDER-1)
   8
   9#ifdef CONFIG_SHUFFLE_PAGE_ALLOCATOR
  10DECLARE_STATIC_KEY_FALSE(page_alloc_shuffle_key);
  11extern void __shuffle_free_memory(pg_data_t *pgdat);
  12extern bool shuffle_pick_tail(void);
  13static inline void __meminit shuffle_free_memory(pg_data_t *pgdat)
  14{
  15        if (!static_branch_unlikely(&page_alloc_shuffle_key))
  16                return;
  17        __shuffle_free_memory(pgdat);
  18}
  19
  20extern void __shuffle_zone(struct zone *z);
  21static inline void __meminit shuffle_zone(struct zone *z)
  22{
  23        if (!static_branch_unlikely(&page_alloc_shuffle_key))
  24                return;
  25        __shuffle_zone(z);
  26}
  27
  28static inline bool is_shuffle_order(int order)
  29{
  30        if (!static_branch_unlikely(&page_alloc_shuffle_key))
  31                return false;
  32        return order >= SHUFFLE_ORDER;
  33}
  34#else
  35static inline bool shuffle_pick_tail(void)
  36{
  37        return false;
  38}
  39
  40static inline void shuffle_free_memory(pg_data_t *pgdat)
  41{
  42}
  43
  44static inline void shuffle_zone(struct zone *z)
  45{
  46}
  47
  48static inline bool is_shuffle_order(int order)
  49{
  50        return false;
  51}
  52#endif
  53#endif /* _MM_SHUFFLE_H */
  54