android: Provide a fallback for sigwaitinfo()

This commit is contained in:
Tobias Brunner 2015-11-11 16:54:47 +01:00
parent 9be6b2e0b5
commit 073761ec41

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2010 Tobias Brunner * Copyright (C) 2010-2015 Tobias Brunner
* Hochschule fuer Technik Rapperswil * Hochschule fuer Technik Rapperswil
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
@ -21,6 +21,8 @@
#ifndef ANDROID_H_ #ifndef ANDROID_H_
#define ANDROID_H_ #define ANDROID_H_
#include <android/api-level.h>
/* stuff defined in AndroidConfig.h, which is included using the -include /* stuff defined in AndroidConfig.h, which is included using the -include
* command-line option, thus cannot be undefined using -U CFLAGS options. * command-line option, thus cannot be undefined using -U CFLAGS options.
* the reason we have to undefine these flags in the first place, is that * the reason we have to undefine these flags in the first place, is that
@ -28,4 +30,30 @@
* actually defined. */ * actually defined. */
#undef HAVE_BACKTRACE #undef HAVE_BACKTRACE
/* sigwaitinfo() is not defined up to this API level, provide a fallback */
#if __ANDROID_API__ <= 21
#include <errno.h>
#include <signal.h>
static inline int sigwaitinfo(const sigset_t *set, void *info)
{
int sig, err;
if (info)
{ /* we don't replicate siginfo_t, which we don't use */
errno = EINVAL;
return -1;
}
err = sigwait(set, &sig);
if (err != 0)
{
errno = err;
sig = -1;
}
return sig;
}
#else
#error Check availability of sigwaitinfo() in this API level
#endif
#endif /** ANDROID_H_ @}*/ #endif /** ANDROID_H_ @}*/