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

FreeBSD Manual Pages

  
 
  

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

NAME
     getrandom -- get random data

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/random.h>

     ssize_t
     getrandom(void *buf, size_t buflen, unsigned int flags);

DESCRIPTION
     getrandom() fills buf with up to buflen bytes of random data.

     The flags argument may include zero or more of the following:

     `GRND_NONBLOCK'  Return EAGAIN instead of blocking, if the random(4) device
		      has  not	yet  been  seeded.  By default, getrandom() will
		      block until the device is seeded.

     `GRND_RANDOM'    This  flag  does	nothing  on  FreeBSD.	/dev/random  and
		      /dev/urandom are identical.

     `GRND_INSECURE'  This   flag   is	 treated  as  an  alternative  name  for
		      GRND_NONBLOCK.  It is provided solely for API  compatibil-
		      ity with Linux.

     If  the random(4) device has been seeded, reads of up to 256 bytes will al-
     ways return as many bytes as requested and will not be interrupted by  sig-
     nals.

RETURN VALUES
     Upon successful completion, the number of bytes which were actually read is
     returned.	For requests larger than 256 bytes, this can be fewer bytes than
     were requested.  Otherwise, -1 is returned and the global variable errno is
     set to indicate the error.

ERRORS
     The getrandom() operation returns the following errors:

     [EAGAIN]		The  `GRND_NONBLOCK'  (or  `GRND_INSECURE') flag was set
			and the random(4) device was not yet seeded.

     [EFAULT]		The buf parameter points to an invalid address.

     [EINTR]		The sleep was interrupted by a signal.

     [EINVAL]		An invalid flags was specified.

     [EINVAL]		The requested buflen was larger than IOSIZE_MAX.

SEE ALSO
     arc4random(3), getentropy(3), random(4)

STANDARDS
     getrandom() is non-standard.  It is present in Linux.

HISTORY
     The getrandom() system call first appeared in FreeBSD 12.0.

CAVEATS
     Unlike Linux, the GRND_INSECURE flag on FreeBSD does not produce any output
     before the random(4) device is seeded.

FreeBSD ports 15.quarterly	January 12, 2020		    GETRANDOM(2)

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

home | help