mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 18:11:00 +03:00
51a727e90f
Ricardo has pointed out that under Solaris the cwd is set to '/' during module load, while under Linux it is set to the callers cwd. To handle this cleanly I've reworked the module *_init()/_exit() macros so they call a *_setup()/_cleanup() function when any SPL dependent module is loaded or unloaded. This gives us a chance to perform any needed modification of the process, in this case changing the cwd. It also handily provides a way to avoid creating wrapper init()/exit() functions because the Solaris and Linux prototypes differ slightly. All dependent modules should now call the spl helper macros spl_module_{init,exit}() instead of the native linux versions. Unfortunately, it appears that under Linux there has been no consistent API in the kernel to set the cwd in a module. Because of this I have had to add more autoconf magic than I'd like. However, what I have done is correct and has been tested on RHEL5, SLES11, FC11, and CHAOS kernels. In addition, I have change the rootdir type from a 'void *' to the correct 'vnode_t *' type. And I've set rootdir to a non-NULL value.
247 lines
5.5 KiB
C
247 lines
5.5 KiB
C
/* spl_config.h.in. Generated from configure.ac by autoheader. */
|
|
|
|
/* Define to 1 to enable callb debugging */
|
|
#undef DEBUG_CALLB
|
|
|
|
/* Define to 1 to enable kmem debugging */
|
|
#undef DEBUG_KMEM
|
|
|
|
/* Define to 1 to enable kstat debugging */
|
|
#undef DEBUG_KSTAT
|
|
|
|
/* register_sysctl_table() wants 2 args */
|
|
#undef HAVE_2ARGS_REGISTER_SYSCTL
|
|
|
|
/* set_fs_pwd() wants 2 args */
|
|
#undef HAVE_2ARGS_SET_FS_PWD
|
|
|
|
/* vfs_unlink() wants 2 args */
|
|
#undef HAVE_2ARGS_VFS_UNLINK
|
|
|
|
/* INIT_WORK wants 3 args */
|
|
#undef HAVE_3ARGS_INIT_WORK
|
|
|
|
/* on_each_cpu wants 3 args */
|
|
#undef HAVE_3ARGS_ON_EACH_CPU
|
|
|
|
/* vfs_rename() wants 4 args */
|
|
#undef HAVE_4ARGS_VFS_RENAME
|
|
|
|
/* device_create wants 5 args */
|
|
#undef HAVE_5ARGS_DEVICE_CREATE
|
|
|
|
/* kernel defines atomic64_t */
|
|
#undef HAVE_ATOMIC64_T
|
|
|
|
/* class_device_create() is available */
|
|
#undef HAVE_CLASS_DEVICE_CREATE
|
|
|
|
/* struct cred exists */
|
|
#undef HAVE_CRED_STRUCT
|
|
|
|
/* unnumbered sysctl support exists */
|
|
#undef HAVE_CTL_UNNUMBERED
|
|
|
|
/* device_create() is available */
|
|
#undef HAVE_DEVICE_CREATE
|
|
|
|
/* div64_64() is available */
|
|
#undef HAVE_DIV64_64
|
|
|
|
/* div64_u64() is available */
|
|
#undef HAVE_DIV64_U64
|
|
|
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
#undef HAVE_DLFCN_H
|
|
|
|
/* linux/fdtable.h exists */
|
|
#undef HAVE_FDTABLE_HEADER
|
|
|
|
/* files_fdtable() is available */
|
|
#undef HAVE_FILES_FDTABLE
|
|
|
|
/* first_online_pgdat() is available */
|
|
#undef HAVE_FIRST_ONLINE_PGDAT
|
|
|
|
/* fls64() is available */
|
|
#undef HAVE_FLS64
|
|
|
|
/* get_vmalloc_info() is available */
|
|
#undef HAVE_GET_VMALLOC_INFO
|
|
|
|
/* get_zone_counts() is available */
|
|
#undef HAVE_GET_ZONE_COUNTS
|
|
|
|
/* global_page_state() is available */
|
|
#undef HAVE_GLOBAL_PAGE_STATE
|
|
|
|
/* groups_search() is available */
|
|
#undef HAVE_GROUPS_SEARCH
|
|
|
|
/* init_utsname() is available */
|
|
#undef HAVE_INIT_UTSNAME
|
|
|
|
/* struct inode has i_mutex */
|
|
#undef HAVE_INODE_I_MUTEX
|
|
|
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
#undef HAVE_INTTYPES_H
|
|
|
|
/* kallsyms_lookup_name() is available */
|
|
#undef HAVE_KALLSYMS_LOOKUP_NAME
|
|
|
|
/* kmalloc_node() is available */
|
|
#undef HAVE_KMALLOC_NODE
|
|
|
|
/* Define to 1 if you have the <memory.h> header file. */
|
|
#undef HAVE_MEMORY_H
|
|
|
|
/* monotonic_clock() is available */
|
|
#undef HAVE_MONOTONIC_CLOCK
|
|
|
|
/* mutex_lock_nested() is available */
|
|
#undef HAVE_MUTEX_LOCK_NESTED
|
|
|
|
/* struct mutex has owner */
|
|
#undef HAVE_MUTEX_OWNER
|
|
|
|
/* next_online_pgdat() is available */
|
|
#undef HAVE_NEXT_ONLINE_PGDAT
|
|
|
|
/* next_zone() is available */
|
|
#undef HAVE_NEXT_ZONE
|
|
|
|
/* struct path used in struct nameidata */
|
|
#undef HAVE_PATH_IN_NAMEIDATA
|
|
|
|
/* pgdat helpers are available */
|
|
#undef HAVE_PGDAT_HELPERS
|
|
|
|
/* pgdat_list is available */
|
|
#undef HAVE_PGDAT_LIST
|
|
|
|
/* __put_task_struct() is available */
|
|
#undef HAVE_PUT_TASK_STRUCT
|
|
|
|
/* set_fs_pwd() is available */
|
|
#undef HAVE_SET_FS_PWD
|
|
|
|
/* set_normalized_timespec() is available as export */
|
|
#undef HAVE_SET_NORMALIZED_TIMESPEC_EXPORT
|
|
|
|
/* set_normalized_timespec() is available as inline */
|
|
#undef HAVE_SET_NORMALIZED_TIMESPEC_INLINE
|
|
|
|
/* set_shrinker() available */
|
|
#undef HAVE_SET_SHRINKER
|
|
|
|
/* Define to 1 if you have the <stdint.h> header file. */
|
|
#undef HAVE_STDINT_H
|
|
|
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
#undef HAVE_STDLIB_H
|
|
|
|
/* Define to 1 if you have the <strings.h> header file. */
|
|
#undef HAVE_STRINGS_H
|
|
|
|
/* Define to 1 if you have the <string.h> header file. */
|
|
#undef HAVE_STRING_H
|
|
|
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
#undef HAVE_SYS_STAT_H
|
|
|
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
#undef HAVE_SYS_TYPES_H
|
|
|
|
/* task_curr() exported */
|
|
#undef HAVE_TASK_CURR
|
|
|
|
/* timespec_sub() is available */
|
|
#undef HAVE_TIMESPEC_SUB
|
|
|
|
/* linux/uaccess.h exists */
|
|
#undef HAVE_UACCESS_HEADER
|
|
|
|
/* kernel defines uintptr_t */
|
|
#undef HAVE_UINTPTR_T
|
|
|
|
/* Define to 1 if you have the <unistd.h> header file. */
|
|
#undef HAVE_UNISTD_H
|
|
|
|
/* Page state NR_ACTIVE is available */
|
|
#undef HAVE_ZONE_STAT_ITEM_NR_ACTIVE
|
|
|
|
/* Page state NR_ACTIVE_ANON is available */
|
|
#undef HAVE_ZONE_STAT_ITEM_NR_ACTIVE_ANON
|
|
|
|
/* Page state NR_ACTIVE_FILE is available */
|
|
#undef HAVE_ZONE_STAT_ITEM_NR_ACTIVE_FILE
|
|
|
|
/* Page state NR_FREE_PAGES is available */
|
|
#undef HAVE_ZONE_STAT_ITEM_NR_FREE_PAGES
|
|
|
|
/* Page state NR_INACTIVE is available */
|
|
#undef HAVE_ZONE_STAT_ITEM_NR_INACTIVE
|
|
|
|
/* Page state NR_INACTIVE_ANON is available */
|
|
#undef HAVE_ZONE_STAT_ITEM_NR_INACTIVE_ANON
|
|
|
|
/* Page state NR_INACTIVE_FILE is available */
|
|
#undef HAVE_ZONE_STAT_ITEM_NR_INACTIVE_FILE
|
|
|
|
/* get_zone_counts() is needed */
|
|
#undef NEED_GET_ZONE_COUNTS
|
|
|
|
/* Name of package */
|
|
#undef PACKAGE
|
|
|
|
/* Define to the address where bug reports for this package should be sent. */
|
|
#undef PACKAGE_BUGREPORT
|
|
|
|
/* Define to the full name of this package. */
|
|
#undef PACKAGE_NAME
|
|
|
|
/* Define to the full name and version of this package. */
|
|
#undef PACKAGE_STRING
|
|
|
|
/* Define to the one symbol short name of this package. */
|
|
#undef PACKAGE_TARNAME
|
|
|
|
/* Define to the version of this package. */
|
|
#undef PACKAGE_VERSION
|
|
|
|
/* Define the project alias string. */
|
|
#undef SPL_META_ALIAS
|
|
|
|
/* Define the project author. */
|
|
#undef SPL_META_AUTHOR
|
|
|
|
/* Define the project release date. */
|
|
#undef SPL_META_DATA
|
|
|
|
/* Define the libtool library 'age' version information. */
|
|
#undef SPL_META_LT_AGE
|
|
|
|
/* Define the libtool library 'current' version information. */
|
|
#undef SPL_META_LT_CURRENT
|
|
|
|
/* Define the libtool library 'revision' version information. */
|
|
#undef SPL_META_LT_REVISION
|
|
|
|
/* Define the project name. */
|
|
#undef SPL_META_NAME
|
|
|
|
/* Define the project release. */
|
|
#undef SPL_META_RELEASE
|
|
|
|
/* Define the project version. */
|
|
#undef SPL_META_VERSION
|
|
|
|
/* Define to 1 if you have the ANSI C header files. */
|
|
#undef STDC_HEADERS
|
|
|
|
/* Version number of package */
|
|
#undef VERSION
|
|
|
|
#include <spl_unconfig.h>
|