>From the definition in sys/errno.h: +#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 700 +#define ENOTRECOVERABLE 94 /* State not recoverable */ +#define EOWNERDEAD 95 /* Previous owner died */ +#endif
But one does not actually define these; instead, it seems to me the expectation is one defines something like _XOPEN_SOURCE=700 before including sys/cdefs.h, because of: /* Deal with various X/Open Portability Guides and Single UNIX Spec. */ #ifdef _XOPEN_SOURCE #if _XOPEN_SOURCE - 0 >= 700 #define __XSI_VISIBLE 700 #undef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809 A quck grep of dports indicates that the preference seems to be to patch per file to define _XOPEN_SOURCE instead of universally defining using something like CFLAGS+= -D_XOPEN_SOURCE=700 Also internal C++ headers were patched to actually indicate existence of EOWNERDEAD. The result can be seen building something like icu, a program that uses C++ and that appears to want to use some form of user mutex, use indicated by an internal header umutex.h. Following the above logic, with zero documentation anywhere, the expectation seems to be anyone porting to DragonFly a C++ program that at least uses a user mutex has to at the minimum grep the source tree for every single file containing the user mutex header and then create a custom patch to define _XOPEN_SOURCE=700 for DragonFly. How is this any sort of reasonable expectation?
