[pulseaudio-discuss] [PATCH 5/5] osx: add routines for real-time thread scheduling
Tanu Kaskinen
tanuk at iki.fi
Sun Mar 20 11:30:44 PDT 2011
On Sun, 2011-03-20 at 18:39 +0100, Daniel Mack wrote:
> Code sniplets are based on examples provided by Apple. See
> http://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/KernelProgramming/scheduler/scheduler.html
> ---
> src/pulsecore/core-util.c | 37 ++++++++++++++++++++++++++++++++++++-
> 1 files changed, 36 insertions(+), 1 deletions(-)
>
> diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
> index a713cae..5747f6e 100644
> --- a/src/pulsecore/core-util.c
> +++ b/src/pulsecore/core-util.c
> @@ -107,6 +107,10 @@
>
> #ifdef __APPLE__
> #include <xlocale.h>
> +#include <mach/mach_init.h>
> +#include <mach/thread_act.h>
> +#include <mach/thread_policy.h>
> +#include <sys/sysctl.h>
> #endif
>
> #ifdef HAVE_DBUS
> @@ -685,7 +689,38 @@ static int set_scheduler(int rtprio) {
> * the thread is already realtime, don't do anything. */
> int pa_make_realtime(int rtprio) {
>
> -#ifdef _POSIX_PRIORITY_SCHEDULING
> +#if defined(OS_IS_DARWIN)
> + struct thread_time_constraint_policy ttcpolicy;
> + uint64_t freq = 0;
> + size_t size = sizeof(freq);
> + int ret;
> +
> + ret = sysctlbyname("hw.cpufrequency", &freq, &size, NULL, 0);
> + if (ret < 0) {
> + pa_log_info("Unable to read CPU frequency using sysctlbyname()");
> + return 0;
Shouldn't the return value be negative here? The log message could also
mention that as a consequence of this failure acquiring real-time
scheduling failed too.
--
Tanu
More information about the pulseaudio-discuss
mailing list