Keywords - M
 · ! · 0 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z · 
- macros
 
- 
	
	- for filling struct sigevent
 
	- 
			·
			General tricks for notification ·
		
		- SIGEV_INTR_INIT()
 
		- 
			·
			General tricks for notification ·
		
 
		
		
		- SIGEV_PULSE_INIT()
 
		- 
			·
			General tricks for notification ·
		
 
		
		
		- SIGEV_SIGNAL_CODE_INIT()
 
		- 
			·
			General tricks for notification ·
		
 
		
		
		- SIGEV_SIGNAL_INIT()
 
		- 
			·
			General tricks for notification ·
		
 
		
		
		- SIGEV_SIGNAL_THREAD_INIT()
 
		- 
			·
			General tricks for notification ·
		
 
		
		
		- SIGEV_THREAD_INIT()
 
		- 
			·
			General tricks for notification ·
		
 
		
		
		- SIGEV_UNBLOCK_INIT()
 
		- 
			·
			General tricks for notification ·
		
 
		
	 
	
	
	- message passing
 
	- 
		
		- SETIOV()
 
		- 
			·
			Multipart messages ·
		
 
		
	 
	
	
	- resource manager
 
	- 
		
		- _RESMGR_ERRNO() (deprecated)
 
		- 
			·
			General notes ·
		
 
		
		
		- _RESMGR_NPARTS()
 
		- 
			·
			General notes ·
			Step 4 ·
		
 
		
		
		- _RESMGR_PTR()
 
		- 
			·
			General notes ·
			Step 4 ·
		
 
		
	 
	
	
	- SETIOV()
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- SIGEV_PULSE_INIT()
 
	- 
		
		- example
 
		- 
			·
			setupPulseAndTimer() ·
		
 
		
	 
	
	
	- SIGEV_THREAD_INIT()
 
	- 
		
		- example
 
		- 
			·
			Timers creating threads ·
		
 
		
	 
	
	
	- SIGEV_UNBLOCK_INIT()
 
	- 
			·
			Kernel timeouts with pthread_join() ·
		
		- example
 
		- 
			·
			Kernel timeouts with pthread_join() ·
		
 
		
	 
	
 
- make
 
- 
			·
			Utilities Reference ·
 
- malloc()
 
- 
			·
			ISR functions ·
			Multipart messages ·
 
- masking interrupts
 
- 
			·
			Clearing the interrupt source ·
			Detaching an interrupt handler ·
 
- meet-me synchronization
 
- 
		See
		synchronization 
 
- mem*()
 
- 
			·
			ISR functions ·
 
- memcpy()
 
- 
			·
			ISR functions ·
			Multipart messages ·
 
- memory
 
- 
	
	- physical, defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- virtual, defined
 
	- 
			·
			Glossary ·
	
 
	
 
- memory management unit
 
- 
		See
		MMU 
 
- memory protection
 
- 
			·
			Why processes? ·
 
- message
 
