1dnl # 2dnl # 4.8 API change 3dnl # 4dnl # 75ef71840539 mm, vmstat: add infrastructure for per-node vmstats 5dnl # 599d0c954f91 mm, vmscan: move LRU lists to node 6dnl # 7AC_DEFUN([ZFS_AC_KERNEL_SRC_GLOBAL_NODE_PAGE_STATE], [ 8 ZFS_LINUX_TEST_SRC([global_node_page_state], [ 9 #include <linux/mm.h> 10 #include <linux/vmstat.h> 11 ],[ 12 (void) global_node_page_state(0); 13 ]) 14]) 15 16AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE], [ 17 AC_MSG_CHECKING([whether global_node_page_state() exists]) 18 ZFS_LINUX_TEST_RESULT([global_node_page_state], [ 19 AC_MSG_RESULT(yes) 20 AC_DEFINE(ZFS_GLOBAL_NODE_PAGE_STATE, 1, 21 [global_node_page_state() exists]) 22 ],[ 23 AC_MSG_RESULT(no) 24 ]) 25]) 26 27dnl # 28dnl # 4.14 API change 29dnl # 30dnl # c41f012ade0b mm: rename global_page_state to global_zone_page_state 31dnl # 32AC_DEFUN([ZFS_AC_KERNEL_SRC_GLOBAL_ZONE_PAGE_STATE], [ 33 ZFS_LINUX_TEST_SRC([global_zone_page_state], [ 34 #include <linux/mm.h> 35 #include <linux/vmstat.h> 36 ],[ 37 (void) global_zone_page_state(0); 38 ]) 39]) 40 41AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE], [ 42 AC_MSG_CHECKING([whether global_zone_page_state() exists]) 43 ZFS_LINUX_TEST_RESULT([global_zone_page_state], [ 44 AC_MSG_RESULT(yes) 45 AC_DEFINE(ZFS_GLOBAL_ZONE_PAGE_STATE, 1, 46 [global_zone_page_state() exists]) 47 ],[ 48 AC_MSG_RESULT(no) 49 ]) 50]) 51 52dnl # 53dnl # Create a define and autoconf variable for an enum member 54dnl # 55AC_DEFUN([ZFS_AC_KERNEL_ENUM_MEMBER], [ 56 AC_MSG_CHECKING([whether enum $2 contains $1]) 57 AS_IF([AC_TRY_COMMAND( 58 "${srcdir}/scripts/enum-extract.pl" "$2" "$3" | grep -Eqx $1)],[ 59 AC_MSG_RESULT([yes]) 60 AC_DEFINE(m4_join([_], [ZFS_ENUM], m4_toupper($2), $1), 1, 61 [enum $2 contains $1]) 62 m4_join([_], [ZFS_ENUM], m4_toupper($2), $1)=1 63 ],[ 64 AC_MSG_RESULT([no]) 65 ]) 66]) 67 68dnl # 69dnl # Sanity check helpers 70dnl # 71AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR],[ 72 AC_MSG_RESULT(no) 73 AC_MSG_RESULT([$1 in either node_stat_item or zone_stat_item: $2]) 74 ZFS_LINUX_TEST_ERROR([global page state]) 75]) 76 77AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK], [ 78 enum_check_a="m4_join([_], [$ZFS_ENUM_NODE_STAT_ITEM], $1)" 79 enum_check_b="m4_join([_], [$ZFS_ENUM_ZONE_STAT_ITEM], $1)" 80 AS_IF([test -n "$enum_check_a" -a -n "$enum_check_b"],[ 81 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [DUPLICATE]) 82 ]) 83 AS_IF([test -z "$enum_check_a" -a -z "$enum_check_b"],[ 84 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [NOT FOUND]) 85 ]) 86]) 87 88dnl # 89dnl # Ensure the config tests are finding one and only one of each enum. 90dnl # 91AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY], [ 92 AC_MSG_CHECKING([whether global_page_state enums are sane]) 93 94 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_FILE_PAGES]) 95 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_ANON]) 96 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_FILE]) 97 98 AC_MSG_RESULT(yes) 99]) 100 101AC_DEFUN([ZFS_AC_KERNEL_SRC_GLOBAL_PAGE_STATE], [ 102 ZFS_AC_KERNEL_SRC_GLOBAL_NODE_PAGE_STATE 103 ZFS_AC_KERNEL_SRC_GLOBAL_ZONE_PAGE_STATE 104]) 105 106dnl # 107dnl # enum members in which we're interested 108dnl # 109AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE], [ 110 ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE 111 ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE 112 113 ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES], 114 [node_stat_item], [$LINUX/include/linux/mmzone.h]) 115 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON], 116 [node_stat_item], [$LINUX/include/linux/mmzone.h]) 117 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE], 118 [node_stat_item], [$LINUX/include/linux/mmzone.h]) 119 120 ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES], 121 [zone_stat_item], [$LINUX/include/linux/mmzone.h]) 122 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON], 123 [zone_stat_item], [$LINUX/include/linux/mmzone.h]) 124 ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE], 125 [zone_stat_item], [$LINUX/include/linux/mmzone.h]) 126 127 ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY 128]) 129