Manpages

名 前

fanotify_mark − フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト へ の fanotify マ ー ク の 追 加 、 削 除 、 変 更

書 式

#include <sys/fanotify.h>

int fanotify_mark(int fanotify_fd, unsigned int flags,
uint64_t
mask, int dirfd, const char *pathname);

説 明

fanotify API の 概 要 に つ い て は fanotify(7) を 参 照 。

fanotify_mark(2) は フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト に 対 す る fanotify マ ー ク の 追 加 、 削 除 、 変 更 を 行 う 。 呼 び 出 し 元 は マ ー ク を 付 け る フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト に 対 す る 読 み 出 し 許 可 を 持 っ て い な け れ ば な ら な い 。

fanotify_fd 引 き 数 は fanotify_init(2) で 返 さ れ た フ ァ イ ル デ ィ ス ク リ プ タ ー で あ る 。

flags は 実 行 す る 操 作 内 容 を 示 す ビ ッ ト マ ス ク で あ る 。 以 下 の 値 の い ず れ か 一 つ だ け を 指 定 し な け れ ば な ら な い 。
FAN_MARK_ADD

mask の イ ベ ン ト を mark マ ス ク (も し く は ignore マ ス ク ) に 追 加 す る 。 mask は 空 で あ っ て は い け な い 。 空 の 場 合 は エ ラ ー EINVAL が 発 生 す る 。

FAN_MARK_REMOVE 引 き 数 mask の イ ベ ン ト を mark マ ス ク (も し く は ignore マ ス ク ) か ら 削 除 す る 。 mask は 空 で あ っ て は い け な い 。 空 の 場 合 は エ ラ ー EINVALが 発 生 す る 。
FAN_MARK_FLUSH

fanotify グ ル ー プ か ら 全 て の マ ウ ン ト mark か 全 て の マ ウ ン ト 以 外 の mark を 削 除 す る 。 flagFAN_MARK_MOUNT が 含 ま れ る 場 合 、 マ ウ ン ト に 対 す る 全 て の mark が そ の グ ル ー プ か ら 削 除 さ れ る 。 含 ま れ な い 場 合 は 、 デ ィ レ ク ト リ と フ ァ イ ル に 対 す る 全 て の mark が 削 除 さ れ る 。 FAN_MARK_MOUNT 以 外 の フ ラ グ を FAN_MARK_FLUSH と 組 み 合 わ せ て 使 う こ と は で き な い 。 mask は 無 視 さ れ る 。 上 記 の ど の 値 も 指 定 さ れ な か っ た 場 合 、 ま た は 2 つ 以 上 の 値 が 指 定 さ れ た 場 合 、 呼 び 出 し は エ ラ ー EINVAL で 失 敗 す る 。 こ れ に 加 え て 、 flags に 以 下 の 値 を 0 個 以 上 ビ ッ ト 単 位 の 論 理 和 (OR) で 指 定 で き る 。

FAN_MARK_DONT_FOLLOW

pathname が シ ン ボ リ ッ ク リ ン ク の 場 合 、 リ ン ク が 参 照 す る フ ァ イ ル で は な く 、 リ ン ク 自 身 に マ ー ク を 付 け る (デ フ ォ ル ト で は fanotify_mark() は pathname が シ ン ボ リ ッ ク リ ン ク の 場 合 シ ン ボ リ ッ ク リ ン ク の 展 開 を 行 う )。

FAN_MARK_ONLYDIR マ ー ク が 付 け ら れ た フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト が デ ィ レ ク ト リ で な い 場 合 、 エ ラ ー ENOTDIR が 発 生 す る 。
FAN_MARK_MOUNT

pathname で 指 定 さ れ た マ ウ ン ト ポ イ ン ト に マ ー ク を 付 け る 。 pathname が マ ウ ン ト ポ イ ン ト 自 身 で は な い 場 合 、 pathname を 含 む マ ウ ン ト ポ イ ン ト が マ ー ク さ れ る 。 マ ウ ン ト ポ イ ン ト に 含 ま れ る 全 て の デ ィ レ ク ト リ 、 サ ブ デ ィ レ ク ト リ 、 そ の 中 の フ ァ イ ル が 監 視 さ れ る 。

FAN_MARK_IGNORED_MASK

mask の イ ベ ン ト の ignore マ ス ク へ の 追 加 、 も し く は 削 除 を 行 う 。

FAN_MARK_IGNORED_SURV_MODIFY

