From 34fe8bd893ed9c7531bc4898b934ef9d4cdf3e68 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 1 Sep 2004 00:23:51 +0000 Subject: add support for SCHED_FIFO git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@163 fefdeb5f-60dc-0310-8127-8f9354f1896f --- polyp/util.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'polyp/util.c') diff --git a/polyp/util.c b/polyp/util.c index 6c8febb6..0d930118 100644 --- a/polyp/util.c +++ b/polyp/util.c @@ -37,6 +37,8 @@ #include #include #include +#include +#include #include "util.h" #include "xmalloc.h" @@ -83,7 +85,7 @@ ssize_t pa_loop_read(int fd, void*data, size_t size) { break; ret += r; - data += r; + data = (uint8_t*) data + r; size -= r; } @@ -104,7 +106,7 @@ ssize_t pa_loop_write(int fd, const void*data, size_t size) { break; ret += r; - data += r; + data = (uint8_t*) data + r; size -= r; } @@ -213,3 +215,37 @@ uint32_t pa_age(struct timeval *tv) { return r; } + +#define NICE_LEVEL (-15) + +void pa_raise_priority(void) { + if (setpriority(PRIO_PROCESS, 0, NICE_LEVEL) < 0) + fprintf(stderr, __FILE__": setpriority() failed: %s\n", strerror(errno)); + else + fprintf(stderr, __FILE__": Successfully gained nice level %i.\n", NICE_LEVEL); + +#ifdef _POSIX_PRIORITY_SCHEDULING + { + struct sched_param sp; + sched_getparam(0, &sp); + sp.sched_priority = 1; + if (sched_setscheduler(0, SCHED_FIFO, &sp) < 0) + fprintf(stderr, __FILE__": sched_setscheduler() failed: %s\n", strerror(errno)); + else + fprintf(stderr, __FILE__": Successfully gained SCHED_FIFO scheduling.\n"); + } +#endif +} + +void pa_reset_priority(void) { +#ifdef _POSIX_PRIORITY_SCHEDULING + { + struct sched_param sp; + sched_getparam(0, &sp); + sp.sched_priority = 0; + sched_setscheduler(0, SCHED_OTHER, &sp); + } +#endif + + setpriority(PRIO_PROCESS, 0, 0); +} -- cgit