vpx_once: implement once() for OS/2

Change-Id: I9f736f299490464bbdbb6cd24ee6f5b46ad45ec6
This commit is contained in:
KO Myung-Hun 2014-07-26 14:53:59 +09:00 коммит произвёл James Zern
Родитель 838b53b9fb
Коммит f9f996b3e2
1 изменённых файлов: 27 добавлений и 0 удалений

Просмотреть файл

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