ignore マ ス ク は 変 更 イ ベ ン ト が 発 生 し て も 残 り 続 け る 。 こ の フ ラ グ が セ ッ ト さ れ て い な い 場 合 、 無 視 す る フ ァ イ ル や デ ィ レ ク ト リ に 対 し て 変 更 イ ベ ン ト が 発 生 し た 際 に ignore マ ス ク は ク リ ア さ れ る 。

mask は ど の イ ベ ン ト に 対 し て 通 知 を 受 け る か (も し く は ど の イ ベ ン ト を 無 視 す る か ) を 定 義 す る 。 以 下 の 値 か ら 構 成 さ れ る ビ ッ ト マ ス ク で あ る 。
FAN_ACCESS
フ ァ イ ル や デ ィ レ ク ト リ へ の ア ク セ ス (読 み 出 し ) が あ っ た 際 に イ ベ ン ト を 作 成 す る (「 バ グ 」 も 参 照 )。
FAN_MODIFY
フ ァ イ ル が 変 更 さ れ た (書 き 込 み ) 際 に イ ベ ン ト を 作 成 す る 。
FAN_CLOSE_WRITE
書 き 込 み 可 能 フ ァ イ ル が ク ロ ー ズ さ れ た 際 に イ ベ ン ト を 作 成 す る 。
FAN_CLOSE_NOWRITE
読 み 出 し 専 用 の フ ァ イ ル や デ ィ レ ク ト リ が ク ロ ー ズ さ れ た 際 に イ ベ ン ト を 作 成 す る 。
FAN_OPEN
フ ァ イ ル や デ ィ レ ク ト リ が オ ー プ ン さ れ た 際 に イ ベ ン ト を 作 成 す る 。
FAN_OPEN_PERM
フ ァ イ ル や デ ィ レ ク ト リ を オ ー プ ン す る ア ク セ ス 許 可 が 要 求 さ れ た 際 に イ ベ ン ト を 作 成 す る 。 fanotify フ ァ イ ル デ ィ ス ク リ プ タ ー が FAN_CLASS_PRE_CONTENTFAN_CLASS_CONTENT を 指 定 さ れ て 作 成 さ れ て い る 必 要 が あ る 。
FAN_ACCESS_PERM
フ ァ イ ル や デ ィ レ ク ト リ を 読 み 出 す ア ク セ ス 許 可 が 要 求 さ れ た 際 に イ ベ ン ト を 作 成 す る 。 fanotify フ ァ イ ル デ ィ ス ク リ プ タ ー が FAN_CLASS_PRE_CONTENTFAN_CLASS_CONTENT を 指 定 さ れ て 作 成 さ れ て い る 必 要 が あ る 。
FAN_ONDIR
デ ィ レ ク ト リ に 対 す る イ ベ ン ト を 作 成 す る 。 例 え ば opendir(3)readdir(3) (た だ し 「 バ グ 」 も 参 照 )、 closedir(3) が 呼 び 出 さ れ た 場 合 。 こ の フ ラ グ が 指 定 さ れ な か っ た 場 合 、 フ ァ イ ル に 対 す る イ ベ ン ト だ け が 作 成 さ れ る 。
FAN_EVENT_ON_CHILD
マ ー ク さ れ た デ ィ レ ク ト リ の 直 下 の エ ン ト リ ー に 対 し て イ ベ ン ト を 作 成 す る 。 こ の フ ラ グ は マ ウ ン ト に マ ー ク を 付 け る 際 に は 効 果 は な い 。 マ ー ク さ れ た デ ィ レ ク ト リ の サ ブ デ ィ レ ク ト リ の エ ン ト リ ー に 対 し て は イ ベ ン ト が 作 成 さ れ な い 点 に 注 意 す る こ と 。 デ ィ レ ク ト リ ツ リ ー 全 体 を 監 視 す る に は 、 関 連 す る マ ウ ン ト に マ ー ク を 付 け る 必 要 が あ る 。 以 下 の 組 み 合 わ せ 値 が 定 義 さ れ て い る 。
FAN_CLOSE
フ ァ イ ル が ク ロ ー ズ さ れ た (FAN_CLOSE_WRITE|FAN_CLOSE_NOWRITE)。 マ ー ク を 付 け る フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト は 、 フ ァ イ ル デ ィ ス ク リ プ タ ー dirfdpathname で 指 定 さ れ た パ ス 名 か ら 決 定 さ れ る 。

*

pathname が NULL の 場 合 、 dirfd で マ ー ク を 付 け る フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト が 定 義 さ れ る 。

