Re: [take9 1/2] kevent: Core files.

From: Evgeniy Polyakov
Date: Mon Aug 21 2006 - 07:12:11 EST

On Mon, Aug 21, 2006 at 11:56:37AM +0100, Christoph Hellwig (hch@xxxxxxxxxxxxx) wrote:
> On Fri, Aug 18, 2006 at 03:23:36PM +0400, Evgeniy Polyakov wrote:
> > > defines make some sense for userspace-visible ABIs because then people
> > > can test for features with ifdef. It doesn't make any sense for constants
> > > that are used purely in-kernel. For those enums make more sense because
> > > you can for example looks at the symbolic names with a debugger.
> >
> > Enums are only usefull when value is increased with each new member by
> > one.
> No, they are not. Please search the lkml archives, this came up multiple
> times.

Enums when OR'ed and ANDed in theory can produce value out of the enum
And what is the difference between
#define A 1
#define B 2
#define C 4
enum {
A = 1,
B = 2,
C = 4,

> > There will be either several syscalls or multiplexer...
> > I prefer to have one syscall and a lot of multiplexers inside.
> To make life for everyone to detangle the mess hard. Please at least
> try to follow existing design principles.

I added as less as possible syscalls - control one read ones.
The former can initialize/add/remove/modify kevents, the latter reads
ready events.

> > > > I created a char device in first releases and was forced to not use it
> > > > at all.
> > >
> > > Do you have a reference to it? In this case a char devices makes a lot of
> > > sense because you get a filedescriptor and have operations only defined on
> > > it. In fact given that you have a multiplexer anyway there's really no
> > > point in adding a syscall for that aswell, you could rather use the existing
> > > and debugged ioctl() multiplexer. Sure, it's still not what we consider
> > > nice, but better than adding even more odd multiplexer syscalls.
> >
> > Somewhere in february.
> > Here is link to initial anounce which used ioctl and raw char device and
> > enums for all constants.
> >
> >
> That thread only shows your patch but no comments to it. Do you have
> an url for the complaint about this design? And please include the author
> of it in the cc list of your reply so we can settle the arguments.

enum vs. defines were changed after David Miller's suggestion, since the
whole network stack and epoll use defines extensively, and kevent was
built for them in a first time.

I do not remember who suggested not to use char device, but I saw that
inotify specially mention about ioct/syscall issues, old discussion
about event handling mechanism somewhere in this thread:

It looks a bit illogical to have epoll/poll syscalls and read data from
char device and it's ioctls for network sockets completeness or timer

Evgeniy Polyakov
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at