vpx_once: implement once() for OS/2
Change-Id: I9f736f299490464bbdbb6cd24ee6f5b46ad45ec6
This commit is contained in:
Родитель
838b53b9fb
Коммит
f9f996b3e2
|
@ -73,6 +73,33 @@ static void once(void (*func)(void))
|
|||
}
|
||||
|
||||
|
||||
#elif CONFIG_MULTITHREAD && defined(__OS2__)
|
||||
#define INCL_DOS
|
||||
#include <os2.h>
|
||||
static void once(void (*func)(void))
|
||||
{
|
||||
static int done;
|
||||
|
||||
/* If the initialization is complete, return early. */
|
||||
if(done)
|
||||
return;
|
||||
|
||||
/* Causes all other threads in the process to block themselves
|
||||
* and give up their time slice.
|
||||
*/
|
||||
DosEnterCritSec();
|
||||
|
||||
if (!done)
|
||||
{
|
||||
func();
|
||||
done = 1;
|
||||
}
|
||||
|
||||
/* Restores normal thread dispatching for the current process. */
|
||||
DosExitCritSec();
|
||||
}
|
||||
|
||||
|
||||
#elif CONFIG_MULTITHREAD && HAVE_PTHREAD_H
|
||||
#include <pthread.h>
|
||||
static void once(void (*func)(void))
|
||||
|
|
Загрузка…
Ссылка в новой задаче