putctl1(), like putctl(9F), tests the type
argument to make sure a data type has not been specified, and attempts to allocate a message block. The p parameter can be used, for example, to specify how long the delay will be
when an M_DELAY message is being sent. putctl1() fails if type is M_DATA, M_PROTO,
or M_PCPROTO, or if a mesage block cannot be allocated. If successful, putctl1() calls the put(9E) routine of the queue pointed to by q with the newly allocated and initialized message.