Provided by: freebsd-manpages_7.0-2_all bug

NAME

     kenv - kernel environment

LIBRARY

     Standard C Library (libc, -lc)

SYNOPSIS

     #include <kenv.h>

     int
     kenv(int action, const char *name, char *value, int len);

DESCRIPTION

     The kenv() system call manipulates kernel environment variables.  It
     supports the well known userland actions of getting, setting and
     unsetting environment variables, as well as the ability to dump all of
     the entries in the kernel environment.

     The action argument can be one of the following:

     KENV_GET    Returns the value associated with the named kernel
                 environment variable.  If the variable is not found, -1 is
                 returned and the global variable errno is set to ENOENT.
                 Only the number of bytes available in value are copied out.

     KENV_SET    Sets or adds a new kernel environment variable.  This option
                 is only available to the superuser.

     KENV_UNSET  Unsets the kernel environment variable name.  If the variable
                 does not exist, -1 is returned and the global variable errno
                 is set to EINVAL.  This option is only available to the
                 superuser.

     KENV_DUMP   Dumps as much of the kernel environment as will fit in value.
                 If value is NULL, kenv() will return the number of bytes
                 required to copy out the entire environment.

     The name argument is the name of the environment variable to be affected.
     In the case of KENV_DUMP it is ignored.

     The value argument contains either the value to set the environment
     variable name to in the case of KENV_SET, or it points to the location
     where kenv() should copy return data to in the case of KENV_DUMP and
     KENV_GET.  If value is NULL in the case of KENV_DUMP, kenv() will return
     the number of bytes required to copy out the entire environment.

     The len argument indicates how many bytes of storage value points to.

RETURN VALUES

     The kenv() system call returns 0 if successful in the case of KENV_SET
     and KENV_UNSET, and the number of bytes copied into value in the case of
     KENV_DUMP and KENV_GET.  If an error occurs, a value of -1 is returned
     and the global variable errno is set to indicate the error.

ERRORS

     The kenv() system call will fail if:

     [EINVAL]           The action argument is not a valid option, or the
                        length of the value is less than 1 for a KENV_SET.

     [ENOENT]           no value could be found for name for a KENV_SET or
                        KENV_UNSET.

     [EPERM]            a user other than the superuser attempted to set or
                        unset a kernel environment variable.

     [EFAULT]           bad address was encountered while attempting to copy
                        in user arguments, or copy out value(s).

     [ENAMETOOLONG]     the name of a variable supplied by the user is longer
                        than KENV_MNAMELEN or the value of a variable is
                        longer than KENV_MVALLEN.

SEE ALSO

     kenv(1)

AUTHORS

     This manual page was written by Chad David 〈davidc@FreeBSD.org〉.

     The kenv() system call was written by Maxime Henrion 〈mux@FreeBSD.org〉.