However, endpoint values are in general larger numbers and depend on a "generation" value.
For a valid endpoint, the generation number is:
generation = endpoint / M (same constant M) M is the generation "size" M = NR_TASKS + _MAX_MAGIC_PROC + 1 NR_TASKS = 4 _MAX_MAGIC_PROC = 0x8ace (See /usr/src/include/minix/endpoint.h )
When a process is forked, a generation value one greater than the parent's generation is used to compute the child's endpoint value together with the index value of a free slot in the process table.
The endpoint for a process can be set to an invalid endpoint value (E.g., NONE). For example, the kernel may need to prevent this process from receiving any more messages if it is terminating.