msync サブルーチン

目的

メモリーを物理ストレージと同期します。

ライブラリー

標準 C ライブラリー (libc.a)。

構文

#include <sys/types.h>
#include <sys/mman.h>
int msync ( addr len flags)
void *addr;
size_t len;
int flags;

説明

msync サブルーチンは、マップ・ファイルまたは共用メモリー領域のキャッシング操作を制御します。 msync サブルーチンを使用して、領域内の変更されたページを基礎となるファイル・ストレージ・デバイスに転送します。

アプリケーションがSingle UNIX仕様バージョン2に準拠した動作を要求している場合、ファイルが変更されていれば、msyncサブルーチン呼び出しの正常終了時に、マップされたファイルの最終データ変更タイムスタンプと最終ファイル状態変更タイムスタンプが更新のためにマークされる。

パラメーター

項目 説明
addr 同期化する領域のアドレスを指定します。 sysconf サブルーチンが Name パラメーターに _SC_PAGE_SIZE 値を使用して戻したページ・サイズの倍数でなければなりません。
len 同期化する領域の長さをバイト単位で指定します。 len パラメーターが、 Name パラメーターの _SC_PAGE_SIZE 値を使用して sysconf サブルーチンによって戻されるページ・サイズの倍数でない場合、 領域の長さは、ページ・サイズの次の倍数に切り上げられます。
flags キャッシング操作の実行方法を決定する、以下のシンボリック定数を 1 つ以上指定します。
MS_SYNC
同期キャッシュ・フラッシュを指定します。 msync サブルーチンは、システムがすべての入出力操作を完了するまで戻りません。

このフラグは、 MAP_PRIVATE フラグが mmap サブルーチンと一緒に使用された場合は無効です。 MAP_PRIVATE は、デフォルトのプライバシー設定です。 MS_SYNC フラグと MAP_PRIVATE フラグの両方が使用されている場合、 msync サブルーチンは EINVALerrno 値を戻します。

MS_ASYNC
非同期キャッシュ・フラッシュを指定します。 msync サブルーチンは、システムがすべての入出力操作をスケジュールした後で戻ります。

このフラグは、 MAP_PRIVATE フラグが mmap サブルーチンと一緒に使用された場合は無効です。 MAP_PRIVATE は、デフォルトのプライバシー設定です。 MS_SYNC フラグと MAP_PRIVATE フラグの両方が使用されている場合、 msync サブルーチンは EINVALerrno 値を戻します。

MS_INVALIDATE
msync サブルーチンがページのキャッシュ・コピーをすべて無効にすることを指定します。 ページの新しいコピーは、次に参照されるときにファイル・システムから取得する必要があります。

戻り値

正常に実行された場合、 msync サブルーチンは 0 を戻します。 そうでない場合は-1を返し、エラーを示すグローバル変数errnoをセットする。

エラー・コード

msync サブルーチンが失敗すると、 errno グローバル変数は次のいずれかの値に設定されます。

項目 説明
EBUSY msync サブルーチンに渡された範囲内の 1 つ以上のページが固定されています。
EIO ファイル・システムの読み取り中または書き込み中に、入出力エラーが発生しました。
ENOMEM (addr, addr + len) で指定された範囲が、プロセスのアドレス・スペースに対して無効であるか、範囲が 1 つ以上のマップされていないページを指定しています。
EINVAL addr 引数は、 Name パラメーターの _SC_PAGE_SIZE 値を使用して sysconf サブルーチンが戻すページ・サイズの倍数ではありません。 または flags パラメーターが無効です。 領域のアドレスは、プロセスの継承可能なアドレス・スペース内にあります。