
. rename message field name macros from *PROC* to *ENDPT*, both to reflect the new meaning and to use it to hunt down where they are used . _PM_SEG_FLAG in fd replaces funny segment loading construction by PM in FS . _MAX_MAGIC_PROC is the highest used proc number, including magic constants such as (currently) ANY, NONE and SELF, used by the endpoint macros to make sure they are encoded properly and no valid endpoint number ever encodes to it. . rename proc_nr in address copy struct to proc_nr_e (endpoint)
30 lines
1.1 KiB
C
30 lines
1.1 KiB
C
|
|
#ifndef _MINIX_ENDPOINT_H
|
|
#define _MINIX_ENDPOINT_H 1
|
|
|
|
#include <minix/sys_config.h>
|
|
#include <minix/com.h>
|
|
#include <limits.h>
|
|
|
|
/* The point of the padding in 'generation size' is to
|
|
* allow for certain bogus endpoint numbers such as NONE, ANY, etc.
|
|
* The 207 doesn't mean anything, it's just to make the actual endpoint
|
|
* numbers irregular.
|
|
*
|
|
* The _MAX_MAGIC_PROC is defined by <minix/com.h>. That include
|
|
* file defines some magic process numbers such as ANY and NONE,
|
|
* and must never be a valid endpoint number. Therefore we make sure
|
|
* the generation size is big enough to start the next generation
|
|
* above the highest magic number.
|
|
*/
|
|
#define _ENDPOINT_MAX_PROC (_NR_PROCS)
|
|
#define _ENDPOINT_GENERATION_SIZE (NR_TASKS+_ENDPOINT_MAX_PROC+_MAX_MAGIC_PROC+207)
|
|
#define _ENDPOINT_MAX_GENERATION (INT_MAX/_ENDPOINT_GENERATION_SIZE-1)
|
|
|
|
/* Generation + Process slot number <-> endpoint. */
|
|
#define _ENDPOINT(g, p) ((g) * _ENDPOINT_GENERATION_SIZE + (p))
|
|
#define _ENDPOINT_G(e) (((e)+NR_TASKS) / _ENDPOINT_GENERATION_SIZE)
|
|
#define _ENDPOINT_P(e) ((((e)+NR_TASKS) % _ENDPOINT_GENERATION_SIZE) - NR_TASKS)
|
|
|
|
#endif
|