#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
Fa 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
Er ENOENT .
Only the number of bytes available in
Fa 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
Fa name .
If the variable does not exist, -1 is returned and
the global variable
errno
is set to
Er EINVAL .
This option is only available to the superuser.
KENV_DUMP
Dumps as much of the kernel environment as will fit in
Fa value .
If
Fa value
is
NULL
kenv ();
will return the number of bytes required to copy out the entire environment.
The
Fa name
argument is the name of the environment variable to be affected.
In the case of
KENV_DUMP
it is ignored.
The
Fa value
argument contains either the value to set the environment variable
Fa 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
Fa value
is
NULL
in the case of
KENV_DUMP
kenv ();
will return the number of bytes required to copy out the entire environment.
The
Fa len
argument indicates how many bytes of storage
Fa 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
Fa 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:
Bq Er EINVAL
The
Fa action
argument
is not a valid option, or the length of the
Fa value
is less than 1 for a
KENV_SET
Bq Er ENOENT
no value could be found for
Fa name
for a
KENV_SET
or
KENV_UNSET
Bq Er EPERM
a user other than the superuser attempted to set or unset a kernel
environment variable.
Bq Er EFAULT
bad address was encountered while attempting to copy in user arguments,
or copy out value(s).
Bq Er 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