xref: /freebsd/share/man/man9/zero_region.9 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
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