Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
497f9aff
Commit
497f9aff
authored
Jun 29, 2011
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vlc_GetCPUCount(): move to thread subsystem (cosmetic)
parent
13c9ba8e
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
102 additions
and
86 deletions
+102
-86
include/vlc_cpu.h
include/vlc_cpu.h
+0
-1
include/vlc_threads.h
include/vlc_threads.h
+2
-0
src/misc/cpu.c
src/misc/cpu.c
+0
-85
src/posix/thread.c
src/posix/thread.c
+78
-0
src/win32/thread.c
src/win32/thread.c
+22
-0
No files found.
include/vlc_cpu.h
View file @
497f9aff
...
...
@@ -63,7 +63,6 @@
# endif
VLC_API
unsigned
vlc_CPU
(
void
);
VLC_API
unsigned
vlc_GetCPUCount
(
void
);
/** Are floating point operations fast?
* If this bit is not set, you should try to use fixed-point instead.
...
...
include/vlc_threads.h
View file @
497f9aff
...
...
@@ -205,6 +205,8 @@ VLC_API void vlc_timer_destroy(vlc_timer_t);
VLC_API
void
vlc_timer_schedule
(
vlc_timer_t
,
bool
,
mtime_t
,
mtime_t
);
VLC_API
unsigned
vlc_timer_getoverrun
(
vlc_timer_t
)
VLC_USED
;
VLC_API
unsigned
vlc_GetCPUCount
(
void
);
#ifndef LIBVLC_USE_PTHREAD_CANCEL
enum
{
VLC_CLEANUP_PUSH
,
...
...
src/misc/cpu.c
View file @
497f9aff
...
...
@@ -45,23 +45,6 @@
#include "libvlc.h"
#if defined(__APPLE__)
#include <sys/sysctl.h>
#endif
#if defined(__OpenBSD__)
#include <sys/param.h>
#include <sys/sysctl.h>
#include <machine/cpu.h>
#endif
#if defined(__SunOS)
#include <unistd.h>
#include <sys/types.h>
#include <sys/processor.h>
#include <sys/pset.h>
#endif
#if defined( __i386__ ) || defined( __x86_64__ ) || defined( __powerpc__ ) \
|| defined( __ppc__ ) || defined( __ppc64__ ) || defined( __powerpc64__ )
# ifndef WIN32
...
...
@@ -317,73 +300,6 @@ unsigned vlc_CPU (void)
return
cpu_flags
;
}
/**
* Return the number of available logical CPU.
*/
unsigned
vlc_GetCPUCount
(
void
)
{
#if defined(WIN32) && !defined(UNDER_CE)
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 defined(__SYMBIAN32__)
return
1
;
#elif defined(HAVE_SCHED_GETAFFINITY)
cpu_set_t
cpu
;
CPU_ZERO
(
&
cpu
);
if
(
sched_getaffinity
(
getpid
(),
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
;
#elif defined(__APPLE__)
int
count
;
size_t
size
=
sizeof
(
count
)
;
if
(
sysctlbyname
(
"hw.ncpu"
,
&
count
,
&
size
,
NULL
,
0
))
return
1
;
/* Failure */
return
count
;
#elif defined(__OpenBSD__)
int
selectors
[
2
]
=
{
CTL_HW
,
HW_NCPU
};
int
count
;
size_t
size
=
sizeof
(
count
)
;
if
(
sysctl
(
selectors
,
2
,
&
count
,
&
size
,
NULL
,
0
))
return
1
;
/* Failure */
return
count
;
#elif defined(__SunOS)
unsigned
count
=
0
;
int
type
;
u_int
numcpus
;
processorid_t
*
cpulist
;
processor_info_t
cpuinfo
;
cpulist
=
malloc
(
sizeof
(
processorid_t
)
*
sysconf
(
_SC_NPROCESSORS_MAX
));
if
(
!
cpulist
)
return
1
;
if
(
pset_info
(
PS_MYID
,
&
type
,
&
numcpus
,
cpulist
)
==
0
)
{
for
(
u_int
i
=
0
;
i
<
numcpus
;
i
++
)
{
if
(
!
processor_info
(
cpulist
[
i
],
&
cpuinfo
))
count
+=
(
cpuinfo
.
pi_state
==
P_ONLINE
)
?
1
:
0
;
}
}
else
{
count
=
sysconf
(
_SC_NPROCESSORS_ONLN
);
}
free
(
cpulist
);
return
(
count
>
0
)
?
count
:
1
;
#else
# warning "vlc_GetCPUCount is not implemented for your platform"
return
1
;
#endif
}
static
vlc_memcpy_t
pf_vlc_memcpy
=
memcpy
;
void
vlc_fastmem_register
(
vlc_memcpy_t
cpy
)
...
...
@@ -427,4 +343,3 @@ void *vlc_memalign(void **base, size_t alignment, size_t size)
return
(
void
*
)((
uintptr_t
)(
p
+
alignment
-
1
)
&
~
(
alignment
-
1
));
#endif
}
src/posix/thread.c
View file @
497f9aff
...
...
@@ -50,8 +50,23 @@
#ifdef __APPLE__
# include <sys/time.h>
/* gettimeofday in vlc_cond_timedwait */
# include <mach/mach_init.h>
/* mach_task_self in semaphores */
# include <sys/sysctl.h>
#endif
#if defined(__OpenBSD__)
# include <sys/param.h>
# include <sys/sysctl.h>
# include <machine/cpu.h>
#endif
#if defined(__SunOS)
# include <unistd.h>
# include <sys/types.h>
# include <sys/processor.h>
# include <sys/pset.h>
#endif
/**
* Print a backtrace to the standard error for debugging purpose.
*/
...
...
@@ -1008,3 +1023,66 @@ unsigned vlc_timer_getoverrun (vlc_timer_t timer)
{
return
vlc_atomic_swap
(
&
timer
->
overruns
,
0
);
}
/**
* Count CPUs.
* @return number of available (logical) CPUs.
*/
unsigned
vlc_GetCPUCount
(
void
)
{
#if defined(HAVE_SCHED_GETAFFINITY)
cpu_set_t
cpu
;
CPU_ZERO
(
&
cpu
);
if
(
sched_getaffinity
(
getpid
(),
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
;
#elif defined(__APPLE__)
int
count
;
size_t
size
=
sizeof
(
count
)
;
if
(
sysctlbyname
(
"hw.ncpu"
,
&
count
,
&
size
,
NULL
,
0
))
return
1
;
/* Failure */
return
count
;
#elif defined(__OpenBSD__)
int
selectors
[
2
]
=
{
CTL_HW
,
HW_NCPU
};
int
count
;
size_t
size
=
sizeof
(
count
);
if
(
sysctl
(
selectors
,
2
,
&
count
,
&
size
,
NULL
,
0
))
return
1
;
/* Failure */
return
count
;
#elif defined(__SunOS)
unsigned
count
=
0
;
int
type
;
u_int
numcpus
;
processor_info_t
cpuinfo
;
processorid_t
*
cpulist
=
malloc
(
sizeof
(
*
cpulist
)
*
sysconf
(
_SC_NPROCESSORS_MAX
));
if
(
unlikely
(
cpulist
==
NULL
))
return
1
;
if
(
pset_info
(
PS_MYID
,
&
type
,
&
numcpus
,
cpulist
)
==
0
)
{
for
(
u_int
i
=
0
;
i
<
numcpus
;
i
++
)
if
(
processor_info
(
cpulist
[
i
],
&
cpuinfo
)
==
0
)
count
+=
(
cpuinfo
.
pi_state
==
P_ONLINE
);
}
else
count
=
sysconf
(
_SC_NPROCESSORS_ONLN
);
free
(
cpulist
);
return
count
?
count
:
1
;
#else
# warning "vlc_GetCPUCount is not implemented for your platform"
return
1
;
#endif
}
src/win32/thread.c
View file @
497f9aff
...
...
@@ -906,3 +906,25 @@ unsigned vlc_timer_getoverrun (vlc_timer_t timer)
(
void
)
timer
;
return
0
;
}
/*** CPU ***/
unsigned
vlc_GetCPUCount
(
void
)
{
#ifndef UNDER_CE
DWORD
process
;
DWORD
system
;
if
(
GetProcessAffinityMask
(
GetCurrentProcess
(),
&
process
,
&
system
))
{
unsigned
count
=
0
;
while
(
system
)
{
count
++
;
system
>>=
1
;
}
return
count
;
}
#endif
return
1
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment