2015-07-01 08:02:44 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2015 Andrew Kelley
|
|
|
|
*
|
|
|
|
* This file is part of libsoundio, which is MIT licensed.
|
|
|
|
* See http://opensource.org/licenses/MIT
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SOUNDIO_OS_HPP
|
|
|
|
#define SOUNDIO_OS_HPP
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
|
|
|
|
2015-07-02 09:45:02 +00:00
|
|
|
// safe to call from any thread(s) multiple times, but
|
|
|
|
// must be called at least once before calling any other os functions
|
|
|
|
void soundio_os_init(void);
|
|
|
|
|
2015-07-01 08:02:44 +00:00
|
|
|
double soundio_os_get_time(void);
|
|
|
|
|
|
|
|
struct SoundIoOsThread;
|
|
|
|
int soundio_os_thread_create(
|
|
|
|
void (*run)(void *arg), void *arg,
|
|
|
|
bool high_priority, struct SoundIoOsThread ** out_thread);
|
|
|
|
|
|
|
|
void soundio_os_thread_destroy(struct SoundIoOsThread *thread);
|
|
|
|
|
|
|
|
|
|
|
|
struct SoundIoOsMutex;
|
|
|
|
struct SoundIoOsMutex *soundio_os_mutex_create(void);
|
|
|
|
void soundio_os_mutex_destroy(struct SoundIoOsMutex *mutex);
|
|
|
|
void soundio_os_mutex_lock(struct SoundIoOsMutex *mutex);
|
|
|
|
void soundio_os_mutex_unlock(struct SoundIoOsMutex *mutex);
|
|
|
|
|
|
|
|
struct SoundIoOsCond;
|
2015-07-03 02:15:09 +00:00
|
|
|
struct SoundIoOsCond *soundio_os_cond_create(void);
|
2015-07-01 08:02:44 +00:00
|
|
|
void soundio_os_cond_destroy(struct SoundIoOsCond *cond);
|
|
|
|
|
2015-07-02 09:45:02 +00:00
|
|
|
// locked_mutex is optional. On systems that use mutexes for conditions, if you
|
|
|
|
// pass NULL, a mutex will be created and locked/unlocked for you. On systems
|
|
|
|
// that do not use mutexes for conditions, no mutex handling is necessary. If
|
|
|
|
// you already have a locked mutex available, pass it; this will be better on
|
|
|
|
// systems that use mutexes for conditions.
|
|
|
|
void soundio_os_cond_signal(struct SoundIoOsCond *cond,
|
|
|
|
struct SoundIoOsMutex *locked_mutex);
|
2015-07-01 08:02:44 +00:00
|
|
|
void soundio_os_cond_timed_wait(struct SoundIoOsCond *cond,
|
2015-07-02 09:45:02 +00:00
|
|
|
struct SoundIoOsMutex *locked_mutex, double seconds);
|
2015-07-01 09:37:51 +00:00
|
|
|
void soundio_os_cond_wait(struct SoundIoOsCond *cond,
|
2015-07-02 09:45:02 +00:00
|
|
|
struct SoundIoOsMutex *locked_mutex);
|
2015-07-01 08:02:44 +00:00
|
|
|
|
|
|
|
#endif
|