]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/fanotify_init.2
epoll_create.2: ERRORS: add another EMFILE error case
[thirdparty/man-pages.git] / man2 / fanotify_init.2
CommitLineData
3e6ebb33
HS
1.\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
2.\"
3.\" %%%LICENSE_START(VERBATIM)
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
9.\" this manual under the conditions for verbatim copying, provided that
10.\" the entire resulting derived work is distributed under the terms of
11.\" a permission notice identical to this one.
12.\"
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.
15.\" no responsibility for errors or omissions, or for damages resulting.
16.\" from the use of the information contained herein. The author(s) may.
17.\" not have taken the same level of care in the production of this.
18.\" manual, which is licensed free of charge, as they might when working.
19.\" professionally.
20.\"
21.\" Formatted or processed versions of this manual, if unaccompanied by
22.\" the source, must acknowledge the copyright and authors of this work.
23.\" %%%LICENSE_END
bc65e772 24.TH FANOTIFY_INIT 2 2014-10-02 "Linux" "Linux Programmer's Manual"
3e6ebb33
HS
25.SH NAME
26fanotify_init \- create and initialize fanotify group
27.SH SYNOPSIS
28.B #include <fcntl.h>
29.br
30.B #include <sys/fanotify.h>
31.sp
32.BI "int fanotify_init(unsigned int " flags ", unsigned int " event_f_flags );
33.SH DESCRIPTION
34For an overview of the fanotify API, see
35.BR fanotify (7).
36.PP
37.BR fanotify_init ()
38initializes a new fanotify group and returns a file descriptor for the event
39queue associated with the group.
40.PP
41The file descriptor is used in calls to
42.BR fanotify_mark (2)
1b24e2ee
MK
43to specify the files, directories, and mounts for which fanotify events
44shall be created.
3e6ebb33
HS
45These events are received by reading from the file descriptor.
46Some events are only informative, indicating that a file has been accessed.
72b14a93
MK
47Other events can be used to determine whether
48another application is permitted to access a file or directory.
3e6ebb33
HS
49Permission to access filesystem objects is granted by writing to the file
50descriptor.
51.PP
52Multiple programs may be using the fanotify interface at the same time to
53monitor the same files.
54.PP
55In the current implementation, the number of fanotify groups per user is
56limited to 128.
57This limit cannot be overridden.
58.PP
59Calling
60.BR fanotify_init ()
61requires the
62.B CAP_SYS_ADMIN
63capability.
64This constraint might be relaxed in future versions of the API.
f1282fd0 65Therefore, certain additional capability checks have been implemented as
3e6ebb33
HS
66indicated below.
67.PP
68The
69.I flags
70argument contains a multi-bit field defining the notification class of the
1b24e2ee
MK
71listening application and further single bit fields specifying the behavior
72of the file descriptor.
3e6ebb33 73.PP
1b24e2ee
MK
74If multiple listeners for permission events exist,
75the notification class is used to establish the sequence
76in which the listeners receive the events.
3e6ebb33 77.PP
d58f4190
MK
78Only one of the following notification classes may be specified in
79.IR flags :
3e6ebb33
HS
80.TP
81.B FAN_CLASS_PRE_CONTENT
82This value allows the receipt of events notifying that a file has been
83accessed and events for permission decisions if a file may be accessed.
84It is intended for event listeners that need to access files before they
85contain their final data.
1b24e2ee
MK
86This notification class might be used by hierarchical storage managers,
87for example.
3e6ebb33
HS
88.TP
89.B FAN_CLASS_CONTENT
90This value allows the receipt of events notifying that a file has been
91accessed and events for permission decisions if a file may be accessed.
1b24e2ee
MK
92It is intended for event listeners that need to access files when they
93already contain their final content.
3e6ebb33
HS
94This notification class might be used by malware detection programs, for
95example.
96.TP
97.B FAN_CLASS_NOTIF
98This is the default value.
99It does not need to be specified.
100This value only allows the receipt of events notifying that a file has been
101accessed.
102Permission decisions before the file is accessed are not possible.
103.PP
104Listeners with different notification classes will receive events in the
cd505a8a 105order
3e6ebb33
HS
106.BR FAN_CLASS_PRE_CONTENT ,
107.BR FAN_CLASS_CONTENT ,
108.BR FAN_CLASS_NOTIF .
8d605e55
MK
109The order of notification for listeners in the same notification class
110is undefined.
3e6ebb33 111.PP
8d605e55 112The following bits can additionally be set in
3e6ebb33
HS
113.IR flags :
114.TP
115.B FAN_CLOEXEC
8d605e55 116Set the close-on-exec flag
3e6ebb33
HS
117.RB ( FD_CLOEXEC )
118on the new file descriptor.
119See the description of the
120.B O_CLOEXEC
121flag in
122.BR open (2).
123.TP
124.B FAN_NONBLOCK
8d605e55 125Enable the nonblocking flag
3e6ebb33
HS
126.RB ( O_NONBLOCK )
127for the file descriptor.
128Reading from the file descriptor will not block.
f199b308 129Instead, if no data is available,
3e6ebb33 130.BR read (2)
f199b308
MK
131will fail with the error
132.BR EAGAIN .
3e6ebb33
HS
133.TP
134.B FAN_UNLIMITED_QUEUE
8d605e55
MK
135Remove the limit of 16384 events for the event queue.
136Use of this flag requires the
3e6ebb33
HS
137.B CAP_SYS_ADMIN
138capability.
139.TP
140.B FAN_UNLIMITED_MARKS
8d605e55
MK
141Remove the limit of 8192 marks.
142Use of this flag requires the
3e6ebb33
HS
143.B CAP_SYS_ADMIN
144capability.
145.PP
8d605e55 146The
3e6ebb33 147.I event_f_flags
8d605e55
MK
148argument
149defines the file status flags that will be set on the open file descriptions
150that are created for fanotify events.
151For details of these flags, see the description of the
3e6ebb33 152.I flags
8d605e55
MK
153values in
154.BR open (2).
1caffed4 155.I event_f_flags
be5c465e 156includes a multi-bit field for the access mode.
1caffed4 157This field can take the following values:
3e6ebb33
HS
158.TP
159.B O_RDONLY
160This value allows only read access.
161.TP
162.B O_WRONLY
163This value allows only write access.
164.TP
165.B O_RDWR
166This value allows read and write access.
1caffed4
HS
167.PP
168Additional bits can be set in
169.IR event_f_flags .
170The most useful values are:
3e6ebb33
HS
171.TP
172.B O_LARGEFILE
8d605e55 173Enable support for files exceeding 2 GB.
3e6ebb33
HS
174Failing to set this flag will result in an
175.B EOVERFLOW
1b24e2ee
MK
176error when trying to open a large file which is monitored by
177an fanotify group on a 32-bit system.
1caffed4
HS
178.TP
179.B O_CLOEXEC
180Enable the close-on-exec flag for the file descriptor.
be5c465e
MK
181See the description of the
182.B O_CLOEXEC
183flag in
184.BR open (2)
185for reasons why this may be useful.
1caffed4
HS
186.PP
187The following are also allowable:
188.BR O_APPEND ,
189.BR O_DSYNC ,
190.BR O_NOATIME ,
191.BR O_NONBLOCK ,
192and
193.BR O_SYNC .
be5c465e
MK
194Specifying any other flag in
195.I event_f_flags
196yields the error
1caffed4
HS
197.B EINVAL
198(but see BUGS).
3e6ebb33
HS
199.SH RETURN VALUE
200On success,
201.BR fanotify_init ()
202returns a new file descriptor.
ddfa9db7 203On error, \-1 is returned, and
3e6ebb33
HS
204.I errno
205is set to indicate the error.
206.SH ERRORS
207.TP
208.B EINVAL
209An invalid value was passed in
1caffed4
HS
210.I flags
211or
212.IR event_f_flags .
3e6ebb33 213.B FAN_ALL_INIT_FLAGS
1caffed4
HS
214defines all allowable bits for
215.IR flags .
3e6ebb33
HS
216.TP
217.B EMFILE
8d605e55 218The number of fanotify groups for this user exceeds 128.
3e6ebb33
HS
219.TP
220.B ENOMEM
221The allocation of memory for the notification group failed.
222.TP
a8972eed
HS
223.B ENOSYS
224This kernel does not implement
225.BR fanotify_init ().
8d605e55
MK
226The fanotify API is available only if the kernel was configured with
227.BR CONFIG_FANOTIFY .
a8972eed 228.TP
3e6ebb33
HS
229.B EPERM
230The operation is not permitted because the caller lacks the
231.B CAP_SYS_ADMIN
232capability.
233.SH VERSIONS
234.BR fanotify_init ()
235was introduced in version 2.6.36 of the Linux kernel and enabled in version
2362.6.37.
d282bb24 237.SH CONFORMING TO
3e6ebb33 238This system call is Linux-specific.
6448be7e 239.SH BUGS
0d69c093
HS
240As of Linux 3.17,
241the following bug exists:
242.IP * 3
243.\" FIXME . Patch proposed: https://lkml.org/lkml/2014/9/24/967
51d266b7 244The
0d69c093 245.B O_CLOEXEC
51d266b7
MK
246is ignored when passed in
247.IR event_f_flags .
0d69c093 248.PP
f479e19c 249The following bug was present in Linux kernels before version 3.14:
6448be7e 250.IP * 3
f479e19c 251.\" Fixed by commit 48149e9d3a7e924010a0daab30a6197b7d7b6580
20abed53 252The
6448be7e 253.I event_f_flags
491bc783 254argument is not checked for invalid flags.
20abed53
MK
255Flags that are intended only for internal use,
256such as
6448be7e 257.BR FMODE_EXEC ,
20abed53
MK
258can be set, and will consequently be set for the file descriptors
259returned when reading from the fanotify file descriptor.
d282bb24 260.SH SEE ALSO
3e6ebb33
HS
261.BR fanotify_mark (2),
262.BR fanotify (7)