- 
	
	- combined
 
	- 
			·
			Combine messages ·
			Messages that should be connect messages but aren't ·
		
		- why they work
 
		- 
			·
			Combine messages ·
		
 
		
	 
	
	
	- connect
 
	- 
			·
			Connect messages ·
			Finding the server ·
	
 
	
	
	- constants
 
	- 
		
		- _NTO_CHF_UNBLOCK
 
		- 
			·
			io_unblock() [I/O] ·
		
 
		
		
		- _NTO_MI_UNBLOCK_REQ
 
		- 
			·
			Extending the OCB ·
			io_unblock() [CONNECT] ·
			io_unblock() [I/O] ·
		
 
		
	 
	
	
	- determining if pulse or message
 
	- 
			·
			Notes ·
	
 
	
	
	- functions
 
	- 
		
		- ChannelCreate()
 
		- 
			·
			io_unblock() [I/O] ·
		
 
		
		
		- MsgDeliverEvent()
 
		- 
			·
			io_notify() ·
		
 
		
		
		- MsgRead()
 
		- 
			·
			Step 3 ·
		
 
		
		
		- MsgReply()
 
		- 
			·
			Effective use of other messaging functions ·
			Step 5 ·
			Step 8 ·
			Step 9 ·
		
 
		
		
		- MsgReplyv()
 
		- 
			·
			Effective use of other messaging functions ·
		
 
		
		
		- MsgSend()
 
		- 
			·
			io_msg() ·
		
 
		
		
		- MsgSendv()
 
		- 
			·
			Step 5 ·
		
 
		
		
		- MsgWrite()
 
		- 
			·
			Effective use of other messaging functions ·
		
 
		
		
		- MsgWritev()
 
		- 
			·
			Effective use of other messaging functions ·
		
 
		
	 
	
	
	- how to tell from pulses
 
	- 
			·
			Notes ·
	
 
	
	
	- I/O
 
	- 
			·
			I/O messages ·
	
 
	
	
	- not replying to client
 
	- 
			·
			Notes ·
	
 
	
	
	- other
 
	- 
			·
			Three groups, really ·
	
 
	
	
	- receive ID, defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- receiving, defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- replying to multiple clients
 
	- 
			·
			Notes ·
	
 
	
	
	- replying, defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- resource manager
 
	- 
			·
			Handling messages ·
		
		- combine
 
		- 
			·
			Locking, unlocking, and combine message handling ·
		
 
		
		
		- connect
 
		- 
			·
			Messages that should be connect messages but aren't ·
		
 
		
		
		- _IO_DEVCTL
 
		- 
			·
			The other_func message handler ·
		
 
		
		
		- _IO_MSG
 
		- 
			·
			The other_func message handler ·
		
 
		
		
		- processing
 
		- 
			·
			Locking, unlocking, and combine message handling ·
		
 
		
	 
	
	
	- send hierarchy, defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- sending
 
	- 
		
		- functions
 
		- 
			·
			Glossary ·
		
 
		
	 
	
 
- message passing
 
