- Does the process have the privileges to make this particular system call? (the priv structure for this process in the process table is looked up to determine this)
- In the case of a 'send' or 'notify', is the destination a valid process? In the case of a 'receive' is the source a valid process? Note that a caller can specify 'ANY' as its source in which case it is looking for a message or notification from any process, so this check is unnecessary for that case. 'ECHO' is also a special case where this check doesn't make sense.
- Does the message pointer point to a valid region in memory i.e. is it really within the memory map limits of the calling process? Again, the memory map limits are available in the memmap struct for this process in the process table.
- If the request is to 'send' to some process, is the caller allowed to send to the destination process?
- Is the destination process running?
- Has system shutdown started?
Refer to the 'Message Primitives and Process States' diagrams (preceding posts) for details on what happens within the above functions.