SDL: support unofficial (not in the OSD class) num_processors API used by chdman. Allows chdman to use multiple cores/processors on non-Windows. [R. Belmont]

This commit is contained in:
R. Belmont 2012-02-26 22:55:18 +00:00
parent 569dc10219
commit a0b7883fa3
9 changed files with 17 additions and 21 deletions

View File

@ -269,6 +269,6 @@ void sdlaudio_init(running_machine &machine);
// sdlwork.c
//============================================================
extern int sdl_num_processors;
extern int osd_num_processors;
#endif

View File

@ -609,15 +609,15 @@ void sdl_osd_interface::init(running_machine &machine)
/* get number of processors */
stemp = options.numprocessors();
sdl_num_processors = 0;
osd_num_processors = 0;
if (strcmp(stemp, "auto") != 0)
{
sdl_num_processors = atoi(stemp);
if (sdl_num_processors < 1)
osd_num_processors = atoi(stemp);
if (osd_num_processors < 1)
{
mame_printf_warning("Warning: numprocessors < 1 doesn't make much sense. Assuming auto ...\n");
sdl_num_processors = 0;
osd_num_processors = 0;
}
}

View File

@ -23,7 +23,7 @@
Number of processors
-----------------------------------------------------------------------------*/
int osd_num_processors(void);
int osd_get_num_processors(void);
/*-----------------------------------------------------------------------------

View File

@ -142,7 +142,7 @@ void osd_sleep(osd_ticks_t duration)
// osd_num_processors
//============================================================
int osd_num_processors(void)
int osd_get_num_processors(void)
{
int processors = 1;

View File

@ -175,7 +175,7 @@ void osd_sleep(osd_ticks_t duration)
// osd_num_processors
//============================================================
int osd_num_processors(void)
int osd_get_num_processors(void)
{
ULONG numprocs = 1;

View File

@ -67,7 +67,7 @@ void osd_sleep(osd_ticks_t duration)
// osd_num_processors
//============================================================
int osd_num_processors(void)
int osd_get_num_processors(void)
{
int processors = 1;

View File

@ -160,7 +160,7 @@ void osd_sleep(osd_ticks_t duration)
// osd_num_processors
//============================================================
int osd_num_processors(void)
int osd_get_num_processors(void)
{
SYSTEM_INFO info;

View File

@ -16,7 +16,7 @@
* This is not really a sound solution.
*/
int sdl_num_processors = 0;
int osd_num_processors = 0;
#include "../osdmini/miniwork.c"
@ -131,7 +131,7 @@ typedef void *PVOID;
// GLOBAL VARIABLES
//============================================================
int sdl_num_processors = 0;
int osd_num_processors = 0;
//============================================================
// FUNCTION PROTOTYPES
@ -567,10 +567,11 @@ static int effective_num_processors(void)
{
char *procsoverride;
int numprocs = 0;
int physprocs = osd_num_processors();
int physprocs = osd_get_num_processors();
if (sdl_num_processors > 0)
return MIN(4 * physprocs, sdl_num_processors);
// osd_num_processors == 0 for 'auto'
if (osd_num_processors > 0)
return MIN(4 * physprocs, osd_num_processors);
else
{
// if the OSDPROCESSORS environment variable is set, use that value if valid
@ -601,7 +602,7 @@ static UINT32 effective_cpu_mask(int index)
if (index<2)
mask = 0x01; /* main thread and io threads on cpu #0 */
else
mask = (1 << (((index - 1) % (osd_num_processors() - 1)) + 1));
mask = (1 << (((index - 1) % (osd_get_num_processors() - 1)) + 1));
}
else
{

View File

@ -52,12 +52,7 @@
#include <ctype.h>
#include <new>
#ifdef _WIN32
#define NUM_PROCESSORS_SUPPORTED 1
#else
#define NUM_PROCESSORS_SUPPORTED 0
#endif
//**************************************************************************
// CONSTANTS & DEFINES