in bits/sched.h, the macro used to control exposure of unshare() and clone() is __USE_MISC (i.e., _SVID_SOURCE || _BSD_SOURCE). Surely this should really be _GNU_SOURCE, since these APIs are Linux specific. (I realise that this might cause source compatibility problems, so perhaps the governing if should then best be changed: #if defined(__USE_MISC) || defined (__USE_GNU) I realised this issue while reviewing the documentation of feature test macros for the manual pages for these calls. To date the FTM requirements were not documented. I plan to document them as _GNU_SOURCE.
> #if defined(__USE_MISC) || defined (__USE_GNU) This makes no sense. __USE_MISC is implied in __USE_GNU. The header is fine.
Agreed -- that last sentence made no sense. But the first point does. Why us __USE_MISC being used to expose Linux-specific definitions? The correct #ifdef should be #ifdef __GNU_SOURCE
Silently fixed as I suggested, in glibc 2.14...