Minix message structures are C struct's with two fixed members for the message type and the message source and a union member.
The union member is a union of 7 different struct types.
Here is a slightly simlified example definition of a message structure containing a union with only 2 members instead of 7. It will be used to illustrate the approach taken in the Minix code for naming and accessing the message components.
typedef struct
{
int m1i1;
int m1i2;
char* m1p1;
} mess_1;
typedef struct
{
int m2i1;
int m2i2;
long m2l1;
} mess_2;
typedef struct
{
int m_type;
long m_source;
union {
mess_1 m_m1;
mess_2 m_m2;
} m_u;
} message;