Module: xenomai-forge Branch: next Commit: b9448efc82999492578788ee6e3204b04d7db003 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=b9448efc82999492578788ee6e3204b04d7db003
Author: Philippe Gerum <r...@xenomai.org> Date: Thu Sep 11 07:35:11 2014 +0200 lib/cobalt: cope with pthread_atfork() placeholder on MMU-less --- lib/cobalt/init.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/cobalt/init.c b/lib/cobalt/init.c index ed4cbb7..8ba9902 100644 --- a/lib/cobalt/init.c +++ b/lib/cobalt/init.c @@ -120,7 +120,6 @@ static void __init_cobalt(void); void __libcobalt_init(void) { struct sigaction sa; - int ret; low_init(); @@ -129,16 +128,21 @@ void __libcobalt_init(void) sa.sa_flags = SA_SIGINFO; sigaction(SIGDEBUG, &sa, &__cobalt_orig_sigdebug); +#ifdef HAVE_PTHREAD_ATFORK /* * Upon fork, in case the parent required init deferral, this * is the forkee's responsibility to call __libcobalt_init() - * for bootstrapping the services the same way. + * for bootstrapping the services the same way. On systems + * with no fork() support, clients are not supposed to, well, + * fork in the first place, so we don't take any provision for + * this event. + * + * NOTE: a placeholder for pthread_atfork() may return an + * error status with uClibc, so we don't check the return + * value on purpose. */ - ret = pthread_atfork(NULL, NULL, __init_cobalt); - if (ret) { - report_error("pthread_atfork: %s", strerror(ret)); - exit(EXIT_FAILURE); - } + pthread_atfork(NULL, NULL, __init_cobalt); +#endif if (sizeof(struct cobalt_mutex_shadow) > sizeof(pthread_mutex_t)) { report_error("sizeof(pthread_mutex_t): %d <" _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git