- 
			·
			A small microkernel and message passing ·
	
	- <sys/neutrino.h>
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- advantages
 
	- 
			·
			What it means for you ·
	
 
	
	
	- as decoupling
 
	- 
			·
			Summary ·
	
 
	
	
	- as object oriented design
 
	- 
			·
			What it means for you ·
	
 
	
	
	- as synchronization scheme
 
	- 
			·
			Summary ·
	
 
	
	
	- avoiding unnecessary copying
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- blocking client
 
	- 
			·
			Message handling ·
			Message passing and client/server ·
	
 
	
	
	- buffer sizes
 
	- 
			·
			Message handling ·
	
 
	
	
	- cancellation points
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- channel ID
 
	- 
			·
			Establishing a connection ·
			Who sent the message? ·
	
 
	
	
	- ChannelCreate()
 
	- 
			·
			Channel flags ·
			_NTO_CHF_UNBLOCK ·
			So what's the trick? ·
	
 
	
	
	- client
 
	- 
			·
			The client ·
	
 
	
	
	- client/server
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- confusion with timeouts
 
	- 
			·
			_NTO_CHF_UNBLOCK ·
	
 
	
	
	- ConnectAttach()
 
	- 
			·
			Impact on ConnectAttach() ·
			Networked message passing differences ·
			Some notes on NDs ·
	
 
	
	
	- ConnectDetach()
 
	- 
			·
			Establishing a connection ·
	
 
	
	
	- connection ID
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- data flow
 
	- 
			·
			Message handling ·
	
 
	
	
	- deadlock
 
	- 
			·
			The send-hierarchy ·
	
 
	
	
	- dealing with large buffers
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- decoupling of design
 
	- 
			·
			A small microkernel and message passing ·
			Network-distributed message passing ·
			What it means for you ·
	
 
	
	
	- deferring data transfer
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
	
	- diagram
 
	- 
			·
			Message handling ·
	
 
	
	
	- distributing work over a network
 
	- 
			·
			Server/subserver ·
	
 
	
	
	- done by C library
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- double standard in conventional OS
 
	- 
			·
			Network-distributed message passing ·
	
 
	
	
	- establishing client to server connection
 
	- 
			·
			The client ·
	
 
	
	
	- example
 
	- 
			·
			Message passing and client/server ·
			Network-distributed message passing ·
	
 
	
	
	- excluding messages
 
	- 
			·
			The MsgReceivePulse() function ·
	
 
	
	
	- filesystem example
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- finding a server
 
	- 
			·
			Finding the server's ND/PID/CHID ·
		
		- ND/PID/CHID
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- using a global variable
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- using a resource manager
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- using global variables
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
		
		- using well-known files
 
		- 
			·
			Finding the server's ND/PID/CHID ·
		
 
		
	 
	
	
	- finding the server's ND/PID/CHID
 
	- 
			·
			Finding the server's ND/PID/CHID ·
	
 
	
	
	- fs-qnx4 message example
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- handling big messages in server
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- how to handle large transfers
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- interrupts
 
	- 
			·
			The MsgReceivePulse() function ·
	
 
	
	
	- iov_t
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- kernel timeouts
 
	- 
			·
			Kernel timeouts with message passing ·
	
 
	
	
	- limiting transfer size
 
	- 
			·
			Replying to the client ·
			Server framework ·
	
 
	
	
	- modularity
 
	- 
			·
			A small microkernel and message passing ·
	
 
	
	
	- MsgDeliverEvent()
 
	- 
			·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Networked message passing differences ·
			The MsgDeliverEvent() function ·
	
 
	
	
	- MsgError() versus MsgReply()
 
	- 
			·
			Replying with no data, or an errno ·
	
 
	
	
	- MsgInfo()
 
	- 
			·
			Using the _NTO_MI_UNBLOCK_REQ ·
	
 
	
	
	- MsgRead()
 
	- 
			·
			Impact on MsgReceive() ·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Implementation ·
			Networked message passing differences ·
			Reading and writing data ·
	
 
	
	
	- MsgReceive()
 
	- 
			·
			Impact on MsgReceive() ·
			Implementation ·
			Message handling ·
			Message passing over a network ·
			Multipart messages ·
			Networked message passing differences ·
			_NTO_CHF_UNBLOCK ·
			Priority inheritance ·
			Reading and writing data ·
			Receiving a pulse message ·
			So what's the trick? ·
			Synchronization problem ·
			The MsgReceivePulse() function ·
			Using the _NTO_MI_UNBLOCK_REQ ·
	
 
	
	
	- MsgReceive() versus MsgReceivev()
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- MsgReceivePulse()
 
	- 
			·
			Implementation ·
			The MsgReceivePulse() function ·
	
 
	
	
	- MsgReceivev()
 
	- 
			·
			Multipart messages ·
			The MsgReceivePulse() function ·
	
 
	
	
	- MsgReply()
 
	- 
			·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Message handling ·
			Networked message passing differences ·
			Reading and writing data ·
			Synchronization problem ·
	
 
	
	
	- MsgReplyv()
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- MsgSend()
 
	- 
			·
			Implementation ·
			Multipart messages ·
			_NTO_CHF_UNBLOCK ·
			Pulses ·
			Sending messages ·
			What about the other versions? ·
		
		- example
 
		- 
			·
			Sending messages ·
		
 
		
	 
	
	
	- MsgSend() family
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- MsgSendnc()
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- MsgSendsv()
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- MsgSendsvnc()
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- MsgSendv()
 
	- 
			·
			Multipart messages ·
			_NTO_CHF_UNBLOCK ·
			What about the other versions? ·
	
 
	
	
	- MsgSendvnc()
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- MsgSendvs()
 
	- 
			·
			_NTO_CHF_UNBLOCK ·
			What about the other versions? ·
	
 
	
	
	- MsgSendvsnc()
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- MsgWrite()
 
	- 
			·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Implementation ·
			Networked message passing differences ·
			Reading and writing data ·
	
 
	
	
	- MsgWritev()
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- multi-threaded server
 
	- 
			·
			Multi-threaded server ·
	
 
	
	
	- multipart messages
 
	- 
			·
			Multipart messages ·
		
		- example
 
		- 
			·
			Multipart messages ·
		
 
		
		
		- IOV
 
		- 
			·
			Multipart messages ·
		
 
		
		
		- kernel's view
 
		- 
			·
			Multipart messages ·
		
 
		
		
		- limitations
 
		- 
			·
			Multipart messages ·
		
 
		
	 
	
	
	- multipart versus linear
 
	- 
			·
			What about the other versions? ·
	
 
	
	
	- multiple threads
 
	- 
			·
			Multiple threads ·
	
 
	
	
	- ND/PID/CHIDs
 
	- 
			·
			Finding the server's ND/PID/CHID ·
	
 
	
	
	- network
 
	- 
		
		- detailed analysis
 
		- 
			·
			Message passing over a network ·
		
 
		
		
		- differences from local
 
		- 
			·
			Networked message passing differences ·
		
 
		
	 
	
	
	- network implementation
 
	- 
			·
			Message passing over a network ·
	
 
	
	
	- network transparent
 
	- 
			·
			Summary ·
	
 
	
	
	- network-distributed
 
	- 
			·
			Network-distributed message passing ·
	
 
	
	
	- networked
 
	- 
			·
			Message passing over a network ·
	
 
	
	
	- networked case
 
	- 
		
		- determining how much data should have been transferred
 
		- 
			·
			Impact on MsgReceive() ·
		
 
		
		
		- determining how much data was transferred
 
		- 
			·
			Impact on MsgReceive() ·
		
 
		
	 
	
	
	- networked overhead
 
	- 
			·
			Longer delays ·
	
 
	
	
	- node descriptor
 
	- 
			·
			Establishing a connection ·
	
 
	
	
	- not replying to the client
 
	- 
			·
			Not replying to the client ·
	
 
	
	
	- notifying client
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
	
	- obtaining a connection ID
 
	- 
			·
			Establishing a connection ·
	
 
	
	
	- offsetting into the client's data
 
	- 
			·
			Multipart messages ·
			Reading and writing data ·
	
 
	
	
	- peeking into a message
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- phases
 
	- 
			·
			Message handling ·
	
 
	
	
	- priority
 
	- 
			·
			What about priorities? ·
	
 
	
	
	- process ID
 
	- 
			·
			Establishing a connection ·
	
 
	
	
	- pulse
 
	- 
		
		- MsgReceive()
 
		- 
			·
			Receiving a pulse message ·
		
 
		
		
		- MsgReceivePulse()
 
		- 
			·
			Receiving a pulse message ·
		
 
		
		
		- receiving
 
		- 
			·
			Receiving a pulse message ·
		
 
		
	 
	
	
	- race condition with unblock
 
	- 
			·
			Synchronization problem ·
	
 
	
	
	- reading from the client's address space
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- readying a thread
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- receive ID
 
	- 
			·
			Replying to the client ·
		
		- and reply
 
		- 
			·
			Message handling ·
		
 
		
	 
	
	
	- receive-blocked
 
	- 
			·
			Message passing and client/server ·
		
		- diagram
 
		- 
			·
			Message passing and client/server ·
		
 
		
	 
	
	
	- receiving only pulses
 
	- 
			·
			The MsgReceivePulse() function ·
	
 
	
	
	- receiving pulses only
 
	- 
			·
			The MsgReceivePulse() function ·
	
 
	
	
	- REPLY-blocked
 
	- 
			·
			Kernel timeouts with message passing ·
	
 
	
	
	- reply-blocked
 
	- 
			·
			Message passing and client/server ·
		
		- diagram
 
		- 
			·
			Message passing and client/server ·
		
 
		
	 
	
	
	- reply-driven model
 
	- 
			·
			Not replying to the client ·
			Server/subserver ·
		
		- example
 
		- 
			·
			Reply-driven (server/subserver) ·
		
 
		
		
		- important subtlety
 
		- 
			·
			An important subtlety ·
		
 
		
	 
	
	
	- replying to the client
 
	- 
			·
			Replying to the client ·
	
 
	
	
	- replying with no data
 
	- 
			·
			Replying with no data, or an errno ·
		
		- example
 
		- 
			·
			Replying with no data, or an errno ·
		
 
		
	 
	
	
	- resource manager
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- run time installability of components
 
	- 
			·
			A small microkernel and message passing ·
	
 
	
	
	- scatter/gather
 
	- 
		
		- defined
 
		- 
			·
			Glossary ·
		
 
		
	 
	
	
	- SEND state
 
	- 
		
		- diagram
 
		- 
			·
			Message passing and client/server ·
		
 
		
	 
	
	
	- SEND-blocked
 
	- 
			·
			Kernel timeouts with message passing ·
	
 
	
	
	- send-blocked
 
	- 
			·
			Message passing and client/server ·
		
		- diagram
 
		- 
			·
			Message passing and client/server ·
		
 
		
	 
	
	
	- send-driven model
 
	- 
			·
			Server/subserver ·
		
		- example
 
		- 
			·
			Send-driven (client/server) ·
		
 
		
		
		- important subtlety
 
		- 
			·
			An important subtlety ·
		
 
		
	 
	
	
	- server
 
	- 
			·
			Message handling ·
		
		- example
 
		- 
			·
			Server framework ·
		
 
		
	 
	
	
	- server connection ID
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- server replying to client
 
	- 
			·
			Message handling ·
	
 
	
	
	- server/subserver
 
	- 
			·
			Multiple threads ·
			Server/subserver ·
		
		- delegation of work
 
		- 
			·
			Server/subserver ·
		
 
		
	 
	
	
	- SETIOV() (macro)
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- SMP
 
	- 
			·
			Multiple threads ·
	
 
	
	
	- STATE_RECV state
 
	- 
			·
			Message passing and client/server ·
		
		- diagram
 
		- 
			·
			Message passing and client/server ·
		
 
		
	 
	
	
	- STATE_REPLY state
 
	- 
			·
			Message passing and client/server ·
		
		- diagram
 
		- 
			·
			Message passing and client/server ·
		
 
		
	 
	
	
	- STATE_SEND state
 
	- 
			·
			Message passing and client/server ·
	
 
	
	
	- summary
 
	- 
			·
			Summary ·
	
 
	
	
	- synthetic unblock pulse
 
	- 
			·
			_NTO_CHF_UNBLOCK ·
	
 
	
	
	- thread and channels
 
	- 
			·
			More about channels ·
	
 
	
	
	- thread pool
 
	- 
			·
			The MsgReceivePulse() function ·
	
 
	
	
	- timeouts
 
	- 
		
		- informing server
 
		- 
			·
			Kernel timeouts with message passing ·
		
 
		
	 
	
	
	- timeouts and _NTO_CHF_UNBLOCK
 
	- 
			·
			Kernel timeouts with message passing ·
	
 
	
	
	- timer
 
	- 
			·
			The MsgReceivePulse() function ·
	
 
	
	
	- tracking owner of message
 
	- 
			·
			Who sent the message? ·
	
 
	
	
	- transmit buffer
 
	- 
			·
			Message handling ·
	
 
	
	
	- transparency over network
 
	- 
			·
			Network-distributed message passing ·
	
 
	
	
	- unblock
 
	- 
			·
			Synchronization problem ·
	
 
	
	
	- unblocking
 
	- 
		
		- client
 
		- 
			·
			_NTO_CHF_UNBLOCK ·
		
 
		
		
		- _NTO_MI_UNBLOCK_REQ
 
		- 
			·
			Using the _NTO_MI_UNBLOCK_REQ ·
		
 
		
		
		- server
 
		- 
			·
			Message handling ·
		
 
		
	 
	
	
	- unit testing
 
	- 
			·
			What it means for you ·
	
 
	
	
	- useful minimal set of functions
 
	- 
			·
			Architecture & structure ·
	
 
	
	
	- using IOV (vectored) functions
 
	- 
			·
			Implementation ·
	
 
	
	
	- using the _NTO_MI_UNBLOCK_REQ flag
 
	- 
			·
			Using the _NTO_MI_UNBLOCK_REQ ·
	
 
	
	
	- validity of receive ID
 
	- 
			·
			The receive ID (a.k.a. the client cookie) ·
	
 
	
	
	- vs. traditional OS
 
	- 
			·
			Message passing and client/server ·
			Network-distributed message passing ·
	
 
	
	
	- with pool of threads
 
	- 
			·
			Multiple threads ·
	
 
	
	
	- write() example
 
	- 
			·
			Multipart messages ·
	
 
	
	
	- writing a header later
 
	- 
			·
			Reading and writing data ·
	
 
	
	
	- writing to the client's address space
 
	- 
			·
			Reading and writing data ·
	
 
	
 
