1*43afeee2SKa Ho Ng.\" SPDX-License-Identifier: BSD-2-Clause 2*43afeee2SKa Ho Ng.\" 3*43afeee2SKa Ho Ng.\" Copyright (c) 2021 The FreeBSD Foundation 4*43afeee2SKa Ho Ng.\" 5*43afeee2SKa Ho Ng.\" Redistribution and use in source and binary forms, with or without 6*43afeee2SKa Ho Ng.\" modification, are permitted provided that the following conditions 7*43afeee2SKa Ho Ng.\" are met: 8*43afeee2SKa Ho Ng.\" 1. Redistributions of source code must retain the above copyright 9*43afeee2SKa Ho Ng.\" notice, this list of conditions and the following disclaimer. 10*43afeee2SKa Ho Ng.\" 2. Redistributions in binary form must reproduce the above copyright 11*43afeee2SKa Ho Ng.\" notice, this list of conditions and the following disclaimer in the 12*43afeee2SKa Ho Ng.\" documentation and/or other materials provided with the distribution. 13*43afeee2SKa Ho Ng.\" 14*43afeee2SKa Ho Ng.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*43afeee2SKa Ho Ng.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*43afeee2SKa Ho Ng.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*43afeee2SKa Ho Ng.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*43afeee2SKa Ho Ng.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*43afeee2SKa Ho Ng.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*43afeee2SKa Ho Ng.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*43afeee2SKa Ho Ng.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*43afeee2SKa Ho Ng.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*43afeee2SKa Ho Ng.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*43afeee2SKa Ho Ng.\" SUCH DAMAGE. 25*43afeee2SKa Ho Ng.\" 26*43afeee2SKa Ho Ng.Dd March 2, 2021 27*43afeee2SKa Ho Ng.Dt ZERO_REGION 9 28*43afeee2SKa Ho Ng.Os 29*43afeee2SKa Ho Ng.Sh NAME 30*43afeee2SKa Ho Ng.Nm zero_region 31*43afeee2SKa Ho Ng.Nd Read-only region prefilled with zeroes 32*43afeee2SKa Ho Ng.Sh SYNOPSIS 33*43afeee2SKa Ho Ng.In sys/param.h 34*43afeee2SKa Ho Ng.In sys/systm.h 35*43afeee2SKa Ho Ng.In vm/vm_param.h 36*43afeee2SKa Ho Ng.Vt extern const void *zero_region ; 37*43afeee2SKa Ho Ng.Sh DESCRIPTION 38*43afeee2SKa Ho NgThe global variable 39*43afeee2SKa Ho Ng.Va zero_region 40*43afeee2SKa Ho Ngpoints to a read-only region prefilled with zeroes. 41*43afeee2SKa Ho NgThe size of the region is specified by the 42*43afeee2SKa Ho Ng.Dv ZERO_REGION_SIZE 43*43afeee2SKa Ho Ngmacro. 44*43afeee2SKa Ho Ng.Sh IMPLEMENTATION NOTES 45*43afeee2SKa Ho NgThe region 46*43afeee2SKa Ho Ng.Va zero_region 47*43afeee2SKa Ho Ngpoints to is mapped to the same page multiple times. 48*43afeee2SKa Ho Ng.Sh EXAMPLES 49*43afeee2SKa Ho Ng.Bd -literal 50*43afeee2SKa Ho Ng/* 51*43afeee2SKa Ho Ng * This function writes zeroes to the vnode at offset 0 52*43afeee2SKa Ho Ng * with ZERO_REGION_SIZE length. 53*43afeee2SKa Ho Ng */ 54*43afeee2SKa Ho Ngstatic int 55*43afeee2SKa Ho Ngwrite_example(struct vnode *vp) 56*43afeee2SKa Ho Ng{ 57*43afeee2SKa Ho Ng struct thread *td; 58*43afeee2SKa Ho Ng struct iovec aiov; 59*43afeee2SKa Ho Ng struct uio auio; 60*43afeee2SKa Ho Ng int error; 61*43afeee2SKa Ho Ng 62*43afeee2SKa Ho Ng td = curthread; 63*43afeee2SKa Ho Ng 64*43afeee2SKa Ho Ng aiov.iov_base = __DECONST(void *, zero_region); 65*43afeee2SKa Ho Ng aiov.iov_len = ZERO_REGION_SIZE; 66*43afeee2SKa Ho Ng auio.uio_iov = &aiov; 67*43afeee2SKa Ho Ng auio.uio_iovcnt = 1; 68*43afeee2SKa Ho Ng auio.uio_offset = 0; 69*43afeee2SKa Ho Ng auio.uio_resid = ZERO_REGION_SIZE; 70*43afeee2SKa Ho Ng auio.uio_segflg = UIO_SYSSPACE; 71*43afeee2SKa Ho Ng auio.uio_rw = UIO_WRITE; 72*43afeee2SKa Ho Ng auio.uio_td = td; 73*43afeee2SKa Ho Ng 74*43afeee2SKa Ho Ng error = VOP_WRITE(vp, &auio, 0, td->td_ucred); 75*43afeee2SKa Ho Ng return (error); 76*43afeee2SKa Ho Ng} 77*43afeee2SKa Ho Ng.Ed 78*43afeee2SKa Ho Ng.Sh SEE ALSO 79*43afeee2SKa Ho Ng.Xr pmap 9 , 80*43afeee2SKa Ho Ng.Xr vm_map 9 81*43afeee2SKa Ho Ng.Sh AUTHORS 82*43afeee2SKa Ho NgThis manual page was written by 83*43afeee2SKa Ho Ng.An Ka Ho Ng Aq Mt khng@FreeBSDFoundation.org 84*43afeee2SKa Ho Ngunder sponsorship from the FreeBSD Foundation. 85