X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=opt%2Fnothread%2Fcall_once.c;h=be1ed2e07e4e956ddaa1cd87f1313c2bbd5fcd02;hb=bb22ff7ecd9fe8f4641484df12ad629cd8ee27ac;hp=06de779568c390294955d1c4010f50b188717604;hpb=a38d56a6a13dbb89022b5448d2d5247f3f99ea41;p=pdclib.old diff --git a/opt/nothread/call_once.c b/opt/nothread/call_once.c index 06de779..be1ed2e 100644 --- a/opt/nothread/call_once.c +++ b/opt/nothread/call_once.c @@ -6,4 +6,29 @@ void _PDCLIB_call_once(_PDCLIB_once_flag *flag, void (*func)(void)) func(); *flag = _PDCLIB_ONCE_FLAG_DONE; } -} \ No newline at end of file +} + +#ifdef TEST +#include <_PDCLIB_test.h> + +static int count = 0; +once_flag once = ONCE_FLAG_INIT; + +static void do_once(void) +{ + count++; +} + +int main( void ) +{ + TESTCASE(count == 0); + call_once(&once, do_once); + TESTCASE(count == 1); + call_once(&once, do_once); + TESTCASE(count == 1); + do_once(); + TESTCASE(count == 2); + return TEST_RESULTS; +} + +#endif