previous | start | next

Endpoint id's and Generations

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.



previous | start | next