ken@gvax.cs.cornell.edu (Ken Birman) (03/24/90)
I am modifying ISIS to try and benefit from the higher performance of MACH messaging for intra-machine communication, but without generating a Mach-only version of ISIS. The easiest way for me to do this is to leave ISIS alone except at the level where it actually does the sendto/recevfrom to send a message. If the caller is a Mach system and the destination is on the same site (in ISIS it is easy to tell) I want to use msg_send to send the message and msg_rcv to receive it. This means that I need to combine IO with UNIX system calls over file descriptors with Mach IO using ports. 1) When I call the UNIX "select" operation, how can I get a file descriptor for a Mach port so that I can detect the presense of a message on it? 2) ISIS will need to make a transition from UDP communication to Mach communication in the following steps: process A process B <initially using UNIX UDP> open chan. to B . . open ch. to A send B my port send A my port rcv A's port rcv B's port <begin using Mach IPC> I need to use UDP at the start because I don't have an easy way to get the destination port in ISIS unless I am given it, and since most of my systems are non-Mach systems, I am using UDP by default. In particular, the messages by which A and B first find out about each other are definitely going to be UDP messages that will have passed through a standard UNIX messaging subsystem and hence can't pass port rights. Probably there is a standard manual entry explaining this. I would be happy looking things up with a reasonable pointer. Thanks for the help. Ken Birman
Richard.Draves@CS.CMU.EDU (03/27/90)
> Excerpts from netnews.comp.os.mach: 23-Mar-90 Combinging UNIX-style and > M.. Ken Birman@gvax.cs.corne (1707) > 1) When I call the UNIX "select" operation, how can I get > a file descriptor for a Mach port so that I can detect the > presense of a message on it? You can't. If you want to do both blocking selects and blocking message operations, you need to use multiple threads. > 2) ISIS will need to make a transition from UDP communication to > Mach communication in the following steps: Your tasks need to make use of a third-party to help set up the send rights. The standard third-party is the netmsgserver, via the netname name service. Rich