Man page - msync(2)

Packages contains this manual

Available languages:

en fr ja ru ro de

Manual

MSYNC

名 前
書 式
説 明
返 り 値
エ ラ ー
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

msync - フ ァ イ ル を マ ッ プ し た メ モ リ ー と 同 期 さ せ る

書 式

#include <sys/mman.h>

int msync(void * addr , size_t length , int flags );

説 明

msync () は mmap (2) を 使 っ て メ モ リ ー に マ ッ プ さ れ た フ ァ イ ル の 、 メ モ リ ー 上 の コ ピ ー に な さ れ た 変 更 を フ ァ イ ル シ ス テ ム に 反 映 さ せ る 。 こ の 関 数 を 使 用 し な い と 、 munmap (2) が 呼 び 出 さ れ る ま で 変 更 が 書 き 戻 さ れ る 保 証 は な い 。 よ り 正 確 に は 、 フ ァ イ ル の う ち addr か ら 始 ま り 長 さ length の メ モ リ ー 領 域 に 対 応 す る 部 分 が 更 新 さ れ る 。

The flags argument should specify exactly one of MS_ASYNC and MS_SYNC , and may additionally include the MS_INVALIDATE bit. These bits have the following meanings:
MS_ASYNC

Specifies that an update be scheduled, but the call returns immediately.

MS_SYNC

Requests an update and waits for it to complete.

MS_INVALIDATE

Asks to invalidate other mappings of the same file (so that they can be updated with the fresh values just written).

返 り 値

成 功 し た 場 合 、 0 が 返 る 。 エ ラ ー の 場 合 、 -1 が 返 り 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

EBUSY

I flags に MS_INVALIDATE が 指 定 さ れ た が 、 指 定 さ れ た ア ド レ ス 範 囲 に ロ ッ ク が 存 在 す る 。

EINVAL

addr が PAGESIZE の 倍 数 で な い 。 ま た は 、 flags MS_ASYNC MS_INVALIDATE MS_SYNC 以 外 の ビ ッ ト が 設 定 さ れ た 。 ま た は 、 flags MS_SYNC MS_ASYNC の 両 方 が 設 定 さ れ た 。

ENOMEM

指 定 さ れ た メ モ リ ー (ま た は そ の 一 部 ) が マ ッ プ さ れ て い な い 。

準 拠

POSIX.1-2001, POSIX.1-2008.

こ の 関 数 は Linux 1.3.21 で 導 入 さ れ た が 、 ENOMEM で は な く EFAULT が 使 わ れ て い た 。 こ れ は Linux 2.4.19 で POSIX に お け る 値 ENOMEM に 変 更 さ れ た 。

msync () が 使 用 可 能 な POSIX シ ス テ ム で は _POSIX_MAPPED_FILES _POSIX_SYNCHRONIZED_IO の 両 方 が <unistd.h> で 0 よ り 大 き い 値 に 定 義 さ れ る 。 ( sysconf (3) を 参 照 す る こ と 。 )

注 意

POSIX で は MS_SYNC MS_ASYNC の い ず れ か は 必 ず flags に 指 定 し な け れ ば な ら な い と さ れ て お り 、 実 際 に こ れ ら の フ ラ グ の い ず れ か を 指 定 し な か っ た 場 合 msync () が 失 敗 す る シ ス テ ム も あ る 。 し か し 、 Linux で は こ れ ら の フ ラ グ の い ず れ も 指 定 せ ず に msync () を 呼 び 出 す こ と が で き 、 そ の 場 合 の 動 作 は (現 在 の と こ ろ ) MS_ASYNC を 指 定 し た 場 合 と 等 価 で あ る 。 (Linux 2.6.19 以 降 で は MS_ASYNC は 実 際 に は no-op (何 も し な い 命 令 ) で あ る 。 こ れ は カ ー ネ ル が 正 し く dirty ペ ー ジ を 追 跡 し 、 必 要 に 応 じ て ス ト レ ー ジ に そ れ ら を フ ラ ッ シ ュ す る か ら で あ る 。 ) Linux の 動 作 に 関 係 な く 、 ア プ リ ケ ー シ ョ ン の 移 植 性 を 考 慮 し 、 将 来 も 確 実 に 動 く よ う に す る に は 、 MS_SYNC MS_ASYNC の い ず れ か を 必 ず flags に 指 定 す る よ う に す べ き で あ る 。

関 連 項 目

mmap (2)

B.O. Gallmeister, POSIX.4, O’Reilly, pp. 128–129 and 389–391.

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。