11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _LINUX_DNOTIFY_H
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _LINUX_DNOTIFY_H
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Directory notification for Linux
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2000,2002 Stephen Rothwell
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/fs.h>
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dnotify_struct {
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct dnotify_struct *	dn_next;
133c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris	__u32			dn_mask;
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int			dn_fd;
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct file *		dn_filp;
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	fl_owner_t		dn_owner;
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_DNOTIFY
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
243c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris#define DNOTIFY_ALL_EVENTS (FS_DELETE | FS_DELETE_CHILD |\
253c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris			    FS_MODIFY | FS_MODIFY_CHILD |\
263c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris			    FS_ACCESS | FS_ACCESS_CHILD |\
273c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris			    FS_ATTRIB | FS_ATTRIB_CHILD |\
283c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris			    FS_CREATE | FS_DN_RENAME |\
293c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris			    FS_MOVED_FROM | FS_MOVED_TO)
303c5119c05d624f95f4967d16b38c9624b816bdb9Eric Paris
316e006701ccc1590500186ef21e074bd900c5dd67Alexey Dobriyanextern int dir_notify_enable;
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void dnotify_flush(struct file *, fl_owner_t);
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int fcntl_dirnotify(int, struct file *, unsigned long);
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void dnotify_flush(struct file *filp, fl_owner_t id)
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg)
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	return -EINVAL;
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* CONFIG_DNOTIFY */
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __KERNEL __ */
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _LINUX_DNOTIFY_H */
51