Date: Mon, 8 Sep 1997 20:41:22 -0400 (EDT) From: Ken Wong <wong@a17b32.rogerswave.ca> To: "Kevin P. Neal" <kpneal@pobox.com> Cc: Terry Lambert <terry@lambert.olg>, freebsd-hackers@FreeBSD.ORG Subject: Re: Divert sockets.. Message-ID: <Pine.BSF.3.91.970908202909.399A-100000@wong.rogerswave.ca> In-Reply-To: <1.5.4.32.19970907223328.008be880@mail.mindspring.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 7 Sep 1997, Kevin P. Neal wrote:
> Well, the Amiga OS had a system for message transferral. You would set
> up a message port. Do stuff. Then when you have nothing to do you sleep,
> waiting on a signal.
>
> When you get a signal (because you got a message at one of your message
> ports) then you wake up and check the message.
>
> The GUI notified you of events via just this messaging scheme. ARexx
> programs could direct you to do stuff through another message port. This was
> so common that most programs main loop's were just a simple
>
> Wait()
>
> Get Message()
>
> Copy Data Out of message
>
> Reply Message()
>
> Do Stuff()
>
> Loop back to Wait().
>
> The File Notification scheme (useful for Terry's file browser) may have used
> this messaging scheme as well (I honestly don't remember). You certainly
> could be notified of disk change events (floppy insert/removal, later
> removable HD change) through messages.
>
> Now, here's the question: How difficult would it be to do something like this?
> It would take some sort of shared memory or other scheme to get the data from
> one program to another. Or would that be too general? How about just a scheme
> to get messages to and from the kernel?
I have a kernel patch do just that. actually, it applys to alot of OS;
QNX, Tandem Non-Stop Kernel, Minix.
I don't know how if possible to include/commit it in the kernel tree.
anyhow, If you are interested, I can send you the files.
it is basically can do the following:
prog A:
main()
{
while(1) {
pid = receive(pid-mask, buf); // blocked
...
reply(pid, buf);
}
}
prog B:
main()
{
send(pid, buf); // blocked
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.91.970908202909.399A-100000>
