Re: RFC: A revised timerfd API

From: Michael Kerrisk
Date: Tue Sep 18 2007 - 07:08:56 EST


Hi Thomas,

> Von: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> On Tue, 2007-09-18 at 11:30 +0200, Michael Kerrisk wrote:
> > > This way we have it nicely integrated into the posix timer code and keep
> > > the existing semantics of posix timers intact.
> > >
> > > We need to think about the open file descriptor in the timer_delete()
> > > case as well, but this should be not too hard to sort out.
> >
> > This seems like a workable idea also. But note David Härdeman's
> > critique of options c & d: the existence of a coupled timerfd
> > and a timerid means that the application must maintain a mapping
> > between the two, so that after an epoll call (for example) that
> > says the timerfd is ready, the timer can be manipulated using
> > the corresponding timerfd. This isn't IMO a fatal flaw, but
^^^^^^^
hmmm, of course I meant "timerid" in that last line.

> > it does make the API a little more clumsy.
>
> Hmm, we might do something like:
>
> timer_gettime(fd | POSIX_TIMER_FD, .....);
>
> So the kernel looks up the fd in order to figure out the timer_id, which
> needs to be referenced in filep->private_data anyway.

And you'd need similar for timer_settime() and, perhaps,
timer_getoverrun(). But it seems slightly ugly, in the same way that
my idea in option (d) of returning a file descriptor from
timer_create() seems a slightly ugly. (And can we guarantee that
the [timerid] space is distinct from the [fd|POSIX_TIMER_FD] space?)

Cheers,

Michael
--
Michael Kerrisk
maintainer of Linux man pages Sections 2, 3, 4, 5, and 7

Want to help with man page maintenance?
Grab the latest tarball at
http://www.kernel.org/pub/linux/docs/manpages ,
read the HOWTOHELP file and grep the source
files for 'FIXME'.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/