9103 opengroup acknowledgement should be properly formatted in man pages
[unleashed.git] / usr / src / man / man3c / msync.3c
blob05524a07a3d6dfe51735eef6097c547b875a6546
1 .\"
2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
3 .\" permission to reproduce portions of its copyrighted documentation.
4 .\" Original documentation from The Open Group can be obtained online at
5 .\" http://www.opengroup.org/bookstore/.
6 .\"
7 .\" The Institute of Electrical and Electronics Engineers and The Open
8 .\" Group, have given us permission to reprint portions of their
9 .\" documentation.
10 .\"
11 .\" In the following statement, the phrase ``this text'' refers to portions
12 .\" of the system documentation.
13 .\"
14 .\" Portions of this text are reprinted and reproduced in electronic form
15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
16 .\" Standard for Information Technology -- Portable Operating System
17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6,
18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
19 .\" Engineers, Inc and The Open Group.  In the event of any discrepancy
20 .\" between these versions and the original IEEE and The Open Group
21 .\" Standard, the original IEEE and The Open Group Standard is the referee
22 .\" document.  The original Standard can be obtained online at
23 .\" http://www.opengroup.org/unix/online.html.
24 .\"
25 .\" This notice shall appear on any product containing this material.
26 .\"
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
30 .\"
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
35 .\"
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
41 .\"
42 .\"
43 .\" Copyright 1989 AT&T
44 .\" Portions Copyright (c) 1992, X/Open Company Limited  All Rights Reserved
45 .\" Copyright (c) 2002, Sun Microsystems, Inc.  All Rights Reserved.
46 .\"
47 .TH MSYNC 3C "Jul 24, 2002"
48 .SH NAME
49 msync \- synchronize memory with physical storage
50 .SH SYNOPSIS
51 .LP
52 .nf
53 #include <sys/mman.h>
55 \fBint\fR \fBmsync\fR(\fBvoid *\fR\fIaddr\fR, \fBsize_t\fR \fIlen\fR, \fBint\fR \fIflags\fR);
56 .fi
58 .SH DESCRIPTION
59 .sp
60 .LP
61 The  \fBmsync()\fR function writes all modified copies of pages over the range
62 [\fIaddr, addr + len\fR) to the underlying hardware, or invalidates any copies
63 so that further references to the pages will be obtained by the system from
64 their permanent storage locations. The permanent storage for a modified
65 \fBMAP_SHARED\fR mapping is the file the page is mapped to; the permanent
66 storage for a modified \fBMAP_PRIVATE\fR mapping is its swap area.
67 .sp
68 .LP
69 The \fIflags\fR argument is a bit pattern built from the following values:
70 .sp
71 .ne 2
72 .na
73 \fBMS_ASYNC\fR
74 .ad
75 .RS 17n
76 perform asynchronous writes
77 .RE
79 .sp
80 .ne 2
81 .na
82 \fBMS_SYNC\fR
83 .ad
84 .RS 17n
85 perform synchronous writes
86 .RE
88 .sp
89 .ne 2
90 .na
91 \fBMS_INVALIDATE\fR
92 .ad
93 .RS 17n
94 invalidate mappings
95 .RE
97 .sp
98 .LP
99 If \fIflags\fR is \fBMS_ASYNC\fR or \fBMS_SYNC\fR, the function synchronizes
100 the file contents to match the current contents of the memory region.
101 .RS +4
103 .ie t \(bu
104 .el o
105 All write references to the memory region made prior to the call are visible by
106 subsequent read operations on the file.
108 .RS +4
110 .ie t \(bu
111 .el o
112 All writes to the same portion of the file prior to the call may or may not be
113 visible by read references to the memory region.
115 .RS +4
117 .ie t \(bu
118 .el o
119 Unmodified pages in the specified range are not written to the underlying
120 hardware.
124 If \fIflags\fR is \fBMS_ASYNC\fR, the function may return immediately once all
125 write operations are scheduled; if \fIflags\fR is \fBMS_SYNC\fR, the function
126 does not return until all write operations are completed.
129 If \fIflags\fR is \fBMS_INVALIDATE\fR, the function synchronizes the contents
130 of the memory region to match the current file contents.
131 .RS +4
133 .ie t \(bu
134 .el o
135 All writes to the mapped portion of the file made prior to the call are visible
136 by subsequent read references to the mapped memory region.
138 .RS +4
140 .ie t \(bu
141 .el o
142 All write references prior to the call, by any process, to memory regions
143 mapped to the same portion of the file using \fBMAP_SHARED\fR, are visible by
144 read references to the region.
148 If \fBmsync()\fR causes any write to the file, then the file's \fBst_ctime\fR
149 and \fBst_mtime\fR fields are marked for update.
150 .SH RETURN VALUES
153 Upon successful completion, \fBmsync()\fR returns \fB0\fR; otherwise, it
154 returns \fB\(mi1\fR and sets \fBerrno\fR to indicate the error.
155 .SH ERRORS
158 The \fBmsync()\fR function will fail if:
160 .ne 2
162 \fB\fBEBUSY\fR\fR
164 .RS 10n
165 Some or all of the addresses in the range [\fIaddr\fR, \fIaddr\fR + \fIlen\fR)
166 are locked and \fBMS_SYNC\fR with the \fBMS_INVALIDATE\fR option is specified.
170 .ne 2
172 \fB\fBEAGAIN\fR\fR
174 .RS 10n
175 Some or all pages in the range [\fIaddr\fR,  \fIaddr\fR +  \fIlen\fR) are
176 locked for I/O.
180 .ne 2
182 \fB\fBEINVAL\fR\fR
184 .RS 10n
185 The \fIaddr\fR argument is not a multiple of the  page size as returned by
186 \fBsysconf\fR(3C).
188 The \fIflags\fR argument is not some combination of \fBMS_ASYNC\fR and
189 \fBMS_INVALIDATE\fR.
193 .ne 2
195 \fB\fBEIO\fR\fR
197 .RS 10n
198 An I/O error occurred while reading from or writing to the file system.
202 .ne 2
204 \fB\fBENOMEM\fR\fR
206 .RS 10n
207 Addresses in the range [\fIaddr, addr + len\fR) are outside the valid range for
208 the address space of a process, or specify one or more pages that are not
209 mapped.
213 .ne 2
215 \fB\fBEPERM\fR\fR
217 .RS 10n
218 \fBMS_INVALIDATE\fR was specified and one or more of the pages is locked in
219 memory.
222 .SH USAGE
225 The \fBmsync()\fR function should be used by programs that require a memory
226 object to be in a known state, for example in building transaction facilities.
229 Normal system activity can cause pages to be written to disk.  Therefore, there
230 are no guarantees that \fBmsync()\fR is the only control over when pages are or
231 are not written to disk.
232 .SH ATTRIBUTES
235 See \fBattributes\fR(5) for descriptions of the following attributes:
240 box;
241 c | c
242 l | l .
243 ATTRIBUTE TYPE  ATTRIBUTE VALUE
245 Interface Stability     Standard
247 MT-Level        MT-Safe
250 .SH SEE ALSO
253 \fBmemcntl\fR(2), \fBmmap\fR(2), \fBsysconf\fR(3C), \fBattributes\fR(5),
254 \fBstandards\fR(5)