linux-updates-20060811
[openafs.git] / src / cf / linux-test4.m4
1 AC_DEFUN([LINUX_COMPLETION_H_EXISTS], [
2   AC_MSG_CHECKING([for linux/completion.h existance])
3   AC_CACHE_VAL([ac_cv_linux_completion_h_exists], [
4     AC_TRY_KBUILD(
5 [#include <linux/version.h>
6 #include <linux/completion.h>],
7 [struct completion _c;
8 #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,8)
9 lose
10 #endif],
11       ac_cv_linux_completion_h_exists=yes,
12       ac_cv_linux_completion_h_exists=no)])
13   AC_MSG_RESULT($ac_cv_linux_completion_h_exists)])
14
15
16 AC_DEFUN([LINUX_DEFINES_FOR_EACH_PROCESS], [
17   AC_MSG_CHECKING([for defined for_each_process])
18   AC_CACHE_VAL([ac_cv_linux_defines_for_each_process], [
19     AC_TRY_KBUILD(
20 [#include <linux/sched.h>],
21 [#ifndef for_each_process
22 #error for_each_process not defined
23 #endif],
24       ac_cv_linux_defines_for_each_process=yes,
25       ac_cv_linux_defines_for_each_process=no)])
26   AC_MSG_RESULT($ac_cv_linux_defines_for_each_process)])
27
28
29 AC_DEFUN([LINUX_DEFINES_PREV_TASK], [
30   AC_MSG_CHECKING([for defined prev_task])
31   AC_CACHE_VAL([ac_cv_linux_defines_prev_task], [
32     AC_TRY_KBUILD(
33 [#include <linux/sched.h>],
34 [#ifndef prev_task
35 #error prev_task not defined
36 #endif],
37       ac_cv_linux_defines_prev_task=yes,
38       ac_cv_linux_defines_prev_task=no)])
39   AC_MSG_RESULT($ac_cv_linux_defines_prev_task)])
40
41
42 AC_DEFUN([LINUX_EXPORTS_INIT_MM], [
43   AC_MSG_CHECKING([for exported init_mm])
44   AC_CACHE_VAL([ac_cv_linux_exports_init_mm], [
45     AC_TRY_KBUILD(
46 [#include <linux/modversions.h>],
47 [#ifndef __ver_init_mm
48 #error init_mm not exported
49 #endif],
50       ac_cv_linux_exports_init_mm=yes,
51       ac_cv_linux_exports_init_mm=no)])
52   AC_MSG_RESULT($ac_cv_linux_exports_init_mm)])
53
54
55 AC_DEFUN([LINUX_EXPORTS_KALLSYMS_ADDRESS], [
56   AC_MSG_CHECKING([for exported kallsyms_address_to_symbol])
57   AC_CACHE_VAL([ac_cv_linux_exports_kallsyms_address], [
58     AC_TRY_KBUILD(
59 [#include <linux/modversions.h>],
60 [#ifndef __ver_kallsyms_address_to_symbol
61 #error kallsyms_address_to_symbol not exported
62 #endif],
63       ac_cv_linux_exports_kallsyms_address=yes,
64       ac_cv_linux_exports_kallsyms_address=no)])
65   AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_address)])
66
67
68 AC_DEFUN([LINUX_EXPORTS_KALLSYMS_SYMBOL], [
69   AC_MSG_CHECKING([for exported kallsyms_symbol_to_address])
70   AC_CACHE_VAL([ac_cv_linux_exports_kallsyms_symbol], [
71     AC_TRY_KBUILD(
72 [#include <linux/modversions.h>],
73 [#ifndef __ver_kallsyms_symbol_to_address
74 #error kallsyms_symbol_to_address not exported
75 #endif],
76       ac_cv_linux_exports_kallsyms_symbol=yes,
77       ac_cv_linux_exports_kallsyms_symbol=no)])
78   AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_symbol)])
79
80 AC_DEFUN([LINUX_EXPORTS_SYS_CALL_TABLE], [
81   AC_MSG_CHECKING([for exported sys_call_table])
82   AC_CACHE_VAL([ac_cv_linux_exports_sys_call_table], [
83     AC_TRY_KBUILD(
84 [#include <linux/modversions.h>],
85 [#ifndef __ver_sys_call_table
86 #error sys_call_table not exported
87 #endif],
88       ac_cv_linux_exports_sys_call_table=yes,
89       ac_cv_linux_exports_sys_call_table=no)])
90   AC_MSG_RESULT($ac_cv_linux_exports_sys_call_table)])
91
92
93 AC_DEFUN([LINUX_EXPORTS_IA32_SYS_CALL_TABLE], [
94   AC_MSG_CHECKING([for exported ia32_sys_call_table])
95   AC_CACHE_VAL([ac_cv_linux_exports_ia32_sys_call_table], [
96     AC_TRY_KBUILD(
97 [#include <linux/modversions.h>],
98 [#ifndef __ver_ia32_sys_call_table
99 #error ia32_sys_call_table not exported
100 #endif],
101       ac_cv_linux_exports_ia32_sys_call_table=yes,
102       ac_cv_linux_exports_ia32_sys_call_table=no)])
103   AC_MSG_RESULT($ac_cv_linux_exports_ia32_sys_call_table)])
104
105
106 AC_DEFUN([LINUX_EXPORTS_SYS_CHDIR], [
107   AC_MSG_CHECKING([for exported sys_chdir])
108   AC_CACHE_VAL([ac_cv_linux_exports_sys_chdir], [
109     AC_TRY_KBUILD(
110 [#include <linux/modversions.h>],
111 [#ifndef __ver_sys_chdir
112 #error sys_chdir not exported
113 #endif],
114       ac_cv_linux_exports_sys_chdir=yes,
115       ac_cv_linux_exports_sys_chdir=no)])
116   AC_MSG_RESULT($ac_cv_linux_exports_sys_chdir)])
117
118
119 AC_DEFUN([LINUX_EXPORTS_SYS_CLOSE], [
120   AC_MSG_CHECKING([for exported sys_close])
121   AC_CACHE_VAL([ac_cv_linux_exports_sys_close], [
122     AC_TRY_KBUILD(
123 [#include <linux/modversions.h>],
124 [#ifndef __ver_sys_close
125 #error sys_close not exported
126 #endif],
127       ac_cv_linux_exports_sys_close=yes,
128       ac_cv_linux_exports_sys_close=no)])
129   AC_MSG_RESULT($ac_cv_linux_exports_sys_close)])
130
131
132 AC_DEFUN([LINUX_EXPORTS_SYS_WAIT4], [
133   AC_MSG_CHECKING([for exported sys_wait4])
134   AC_CACHE_VAL([ac_cv_linux_exports_sys_wait4], [
135     AC_TRY_KBUILD(
136 [#include <linux/modversions.h>],
137 [#ifndef __ver_sys_wait4
138 #error sys_wait4 not exported
139 #endif],
140       ac_cv_linux_exports_sys_wait4=yes,
141       ac_cv_linux_exports_sys_wait4=no)])
142   AC_MSG_RESULT($ac_cv_linux_exports_sys_wait4)])
143
144
145 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_BLKSIZE], [
146   AC_MSG_CHECKING([for i_blksize in struct inode])
147   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_blksize], [
148     AC_TRY_KBUILD(
149 [#include <linux/fs.h>],
150 [struct inode _inode;
151 printk("%d\n", _inode.i_blksize);],
152       ac_cv_linux_fs_struct_inode_has_i_blksize=yes,
153       ac_cv_linux_fs_struct_inode_has_i_blksize=no)])
154   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_blksize)])
155
156 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_CDEV], [
157   AC_MSG_CHECKING([for i_cdev in struct inode])
158   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_cdev], [
159     AC_TRY_KBUILD(
160 [#include <linux/fs.h>],
161 [struct inode _inode;
162 printk("%d\n", _inode.i_cdev);],
163       ac_cv_linux_fs_struct_inode_has_i_cdev=yes,
164       ac_cv_linux_fs_struct_inode_has_i_cdev=no)])
165   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_cdev)])
166
167
168 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DEVICES], [
169   AC_MSG_CHECKING([for i_devices in struct inode])
170   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_devices], [
171     AC_TRY_KBUILD(
172 [#include <linux/fs.h>],
173 [struct inode _inode;
174 printk("%d\n", _inode.i_devices);],
175       ac_cv_linux_fs_struct_inode_has_i_devices=yes,
176       ac_cv_linux_fs_struct_inode_has_i_devices=no)])
177   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_devices)])
178
179
180 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS], [
181   AC_MSG_CHECKING([for i_dirty_data_buffers in struct inode])
182   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers], [
183     AC_TRY_KBUILD(
184 [#include <linux/fs.h>],
185 [struct inode _inode;
186 printk("%d\n", _inode.i_dirty_data_buffers);],
187       ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=yes,
188       ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=no)])
189   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers)])
190
191
192 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK], [
193   AC_MSG_CHECKING([for inotify_lock in struct inode])
194   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_inotify_lock], [
195     AC_TRY_KBUILD(
196 [#include <linux/fs.h>],
197 [struct inode _inode;
198 printk("%d\n", _inode.inotify_lock);],
199       ac_cv_linux_fs_struct_inode_has_inotify_lock=yes,
200       ac_cv_linux_fs_struct_inode_has_inotify_lock=no)])
201   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_lock)])
202
203 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM], [
204   AC_MSG_CHECKING([for inotify_sem in struct inode])
205   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_inotify_sem], [
206     AC_TRY_KBUILD(
207 [#include <linux/fs.h>],
208 [struct inode _inode;
209 printk("%x\n", _inode.inotify_sem);],
210       ac_cv_linux_fs_struct_inode_has_inotify_sem=yes,
211       ac_cv_linux_fs_struct_inode_has_inotify_sem=no)])
212   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_sem)])
213
214
215 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MAPPING_OVERLOAD], [
216   AC_MSG_CHECKING([for i_mapping_overload in struct inode])
217   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mapping_overload], [
218     AC_TRY_KBUILD(
219 [#include <linux/fs.h>],
220 [struct inode _inode;
221 printk("%d\n", _inode.i_mapping_overload);],
222       ac_cv_linux_fs_struct_inode_has_i_mapping_overload=yes,
223       ac_cv_linux_fs_struct_inode_has_i_mapping_overload=no)])
224   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mapping_overload)])
225
226
227 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED], [
228   AC_MSG_CHECKING([for i_mmap_shared in struct inode])
229   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mmap_shared], [
230     AC_TRY_KBUILD(
231 [#include <linux/fs.h>],
232 [struct inode _inode;
233 printk("%d\n", _inode.i_mmap_shared);],
234       ac_cv_linux_fs_struct_inode_has_i_mmap_shared=yes,
235       ac_cv_linux_fs_struct_inode_has_i_mmap_shared=no)])
236   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mmap_shared)])
237
238
239 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MUTEX], [
240   AC_MSG_CHECKING([for i_mutex in struct inode])
241   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mutex], [
242     AC_TRY_KBUILD(
243 [#include <linux/fs.h>],
244 [struct inode _inode;
245 printk("%d\n", _inode.i_mutex);],
246       ac_cv_linux_fs_struct_inode_has_i_mutex=yes,
247       ac_cv_linux_fs_struct_inode_has_i_mutex=no)])
248   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mutex)])
249
250
251 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SECURITY], [
252   AC_MSG_CHECKING([for i_security in struct inode])
253   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_security], [
254     AC_TRY_KBUILD(
255 [#include <linux/fs.h>],
256 [struct inode _inode;
257 printk("%d\n", _inode.i_security);],
258       ac_cv_linux_fs_struct_inode_has_i_security=yes,
259       ac_cv_linux_fs_struct_inode_has_i_security=no)])
260   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_security)])
261
262
263 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST], [
264   AC_MSG_CHECKING([for i_sb_list in struct inode])
265   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_sb_list], [
266     AC_TRY_KBUILD(
267 [#include <linux/fs.h>],
268 [struct inode _inode;
269 printk("%d\n", _inode.i_sb_list);],
270       ac_cv_linux_fs_struct_inode_has_i_sb_list=yes,
271       ac_cv_linux_fs_struct_inode_has_i_sb_list=no)])
272   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_sb_list)])
273
274
275 AC_DEFUN([LINUX_RECALC_SIGPENDING_ARG_TYPE], [
276   AC_MSG_CHECKING([for recalc_sigpending arg type])
277   AC_CACHE_VAL([ac_cv_linux_func_recalc_sigpending_takes_void], [
278     AC_TRY_KBUILD(
279 [#include <linux/sched.h>],
280 [recalc_sigpending();],
281       ac_cv_linux_func_recalc_sigpending_takes_void=yes,
282       ac_cv_linux_func_recalc_sigpending_takes_void=no)])
283   AC_MSG_RESULT($ac_cv_linux_func_recalc_sigpending_takes_void)])
284
285
286 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT], [
287   AC_MSG_CHECKING([for parent in struct task_struct])
288   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_parent], [
289     AC_TRY_KBUILD(
290 [#include <linux/sched.h>],
291 [struct task_struct _tsk;
292 printk("%d\n", _tsk.parent);],
293       ac_cv_linux_sched_struct_task_struct_has_parent=yes,
294       ac_cv_linux_sched_struct_task_struct_has_parent=no)])
295   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_parent)])
296
297
298 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT], [
299   AC_MSG_CHECKING([for real_parent in struct task_struct])
300   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_real_parent], [
301     AC_TRY_KBUILD(
302 [#include <linux/sched.h>],
303 [struct task_struct _tsk;
304 printk("%d\n", _tsk.real_parent);],
305       ac_cv_linux_sched_struct_task_struct_has_real_parent=yes,
306       ac_cv_linux_sched_struct_task_struct_has_real_parent=no)])
307   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_real_parent)])
308
309
310 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG], [
311   AC_MSG_CHECKING([for sig in struct task_struct])
312   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sig], [
313     AC_TRY_KBUILD(
314 [#include <linux/sched.h>],
315 [struct task_struct _tsk;
316 printk("%d\n", _tsk.sig);],
317       ac_cv_linux_sched_struct_task_struct_has_sig=yes,
318       ac_cv_linux_sched_struct_task_struct_has_sig=no)])
319   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sig)])
320
321
322 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK], [
323   AC_MSG_CHECKING([for sigmask_lock in struct task_struct])
324   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sigmask_lock], [
325     AC_TRY_KBUILD(
326 [#include <linux/sched.h>],
327 [struct task_struct _tsk;
328 printk("%d\n", _tsk.sigmask_lock);],
329       ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=yes,
330       ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=no)])
331   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sigmask_lock)])
332
333
334 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND], [
335   AC_MSG_CHECKING([for sighand in struct task_struct])
336   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sighand], [
337     AC_TRY_KBUILD(
338 [#include <linux/sched.h>],
339 [struct task_struct _tsk;
340 printk("%d\n", _tsk.sighand);],
341       ac_cv_linux_sched_struct_task_struct_has_sighand=yes,
342       ac_cv_linux_sched_struct_task_struct_has_sighand=no)])
343   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sighand)])
344
345
346 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM], [
347   AC_MSG_CHECKING([for rlim in struct task_struct])
348   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_rlim], [
349     AC_TRY_KBUILD(
350 [#include <linux/sched.h>],
351 [struct task_struct _tsk;
352 printk("%d\n", _tsk.rlim);],
353       ac_cv_linux_sched_struct_task_struct_has_rlim=yes,
354       ac_cv_linux_sched_struct_task_struct_has_rlim=no)])
355   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_rlim)])
356
357
358 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM], [
359   AC_MSG_CHECKING([for signal->rlim in struct task_struct])
360   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_signal_rlim], [
361     AC_TRY_KBUILD(
362 [#include <linux/sched.h>],
363 [struct task_struct _tsk;
364 printk("%d\n", _tsk.signal->rlim);],
365       ac_cv_linux_sched_struct_task_struct_has_signal_rlim=yes,
366       ac_cv_linux_sched_struct_task_struct_has_signal_rlim=no)])
367   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_signal_rlim)])
368
369
370 AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE], [
371   AC_MSG_CHECKING([for exit_state in struct task_struct])
372   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_exit_state], [
373     AC_TRY_KBUILD(
374 [#include <linux/sched.h>],
375 [struct task_struct _tsk;
376 printk("%d\n", _tsk.exit_state);],
377       ac_cv_linux_sched_struct_task_struct_has_exit_state=yes,
378       ac_cv_linux_sched_struct_task_struct_has_exit_state=no)])
379   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)])
380
381
382 AC_DEFUN([LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE], [
383   AC_MSG_CHECKING([for alloc_inode in struct super_operations])
384   AC_CACHE_VAL([ac_cv_linux_fs_struct_super_has_alloc_inode], [
385     AC_TRY_KBUILD(
386 [#include <linux/fs.h>],
387 [struct super_operations _super;
388 printk("%p\n", _super.alloc_inode);],
389       ac_cv_linux_fs_struct_super_has_alloc_inode=yes,
390       ac_cv_linux_fs_struct_super_has_alloc_inode=no)])
391   AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)])
392
393
394 AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [
395   AC_MSG_CHECKING([for 5th argument in sock_create found in some SELinux kernels])
396   AC_CACHE_VAL([ac_cv_linux_kernel_sock_create_v], [
397     AC_TRY_KBUILD(
398 [#include <linux/net.h>],
399 [sock_create(0,0,0,0,0);],
400       ac_cv_linux_kernel_sock_create_v=yes,
401       ac_cv_linux_kernel_sock_create_v=no)])
402   AC_MSG_RESULT($ac_cv_linux_kernel_sock_create_v)])
403
404
405 AC_DEFUN([LINUX_KERNEL_PAGE_FOLLOW_LINK], [
406   AC_MSG_CHECKING([for page_follow_link_light vs page_follow_link])
407   AC_CACHE_VAL([ac_cv_linux_kernel_page_follow_link], [
408     save_CPPFLAGS="$CPPFLAGS"
409     CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
410     AC_TRY_KBUILD(
411 [#include <linux/fs.h>],
412 [page_follow_link(0,0);],
413       ac_cv_linux_kernel_page_follow_link=yes,
414       ac_cv_linux_kernel_page_follow_link=no)
415     CPPFLAGS="$save_CPPFLAGS"])
416   AC_MSG_RESULT($ac_cv_linux_kernel_page_follow_link)])
417
418
419 AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK], [
420   AC_MSG_CHECKING([for gfp_mask in struct address_space])
421   AC_CACHE_VAL([ac_cv_linux_fs_struct_address_space_has_gfp_mask], [
422     AC_TRY_KBUILD(
423 [#include <linux/fs.h>],
424 [struct address_space _a;
425 printk("%d\n", _a.gfp_mask);],
426       ac_cv_linux_fs_struct_address_space_has_gfp_mask=yes,
427       ac_cv_linux_fs_struct_address_space_has_gfp_mask=no)])
428   AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_gfp_mask)])
429
430
431 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_BYTES], [
432   AC_MSG_CHECKING([for i_bytes in struct inode])
433   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_bytes], [
434     AC_TRY_KBUILD(
435 [#include <linux/fs.h>],
436 [struct inode _inode;
437 printk("%d\n", _inode.i_bytes);],
438       ac_cv_linux_fs_struct_inode_has_i_bytes=yes,
439       ac_cv_linux_fs_struct_inode_has_i_bytes=no)])
440   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_bytes)])
441
442
443 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM], [
444   AC_MSG_CHECKING([for i_alloc_sem in struct inode])
445   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_alloc_sem], [
446     AC_TRY_KBUILD(
447 [#include <linux/fs.h>],
448 [struct inode _i;
449 printk("%x\n", _i.i_alloc_sem);],
450       ac_cv_linux_fs_struct_inode_has_i_alloc_sem=yes,
451       ac_cv_linux_fs_struct_inode_has_i_alloc_sem=no)])
452   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_alloc_sem)])
453
454
455 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM], [
456   AC_MSG_CHECKING([for i_truncate_sem in struct inode])
457   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_truncate_sem], [
458     AC_TRY_KBUILD(
459 [#include <linux/fs.h>],
460 [struct inode _i;
461 printk("%x\n", _i.i_truncate_sem);],
462       ac_cv_linux_fs_struct_inode_has_i_truncate_sem=yes,
463       ac_cv_linux_fs_struct_inode_has_i_truncate_sem=no)])
464   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_truncate_sem)])
465
466
467 AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK], [
468   AC_MSG_CHECKING([for page_lock in struct address_space])
469   AC_CACHE_VAL([ac_cv_linux_fs_struct_address_space_has_page_lock], [
470     AC_TRY_KBUILD(
471 [#include <linux/fs.h>],
472 [struct address_space _a_s;
473 printk("%x\n", _a_s.page_lock);],
474       ac_cv_linux_fs_struct_address_space_has_page_lock=yes,
475       ac_cv_linux_fs_struct_address_space_has_page_lock=no)])
476   AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_page_lock)])
477
478
479 AC_DEFUN([LINUX_INODE_SETATTR_RETURN_TYPE], [
480   AC_MSG_CHECKING([for inode_setattr return type])
481   AC_CACHE_VAL([ac_cv_linux_func_inode_setattr_returns_int], [
482     AC_TRY_KBUILD(
483 [#include <linux/fs.h>],
484 [struct inode _inode;
485 struct iattr _iattr;
486 int i;
487 i = inode_setattr(&_inode, &_iattr);],
488       ac_cv_linux_func_inode_setattr_returns_int=yes,
489       ac_cv_linux_func_inode_setattr_returns_int=no)])
490   AC_MSG_RESULT($ac_cv_linux_func_inode_setattr_returns_int)])
491
492
493 AC_DEFUN([LINUX_WRITE_INODE_RETURN_TYPE], [
494   AC_MSG_CHECKING([for write_inode return type])
495   AC_CACHE_VAL([ac_cv_linux_func_write_inode_returns_int], [
496     AC_TRY_KBUILD(
497 [#include <linux/fs.h>],
498 [struct inode _inode;
499 struct super_operations _sops;
500 int i;
501 i = _sops.write_inode(&_inode, 0);],
502       ac_cv_linux_func_write_inode_returns_int=yes,
503       ac_cv_linux_func_write_inode_returns_int=no)])
504   AC_MSG_RESULT($ac_cv_linux_func_write_inode_returns_int)])
505
506
507 AC_DEFUN([LINUX_AOP_WRITEBACK_CONTROL], [
508   AC_MSG_CHECKING([whether address_space_operations.writepage takes a writeback_control])
509   AC_CACHE_VAL([ac_cv_linux_func_a_writepage_takes_writeback_control], [
510     AC_TRY_KBUILD(
511 [#include <linux/fs.h>
512 #include <linux/mm.h>
513 #include <linux/writeback.h>],
514 [struct address_space_operations _aops;
515 struct page _page;
516 struct writeback_control _writeback_control;
517 (void)_aops.writepage(&_page, &_writeback_control);],
518       ac_cv_linux_func_a_writepage_takes_writeback_control=yes,
519       ac_cv_linux_func_a_writepage_takes_writeback_control=no)])
520   AC_MSG_RESULT($ac_cv_linux_func_a_writepage_takes_writeback_control)])
521
522
523 AC_DEFUN([LINUX_REFRIGERATOR], [
524   AC_MSG_CHECKING([whether refrigerator takes PF_FREEZE])
525   AC_CACHE_VAL([ac_cv_linux_func_refrigerator_takes_pf_freeze], [
526     AC_TRY_KBUILD(
527 [#include <linux/sched.h>],
528 [refrigerator(PF_FREEZE);],
529       ac_cv_linux_func_refrigerator_takes_pf_freeze=yes,
530       ac_cv_linux_func_refrigerator_takes_pf_freeze=no)])
531   AC_MSG_RESULT($ac_cv_linux_func_refrigerator_takes_pf_freeze)])
532
533
534 AC_DEFUN([LINUX_IOP_I_CREATE_TAKES_NAMEIDATA], [
535   AC_MSG_CHECKING([whether inode_operations.create takes a nameidata])
536   AC_CACHE_VAL([ac_cv_linux_func_i_create_takes_nameidata], [
537     AC_TRY_KBUILD(
538 [#include <linux/fs.h>
539 #include <linux/namei.h>],
540 [struct inode _inode;
541 struct dentry _dentry;
542 struct nameidata _nameidata;
543 (void)_inode.i_op->create(&_inode, &_dentry, 0, &_nameidata);],
544       ac_cv_linux_func_i_create_takes_nameidata=yes,
545       ac_cv_linux_func_i_create_takes_nameidata=no)])
546   AC_MSG_RESULT($ac_cv_linux_func_i_create_takes_nameidata)])
547
548
549 AC_DEFUN([LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA], [
550   AC_MSG_CHECKING([whether inode_operations.lookup takes a nameidata])
551   AC_CACHE_VAL([ac_cv_linux_func_i_lookup_takes_nameidata], [
552     AC_TRY_KBUILD(
553 [#include <linux/fs.h>
554 #include <linux/namei.h>],
555 [struct inode _inode;
556 struct dentry _dentry;
557 struct nameidata _nameidata;
558 (void)_inode.i_op->lookup(&_inode, &_dentry, &_nameidata);],
559       ac_cv_linux_func_i_lookup_takes_nameidata=yes,
560       ac_cv_linux_func_i_lookup_takes_nameidata=no)])
561   AC_MSG_RESULT($ac_cv_linux_func_i_lookup_takes_nameidata)])
562
563
564 AC_DEFUN([LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA], [
565   AC_MSG_CHECKING([whether inode_operations.permission takes a nameidata])
566   AC_CACHE_VAL([ac_cv_linux_func_i_permission_takes_nameidata], [
567     AC_TRY_KBUILD(
568 [#include <linux/fs.h>
569 #include <linux/namei.h>],
570 [struct inode _inode;
571 struct dentry _dentry;
572 struct nameidata _nameidata;
573 (void)_inode.i_op->permission(&_inode, 0, &_nameidata);],
574       ac_cv_linux_func_i_permission_takes_nameidata=yes,
575       ac_cv_linux_func_i_permission_takes_nameidata=no)])
576   AC_MSG_RESULT($ac_cv_linux_func_i_permission_takes_nameidata)])
577
578
579 AC_DEFUN([LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA], [
580   AC_MSG_CHECKING([whether dentry_operations.d_revalidate takes a nameidata])
581   AC_CACHE_VAL([ac_cv_linux_func_d_revalidate_takes_nameidata], [
582     AC_TRY_KBUILD(
583 [#include <linux/fs.h>
584 #include <linux/namei.h>],
585 [struct dentry _dentry;
586 struct nameidata _nameidata;
587 (void)_dentry.d_op->d_revalidate(&_dentry, &_nameidata);],
588       ac_cv_linux_func_d_revalidate_takes_nameidata=yes,
589       ac_cv_linux_func_d_revalidate_takes_nameidata=no)])
590   AC_MSG_RESULT($ac_cv_linux_func_d_revalidate_takes_nameidata)])
591
592 AC_DEFUN([LINUX_GET_SB_HAS_STRUCT_VFSMOUNT], [
593   AC_MSG_CHECKING([for struct vfsmount * in get_sb_nodev()])
594   AC_CACHE_VAL([ac_cv_linux_get_sb_has_struct_vfsmount], [
595     AC_TRY_KBUILD(
596 [#include <linux/fs.h>],
597 [get_sb_nodev(0,0,0,0,0);],
598       ac_cv_linux_get_sb_has_struct_vfsmount=yes,
599       ac_cv_linux_get_sb_has_struct_vfsmount=no)])
600   AC_MSG_RESULT($ac_cv_linux_get_sb_has_struct_vfsmount)])
601
602 AC_DEFUN([LINUX_LINUX_KEYRING_SUPPORT], [
603   AC_MSG_CHECKING([for linux kernel keyring support])
604   AC_CACHE_VAL([ac_cv_linux_keyring_support], [
605     AC_TRY_KBUILD(
606 [#include <linux/rwsem.h>
607 #include <linux/key.h>
608 #include <linux/keyctl.h>
609 #include <asm/unistd.h>
610 static int errno;
611 static inline _syscall2(long, keyctl, int, option, void*, arg2);],
612 [#ifdef CONFIG_KEYS
613 keyctl(KEYCTL_JOIN_SESSION_KEYRING, NULL);
614 request_key(NULL, NULL, NULL);
615 #else
616 #error rebuild your kernel with CONFIG_KEYS
617 #endif],
618       ac_cv_linux_keyring_support=yes,
619       ac_cv_linux_keyring_support=no)])
620   AC_MSG_RESULT($ac_cv_linux_keyring_support)
621   if test "x$ac_cv_linux_keyring_support" = "xyes"; then
622     AC_DEFINE([LINUX_KEYRING_SUPPORT], 1, [define if your kernel has keyring support])
623   fi])
624
625 AC_DEFUN([LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK], [
626   AC_MSG_CHECKING([if key_alloc() takes a struct task *])
627   AC_CACHE_VAL([ac_cv_key_alloc_needs_struct_task], [
628     AC_TRY_KBUILD(
629 [#include <linux/rwsem.h>
630 #include <linux/key.h>
631 ],
632 [(void) key_alloc(NULL, NULL, 0, 0, NULL, 0, 0);],
633       ac_cv_key_alloc_needs_struct_task=yes,
634       ac_cv_key_alloc_needs_struct_task=no)])
635   AC_MSG_RESULT($ac_cv_key_alloc_needs_struct_task)
636   if test "x$ac_cv_key_alloc_needs_struct_task" = "xyes"; then
637     AC_DEFINE([KEY_ALLOC_NEEDS_STRUCT_TASK], 1, [define if key_alloc takes a struct task *])
638   fi])