Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources
This commit is contained in:
77
sdk/lib/posix/posix_test.c
Normal file
77
sdk/lib/posix/posix_test.c
Normal file
@@ -0,0 +1,77 @@
|
||||
#include "sys_config.h"
|
||||
#include "typesdef.h"
|
||||
#include "errno.h"
|
||||
#include "osal/semaphore.h"
|
||||
#include "osal/task.h"
|
||||
#include "osal/string.h"
|
||||
#include "osal/timer.h"
|
||||
#include "osal/mutex.h"
|
||||
#include "osal/msgqueue.h"
|
||||
#include "lib/common/rbuffer.h"
|
||||
#include "lib/posix/pthread.h"
|
||||
#include "osal/sleep.h"
|
||||
|
||||
#ifdef TXWSDK_POSIX
|
||||
|
||||
pthread_cond_t c;
|
||||
void posix_mutex_test(void)
|
||||
{
|
||||
pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_mutex_t m2;
|
||||
pthread_mutex_init(&m2, NULL);
|
||||
for (int i = 0; i < 100; ++i)
|
||||
{
|
||||
os_printf("posix_mutex_test %d\n", i);
|
||||
pthread_mutex_lock(&m1);
|
||||
pthread_mutex_unlock(&m1);
|
||||
|
||||
pthread_mutex_lock(&m2);
|
||||
pthread_mutex_unlock(&m2);
|
||||
}
|
||||
}
|
||||
|
||||
void posix_cond_test(void)
|
||||
{
|
||||
pthread_mutex_t m;
|
||||
pthread_mutex_init(&m, NULL);
|
||||
|
||||
pthread_cond_init(&c, NULL);
|
||||
|
||||
for (int i = 0; i < 100; ++i)
|
||||
{
|
||||
os_printf("posix_mutex_test %d\n", i);
|
||||
pthread_mutex_lock(&m);
|
||||
pthread_cond_wait(&c, &m);
|
||||
pthread_mutex_unlock(&m);
|
||||
}
|
||||
}
|
||||
|
||||
static void *pthread_test_task(void *arg)
|
||||
{
|
||||
os_printf(KERN_NOTICE"pthread_test_task running ...\r\n");
|
||||
if (arg) {
|
||||
os_sleep(10);
|
||||
os_printf(KERN_NOTICE"pthread_test_task join!\r\n");
|
||||
pthread_join((pthread_t)arg, NULL);
|
||||
} else {
|
||||
os_sleep(20);
|
||||
}
|
||||
os_printf(KERN_NOTICE"pthread_test_task exit!\r\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void posix_pthread_test(void)
|
||||
{
|
||||
pthread_t pthd1, pthd2;
|
||||
pthread_attr_t attr1, attr2;
|
||||
pthread_attr_init(&attr1);
|
||||
pthread_attr_init(&attr2);
|
||||
pthread_attr_setdetachstate(&attr1, PTHREAD_CREATE_DETACHED);
|
||||
pthread_attr_setdetachstate(&attr2, PTHREAD_CREATE_JOINABLE);
|
||||
os_printf("posix test start!\r\n");
|
||||
pthread_create(&pthd2, &attr2, pthread_test_task, 0);
|
||||
pthread_create(&pthd1, &attr1, pthread_test_task, (void *)pthd2);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user