Date: Thu, 6 Apr 2000 22:47:19 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: Jonathan Lemon <jlemon@flugsvamp.com> Cc: Archie Cobbs <archie@whistle.com>, freebsd-arch@freebsd.org Subject: Re: RFC: kqueue API and rough code Message-ID: <200004070547.WAA94276@apollo.backplane.com> References: <200004070107.SAA97591@bubba.whistle.com> <200004070220.TAA92896@apollo.backplane.com> <20000406220454.J80578@prism.flugsvamp.com> <200004070401.VAA93492@apollo.backplane.com> <20000406234905.K80578@prism.flugsvamp.com> <200004070510.WAA93968@apollo.backplane.com> <20000407003819.O80578@prism.flugsvamp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
: :> I don't understand your comment about 'binding the implementation'. :> No such thing is occuring. Sure, the user structure has to stay around.. :> that's not a big deal, it's how aio works. It certainly does not : :Yes, but that's not how this necessarily works, it isn't AIO. I can :create a huge buffer to copy in 10,000 events at once, and then read :events out into another buffer in chunks of 100 if I want. I don't :necessarily have to, in fact I definitely *don't* want to keep the :original structures around where I copied data from. If you have 100 events which would you rather do: (1) Pass an array of 100 kevent structures, each 16 bytes, and have to copyout 16x100 = 1600 bytes between the kernel and user space. Or (2) Pass an array of 100 kevent pointers and have to copyout 4x100 = 400 bytes (representing 400 pointers) between the kernel and user space. I don't know about you, but I'll take #2 any day. And if I have to keep the original kevent structure I passed to the kernel around, so what? The cost is virtually nil and I'd probably wind up wasting the same amount of space (and considerably more code) with my tracking structures (indexed by the descriptor and filter id, or by udata) anyway. What I want to do is this: struct myevent { struct kevent kev; ... MY STUFF GOES HERE ... }; Then I want to pass an array of pointers to myevent's to the kernel, and have it pass an array of pointers of ready events back. Simple, straightforward, who cares if we are 'wasting' sizeof(struct kevent) space? The amount of space is zilch compared other things! -Matt To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200004070547.WAA94276>