From 43ddc59fa84e93dc338a1a5838711311d25bcd81 Mon Sep 17 00:00:00 2001 From: Frank Praznik Date: Tue, 2 Nov 2021 16:56:14 -0400 Subject: [PATCH] Export SDL_LinuxSetThreadPriorityAndPolicy() function (#4877) It's marked as being a public symbol internally, however, it was missing from the header files and not visible in the shared library. This adds it to the necessary headers and to the DynAPI list to expose it for use by applications. Co-authored-by: Frank Praznik --- include/SDL_system.h | 12 ++++++++++++ src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 3 +++ src/thread/pthread/SDL_systhread.c | 11 ----------- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/include/SDL_system.h b/include/SDL_system.h index f54300dc6..423c4c3c8 100644 --- a/include/SDL_system.h +++ b/include/SDL_system.h @@ -140,6 +140,18 @@ extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *a * \since This function is available since SDL 2.0.9. */ extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); #endif /* __LINUX__ */ diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index 761d20f17..24975f756 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -824,3 +824,4 @@ #define SDL_vasprintf SDL_vasprintf_REAL #define SDL_GetWindowICCProfile SDL_GetWindowICCProfile_REAL #define SDL_GetTicks64 SDL_GetTicks64_REAL +#define SDL_LinuxSetThreadPriorityAndPolicy SDL_LinuxSetThreadPriorityAndPolicy_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index bafb80b19..c7f7f4837 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -891,3 +891,6 @@ SDL_DYNAPI_PROC(int,SDL_asprintf,(char **a, SDL_PRINTF_FORMAT_STRING const char SDL_DYNAPI_PROC(int,SDL_vasprintf,(char **a, const char *b, va_list c),(a,b,c),return) SDL_DYNAPI_PROC(void*,SDL_GetWindowICCProfile,(SDL_Window *a, size_t *b),(a,b),return) SDL_DYNAPI_PROC(Uint64,SDL_GetTicks64,(void),(),return) +#ifdef __LINUX__ +SDL_DYNAPI_PROC(int,SDL_LinuxSetThreadPriorityAndPolicy,(Sint64 a, int b, int c),(a,b,c),return) +#endif diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c index 800514858..06c550cdf 100644 --- a/src/thread/pthread/SDL_systhread.c +++ b/src/thread/pthread/SDL_systhread.c @@ -183,17 +183,6 @@ SDL_ThreadID(void) return ((SDL_threadID) pthread_self()); } -#if __LINUX__ -/** - \brief Sets the SDL priority (not nice level) for a thread, using setpriority() if appropriate, and RealtimeKit if available. - Differs from SDL_LinuxSetThreadPriority in also taking the desired scheduler policy, - such as SCHED_OTHER or SCHED_RR. - - \return 0 on success, or -1 on error. - */ -extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); -#endif - int SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority) {