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 /lib/libzpool | |
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 'lib/libzpool')
-rw-r--r-- | lib/libzpool/kernel.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/libzpool/kernel.c b/lib/libzpool/kernel.c index 5adcfa617..995f61d05 100644 --- a/lib/libzpool/kernel.c +++ b/lib/libzpool/kernel.c @@ -47,10 +47,7 @@ int aok; uint64_t physmem; vnode_t *rootdir = (vnode_t *)0xabcd1234; char hw_serial[HW_HOSTID_LEN]; - -struct utsname utsname = { - "userland", "libzpool", "1", "1", "na" -}; +struct utsname hw_utsname; /* this only exists to have its address taken */ struct proc p0; @@ -1089,6 +1086,12 @@ ddi_strtoull(const char *str, char **nptr, int base, u_longlong_t *result) return (0); } +utsname_t * +utsname(void) +{ + return (&hw_utsname); +} + /* * ========================================================================= * kernel emulation setup & teardown @@ -1121,6 +1124,7 @@ kernel_init(int mode) VERIFY((random_fd = open("/dev/random", O_RDONLY)) != -1); VERIFY((urandom_fd = open("/dev/urandom", O_RDONLY)) != -1); + VERIFY0(uname(&hw_utsname)); thread_init(); system_taskq_init(); |