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:
jp9000
2014-03-16 18:26:46 -07:00
parent 3ed647b8a0
commit 154e0c59e1
15 changed files with 84 additions and 76 deletions

View File

@@ -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);
}

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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
}