From 0d4e0453946cbdde4995b108c2cc0b8431be2168 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Sat, 20 Sep 2008 18:18:06 +0000 Subject: Set processor affinity under non-Windows platforms using the POSIX API. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 1243 --- src/i_main.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/i_main.c') diff --git a/src/i_main.c b/src/i_main.c index 748a72be..74b164b1 100644 --- a/src/i_main.c +++ b/src/i_main.c @@ -32,6 +32,9 @@ #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include +#else +#include +#include #endif #include "doomdef.h" @@ -46,16 +49,27 @@ int main(int argc, char **argv) myargc = argc; myargv = argv; -#ifdef _WIN32 - // Set the process affinity mask to 1 on Windows, so that all threads + // Set the process affinity mask so that all threads // run on the same processor. This is a workaround for a bug in // SDL_mixer that causes occasional crashes. +#ifdef _WIN32 if (!SetProcessAffinityMask(GetCurrentProcess(), 1)) { fprintf(stderr, "Failed to set process affinity mask (%d)\n", (int) GetLastError()); } +#else + // POSIX version: + + { + cpu_set_t set; + + CPU_ZERO(&set); + CPU_SET(0, &set); + + sched_setaffinity(getpid(), sizeof(set), &set); + } #endif // start doom -- cgit v1.2.3