The man page for the mq_open(2) function fails to state that another possible cause of the return value being set to -1, with error set to EINVAL, is that the call, if permitted, would cause one or another of the following kernel tunable limit parameters to be exceeded: kern.mqueue.maxmq kern.mqueue.maxmsgsize kern.mqueue.maxmsg
I created a Phabricator review for this: https://reviews.freebsd.org/D32517 This documents the error case and the sysctls for mqueue. I'm not sure if this system call page is the right place to document sysctls.
I disagree. As a general matter, all possible causes of syscall failures should be documented on the relevant man page (for the syscall).
As a follow up, here is another failure scenario for mq_open: the kernel module is not loaded. Recent versions of FreeBSD made this a loadable module instead of baked into the kernel image. The mq_open man page should reflect this. I think the error code is ENOSYS or 78 - Function not implemented.