kqueue: SIGIO?
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?
On Tue, 29 Sep 2015 12:56:36 +0200 Joerg Sonnenbergerwrote: > 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?
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?
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
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?
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