- microkernel
 
- 
			·
			A small microkernel and message passing ·
 
- mktime()
 
- 
			·
			What kind of timer? ·
 
- MMU
 
- 
			·
			Why processes? ·
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
 
- modularity due to message passing
 
- 
			·
			A small microkernel and message passing ·
 
- mountpoint
 
- 
	
	- creating
 
	- 
			·
			The resmgr_attach() function and its parameters ·
	
 
	
	
	- registering
 
	- 
			·
			The resmgr_attach() function and its parameters ·
	
 
	
 
- mq_open()
 
- 
			·
			The resmgr_attach() function and its parameters ·
 
- mq_receive()
 
- 
			·
			The resmgr_attach() function and its parameters ·
 
- mqueue
 
- 
			·
			The resmgr_attach() function and its parameters ·
 
- MsgDeliverEvent()
 
- 
			·
			Architecture & structure ·
			Glossary ·
			Impact on MsgDeliverEvent() ·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			io_notify() ·
			Proxies ·
			The MsgDeliverEvent() function ·
			The receive ID (a.k.a. the client cookie) ·
			The send-hierarchy ·
	
	- breaking send hierarchy
 
	- 
			·
			The send-hierarchy ·
	
 
	
	
	- networked case
 
	- 
			·
			Impact on MsgDeliverEvent() ·
			Networked message passing differences ·
	
 
	
	
	- special use of receive ID
 
	- 
			·
			The MsgDeliverEvent() function ·
	
 
	
 
