Minix uses a union member of the message structure for the part of the message that depends on the message type (member m_type).
A union of 2 or more types only uses the storage for the largest of these types.
That is because a union of 2 or more types can only hold value(s) for one of the types at a time. So the types share the storage for a union.