On Thursday 09 November 2006 09:23, Evgeniy Polyakov wrote: > poll/select() notifications. > > This patch includes generic poll/select notifications. > kevent_poll works simialr to epoll and has the same issues (callback > is invoked not from internal state machine of the caller, but through > process awake, a lot of allocations and so on). > > Signed-off-by: Evgeniy Polyakov <[EMAIL PROTECTED]> > > diff --git a/fs/file_table.c b/fs/file_table.c > index bc35a40..0805547 100644 > --- a/fs/file_table.c > +++ b/fs/file_table.c > @@ -20,6 +20,7 @@ #include <linux/capability.h> > #include <linux/cdev.h> > #include <linux/fsnotify.h> > #include <linux/sysctl.h> > +#include <linux/kevent.h> > #include <linux/percpu_counter.h> > > #include <asm/atomic.h> > @@ -119,6 +120,7 @@ struct file *get_empty_filp(void) > f->f_uid = tsk->fsuid; > f->f_gid = tsk->fsgid; > eventpoll_init_file(f); > + kevent_init_file(f); > /* f->f_version: 0 */ > return f; > > @@ -164,6 +166,7 @@ void fastcall __fput(struct file *file) > * in the file cleanup chain. > */ > eventpoll_release(file); > + kevent_cleanup_file(file); > locks_remove_flock(file); > > if (file->f_op && file->f_op->release) > diff --git a/fs/inode.c b/fs/inode.c > index ada7643..6745c00 100644 > --- a/fs/inode.c > +++ b/fs/inode.c > @@ -21,6 +21,7 @@ #include <linux/pagemap.h> > #include <linux/cdev.h> > #include <linux/bootmem.h> > #include <linux/inotify.h> > +#include <linux/kevent.h> > #include <linux/mount.h> > > /* > @@ -164,12 +165,18 @@ #endif > } > inode->i_private = 0; > inode->i_mapping = mapping;
Here you test both KEVENT_SOCKET and KEVENT_PIPE > +#if defined CONFIG_KEVENT_SOCKET || defined CONFIG_KEVENT_PIPE > + kevent_storage_init(inode, &inode->st); > +#endif > } > return inode; > } > > void destroy_inode(struct inode *inode) > { but here you test only KEVENT_SOCKET > +#if defined CONFIG_KEVENT_SOCKET > + kevent_storage_fini(&inode->st); > +#endif > BUG_ON(inode_has_buffers(inode)); > security_inode_free(inode); > if (inode->i_sb->s_op->destroy_inode) > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 5baf3a1..c529723 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -276,6 +276,7 @@ #include <linux/prio_tree.h> > #include <linux/init.h> > #include <linux/sched.h> > #include <linux/mutex.h> > +#include <linux/kevent_storage.h> > > #include <asm/atomic.h> > #include <asm/semaphore.h> > @@ -586,6 +587,10 @@ #ifdef CONFIG_INOTIFY > struct mutex inotify_mutex; /* protects the watches list */ > #endif > Here you include a kevent_storage only if KEVENT_SOCKET > +#ifdef CONFIG_KEVENT_SOCKET > + struct kevent_storage st; > +#endif > + > unsigned long i_state; > unsigned long dirtied_when; /* jiffies of first dirtying */ > > @@ -739,6 +744,9 @@ #ifdef CONFIG_EPOLL > struct list_head f_ep_links; > spinlock_t f_ep_lock; > #endif /* #ifdef CONFIG_EPOLL */ > +#ifdef CONFIG_KEVENT_POLL > + struct kevent_storage st; > +#endif > struct address_space *f_mapping; > }; > extern spinlock_t files_lock; - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html