Skip site navigation (1)Skip section navigation (2)
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>