- MsgError()
 
- 
			·
			Architecture & structure ·
			Replying with no data, or an errno ·
	
	- errno
 
	- 
			·
			General notes ·
			Replying with no data, or an errno ·
	
 
	
 
- MsgInfo()
 
- 
			·
			Using the _NTO_MI_UNBLOCK_REQ ·
			Who sent the message? ·
 
- MsgRead()
 
- 
			·
			Architecture & structure ·
			Impact on MsgReceive() ·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Implementation ·
			Reading and writing data ·
			Step 3 ·
	
	- networked case
 
	- 
			·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Networked message passing differences ·
	
 
	
	
	- offset parameter
 
	- 
			·
			Reading and writing data ·
	
 
	
 
- MsgReadv()
 
- 
			·
			Architecture & structure ·
	
	- example
 
	- 
			·
			Multipart messages ·
	
 
	
 
- MsgReceive()
 
- 
			·
			Architecture & structure ·
			Glossary ·
			Handling messages ·
			Impact on MsgReceive() ·
			Implementation ·
			main() ·
			Message handling ·
			Message passing ·
			Message passing over a network ·
			More about channels ·
			Multipart messages ·
			Not replying to the client ·
			Notes ·
			_NTO_CHF_UNBLOCK ·
			Priority inheritance ·
			Reading and writing data ·
			Receiving a pulse message ·
			Server framework ·
			So what's the trick? ·
			Synchronization problem ·
			The MsgReceivePulse() function ·
			Using InterruptAttachEvent() ·
			Using the _NTO_MI_UNBLOCK_REQ ·
			Who sent the message? ·
	
	- example
 
	- 
			·
			main() ·
			Multipart messages ·
			Reading and writing data ·
			Server framework ·
	
 
	
	
	- networked case
 
	- 
			·
			Impact on MsgReceive() ·
			Networked message passing differences ·
	
 
	
	
	- priority inheritance
 
	- 
			·
			So what's the trick? ·
	
 
	
	
	- relationship of parameters to MsgReply()
 
	- 
			·
			Message handling ·
	
 
	
 
