On Nov 21, 2011, at 5:28 PM, Jerry Krinock wrote:
In trying to understand how a process works, I found a launchd plist with a MachService key.
From launchd.plist(5), I learn that that this is to "specify Mach services to be registered with the Mach bootstrap sub-system".
I know a little about the Mach bootstrap sub-system, but I can't find much information about Mach services.
Does anyone know a book or other resource where I could learn about Mach services?
There's really not much to learn. It's a hierarchical namespace that provides way more flexibility than has shown to be practically needed or desirable. The standard workflow was that, when a daemon advertising MachServices is launched on-demand, it used bootstrap_check_in() to obtain the receive rights to the ports corresponding to those services. It could then dequeue messages from the ports from there, either using mach_msg() directly or MIG. Anyone who wished to send a message to one of those services used bootstrap_look_up() to obtain a send right to that service, and from there they could send messages. That act of sending a message (NOT the act of looking up the name) would launch the daemon on-demand if it's not already running. There were a whole host of other APIs that were of dubious value after the introduction of launchd and the MachServices key. XPC has pretty much rendered all of those APIs obsolete though. -- Damien Sorresso dsorresso@apple.com