]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - config/kernel-global_page_state.m4
Revert "Develop tests for issues #5866 and #8858"
[FreeBSD/FreeBSD.git] / config / kernel-global_page_state.m4
1 dnl #
2 dnl # 4.8 API change
3 dnl #
4 dnl # 75ef71840539 mm, vmstat: add infrastructure for per-node vmstats
5 dnl # 599d0c954f91 mm, vmscan: move LRU lists to node
6 dnl #
7 AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE], [
8         AC_MSG_CHECKING([whether global_node_page_state() exists])
9         ZFS_LINUX_TRY_COMPILE([
10                 #include <linux/mm.h>
11                 #include <linux/vmstat.h>
12         ],[
13                 (void) global_node_page_state(0);
14         ],[
15                 AC_MSG_RESULT(yes)
16                 AC_DEFINE(ZFS_GLOBAL_NODE_PAGE_STATE, 1, [global_node_page_state() exists])
17         ],[
18                 AC_MSG_RESULT(no)
19         ])
20 ])
21
22 dnl #
23 dnl # 4.14 API change
24 dnl #
25 dnl # c41f012ade0b mm: rename global_page_state to global_zone_page_state
26 dnl #
27 AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE], [
28         AC_MSG_CHECKING([whether global_zone_page_state() exists])
29         ZFS_LINUX_TRY_COMPILE([
30                 #include <linux/mm.h>
31                 #include <linux/vmstat.h>
32         ],[
33                 (void) global_zone_page_state(0);
34         ],[
35                 AC_MSG_RESULT(yes)
36                 AC_DEFINE(ZFS_GLOBAL_ZONE_PAGE_STATE, 1, [global_zone_page_state() exists])
37         ],[
38                 AC_MSG_RESULT(no)
39         ])
40 ])
41
42 dnl #
43 dnl # Create a define and autoconf variable for an enum member
44 dnl #
45 AC_DEFUN([ZFS_AC_KERNEL_ENUM_MEMBER], [
46         AC_MSG_CHECKING([whether enum $2 contains $1])
47         AS_IF([AC_TRY_COMMAND("${srcdir}/scripts/enum-extract.pl" "$2" "$3" | egrep -qx $1)],[
48                 AC_MSG_RESULT([yes])
49                 AC_DEFINE(m4_join([_], [ZFS_ENUM], m4_toupper($2), $1), 1, [enum $2 contains $1])
50                 m4_join([_], [ZFS_ENUM], m4_toupper($2), $1)=1
51         ],[
52                 AC_MSG_RESULT([no])
53         ])
54 ])
55
56 dnl #
57 dnl # Sanity check helpers
58 dnl #
59 AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR],[
60         AC_MSG_RESULT(no)
61         AC_MSG_RESULT([$1 in either node_stat_item or zone_stat_item: $2])
62         AC_MSG_RESULT([configure needs updating, see: config/kernel-global_page_state.m4])
63         AC_MSG_FAILURE([SHUT 'ER DOWN CLANCY, SHE'S PUMPIN' MUD!])
64 ])
65
66 AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK], [
67         enum_check_a="m4_join([_], [$ZFS_ENUM_NODE_STAT_ITEM], $1)"
68         enum_check_b="m4_join([_], [$ZFS_ENUM_ZONE_STAT_ITEM], $1)"
69         AS_IF([test -n "$enum_check_a" -a -n "$enum_check_b"],[
70                 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [DUPLICATE])
71         ])
72         AS_IF([test -z "$enum_check_a" -a -z "$enum_check_b"],[
73                 ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [NOT FOUND])
74         ])
75 ])
76
77 dnl #
78 dnl # Ensure the config tests are finding one and only one of each enum of interest
79 dnl #
80 AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY], [
81         AC_MSG_CHECKING([global_page_state enums are sane])
82
83         ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_FILE_PAGES])
84         ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_ANON])
85         ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_FILE])
86         ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_SLAB_RECLAIMABLE])
87
88         AC_MSG_RESULT(yes)
89 ])
90
91 dnl #
92 dnl # enum members in which we're interested
93 dnl #
94 AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE], [
95         ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE
96         ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE
97
98         ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES],              [node_stat_item], [$LINUX/include/linux/mmzone.h])
99         ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON],           [node_stat_item], [$LINUX/include/linux/mmzone.h])
100         ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],           [node_stat_item], [$LINUX/include/linux/mmzone.h])
101         ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE],        [node_stat_item], [$LINUX/include/linux/mmzone.h])
102
103         ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES],              [zone_stat_item], [$LINUX/include/linux/mmzone.h])
104         ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON],           [zone_stat_item], [$LINUX/include/linux/mmzone.h])
105         ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE],           [zone_stat_item], [$LINUX/include/linux/mmzone.h])
106         ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE],        [zone_stat_item], [$LINUX/include/linux/mmzone.h])
107
108         ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY
109 ])