Merge tag 'v0.20.17'

release v0.20.17
This commit is contained in:
Max Kellermann
2018-02-11 13:22:43 +01:00
21 changed files with 150 additions and 24 deletions

View File

@@ -38,10 +38,12 @@
#include <windows.h>
#endif
#if defined(__linux__) && !defined(ANDROID)
#ifdef __linux__
#ifndef ANDROID
static int
ioprio_set(int which, int who, int ioprio) noexcept
linux_ioprio_set(int which, int who, int ioprio) noexcept
{
return syscall(__NR_ioprio_set, which, who, ioprio);
}
@@ -55,7 +57,21 @@ ioprio_set_idle() noexcept
static constexpr int _IOPRIO_IDLE =
(_IOPRIO_CLASS_IDLE << _IOPRIO_CLASS_SHIFT) | 7;
ioprio_set(_IOPRIO_WHO_PROCESS, 0, _IOPRIO_IDLE);
linux_ioprio_set(_IOPRIO_WHO_PROCESS, 0, _IOPRIO_IDLE);
}
#endif /* !ANDROID */
/**
* Wrapper for the "sched_setscheduler" system call. We don't use the
* one from the C library because Musl has an intentionally broken
* implementation.
*/
static int
linux_sched_setscheduler(pid_t pid, int sched,
const struct sched_param *param) noexcept
{
return syscall(__NR_sched_setscheduler, pid, sched, param);
}
#endif
@@ -66,7 +82,7 @@ SetThreadIdlePriority() noexcept
#ifdef __linux__
#ifdef SCHED_IDLE
static struct sched_param sched_param;
sched_setscheduler(0, SCHED_IDLE, &sched_param);
linux_sched_setscheduler(0, SCHED_IDLE, &sched_param);
#endif
#ifndef ANDROID
@@ -92,7 +108,7 @@ SetThreadRealtime()
policy |= SCHED_RESET_ON_FORK;
#endif
if (sched_setscheduler(0, policy, &sched_param) < 0)
if (linux_sched_setscheduler(0, policy, &sched_param) < 0)
throw MakeErrno("sched_setscheduler failed");
#endif // __linux__
};