Use atomic functions where appropriate
Also, rename atomic functions to be consistent with the rest of the platform/threading functions, and move atomic functions to threading* files rather than platform* files
This commit is contained in:
@@ -116,13 +116,3 @@ int os_mkdir(const char *path)
|
||||
|
||||
return (errno == EEXIST) ? MKDIR_EXISTS : MKDIR_ERROR;
|
||||
}
|
||||
|
||||
long atomic_inc_long(volatile long *val)
|
||||
{
|
||||
return __sync_fetch_and_add(val, 1);
|
||||
}
|
||||
|
||||
long atomic_dec_long(volatile long *val)
|
||||
{
|
||||
return __sync_fetch_and_sub(val, 1);
|
||||
}
|
||||
|
@@ -185,16 +185,6 @@ int os_mkdir(const char *path)
|
||||
return MKDIR_SUCCESS;
|
||||
}
|
||||
|
||||
long atomic_inc_long(volatile long *val)
|
||||
{
|
||||
return InterlockedIncrement(val);
|
||||
}
|
||||
|
||||
long atomic_dec_long(volatile long *val)
|
||||
{
|
||||
return InterlockedDecrement(val);
|
||||
}
|
||||
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE hinst_dll, DWORD reason, LPVOID reserved)
|
||||
{
|
||||
|
@@ -76,9 +76,6 @@ EXPORT char *os_get_config_path(const char *name);
|
||||
|
||||
EXPORT bool os_file_exists(const char *path);
|
||||
|
||||
EXPORT long atomic_inc_long(volatile long *val);
|
||||
EXPORT long atomic_dec_long(volatile long *val);
|
||||
|
||||
#define MKDIR_EXISTS 1
|
||||
#define MKDIR_SUCCESS 0
|
||||
#define MKDIR_ERROR -1
|
||||
|
@@ -235,3 +235,13 @@ int os_sem_wait(os_sem_t sem)
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
long os_atomic_inc_long(volatile long *val)
|
||||
{
|
||||
return __sync_fetch_and_add(val, 1);
|
||||
}
|
||||
|
||||
long os_atomic_dec_long(volatile long *val)
|
||||
{
|
||||
return __sync_fetch_and_sub(val, 1);
|
||||
}
|
||||
|
@@ -150,3 +150,13 @@ int os_sem_wait(os_sem_t sem)
|
||||
ret = WaitForSingleObject(sem->handle, INFINITE);
|
||||
return (ret == WAIT_OBJECT_0) ? 0 : -1;
|
||||
}
|
||||
|
||||
long os_atomic_inc_long(volatile long *val)
|
||||
{
|
||||
return InterlockedIncrement(val);
|
||||
}
|
||||
|
||||
long os_atomic_dec_long(volatile long *val)
|
||||
{
|
||||
return InterlockedDecrement(val);
|
||||
}
|
||||
|
@@ -67,6 +67,9 @@ EXPORT void os_sem_destroy(os_sem_t sem);
|
||||
EXPORT int os_sem_post(os_sem_t sem);
|
||||
EXPORT int os_sem_wait(os_sem_t sem);
|
||||
|
||||
EXPORT long os_atomic_inc_long(volatile long *val);
|
||||
EXPORT long os_atomic_dec_long(volatile long *val);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
Reference in New Issue
Block a user