Path: utzoo!attcan!uunet!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!rpi!batcomputer!cornell!ken From: ken@gvax.cs.cornell.edu (Ken Birman) Newsgroups: comp.os.mach Subject: Combinging UNIX-style and MACH-style messaging Message-ID: <39001@cornell.UUCP> Date: 23 Mar 90 19:10:48 GMT Sender: nobody@cornell.UUCP Reply-To: ken@cs.cornell.edu (Ken Birman) Distribution: comp Organization: Cornell Univ. CS Dept, Ithaca NY Lines: 41 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 open chan. to B . . open ch. to A send B my port send A my port rcv A's port rcv B's port 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