Robert A. Brooks
2020-11-30 23:29:40 UTC
value in UCB$W_MSGCNT, except for three of checks that will return an error
upon a read request if the message count is zero and several other conditions are met.
While it *might* be possible to promote UCB$W_MSGCNT to a longword (but only for V9), that would not
be good enough to solve the complete problem because . . .
In the I/O User's Guide, chapter 4 (the mailbox driver chapter),
"DVI$_DEVDEPEND returns a longword field in which the two low-order bytes contain the number of messages in the mailbox.
(The two high-order bytes are not used and should be ignored.)
This information can also be obtained through the Get Mailbox Information function (see “Get Mailbox Information”)."
In the "Get Mailbox Information" area, it states that the upper word of the first longword in the IOSB returns the number
of messages in the mbx. (figure 4-11 in section 4.2)
For that reason above, there would be no reasonable way to return a 32-bit value containing the message count
without breaking a lot of stuff, given the existing size of the IOSB and the 16-bit region of the UCB$L_DEVDEPEND cell
that's used to hold the message count.
With minimal investigation (about an hour, which includes some email conversation), we suspect the proper way to deal with
this is to return an error to a writer if the mailbox has 65535 messages and to document this limitation.