]> git.lizzy.rs Git - minetest.git/blobdiff - src/porting.h
Merge remote branch 'origin/master'
[minetest.git] / src / porting.h
index 53aad61715c42ffa7bf88b02b995a0dc15218187..d7d1073406e69a558d1452aa29b1e42e5178e374 100644 (file)
@@ -40,6 +40,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 //#define ALIGNOF(type) offsetof (alignment_trick<type>, member)
 
 #ifdef _WIN32
+       #ifndef _WIN32_WINNT
+               #define _WIN32_WINNT 0x0500
+       #endif
        #include <windows.h>
        
        #define sleep_ms(x) Sleep(x)
@@ -47,7 +50,32 @@ with this program; if not, write to the Free Software Foundation, Inc.,
        #include <unistd.h>
        #include <stdint.h> //for uintptr_t
        
+       #if (defined(linux) || defined(__linux)) && !defined(_GNU_SOURCE)
+               #define _GNU_SOURCE
+       #endif
+
+       #include <sched.h>
+
+       #ifdef __FreeBSD__
+               #include <pthread_np.h>
+               typedef cpuset_t cpu_set_t;
+       #elif defined(__sun) || defined(sun)
+               #include <sys/types.h>
+               #include <sys/processor.h>
+       #elif defined(_AIX)
+               #include <sys/processor.h>
+       #elif __APPLE__
+               #include <mach/mach_init.h>
+               #include <mach/thread_policy.h>
+       #endif
+
        #define sleep_ms(x) usleep(x*1000)
+       
+       #define THREAD_PRIORITY_LOWEST       0
+       #define THREAD_PRIORITY_BELOW_NORMAL 1
+       #define THREAD_PRIORITY_NORMAL       2
+       #define THREAD_PRIORITY_ABOVE_NORMAL 3
+       #define THREAD_PRIORITY_HIGHEST      4
 #endif
 
 #ifdef _MSC_VER
@@ -108,6 +136,16 @@ void initializePaths();
 */
 int getNumberOfProcessors();
 
+/*
+       Set a thread's affinity to a particular processor.
+*/
+bool threadBindToProcessor(threadid_t tid, int pnumber);
+
+/*
+       Set a thread's priority.
+*/
+bool threadSetPriority(threadid_t tid, int prio);
+
 /*
        Resolution is 10-20ms.
        Remember to check for overflows.