Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
KENV(2)			      System Calls Manual		       KENV(2)

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	unset-
       ting 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		 Get  the  value  of the variable with the given name.
			 The size of the value buffer is given by  len,	 which
			 should	 be  at	 least KENV_MVALLEN + 1	bytes to avoid
			 truncation and	to ensure NUL termination.

       KENV_SET		 Set or	add a variable.	 The name and value  are  lim-
			 ited  to  KENV_MNAMELEN  and KENV_MVALLEN characters,
			 respectively (not including the NUL terminator.)  The
			 len  argument	indicates  the length of the value and
			 must include the NUL terminator.  This	option is only
			 available to the superuser.

       KENV_UNSET	 Unset the variable with the given  name.   The	 value
			 and  len  arguments are ignored.  This	option is only
			 available to the superuser.

       KENV_DUMP	 Dump as much of the  dynamic  kernel  environment  as
			 will  fit  in	value, whose size is given in len.  If
			 value is NULL,	kenv() will return the number of bytes
			 required to copy out  the  entire  environment.   The
			 name is ignored.

       KENV_DUMP_LOADER	 Dump  the  static  environment	provided by loader(8),
			 with semantics	identical to KENV_DUMP.	 Duplicate and
			 malformed variables originally	present	in this	 envi-
			 ronment  are discarded	by the kernel and will not ap-
			 pear in the output.

       KENV_DUMP_STATIC	 Dump the static environment  defined  by  the	kernel
			 config(5).	The   semantics	  are	identical   to
			 KENV_DUMP_LOADER.

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  re-
       turned 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_GET  or
			  KENV_UNSET.

       [ENOENT]		  The  requested  environment  is  not available for a
			  KENV_DUMP_LOADER or KENV_DUMP_STATIC.	 The kernel is
			  configured to	destroy	these environments by default.

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

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

       [ENAMETOOLONG]	  The name or the value	is longer  than	 KENV_MNAMELEN
			  or KENV_MVALLEN characters, respectively, or len did
			  not include the NUL terminator for a KENV_SET.

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>.

FreeBSD	13.2			 June 20, 2021			       KENV(2)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=kenv&sektion=2&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help