diff options
-rw-r--r-- | src/osd/modules/sync/osdsync.h (renamed from src/osd/windows/winsync.h) | 6 | ||||
-rw-r--r-- | src/osd/modules/sync/sync_mini.c (renamed from src/osd/sdl/sdlsync_mini.c) | 4 | ||||
-rw-r--r-- | src/osd/modules/sync/sync_ntc.c (renamed from src/osd/sdl/sdlsync_ntc.c) | 2 | ||||
-rw-r--r-- | src/osd/modules/sync/sync_os2.c (renamed from src/osd/sdl/sdlsync_os2.c) | 2 | ||||
-rw-r--r-- | src/osd/modules/sync/sync_sdl.c (renamed from src/osd/sdl/sdlsync_sdl.c) | 2 | ||||
-rw-r--r-- | src/osd/modules/sync/sync_tc.c (renamed from src/osd/sdl/sdlsync_tc.c) | 2 | ||||
-rw-r--r-- | src/osd/modules/sync/sync_windows.c (renamed from src/osd/windows/winsync.c) | 2 | ||||
-rw-r--r-- | src/osd/osdmini/miniwork.c | 4 | ||||
-rw-r--r-- | src/osd/sdl/sdl.mak | 6 | ||||
-rw-r--r-- | src/osd/sdl/sdlsync.h | 204 | ||||
-rw-r--r-- | src/osd/sdl/sdlsync_win32.c | 12 | ||||
-rw-r--r-- | src/osd/sdl/sdlwork.c | 11 | ||||
-rw-r--r-- | src/osd/sdl/watchdog.h | 2 | ||||
-rw-r--r-- | src/osd/sdl/window.h | 2 | ||||
-rw-r--r-- | src/osd/windows/osinline.h | 20 | ||||
-rw-r--r-- | src/osd/windows/windows.mak | 4 | ||||
-rw-r--r-- | src/osd/windows/winmain.c | 2 | ||||
-rw-r--r-- | src/osd/windows/winwork.c | 26 |
18 files changed, 44 insertions, 269 deletions
diff --git a/src/osd/windows/winsync.h b/src/osd/modules/sync/osdsync.h index 725d459366d..5d166eb5145 100644 --- a/src/osd/windows/winsync.h +++ b/src/osd/modules/sync/osdsync.h @@ -7,8 +7,8 @@ // //============================================================ -#ifndef __WINSYNC__ -#define __WINSYNC__ +#ifndef __OSDSYNC__ +#define __OSDSYNC__ /*************************************************************************** SYNCHRONIZATION INTERFACES - Events @@ -197,4 +197,4 @@ void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot); void osd_scalable_lock_free(osd_scalable_lock *lock); -#endif /* __WINSYNC__ */ +#endif /* __OSDSYNC__ */ diff --git a/src/osd/sdl/sdlsync_mini.c b/src/osd/modules/sync/sync_mini.c index 91ea06c17dc..8f10cbaa65b 100644 --- a/src/osd/sdl/sdlsync_mini.c +++ b/src/osd/modules/sync/sync_mini.c @@ -7,9 +7,7 @@ //============================================================ #include "osdcore.h" -#include "sdlsync.h" - -#define USE_SCALABLE_LOCKS (0) +#include "osdsync.h" struct _osd_event { diff --git a/src/osd/sdl/sdlsync_ntc.c b/src/osd/modules/sync/sync_ntc.c index 1c7158198ed..0ec99b2094a 100644 --- a/src/osd/sdl/sdlsync_ntc.c +++ b/src/osd/modules/sync/sync_ntc.c @@ -32,7 +32,7 @@ // MAME headers #include "osdcore.h" #include "osinline.h" -#include "sdlsync.h" +#include "osdsync.h" #include "eminline.h" diff --git a/src/osd/sdl/sdlsync_os2.c b/src/osd/modules/sync/sync_os2.c index 32d07cc59fe..6ae91d4d408 100644 --- a/src/osd/sdl/sdlsync_os2.c +++ b/src/osd/modules/sync/sync_os2.c @@ -22,7 +22,7 @@ // MAME headers #include "osdcore.h" #include "osinline.h" -#include "sdlsync.h" +#include "osdsync.h" #include "eminline.h" diff --git a/src/osd/sdl/sdlsync_sdl.c b/src/osd/modules/sync/sync_sdl.c index 80bb4607c0a..fe1fdafe0bc 100644 --- a/src/osd/sdl/sdlsync_sdl.c +++ b/src/osd/modules/sync/sync_sdl.c @@ -17,7 +17,7 @@ // MAME headers #include "osdcore.h" #include "osinline.h" -#include "sdlsync.h" +#include "osdsync.h" #include "eminline.h" diff --git a/src/osd/sdl/sdlsync_tc.c b/src/osd/modules/sync/sync_tc.c index f26a438ea19..3a1e8ec8d17 100644 --- a/src/osd/sdl/sdlsync_tc.c +++ b/src/osd/modules/sync/sync_tc.c @@ -28,7 +28,7 @@ #include "osdcomm.h" #include "osdcore.h" -#include "sdlsync.h" +#include "osdsync.h" #include <pthread.h> #include <errno.h> diff --git a/src/osd/windows/winsync.c b/src/osd/modules/sync/sync_windows.c index ce69cea1651..8326ce41f29 100644 --- a/src/osd/windows/winsync.c +++ b/src/osd/modules/sync/sync_windows.c @@ -15,7 +15,7 @@ // MAME headers #include "osdcore.h" #include "osinline.h" -#include "winsync.h" +#include "osdsync.h" //============================================================ diff --git a/src/osd/osdmini/miniwork.c b/src/osd/osdmini/miniwork.c index 0e98ca356db..fd359c6ee40 100644 --- a/src/osd/osdmini/miniwork.c +++ b/src/osd/osdmini/miniwork.c @@ -19,7 +19,11 @@ struct osd_work_item void *result; }; +//============================================================ +// GLOBAL VARIABLES +//============================================================ +int osd_num_processors = 0; //============================================================ // osd_work_queue_alloc diff --git a/src/osd/sdl/sdl.mak b/src/osd/sdl/sdl.mak index e5394aaf797..834c720b848 100644 --- a/src/osd/sdl/sdl.mak +++ b/src/osd/sdl/sdl.mak @@ -322,7 +322,7 @@ endif ifeq ($(TARGETOS),win32) BASE_TARGETOS = win32 -SYNC_IMPLEMENTATION = win32 +SYNC_IMPLEMENTATION = windows NO_X11 = 1 NO_USE_XINPUT = 1 DEFS += -DSDLMAME_WIN32 -DX64_WINDOWS_ABI @@ -391,7 +391,7 @@ endif SDLSRC = $(SRC)/osd/$(OSD) SDLOBJ = $(OBJ)/osd/$(OSD) -OBJDIRS += $(SDLOBJ) +OBJDIRS += $(SDLOBJ) $(OSDOBJ)/modules/sync #------------------------------------------------- # OSD core library @@ -405,7 +405,7 @@ OSDCOREOBJS = \ $(SDLOBJ)/sdlsocket.o \ $(SDLOBJ)/sdlmisc_$(BASE_TARGETOS).o \ $(SDLOBJ)/sdlos_$(SDLOS_TARGETOS).o \ - $(SDLOBJ)/sdlsync_$(SYNC_IMPLEMENTATION).o \ + $(OSDOBJ)/modules/sync/sync_$(SYNC_IMPLEMENTATION).o \ $(SDLOBJ)/sdlwork.o # any "main" must be in LIBOSD or else the build will fail! diff --git a/src/osd/sdl/sdlsync.h b/src/osd/sdl/sdlsync.h deleted file mode 100644 index 8f27f649816..00000000000 --- a/src/osd/sdl/sdlsync.h +++ /dev/null @@ -1,204 +0,0 @@ -//============================================================ -// -// sdlsync.h - SDL core synchronization functions -// -// Copyright (c) 1996-2007, Nicola Salmoria and the MAME Team. -// Visit http://mamedev.org for licensing and usage restrictions. -// -// SDLMAME by Olivier Galibert and R. Belmont -// -//============================================================ - -#ifndef __SDLSYNC__ -#define __SDLSYNC__ - -/*************************************************************************** - SYNCHRONIZATION INTERFACES - Events -***************************************************************************/ - -/* osd_event is an opaque type which represents a setable/resetable event */ - -struct osd_event; - - -/*----------------------------------------------------------------------------- - osd_lock_event_alloc: allocate a new event - - Parameters: - - manualreset - boolean. If true, the event will be automatically set - to non-signalled after a thread successfully waited for - it. - initialstate - boolean. If true, the event is signalled initially. - - Return value: - - A pointer to the allocated event. ------------------------------------------------------------------------------*/ -osd_event *osd_event_alloc(int manualreset, int initialstate); - - -/*----------------------------------------------------------------------------- - osd_event_wait: wait for an event to be signalled - - Parameters: - - event - The event to wait for. If the event is in signalled state, the - function returns immediately. If not it will wait for the event - to become signalled. - timeout - timeout in osd_ticks - - Return value: - - TRUE: The event was signalled - FALSE: A timeout occurred ------------------------------------------------------------------------------*/ -int osd_event_wait(osd_event *event, osd_ticks_t timeout); - - -/*----------------------------------------------------------------------------- - osd_event_reset: reset an event to non-signalled state - - Parameters: - - event - The event to set to non-signalled state - - Return value: - - None ------------------------------------------------------------------------------*/ -void osd_event_reset(osd_event *event); - - -/*----------------------------------------------------------------------------- - osd_event_set: set an event to signalled state - - Parameters: - - event - The event to set to signalled state - - Return value: - - None - - Notes: - - All threads waiting for the event will be signalled. ------------------------------------------------------------------------------*/ -void osd_event_set(osd_event *event); - - -/*----------------------------------------------------------------------------- - osd_event_free: free the memory and resources associated with an osd_event - - Parameters: - - event - a pointer to a previously allocated osd_event. - - Return value: - - None. ------------------------------------------------------------------------------*/ -void osd_event_free(osd_event *event); - - -/*************************************************************************** - SYNCHRONIZATION INTERFACES - Threads -***************************************************************************/ - -/* osd_thread is an opaque type which represents a thread */ -struct osd_thread; - - -/* osd_thread_callback is a callback function that will be called from the thread */ -typedef void *(*osd_thread_callback)(void *param); - - -/*----------------------------------------------------------------------------- - osd_thread_create: create a new thread - - Parameters: - - callback - The callback function to be called once the thread is up - cbparam - The parameter to pass to the callback function. - - Return value: - - A pointer to the created thread. ------------------------------------------------------------------------------*/ -osd_thread *osd_thread_create(osd_thread_callback callback, void *cbparam); - - -/*----------------------------------------------------------------------------- - osd_thread_adjust_priority: adjust priority of a thread - - Parameters: - - thread - A pointer to a previously created thread. - adjust - signed integer to add to the thread priority - - Return value: - - TRUE on success, FALSE on failure ------------------------------------------------------------------------------*/ -int osd_thread_adjust_priority(osd_thread *thread, int adjust); - - -/*----------------------------------------------------------------------------- - osd_thread_cpu_affinity: change cpu affinity of a thread - - Parameters: - - thread - A pointer to a previously created thread - or NULL for main thread - mask - bitmask to which cpus to bind - i.e. 0x01 1st cpu, 0x02, 2nd cpu, 0x04 3rd cpu - - Return value: - - TRUE on success, FALSE on failure ------------------------------------------------------------------------------*/ -int osd_thread_cpu_affinity(osd_thread *thread, UINT32 mask); - - -/*----------------------------------------------------------------------------- - osd_thread_wait_free: wait for thread to finish and free resources - - Parameters: - - thread - A pointer to a previously created thread. - - Return value: - - None. ------------------------------------------------------------------------------*/ -void osd_thread_wait_free(osd_thread *thread); - -/*----------------------------------------------------------------------------- - osd_process_kill: kill the current process - - Parameters: - - None. - - Return value: - - None. ------------------------------------------------------------------------------*/ -void osd_process_kill(void); - -//============================================================ -// Scalable Locks -//============================================================ - -struct osd_scalable_lock; - -osd_scalable_lock *osd_scalable_lock_alloc(void); - -INT32 osd_scalable_lock_acquire(osd_scalable_lock *lock); - -void osd_scalable_lock_release(osd_scalable_lock *lock, INT32 myslot); - -void osd_scalable_lock_free(osd_scalable_lock *lock); - -#endif /* __SDLSYNC__ */ diff --git a/src/osd/sdl/sdlsync_win32.c b/src/osd/sdl/sdlsync_win32.c deleted file mode 100644 index 72f729d6937..00000000000 --- a/src/osd/sdl/sdlsync_win32.c +++ /dev/null @@ -1,12 +0,0 @@ -//============================================================ -// -// sdlsync.c - SDL core synchronization functions -// -// Copyright (c) 1996-2010, Nicola Salmoria and the MAME Team. -// Visit http://mamedev.org for licensing and usage restrictions. -// -// SDLMAME by Olivier Galibert and R. Belmont -// -//============================================================ - -#include "../windows/winsync.c" diff --git a/src/osd/sdl/sdlwork.c b/src/osd/sdl/sdlwork.c index a5d1a32644a..d07533245a6 100644 --- a/src/osd/sdl/sdlwork.c +++ b/src/osd/sdl/sdlwork.c @@ -11,13 +11,6 @@ #if defined(SDLMAME_NOASM) -/* must be exported - * FIXME: NOASM should be taken care of in sdlsync.c - * This is not really a sound solution. - */ - -int osd_num_processors = 0; - #include "../osdmini/miniwork.c" #else @@ -25,7 +18,7 @@ int osd_num_processors = 0; #include "osdcore.h" #include "osinline.h" -#include "sdlsync.h" +#include "modules/sync/osdsync.h" #include "sdlos.h" #include "eminline.h" @@ -65,8 +58,6 @@ int osd_num_processors = 0; #define end_timing(v) do { } while (0) #endif - - //============================================================ // TYPE DEFINITIONS //============================================================ diff --git a/src/osd/sdl/watchdog.h b/src/osd/sdl/watchdog.h index 1d370ec4ac0..fbb3410eb95 100644 --- a/src/osd/sdl/watchdog.h +++ b/src/osd/sdl/watchdog.h @@ -11,7 +11,7 @@ // //============================================================ -#include "sdlsync.h" +#include "modules/sync/osdsync.h" class watchdog { diff --git a/src/osd/sdl/window.h b/src/osd/sdl/window.h index b33cd418ac0..a666b984674 100644 --- a/src/osd/sdl/window.h +++ b/src/osd/sdl/window.h @@ -15,7 +15,7 @@ #include "sdlinc.h" #include "video.h" #include "render.h" -#include "sdlsync.h" +#include "modules/sync/osdsync.h" #include "osd_opengl.h" #include "osdsdl.h" diff --git a/src/osd/windows/osinline.h b/src/osd/windows/osinline.h index 3e28c982cf3..8299cbe15ca 100644 --- a/src/osd/windows/osinline.h +++ b/src/osd/windows/osinline.h @@ -19,6 +19,26 @@ #include "eivc.h" #endif +#if __GNUC__ && defined(__i386__) && !defined(__x86_64) +#undef YieldProcessor +#endif + +#ifndef YieldProcessor +#ifdef __GNUC__ +INLINE void osd_yield_processor(void) +{ + __asm__ __volatile__ ( "rep; nop" ); +} +#else +INLINE void osd_yield_processor(void) +{ + __asm { rep nop } +} +#endif +#else +#define osd_yield_processor YieldProcessor +#endif + INT32 win_compare_exchange32(INT32 volatile *ptr, INT32 compare, INT32 exchange); INT32 win_atomic_exchange32(INT32 volatile *ptr, INT32 exchange); INT32 win_atomic_add32(INT32 volatile *ptr, INT32 delta); diff --git a/src/osd/windows/windows.mak b/src/osd/windows/windows.mak index ed1c6f47a2d..f268ade1e8b 100644 --- a/src/osd/windows/windows.mak +++ b/src/osd/windows/windows.mak @@ -84,7 +84,7 @@ WINOBJ = $(OBJ)/osd/$(OSD) OSDSRC = $(SRC)/osd OSDOBJ = $(OBJ)/osd -OBJDIRS += $(WINOBJ) +OBJDIRS += $(WINOBJ) $(OSDOBJ)/modules/sync ifdef USE_QTDEBUG OBJDIRS += $(OSDOBJ)/modules/debugger/qt @@ -339,7 +339,7 @@ OSDCOREOBJS = \ $(WINOBJ)/windir.o \ $(WINOBJ)/winfile.o \ $(WINOBJ)/winmisc.o \ - $(WINOBJ)/winsync.o \ + $(OSDOBJ)/modules/sync/sync_windows.o \ $(WINOBJ)/wintime.o \ $(WINOBJ)/winutf8.o \ $(WINOBJ)/winutil.o \ diff --git a/src/osd/windows/winmain.c b/src/osd/windows/winmain.c index ced07aa9be7..e36ab212cb1 100644 --- a/src/osd/windows/winmain.c +++ b/src/osd/windows/winmain.c @@ -219,8 +219,6 @@ private: // this line prevents globbing on the command line int _CRT_glob = 0; - - //************************************************************************** // LOCAL VARIABLES //************************************************************************** diff --git a/src/osd/windows/winwork.c b/src/osd/windows/winwork.c index 3ec044864ec..c55511a6446 100644 --- a/src/osd/windows/winwork.c +++ b/src/osd/windows/winwork.c @@ -20,11 +20,13 @@ // MAME headers #include "osdcore.h" -#include "winsync.h" +#include "modules/sync/osdsync.h" #include "winos.h" #include "eminline.h" +#include "osinline.h" + //============================================================ // DEBUGGING @@ -57,28 +59,6 @@ #define end_timing(v) do { } while (0) #endif -#if __GNUC__ && defined(__i386__) && !defined(__x86_64) -#undef YieldProcessor -#endif - -#ifndef YieldProcessor -#ifdef __GNUC__ -INLINE void osd_yield_processor(void) -{ - __asm__ __volatile__ ( "rep; nop" ); -} -#else -INLINE void osd_yield_processor(void) -{ - __asm { rep nop } -} -#endif -#else -#define osd_yield_processor YieldProcessor -#endif - - - //============================================================ // TYPE DEFINITIONS //============================================================ |