1 AC_DEFUN([OPENAFS_LINUX_KERNEL_FUNC_CHECKS],[
2 dnl Function existence checks
3 AC_CHECK_LINUX_FUNC([__vfs_write],
4 [#include <linux/fs.h>],
5 [__vfs_write(NULL, NULL, 0, NULL);])
6 AC_CHECK_LINUX_FUNC([kernel_write],
7 [#include <linux/fs.h>],
8 [kernel_write(NULL, NULL, 0, NULL);])
9 AC_CHECK_LINUX_FUNC([bdi_init],
10 [#include <linux/backing-dev.h>],
12 AC_CHECK_LINUX_FUNC([super_setup_bdi],
13 [#include <linux/backing-dev.h>],
14 [struct super_block *sb;
15 super_setup_bdi(sb);])
16 AC_CHECK_LINUX_FUNC([PageChecked],
17 [#include <linux/mm.h>
18 #include <linux/page-flags.h>],
20 int bchecked = PageChecked(_page);])
21 AC_CHECK_LINUX_FUNC([PageFsMisc],
22 [#include <linux/mm.h>
23 #include <linux/page-flags.h>],
25 int bchecked = PageFsMisc(_page);])
26 AC_CHECK_LINUX_FUNC([clear_inode],
27 [#include <linux/fs.h>],
29 AC_CHECK_LINUX_FUNC([current_kernel_time],
30 [#include <linux/time.h>],
32 s = current_kernel_time();])
33 AC_CHECK_LINUX_FUNC([d_alloc_anon],
34 [#include <linux/fs.h>],
35 [d_alloc_anon(NULL);])
36 AC_CHECK_LINUX_FUNC([d_count],
37 [#include <linux/dcache.h>],
39 AC_CHECK_LINUX_FUNC([d_make_root],
40 [#include <linux/fs.h>],
42 AC_CHECK_LINUX_FUNC([do_sync_read],
43 [#include <linux/fs.h>],
44 [do_sync_read(NULL, NULL, 0, NULL);])
45 dnl - fatal_signal_pending introduced in 2.6.25
46 dnl - moved from linux/sched.h to linux/sched/signal.h in 4.11
47 AC_CHECK_LINUX_FUNC([fatal_signal_pending],
48 [#include <linux/sched.h>
49 #ifdef HAVE_LINUX_SCHED_SIGNAL_H
50 # include <linux/sched/signal.h>
52 [fatal_signal_pending(NULL);])
53 AC_CHECK_LINUX_FUNC([file_dentry],
54 [#include <linux/fs.h>],
55 [struct file *f; file_dentry(f);])
56 AC_CHECK_LINUX_FUNC([find_task_by_pid],
57 [#include <linux/sched.h>],
58 [pid_t p; find_task_by_pid(p);])
59 AC_CHECK_LINUX_FUNC([generic_file_aio_read],
60 [#include <linux/fs.h>],
61 [generic_file_aio_read(NULL,NULL,0,0);])
62 AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
63 [#include <linux/pagemap.h>],
64 [grab_cache_page_write_begin(NULL, 0, 0);])
65 AC_CHECK_LINUX_FUNC([hlist_unhashed],
66 [#include <linux/list.h>],
68 AC_CHECK_LINUX_FUNC([ihold],
69 [#include <linux/fs.h>],
71 AC_CHECK_LINUX_FUNC([i_size_read],
72 [#include <linux/fs.h>],
74 AC_CHECK_LINUX_FUNC([inode_setattr],
75 [#include <linux/fs.h>],
76 [inode_setattr(NULL, NULL);])
77 AC_CHECK_LINUX_FUNC([iter_file_splice_write],
78 [#include <linux/fs.h>],
79 [iter_file_splice_write(NULL,NULL,NULL,0,0);])
80 AC_CHECK_LINUX_FUNC([kernel_setsockopt],
81 [#include <linux/net.h>],
82 [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
83 AC_CHECK_LINUX_FUNC([ktime_get_coarse_real_ts64],
84 [#include <linux/ktime.h>],
85 [struct timespec64 *s;
86 ktime_get_coarse_real_ts64(s);])
87 AC_CHECK_LINUX_FUNC([ktime_get_real_ts64],
88 [#include <linux/ktime.h>],
89 [struct timespec64 *s;
90 ktime_get_real_ts64(s);])
91 AC_CHECK_LINUX_FUNC([locks_lock_file_wait],
92 [#include <linux/fs.h>],
93 [locks_lock_file_wait(NULL, NULL);])
94 AC_CHECK_LINUX_FUNC([override_creds],
95 [#include <linux/cred.h>],
97 AC_CHECK_LINUX_FUNC([page_follow_link],
98 [#include <linux/fs.h>],
99 [page_follow_link(0,0);])
100 AC_CHECK_LINUX_FUNC([page_get_link],
101 [#include <linux/fs.h>],
102 [page_get_link(0,0,0);])
103 AC_CHECK_LINUX_FUNC([page_offset],
104 [#include <linux/pagemap.h>],
105 [page_offset(NULL);])
106 AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
107 [#include <linux/pagevec.h>],
108 [__pagevec_lru_add_file(NULL);])
109 AC_CHECK_LINUX_FUNC([path_lookup],
110 [#include <linux/fs.h>
111 #include <linux/namei.h>],
112 [path_lookup(NULL, 0, NULL);])
113 AC_CHECK_LINUX_FUNC([proc_create],
114 [#include <linux/proc_fs.h>],
115 [proc_create(NULL, 0, NULL, NULL);])
116 AC_CHECK_LINUX_FUNC([rcu_read_lock],
117 [#include <linux/rcupdate.h>],
119 AC_CHECK_LINUX_FUNC([set_nlink],
120 [#include <linux/fs.h>],
121 [set_nlink(NULL, 1);])
122 AC_CHECK_LINUX_FUNC([setattr_prepare],
123 [#include <linux/fs.h>],
124 [setattr_prepare(NULL, NULL);])
125 AC_CHECK_LINUX_FUNC([sock_create_kern],
126 [#include <linux/net.h>],
127 [sock_create_kern(0, 0, 0, NULL);])
128 AC_CHECK_LINUX_FUNC([sock_create_kern_ns],
129 [#include <linux/net.h>],
130 [sock_create_kern(NULL, 0, 0, 0, NULL);])
131 AC_CHECK_LINUX_FUNC([splice_direct_to_actor],
132 [#include <linux/splice.h>],
133 [splice_direct_to_actor(NULL,NULL,NULL);])
134 AC_CHECK_LINUX_FUNC([default_file_splice_read],
135 [#include <linux/fs.h>],
136 [default_file_splice_read(NULL,NULL,NULL, 0, 0);])
137 AC_CHECK_LINUX_FUNC([svc_addr_in],
138 [#include <linux/sunrpc/svc.h>],
139 [svc_addr_in(NULL);])
140 AC_CHECK_LINUX_FUNC([zero_user_segments],
141 [#include <linux/highmem.h>],
142 [zero_user_segments(NULL, 0, 0, 0, 0);])
143 AC_CHECK_LINUX_FUNC([noop_fsync],
144 [#include <linux/fs.h>],
145 [void *address = &noop_fsync; printk("%p\n", address)];)
146 AC_CHECK_LINUX_FUNC([kthread_run],
147 [#include <linux/kernel.h>
148 #include <linux/kthread.h>],
149 [kthread_run(NULL, NULL, "test");])
150 AC_CHECK_LINUX_FUNC([inode_nohighmem],
151 [#include <linux/fs.h>],
152 [inode_nohighmem(NULL);])
153 AC_CHECK_LINUX_FUNC([inode_lock],
154 [#include <linux/fs.h>],
157 dnl lru_cache_add_file added to Linux 2.6.28.
158 dnl removed in Linux 5.8
159 AC_CHECK_LINUX_FUNC([lru_cache_add_file],
160 [#include <linux/swap.h>],
161 [lru_cache_add_file(NULL);])
163 dnl Linux 4.6 introduced in_compat_syscall as replacement for is_compat_task
164 dnl for certain platforms.
165 AC_CHECK_LINUX_FUNC([in_compat_syscall],
166 [#include <linux/compat.h>],
167 [in_compat_syscall();])
169 dnl lru_cache_add exported in Linux 5.8
170 dnl replaces lru_cache_add_file
171 AC_CHECK_LINUX_FUNC([lru_cache_add],
172 [#include <linux/swap.h>],
173 [lru_cache_add(NULL);])
175 dnl Linux 5.8 replaced kernel_setsockopt with helper functions
176 dnl e.g. ip_sock_set_mtu_discover, ip_sock_set_recverr
177 AC_CHECK_LINUX_FUNC([ip_sock_set],
178 [#include <net/ip.h>],
179 [ip_sock_set_mtu_discover(NULL, 0);])
181 dnl Linux 5.17 renamed complete_and_exit to kthread_complete_and_exit
182 AC_CHECK_LINUX_FUNC([kthread_complete_and_exit],
183 [#include <linux/kernel.h>
184 #include <linux/kthread.h>],
185 [kthread_complete_and_exit(0, 0);])
187 dnl Consequences - things which get set as a result of the
189 AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"],
190 [AC_DEFINE([AFS_NONFSTRANS], 1,
191 [define to disable the nfs translator])])