Are POSIX mqueues supposed to be functional on FreeBSD?

Garrett Cooper yanefbsd at gmail.com
Mon Jun 21 00:25:29 UTC 2010


On Sun, Jun 20, 2010 at 4:41 PM, Andrew Thompson <thompsa at freebsd.org> wrote:
> On 21 June 2010 10:11, Garrett Cooper <yanefbsd at gmail.com> wrote:
>> On Sun, Jun 20, 2010 at 3:06 PM, Stathis Kamperis <ekamperi at gmail.com> wrote:
>>> 2010/6/21 Garrett Cooper <yanefbsd at gmail.com>:
>>>>    Err... I ran an mqueue test and it popped up with ENOSYS. Which
>>>> makes me wonder, are POSIX mqueues implemented 100% on FreeBSD? I
>>>> looked into sys/kern/uip_mqueue.c and it _appears_ functional, but I
>>>
>>> Hi,
>>>
>>> did you first load the respective kernel module (mqueuefs or something
>>> like that) ?
>>
>> Duh... should have checked that first I suppose: no, it isn't loaded.
>> However, it doesn't appear to compile with my copy of src:
>>
>> # make -C /sys/modules/mqueue/ all install
>> Warning: Object directory not changed from original /usr/src/sys/modules/mqueue
>> cc -O2 -pipe -fno-strict-aliasing -pipe -O2 -march=nocona -Werror
>> -D_KERNEL -DKLD_MODULE -nostdinc   -I. -I@ -I@/contrib/altq
>> -finline-limit=8000 --param inline-unit-growth=100 --param
>> large-function-growth=1000 -fno-common  -fno-omit-frame-pointer
>> -mcmodel=kernel -mno-red-zone  -mfpmath=387 -mno-sse -mno-sse2
>> -mno-sse3 -mno-mmx -mno-3dnow  -msoft-float
>> -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector
>> -std=iso9899:1999 -fstack-protector -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
>> -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -fformat-extensions -c
>> /usr/src/sys/modules/mqueue/../../kern/uipc_mqueue.c
>> /usr/src/sys/modules/mqueue/../../kern/uipc_mqueue.c:48:24: error:
>> opt_compat.h: No such file or directory
>> *** Error code 1
>>
>> Stop in /usr/src/sys/modules/mqueue.
>> # find /usr/src/ -name opt_compat.h
>>
>> So I'll need to hunt down what's going on with the missing header.
>
> opt_* headers are auto-generated by the kernel config. Just add
> opt_compat.h to sys/modules/mqueue/Makefile right after opt_posix.h

I did some reading and opt_compat is generated by options COMPAT_* in KERNCONF.

For whatever reason my source tree wasn't prebuilt, so I reran
buildkernel and everything was fine once again.

Thanks,
-Garrett


More information about the freebsd-standards mailing list