This is a small collection of links to external documents describing the Mach Interface Generator used by GNU Mach.
MIG and C Thread Programming
A tutorial which demonstrates the use of the C Threads library primitives in writing a multithreaded program and the use of the Mach Interface Generator (MIG) to generate remote procedure calls for inter-process communication. Like its companion tutorial, it is based on the Mach 2.5 system. However, the concepts are applicable to Mach 3.0 user level programming.
Linda R. Walmer and Mary R. Thompson. A Programmer's Guide to the Mach User Environment. PostScript , Doc. February 1988. School of Computer Science, Carnegie Mellon University.
An ftp directory containing the mig programming examples for this tutorial.
Slides to Rich Drave's talk on MIG, on November 21, 1991: PostScript, TeX.
Roots
Mig is an implementation of a subset of the Matchmaker language.
"Matchmaker is a language for specifying and automating the generation of multilingual inter-process communication interfaces. MIG is an interim implementation of a subset of the Matchmaker language that generates C and C++ remote procedure call interfaces for inter-process communication between Mach tasks."
Richard P. Draves, Michael B. Jones, Mary R. Thompson, MIG - THE MACH INTERFACE GENERATOR. ps, doc. November 1989. Department of Computer Science, Carnegie-Mellon University.
Related Work
See the citations about Mach and matchmaker: kernel and language support for objectoriented distributed systems. "M. B. Jones and R. F. Rashid, Mach and matchmaker: kernel and language support for objectoriented distributed systems, Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications, October 1986, pp. 67--77."
Further Relevant Documentation
The GNU Mach Reference Manual, espacially Chapter 4, Inter Process Communication.
OSF's Server Writer's Guide (ps) Server Writer's Guide (pdf)
OSF's Server Writer's Interfaces (ps) Server Writer's Interfaces (pdf)
Flags:
MIG in action: io path.
IRC, freenode, #hurd, 2013-09-04
<teythoon> btw, I just realized that mig mashes two very different things
together, namely the serialization/parsing and the message
sending/receiving
<braunr> yes
<teythoon> I'd prefer it if that were separated
<braunr> me too
<braunr> that's why i want x15 to have a bare messaging interface .. :)
<teythoon> \o/
<braunr> simple (but optimized) scatter-gather
<braunr> it makes sense for mig since mach messages do include
serialization metadata such as types
IRC, freenode, #hurd, 2013-11-01
<gnu_srs> Is it possible to call server functions from user space? What
about functions returning MIG_NO_REPLY?
<neal> gnu_srs: server functions are only called from user space...
<neal> gnu_srs: Normally, servers use a server loop. When an RPC comes it,
it is processed and the processing returns some values that the server
loop returns to the client.
<neal> If the server wants to return the thread to the thread pool without
responding to the RPC, it uses MIG_NO_REPLY.