- MsgReceivePulse()
 
- 
			·
			Architecture & structure ·
			Glossary ·
			Implementation ·
			Receiving a pulse message ·
			The MsgReceivePulse() function ·
 
- MsgReceivev()
 
- 
			·
			Architecture & structure ·
			Glossary ·
			Multipart messages ·
			The MsgReceivePulse() function ·
			The resmgr_context_t internal context block ·
 
- MsgReply()
 
- 
			·
			Architecture & structure ·
			Effective use of other messaging functions ·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Message handling ·
			Reading and writing data ·
			Receiving a pulse message ·
			Replying to the client ·
			Replying with no data, or an errno ·
			Server framework ·
			Step 5 ·
			Step 8 ·
			Step 9 ·
			Synchronization problem ·
			The receive ID (a.k.a. the client cookie) ·
	
	- errno
 
	- 
			·
			Replying with no data, or an errno ·
	
 
	
	
	- example
 
	- 
			·
			gotAMessage() ·
			gotAPulse() ·
			Server framework ·
	
 
	
	
	- networked case
 
	- 
			·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Networked message passing differences ·
	
 
	
	
	- relationship of parameters to MsgReceive()
 
	- 
			·
			Message handling ·
	
 
	
 
- MsgReplyv()
 
- 
			·
			Architecture & structure ·
			Effective use of other messaging functions ·
			General notes ·
			Multipart messages ·
 
