diff options
author | Brian Behlendorf <[email protected]> | 2014-10-01 15:02:12 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-10-17 14:58:57 -0700 |
commit | f0e324f25d5ada5da5f8930fc1789af6896c72b4 (patch) | |
tree | 33c81bcfd6c68a7844952f4ea356ed2bfe88d480 /include | |
parent | 050d22b06834876c3b0554647108f06a05b3ba96 (diff) |
Update utsname support
Modify the code to use the utsname() kernel function rather than
a global variable. This results is cleaner more portable code
because utsname() is already provided by the kernel and can be
easily emulated in user space via uname(2). This means that it
will behave consistently in both contexts.
This is also has the benefit that it allows the removal of a few
_KERNEL pre-processor conditions. And it also is a pre-requisite
for a proper FUSE port because we need to provide a valid utsname.
Finally, it allows us to remove this functionality from the SPL
and all the related compatibility code.
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #2757
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/Makefile.am | 3 | ||||
-rw-r--r-- | include/linux/utsname_compat.h | 29 | ||||
-rw-r--r-- | include/sys/zfs_context.h | 5 |
3 files changed, 36 insertions, 1 deletions
diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am index c2a749121..fc2df090e 100644 --- a/include/linux/Makefile.am +++ b/include/linux/Makefile.am @@ -4,7 +4,8 @@ KERNEL_H = \ $(top_srcdir)/include/linux/dcache_compat.h \ $(top_srcdir)/include/linux/xattr_compat.h \ $(top_srcdir)/include/linux/vfs_compat.h \ - $(top_srcdir)/include/linux/blkdev_compat.h + $(top_srcdir)/include/linux/blkdev_compat.h \ + $(top_srcdir)/include/linux/utsname_compat.h USER_H = diff --git a/include/linux/utsname_compat.h b/include/linux/utsname_compat.h new file mode 100644 index 000000000..88da45cf5 --- /dev/null +++ b/include/linux/utsname_compat.h @@ -0,0 +1,29 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ + +#ifndef _ZFS_UTSNAME_H +#define _ZFS_UTSNAME_H + +#include <linux/utsname.h> + +typedef struct new_utsname utsname_t; + +#endif /* _ZFS_UTSNAME_H */ diff --git a/include/sys/zfs_context.h b/include/sys/zfs_context.h index f26c827dc..ee8221d53 100644 --- a/include/sys/zfs_context.h +++ b/include/sys/zfs_context.h @@ -67,6 +67,7 @@ #include <sys/ctype.h> #include <sys/disp.h> #include <linux/dcache_compat.h> +#include <linux/utsname_compat.h> #else /* _KERNEL */ @@ -117,6 +118,7 @@ #include <sys/fm/fs/zfs.h> #include <sys/sunddi.h> #include <sys/debug.h> +#include <sys/utsname.h> /* * Stack @@ -673,6 +675,9 @@ extern int ddi_strtoul(const char *str, char **nptr, int base, extern int ddi_strtoull(const char *str, char **nptr, int base, u_longlong_t *result); +typedef struct utsname utsname_t; +extern utsname_t *utsname(void); + /* ZFS Boot Related stuff. */ struct _buf { |