1#ifndef _FSSH_NODE_MONITOR_H
2#define _FSSH_NODE_MONITOR_H
3/* Node monitor calls for kernel add-ons
4**
5** Distributed under the terms of the MIT License.
6*/
7
8
9#include "fssh_defs.h"
10
11
12/* Flags for the watch_node() call.
13 *
14 * Note that B_WATCH_MOUNT is NOT included in B_WATCH_ALL.
15 * You may prefer to use BVolumeRoster for volume watching.
16 */
17
18enum {
19    FSSH_B_STOP_WATCHING		= 0x0000,
20	FSSH_B_WATCH_NAME			= 0x0001,
21	FSSH_B_WATCH_STAT			= 0x0002,
22	FSSH_B_WATCH_ATTR			= 0x0004,
23	FSSH_B_WATCH_DIRECTORY		= 0x0008,
24	FSSH_B_WATCH_ALL			= 0x000f,
25
26	FSSH_B_WATCH_MOUNT			= 0x0010,
27	FSSH_B_WATCH_INTERIM_STAT	= 0x0020
28};
29
30
31/* The "opcode" field of the B_NODE_MONITOR notification message you get.
32 *
33 * The presence and meaning of the other fields in that message specifying what
34 * exactly caused the notification depend on this value.
35 */
36
37#define	FSSH_B_ENTRY_CREATED	1
38#define	FSSH_B_ENTRY_REMOVED	2
39#define	FSSH_B_ENTRY_MOVED		3
40#define	FSSH_B_STAT_CHANGED		4
41#define	FSSH_B_ATTR_CHANGED		5
42#define	FSSH_B_DEVICE_MOUNTED	6
43#define	FSSH_B_DEVICE_UNMOUNTED	7
44
45
46// More specific info in the "cause" field of B_ATTR_CHANGED notification
47// messages. (Haiku only)
48#define	FSSH_B_ATTR_CREATED		1
49#define	FSSH_B_ATTR_REMOVED		2
50//		FSSH_B_ATTR_CHANGED is reused
51
52
53// More specific info in the "fields" field of B_STAT_CHANGED notification
54// messages, specifying what parts of the stat data have actually been
55// changed. (Haiku only)
56enum {
57	FSSH_B_STAT_MODE				= 0x0001,
58	FSSH_B_STAT_UID					= 0x0002,
59	FSSH_B_STAT_GID					= 0x0004,
60	FSSH_B_STAT_SIZE				= 0x0008,
61	FSSH_B_STAT_ACCESS_TIME			= 0x0010,
62	FSSH_B_STAT_MODIFICATION_TIME	= 0x0020,
63	FSSH_B_STAT_CREATION_TIME		= 0x0040,
64	FSSH_B_STAT_CHANGE_TIME			= 0x0080,
65	FSSH_B_STAT_INTERIM_UPDATE		= 0x1000
66};
67
68
69#endif	/* _FSSH_NODE_MONITOR_H */
70