Use linux __KERNEL__ define
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 10 Sep 2010 16:36:39 +0000 (09:36 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 10 Sep 2010 16:36:39 +0000 (09:36 -0700)
Previously the project contained who zfs_context.h files,
one for user space builds and one for kernel space builds.
It was the responsibility of the source including the file
to ensure the right one was included based on the order of
the include paths.

This was the way it was done in OpenSolaris but for our
purposes I felt it was overly obscure.  The user and kernel
zfs_context.h files have been combined in to a single file
and a #define determines if you get the user or kernel
context.

The issue here was that I used the _KERNEL macro which is
defined as part of the spl which will only be defined for
most builds after you include the right zfs_context.  It is
safer to use the __KERNEL__ macro which is automatically
defined as part of the kernel build process and passed as
a command line compiler option.  It will always be defined
if your building in the kernel and never for user space.

include/sys/zfs_context.h

index 115bf97..c449903 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef _SYS_ZFS_CONTEXT_H
 #define        _SYS_ZFS_CONTEXT_H
 
-#ifdef _KERNEL
+#ifdef __KERNEL__
 
 #include <sys/note.h>
 #include <sys/types.h>