Date: Thu, 6 Apr 2000 22:30:31 -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: <200004070530.WAA94119@apollo.backplane.com> References: <200004070107.SAA97591@bubba.whistle.com> <200004070220.TAA92896@apollo.backplane.com> <20000406220454.J80578@prism.flugsvamp.com> <200004070340.UAA93335@apollo.backplane.com> <20000407001929.N80578@prism.flugsvamp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
P.S. please excuse me for getting so excitement, I think you know
where I'm coming from and my last reply intimated otherwise.
I really do think that passing/returning a pointer rather then doing
a copyin/copyout is the way to go, and this is from serious experience
in this area. I have nearly 15 years of experience doing this sort
of thing in real life embedded systems.
I am going to put up a URL for a program module from one of my embedded
projects to demonstrate the idea in real-life application code. Keep
in mind that the source file below is from an embedded application,
not a kernel.
http://www.backplane.com/FreeBSD4/showoff1.c
Please bring this up and search for 'setdispatch'. Now the model this
embedded system is using is an asynchronous software interrupt dispatch
model, which I think is the best thing since sliced bread but is something
that would not be easy to implement in UNIX.
What I would like you to look at is the use of a user data structure.
Check out the setop3() call just before second the setdispatch() call,
then go down to the NetReadInt() procedure itself where the pointer to
this structure is passed (by the kernel) to the dispatch function
as 'arg'.
This is the power of being able to either pass a user data pointer, or
being able to supply it inherently by passing a pointer containing
other information but extensible as a user structure, which is later
returned.
If you have time you should look at the code in general... again, remember
that I am not advocating kernel-aided dispatch via software interrupts,
I am just using it as a demonstration of what our Goals should be.
-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?200004070530.WAA94119>
