Hello, this is a proposal async I/O notification support for the inotify.
Dmitry --- .orig-2.6.20-rc4/fs/inotify_user.c 2007-01-12 08:27:10.000000000 +0300 +++ 2.6.20-rc4/fs/inotify_user.c 2007-01-12 09:53:12.000000000 +0300 @@ -72,6 +72,7 @@ */ struct inotify_device { wait_queue_head_t wq; /* wait queue for i/o */ + struct fasync_struct *fasync; /* async i/o notification */ struct mutex ev_mutex; /* protects event queue */ struct mutex up_mutex; /* synchronizes watch updates */ struct list_head events; /* list of queued events */ @@ -301,6 +302,7 @@ dev->queue_size += sizeof(struct inotify_event) + kevent->event.len; list_add_tail(&kevent->list, &dev->events); wake_up_interruptible(&dev->wq); + kill_fasync(&dev->fasync, SIGIO, POLL_IN); out: mutex_unlock(&dev->ev_mutex); @@ -485,6 +487,7 @@ { struct inotify_device *dev = file->private_data; + fasync_helper(-1, file, 0, &dev->fasync); inotify_destroy(dev->ih); /* destroy all of the events on this device */ @@ -518,12 +521,19 @@ return ret; } +static int inotify_fasync(int fd, struct file *file, int on) +{ + struct inotify_device *dev = file->private_data; + return fasync_helper(fd, file, on, &dev->fasync); +} + static const struct file_operations inotify_fops = { .poll = inotify_poll, .read = inotify_read, .release = inotify_release, .unlocked_ioctl = inotify_ioctl, .compat_ioctl = inotify_ioctl, + .fasync = inotify_fasync, }; static const struct inotify_operations inotify_user_ops = { - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/