kqueue: SIGIO?

2015-09-29 Thread Thomas Klausner
Hi!

During the XDC last week, Keith Packard talked about a select(2) issue
in xserver he would like to fix with epoll and its support for SIGIO.
Is there a similar feature in kqueue in NetBSD?

 Thomas


Re: kqueue: SIGIO?

2015-09-29 Thread Tobias Nygren
On Tue, 29 Sep 2015 12:56:36 +0200
Joerg Sonnenberger  wrote:

> On Tue, Sep 29, 2015 at 11:31:20AM +0200, Thomas Klausner wrote:

> > During the XDC last week, Keith Packard talked about a select(2) issue
> > in xserver he would like to fix with epoll and its support for SIGIO.
> > Is there a similar feature in kqueue in NetBSD?
> 
> It would be easier to answer that question if we know what issue he was
> actually talking about.

>From my (limited) understanding it is about preventing starvation of
other X clients when one client is hammering the server with requests.

When they are processing events for one client in a tight loop they
don't want to periodically check if other clients are ready for I/O,
but would instead like to get notified via a signal.

Here is the relevant bit of the talk if you are curious:

https://www.youtube.com/watch?v=t400SmZlnO8=youtu.be=1888


Re: kqueue: SIGIO?

2015-09-29 Thread Joerg Sonnenberger
On Tue, Sep 29, 2015 at 11:31:20AM +0200, Thomas Klausner wrote:
> Hi!
> 
> During the XDC last week, Keith Packard talked about a select(2) issue
> in xserver he would like to fix with epoll and its support for SIGIO.
> Is there a similar feature in kqueue in NetBSD?

It would be easier to answer that question if we know what issue he was
actually talking about.

Joerg


Re: kqueue: SIGIO?

2015-09-29 Thread Joerg Sonnenberger
On Tue, Sep 29, 2015 at 10:09:51PM +0200, Rhialto wrote:
> On Tue 29 Sep 2015 at 13:22:08 +0200, Tobias Nygren wrote:
> > Here is the relevant bit of the talk if you are curious:
> > 
> > https://www.youtube.com/watch?v=t400SmZlnO8=youtu.be=1888
> 
> So he wants a signal when a message is available in a kqueue, in other
> words, can be read with kevent(2).

Why oh why. I thought the X server finally got rid of the
overcomplicated signal handlers. If there is any kind of load going on,
the signal sending is more costly than occassional querying the kqueue
for (other active) entries. If there is no load, it doesn't make a
difference.

Joerg


daily CVS update output

2015-09-29 Thread NetBSD source update

Updating src tree:
P src/distrib/sets/lists/comp/shl.mi
P src/distrib/sets/lists/debug/md.amd64
P src/distrib/sets/lists/debug/md.sparc64
P src/doc/3RDPARTY
P src/doc/CHANGES
P src/external/bsd/elftoolchain/dist/common/_elftc.h
P src/external/bsd/elftoolchain/dist/libelf/_libelf_config.h
P src/external/bsd/elftoolchain/dist/libelf/libelf.h
cvs update: `src/external/bsd/libdwarf/Makefile' is no longer in the repository
cvs update: `src/external/bsd/libdwarf/Makefile.inc' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/prepare-import.sh' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/Makefile' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/_libdwarf.h' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf.h' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_abbrev.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_attr.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_attrval.c' is no longer in 
the repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_cu.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_dealloc.c' is no longer in 
the repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_die.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_dump.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_errmsg.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_errno.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_finish.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_form.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_func.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_init.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/dwarf_loc.c' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/dist/libdwarf.h' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/lib/Makefile' is no longer in the 
repository
cvs update: `src/external/bsd/libdwarf/lib/shlib_version' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/Makefile' is no longer in the repository
cvs update: `src/external/bsd/libelf/Makefile.inc' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/prepare-import.sh' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/Makefile' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/README' is no longer in the repository
cvs update: `src/external/bsd/libelf/dist/Version.map' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/_libelf.h' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf.3' is no longer in the repository
cvs update: `src/external/bsd/libelf/dist/elf_begin.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_begin.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_cntl.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_cntl.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_data.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_end.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_end.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_errmsg.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_errmsg.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_errno.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_fill.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_fill.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_flag.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_flagdata.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getarhdr.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getarhdr.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getarsym.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getarsym.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getbase.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getbase.c' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getdata.3' is no longer in the 
repository
cvs update: `src/external/bsd/libelf/dist/elf_getident.3' is no longer in the 
repository
cvs update: 

Re: kqueue: SIGIO?

2015-09-29 Thread Rhialto
On Tue 29 Sep 2015 at 13:22:08 +0200, Tobias Nygren wrote:
> Here is the relevant bit of the talk if you are curious:
> 
> https://www.youtube.com/watch?v=t400SmZlnO8=youtu.be=1888

So he wants a signal when a message is available in a kqueue, in other
words, can be read with kevent(2).

I do notice there are message queues (mq(3)) which are file descriptors
and have such functionality. Does that mean that mq_notify(3) might work
on any file descriptor, or is that too optimistic in hoping that these
things are implemented orthogonally?

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert  -- The Doctor: No, 'eureka' is Greek for
\X/ rhialto/at/xs4all.nl-- 'this bath is too hot.'


pgpsL3oyNyHuS.pgp
Description: PGP signature