]>
Commit | Line | Data |
---|---|---|
fea681da MK |
1 | .\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl) |
2 | .\" | |
93015253 | 3 | .\" %%%LICENSE_START(VERBATIM) |
fea681da MK |
4 | .\" Permission is granted to make and distribute verbatim copies of this |
5 | .\" manual provided the copyright notice and this permission notice are | |
6 | .\" preserved on all copies. | |
7 | .\" | |
8 | .\" Permission is granted to copy and distribute modified versions of this | |
9 | .\" manual under the conditions for verbatim copying, provided that the | |
10 | .\" entire resulting derived work is distributed under the terms of a | |
11 | .\" permission notice identical to this one. | |
c13182ef | 12 | .\" |
fea681da MK |
13 | .\" Since the Linux kernel and libraries are constantly changing, this |
14 | .\" manual page may be incorrect or out-of-date. The author(s) assume no | |
15 | .\" responsibility for errors or omissions, or for damages resulting from | |
16 | .\" the use of the information contained herein. The author(s) may not | |
17 | .\" have taken the same level of care in the production of this manual, | |
18 | .\" which is licensed free of charge, as they might when working | |
19 | .\" professionally. | |
c13182ef | 20 | .\" |
fea681da MK |
21 | .\" Formatted or processed versions of this manual, if unaccompanied by |
22 | .\" the source, must acknowledge the copyright and authors of this work. | |
4b72fb64 | 23 | .\" %%%LICENSE_END |
fea681da | 24 | .\" |
67d2c687 | 25 | .TH MSYNC 2 2015-05-07 "Linux" "Linux Programmer's Manual" |
fea681da MK |
26 | .SH NAME |
27 | msync \- synchronize a file with a memory map | |
28 | .SH SYNOPSIS | |
29 | .B #include <sys/mman.h> | |
30 | .sp | |
14f5ae6d | 31 | .BI "int msync(void *" addr ", size_t " length ", int " flags ); |
fea681da | 32 | .SH DESCRIPTION |
e511ffb6 | 33 | .BR msync () |
fea681da MK |
34 | flushes changes made to the in-core copy of a file that was mapped |
35 | into memory using | |
36 | .BR mmap (2) | |
840324c0 | 37 | back to the filesystem. |
44a48411 | 38 | Without use of this call, |
fea681da MK |
39 | there is no guarantee that changes are written back before |
40 | .BR munmap (2) | |
c13182ef MK |
41 | is called. |
42 | To be more precise, the part of the file that | |
fea681da | 43 | corresponds to the memory area starting at |
14f5ae6d | 44 | .I addr |
fea681da MK |
45 | and having length |
46 | .I length | |
c13182ef | 47 | is updated. |
9f339d4e MK |
48 | |
49 | The | |
fea681da | 50 | .I flags |
31f0e8c8 MK |
51 | argument should specify exactly one of |
52 | .BR MS_ASYNC | |
c13182ef | 53 | and |
31f0e8c8 MK |
54 | .BR MS_SYNC , |
55 | and may additionally include the | |
9f339d4e | 56 | .B MS_INVALIDATE |
31f0e8c8 MK |
57 | bit. |
58 | These bits have the following meanings: | |
59 | .TP | |
c13182ef | 60 | .B MS_ASYNC |
31f0e8c8 MK |
61 | Specifies that an update be scheduled, but the call returns immediately. |
62 | .TP | |
c13182ef | 63 | .B MS_SYNC |
31f0e8c8 MK |
64 | Requests an update and waits for it to complete. |
65 | .TP | |
c13182ef | 66 | .B MS_INVALIDATE |
31f0e8c8 MK |
67 | .\" Since Linux 2.4, this seems to be a no-op (other than the |
68 | .\" EBUSY check for VM_LOCKED). | |
69 | Asks to invalidate other mappings of the same file | |
fea681da | 70 | (so that they can be updated with the fresh values just written). |
47297adb | 71 | .SH RETURN VALUE |
c13182ef MK |
72 | On success, zero is returned. |
73 | On error, \-1 is returned, and | |
fea681da MK |
74 | .I errno |
75 | is set appropriately. | |
76 | .SH ERRORS | |
77 | .TP | |
0daa9e92 | 78 | .B EBUSY |
2f0af33b MK |
79 | .B MS_INVALIDATE |
80 | was specified in | |
c13182ef | 81 | .IR flags , |
9f339d4e MK |
82 | and a memory lock exists for the specified address range. |
83 | .TP | |
0daa9e92 | 84 | .B EINVAL |
14f5ae6d | 85 | .I addr |
24bd9a49 | 86 | is not a multiple of PAGESIZE; or any bit other than |
682edefb MK |
87 | .BR MS_ASYNC " | " MS_INVALIDATE " | " MS_SYNC |
88 | is set in | |
24bd9a49 | 89 | .IR flags ; |
c13182ef | 90 | or both |
682edefb MK |
91 | .B MS_SYNC |
92 | and | |
93 | .B MS_ASYNC | |
94 | are set in | |
a5e0a0e4 | 95 | .IR flags . |
fea681da MK |
96 | .TP |
97 | .B ENOMEM | |
98 | The indicated memory (or part of it) was not mapped. | |
47297adb | 99 | .SH CONFORMING TO |
c27fa8cc | 100 | POSIX.1-2001, POSIX.1-2008. |
2b2581ee | 101 | |
682edefb MK |
102 | This call was introduced in Linux 1.3.21, and then used |
103 | .B EFAULT | |
104 | instead of | |
105 | .BR ENOMEM . | |
82e683e6 | 106 | In Linux 2.4.19, this was changed to the POSIX value |
682edefb | 107 | .BR ENOMEM . |
fea681da MK |
108 | .SH AVAILABILITY |
109 | On POSIX systems on which | |
e511ffb6 | 110 | .BR msync () |
fea681da MK |
111 | is available, both |
112 | .B _POSIX_MAPPED_FILES | |
113 | and | |
114 | .B _POSIX_SYNCHRONIZED_IO | |
509e2056 MK |
115 | are defined in |
116 | .I <unistd.h> | |
117 | to a value greater than 0. | |
405f0560 | 118 | (See also |
fea681da | 119 | .BR sysconf (3).) |
97c1eac8 | 120 | .\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L. |
fea681da MK |
121 | .\" -1: unavailable, 0: ask using sysconf(). |
122 | .\" glibc defines them to 1. | |
433e3408 | 123 | .SH NOTES |
b60d9859 | 124 | According to POSIX, either |
433e3408 | 125 | .BR MS_SYNC |
b60d9859 | 126 | or |
433e3408 | 127 | .BR MS_ASYNC |
fe8b1358 | 128 | must be specified in |
b1c5c4ec MK |
129 | .IR flags , |
130 | and indeed failure to include one of these flags will cause | |
131 | .BR msync () | |
132 | to fail on some systems. | |
433e3408 MK |
133 | However, Linux permits a call to |
134 | .BR msync () | |
135 | that specifies neither of these flags, | |
136 | with semantics that are (currently) equivalent to specifying | |
137 | .BR MS_ASYNC . | |
138 | (Since Linux 2.6.19, | |
139 | .\" commit 204ec841fbea3e5138168edbc3a76d46747cc987 | |
140 | .BR MS_ASYNC | |
141 | is in fact a no-op, since the kernel properly tracks dirty | |
142 | pages and flushes them to storage as necessary.) | |
143 | Notwithstanding the Linux behavior, | |
b1c5c4ec | 144 | portable, future-proof applications should ensure that they specify either |
433e3408 | 145 | .BR MS_SYNC |
b60d9859 | 146 | or |
433e3408 MK |
147 | .BR MS_ASYNC |
148 | in | |
149 | .IR flags . | |
47297adb | 150 | .SH SEE ALSO |
fea681da | 151 | .BR mmap (2) |
173fe7e7 | 152 | |
fea681da | 153 | B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391. |