mirror of https://code.videolan.org/videolan/vlc
Added vlc_GetCPUCount() to retreive the number of available CPU.
It is implemented for win32 and when sched_getaffinity() is available.
This commit is contained in:
parent
529a7a1af6
commit
933d6755d4
|
@ -556,7 +556,7 @@ AC_CHECK_FUNCS(fdatasync,,
|
|||
])
|
||||
|
||||
dnl Check for non-standard system calls
|
||||
AC_CHECK_FUNCS([accept4 dup3 eventfd fstatfs vmsplice])
|
||||
AC_CHECK_FUNCS([accept4 dup3 eventfd fstatfs vmsplice sched_getaffinity])
|
||||
|
||||
AH_BOTTOM([#include <vlc_fixups.h>])
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
# endif
|
||||
|
||||
VLC_EXPORT( unsigned, vlc_CPU, ( void ) );
|
||||
VLC_EXPORT( unsigned, vlc_GetCPUCount, ( void ) );
|
||||
|
||||
/** Are floating point operations fast?
|
||||
* If this bit is not set, you should try to use fixed-point instead.
|
||||
|
|
|
@ -493,6 +493,7 @@ vlc_sem_destroy
|
|||
vlc_sem_post
|
||||
vlc_sem_wait
|
||||
vlc_control_cancel
|
||||
vlc_GetCPUCount
|
||||
vlc_CPU
|
||||
vlc_error
|
||||
vlc_event_attach
|
||||
|
|
|
@ -318,6 +318,38 @@ const struct
|
|||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the number of available logical CPU.
|
||||
*/
|
||||
unsigned vlc_GetCPUCount(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
DWORD process_mask;
|
||||
DWORD system_mask;
|
||||
if (!GetProcessAffinityMask(GetCurrentProcess(), &process_mask, &system_mask))
|
||||
return 1;
|
||||
|
||||
unsigned count = 0;
|
||||
while (system_mask) {
|
||||
count++;
|
||||
system_mask >>= 1;
|
||||
}
|
||||
return count;
|
||||
#elif HAVE_SCHED_GETAFFINITY
|
||||
cpu_set_t cpu;
|
||||
CPU_ZERO(&cpu);
|
||||
if (sched_getaffinity(0, sizeof(cpu), &cpu) < 0)
|
||||
return 1;
|
||||
unsigned count = 0;
|
||||
for (unsigned i = 0; i < CPU_SETSIZE; i++)
|
||||
count += CPU_ISSET(i, &cpu) != 0;
|
||||
return count;
|
||||
#else
|
||||
# warning "vlc_GetCPUCount is not implemented for your platform"
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a directory name contains usable plugins w.r.t. the hardware
|
||||
* capabilities. Loading a plugin when the hardware has insufficient
|
||||
|
|
Loading…
Reference in New Issue