Hi,
I am new to CCS v5 and DaVinci. I create an example DaVinci project with the mutex.c (which is provided by the example template) beginning with New Project. There are two tasks in mutex.c, but I cannot see them in the right Outline Window. I expect they should be seen as the logger0, which is an instance of LoggerBuf in the window. The two tasks should not be there?
Thanks.
/*
* ======== mutex.c ========
* This example shows the use of two tasks and one semaphore to perform
* mutual exclusive data access.
*/
#include <xdc/std.h>
#include <xdc/runtime/System.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Clock.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <xdc/cfg/global.h>
Void task1(UArg arg0, UArg arg1);
Void task2(UArg arg0, UArg arg1);
Int resource = 0;
Semaphore_Handle sem;
Task_Handle tsk1;
Task_Handle tsk2;
Int finishCount = 0;
/*
* ======== main ========
*/
Void main()
{
Task_Params taskParams;
/* Create a Semaphore object to be use as a resource lock */
sem = Semaphore_create(1, NULL, NULL);
/* Create two tasks that share a resource*/
Task_Params_init(&taskParams);
taskParams.priority = 1;
tsk1 = Task_create (task1, &taskParams, NULL);
Task_Params_init(&taskParams);
taskParams.priority = 2;
tsk2 = Task_create (task2, &taskParams, NULL);
BIOS_start();
}
/*
* ======== task1 ========
*/
Void task1(UArg arg0, UArg arg1)
{
UInt32 time;
for (;;) {
System_printf("Running task1 function\n");
if (Semaphore_getCount(sem) == 0) {
System_printf("Sem blocked in task1\n");
}
/* Get access to resource */
Semaphore_pend(sem, BIOS_WAIT_FOREVER);
/* do work by waiting for 2 system ticks to pass */
time = Clock_getTicks();
while (Clock_getTicks() <= (time + 1)) {
;
}
/* do work on locked resource */
resource += 1;
/* unlock resource */
Semaphore_post(sem);
Task_sleep(10);
}
}
/*
* ======== task2 ========
*/
Void task2(UArg arg0, UArg arg1)
{
for (;;) {
System_printf("Running task2 function\n");
if (Semaphore_getCount(sem) == 0) {
System_printf("Sem blocked in task2\n");
}
/* Get access to resource */
Semaphore_pend(sem, BIOS_WAIT_FOREVER);
/* do work on locked resource */
resource += 1;
/* unlock resource */
Semaphore_post(sem);
Task_sleep(10);
finishCount++;
if (finishCount == 5) {
System_printf("Calling BIOS_exit from task2\n");
BIOS_exit(0);
}
}
}
