#include <osal.h>
#define USER_TASK1_PRI 12
#define USER_TASK2_PRI 11
uint32_t public_value = 0;
osal_mutex_t public_value_mutex;
static int user_task1_entry()
{
while (1)
{
if (true == osal_mutex_lock(public_value_mutex))
{
printf("\r\ntask1 : lock a mutex.\r\n");
public_value += 10;
printf("task1:public_value = %ld.\r\n", public_value);
printf("task1:unlock a mutex.\r\n\r\n");
if (true == osal_mutex_unlock(public_value_mutex))
{
printf("task1:unlock a mutex OK.\r\n\r\n");
osal_task_sleep(10);
}
else
printf("task1:Lock a mutex ERROR.\r\n");
if (public_value > 60)
osal_mutex_del(public_value_mutex);
if (public_value > 100)
break;
}
else
{
printf("task1:Lock a mutex ERROR.\r\n");
break;
}
}
return 0;
}
static int user_task2_entry()
{
while (1)
{
if (true == osal_mutex_lock(public_value_mutex))
{
printf("\r\n task2 : lock a mutex.\r\n");
public_value += 5;
printf("task2:public_value = %ld.\r\n", public_value);
if (true == osal_mutex_unlock(public_value_mutex))
printf("task2:unlock a mutex OK.\r\n\r\n");
else
printf("task2:unlock a mutex ERROR.\r\n\r\n");
if (public_value > 90)
break;
osal_task_sleep(10);
}
else
{
printf("\r\ntask2:Lock a mutex ERROR.\r\n");
break;
}
}
return 0;
}
int standard_app_demo_main()
{
osal_mutex_create(&public_value_mutex);
osal_task_create("user1_task", user_task1_entry, NULL, 0x400, NULL, USER_TASK1_PRI);
osal_task_create("user2_task", user_task2_entry, NULL, 0x400, NULL, USER_TASK2_PRI);
}