mirror_zfs/spl_config.h.in
Brian Behlendorf 51a727e90f Set cwd to '/' for the process executing insmod.
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.
2009-10-01 16:06:15 -07:00

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>