[PATCH] Fix mq_{send, receive, timedreceive} for , non-ADVANCED_REALTIME

Michael Deutschmann michael at talamasca.ocis.net
Sun Jan 16 11:42:06 UTC 2011


On Tue, 11 Jan 2011, Bernhard Reutner-Fischer wrote:
> On Tue, Dec 28, 2010 at 10:00:21AM -0600, Steven J. Magnani wrote:
> >Disable compilation of librt files that depend on ADVANCED_REALTIME.
> >On microblaze, which does not have ADVANCED_REALTIME, 0.9.32-rc1 builds fail with

> That falls under SUSv4 audit. Postponed since mq requires
> ADVANCED_REALTIME, really.

I'd disagee there.  That REALTIME && !ADVANCED_REALTIME fails to compile
in stock 0.9.32-rc1 is a showstopper.

I would also consider this setting rather common.  Nothing on my system
uses librt, so there is no point (other than supressing this bug) in
turning on ADVANCED_REALTIME.  Yet I'm compelled to turn on REALTIME
because this setting also controls a few vital functions (nanosleep and
sched_*) in the libc itself.

That said, it looks like the original patch is not a valid answer, since
the files that break due to this bug are still vital to provide the API
promised by REALTIME.  A better short-term hack would be to do:

#include <features.h>
#undef __UCLIBC_HAS_ADVANCED_REALTIME
#define __UCLIBC_HAS_ADVANCED_REALTIME 1

at the start of the relevant files, as all that is needed is valid
prototypes for certain "advanced" functions.

---- Michael Deutschmann <michael at talamasca.ocis.net>


More information about the uClibc mailing list