ZERO_REGION(9)

NAME
zero_region - Read-only region prefilled with zeroes

SYNOPSIS
#include <sys/param.h>
#include <sys/systm.h>
#include <vm/vm_param.h>
extern const void *zero_region;

DESCRIPTION
The global variable zero_region points to a read-only region prefilled with zeroes. The size of the region is specified by the ZERO_REGION_SIZE macro.

IMPLEMENTATION NOTES
The region zero_region points to is mapped to the same page multiple times.

EXAMPLES

    /*
     * This function writes zeroes to the vnode at offset 0
     * with ZERO_REGION_SIZE length.
     */
    static int
    write_example(struct vnode *vp)
    {
    	struct thread *td;
    	struct iovec aiov;
    	struct uio auio;
    	int error;
    	td = curthread;
    	aiov.iov_base = __DECONST(void *, zero_region);
    	aiov.iov_len = ZERO_REGION_SIZE;
    	auio.uio_iov = &aiov;
    	auio.uio_iovcnt = 1;
    	auio.uio_offset = 0;
    	auio.uio_resid = ZERO_REGION_SIZE;
    	auio.uio_segflg = UIO_SYSSPACE;
    	auio.uio_rw = UIO_WRITE;
    	auio.uio_td = td;
    	error = VOP_WRITE(vp, &auio, 0, td->td_ucred);
    	return (error);
    }

SEE ALSO
pmap(9), vm_map(9)

AUTHORS
This manual page was written by Ka Ho Ng <khng@FreeBSDFoundation.org> under sponsorship from the FreeBSD Foundation.