Quoting Samuel Thibault (2016-04-04 09:16:17)
> Hello,
> 
> Flavio Cruz, on Sun 03 Apr 2016 16:12:48 +0200, wrote:
> > mach_msg_type_name_t and mach_msg_type_size_t are used as 8 bit fields in
> > mach_msg_type_t struct, therefore they should be treated as unsigned char's 
> > to
> > avoid warnings when using macros such as MACH_MSG_TYPE_POLYMORPIC.
> 
> Mmm, looking quickly at the mach code shows that there is a "long"
> variant of these fields, see for instance ipc_kmsg_clean_body() which
> uses a mach_msg_type_long_t

I don't see a problem with that for mach_msg_type_name_t.  The long
form is used if e.g. an array is transmitted with a size that cannot
be expressed with mach_msg_type_t, but there cannot be at type that
doesn't fit in 8 bits afaics.

If we restrict mach_msg_type_size_t to 8 bits, we limit the size a
single object in an array can have even for the long form.

(Obligatory rant: Why is the size of an element expressed in bits even
though the code everywhere in Mach assumes it to be a multiple of
eight and pads it accordingly?  Something to fix for Mach5...)

Justus

Reply via email to