- MsgSend()
 
- 
			·
			Architecture & structure ·
			Finding the server's ND/PID/CHID ·
			Implementation ·
			io_msg() ·
			Kernel timeouts with message passing ·
			Message handling ·
			Multipart messages ·
			_NTO_CHF_UNBLOCK ·
			Pulses ·
			Reading and writing data ·
			Replying to the client ·
			Replying with no data, or an errno ·
			Sending messages ·
			Server framework ·
			The receive ID (a.k.a. the client cookie) ·
			The server ·
			What about the other versions? ·
	
	- EINTR
 
	- 
			·
			_NTO_CHF_UNBLOCK ·
	
 
	
	
	- example
 
	- 
			·
			Multipart messages ·
			Sending messages ·
	
 
	
 
- MsgSend() family
 
- 
			·
			Sending messages ·
			What about the other versions? ·
	
	- guide to variants
 
	- 
			·
			What about the other versions? ·
	
 
	
 
- MsgSendnc()
 
- 
			·
			Architecture & structure ·
			What about the other versions? ·
 
- MsgSendsv()
 
- 
			·
			Architecture & structure ·
			What about the other versions? ·
 
- MsgSendsvnc()
 
- 
			·
			Architecture & structure ·
			What about the other versions? ·
 
- MsgSendv()
 
- 
			·
			Architecture & structure ·
			_NTO_CHF_UNBLOCK ·
			Rescheduling — kernel calls ·
			Step 5 ·
			Translating messages to devctl() or _IO_MSG ·
			What about the other versions? ·
	
	- example
 
	- 
			·
			Multipart messages ·
	
 
	
 
- MsgSendvnc()
 
- 
			·
			Architecture & structure ·
			What about the other versions? ·
 
- MsgSendvs()
 
- 
			·
			Architecture & structure ·
			_NTO_CHF_UNBLOCK ·
			What about the other versions? ·
 
- MsgSendvsnc()
 
- 
			·
			Architecture & structure ·
			What about the other versions? ·
 
- MsgVerifyEvent()
 
- 
			·
			The MsgDeliverEvent() function ·
 
- MsgWrite()
 
- 
			·
			Architecture & structure ·
			Effective use of other messaging functions ·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Implementation ·
			Reading and writing data ·
			Replying with no data, or an errno ·
	
	- networked case
 
	- 
			·
			Impact on MsgReply(), MsgRead(), and MsgWrite() ·
			Networked message passing differences ·
	
 
	
	
	- offset parameter
 
	- 
			·
			Reading and writing data ·
	
 
	
 
- MsgWritev()
 
- 
			·
			Architecture & structure ·
			Effective use of other messaging functions ·
			Multipart messages ·
	
	- offset parameter
 
	- 
			·
			Multipart messages ·
	
 
	
 
- MT_TIMEDOUT
 
- 
			·
			gotAPulse() ·
 
- multipart messages
 
- 
		See
		Message passing 
 
- MUTEX
 
- 
			·
			The blocked states ·
 
- mutex
 
- 
	
	- analogy
 
	- 
			·
			Mutual exclusion ·
	
 
	
	
	- defined
 
	- 
			·
			Glossary ·
	
 
	
 
- mutual exclusion
 
- 
		See
		mutex 
 
 · ! · 0 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z ·