*

pathname が NULL で 、 dirfd が 特 別 な 値 AT_FDCWD の 場 合 、 カ レ ン ト ワ ー キ ン グ デ ィ レ ク ト リ が マ ー ク さ れ る 。

*

pathname が 絶 対 パ ス の 場 合 、 そ の パ ス 名 に よ り マ ー ク を 付 け る フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト が 定 義 さ れ 、 dirfd は 無 視 さ れ る 。

*

pathname が 相 対 パ ス で 、 dirfdAT_FDCWD で な い 場 合 、 マ ー ク を 付 け る フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト は dirfd が 参 照 す る デ ィ レ ク ト リ に 対 す る 相 対 パ ス pathname を 解 釈 し て 決 定 さ れ る 。

*

pathname が 相 対 パ ス で 、 dirfdAT_FDCWD の 場 合 、 マ ー ク を 付 け る フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト は カ レ ン ト ワ ー キ ン グ デ ィ レ ク ト リ に 対 す る 相 対 パ ス pathname を 解 釈 し て 決 定 さ れ る 。

返 り 値

成 功 す る と fanotify_mark() は 0 を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に エ ラ ー の 原 因 を 示 す 値 を 設 定 す る 。

エ ラ ー

EBADF 無 効 な フ ァ イ ル デ ィ ス ク リ プ タ ー が

fanotify_fd で 渡 さ れ た 。

EINVAL 無 効 な 値 が

flagsmask に 指 定 さ れ た か 、 fanotify_fd が fanotify フ ァ イ ル デ ィ ス ク リ プ タ ー で な か っ た 。

EINVAL

fanotify フ ァ イ ル デ ィ ス ク リ プ タ ー が FAN_CLASS_NOTIF で オ ー プ ン さ れ た が 、 ア ク セ ス 許 可 イ ベ ン ト (FAN_OPEN_PERMFAN_ACCESS_PERM) の フ ラ グ が マ ス ク に 含 ま れ て い る 。

ENOENT

dirfdpathname で 指 定 さ れ た フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト が 存 在 し な い 。 こ の エ ラ ー は マ ー ク さ れ て い な い オ ブ ジ ェ ク ト か ら マ ー ク を 削 除 し よ う と し た 場 合 に も 発 生 す る 。

ENOMEM

必 要 な メ モ リ ー を 割 り 当 て で き な か っ た 。

ENOSPC マ ー ク の 数 が

8192 の 上 限 を 超 過 し 、 fanotify_init(2) で fanotify

フ ァ イ ル デ ィ ス ク リ プ タ ー が 作 成 さ れ た 際 に FAN_UNLIMITED_MARKS フ ラ グ が 指 定 さ れ て い な か っ た 。

ENOSYS こ の カ ー ネ ル で は

fanotify_mark() が 実 装 さ れ て い な い 。 fanotify

API が 利 用 で き る の は 、 カ ー ネ ル で CONFIG_FANOTIFY が 有 効 に な っ て い る 場 合 だ け で あ る 。

ENOTDIR

flagsFAN_MARK_ONLYDIR が 含 ま れ て い る が 、 dirfdpathname が デ ィ レ ク ト リ を 指 定 し て い な い 。

バ ー ジ ョ ン

fanotify_mark() は Linux カ ー ネ ル の バ ー ジ ョ ン 2.6.36 で 導 入 さ れ 、 バ ー ジ ョ ン 2.6.37 で 有 効 に な っ た 。

準 拠

こ の シ ス テ ム コ ー ル は Linux 独 自 で あ る 。

バ グ

バ ー ジ ョ ン 3.16 よ り 前 の Linux カ ー ネ ル で は 以 下 の バ グ が 存 在 し た 。

*

flagsFAN_MARK_FLUSH が 指 定 さ れ て い る 場 合 、 た と え そ の オ ブ ジ ェ ク ト が 使 用 さ れ な い 場 合 で あ っ て も 、 dirfdpathname に は 有 効 な フ ァ イ ル シ ス テ ム オ ブ ジ ェ ク ト を 指 定 し な け れ ば な ら な い 。

*

readdir(2)FAN_ACCESS イ ベ ン ト を 生 成 し な い 。

*

fanotify_mark(2)FAN_MARK_FLUSH 付 き で 呼 び 出 さ れ た 場 合 、 flags の 値 が 無 効 か は チ ェ ッ ク さ れ な い 。

関 連 項 目

fanotify_init(2), fanotify(7)

こ の 文 書 に つ い て

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