vx works rtos final

Upload: appiammu

Post on 07-Apr-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 Vx Works Rtos Final

    1/38

    1: Program to illustrate task priorities

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3;

    int main()

    {

    printf("i am in main\n");

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    printf("back in main\n");

    return (0);

    }

    void my_fun1()

    {

    printf("i am in task 1\n");

    }

    void my_fun2()

    {

    printf("i am in task 2\n");

    }

    void my_fun3()

    {

    printf("i am in task 3\n");

    }

    /* -------------- output-------------- */

    i am in main

    i am in task 1

    i am in task 3

    back in maini am in task 2

  • 8/6/2019 Vx Works Rtos Final

    2/38

    2:Program to demonstarte the task priorities

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;main()

    {

    tid_main=taskIdSelf();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority: %d",priority);

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d",priority);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid1,&priority);

    printf("\n back in task 1 with priority: %d",priority);

    }

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /*-----------output-------------------*/

    i am in main with priority: 100

    i am in task 1 with priority: 99

    i am in task 3 with priority: 98

    back in task 1 with priority: 99

    back in main with priority: 100

    i am in task 2 with priority: 199

  • 8/6/2019 Vx Works Rtos Final

    3/38

    3: Program to illustrate task delay

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3;

    int main()

    {

    printf("i am in main\n");

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    printf("back in main\n");

    return (0);

    }

    void my_fun1()

    {

    printf("i am in task 1\n");

    taskDelay(60);

    printf("i am in task 1\n");

    }

    void my_fun2()

    {printf("i am in task 2\n");

    }

    void my_fun3()

    {

    printf("i am in task 3\n");

    }

    /* -------------- output-------------- */

    i am in main

    i am in task 1i am in task 3

    back in main

    i am in task 2

    back in task1

  • 8/6/2019 Vx Works Rtos Final

    4/38

    4:Program to illustrate task lock

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskLock();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority: %d",priority);

    taskUnlock();

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d",priority);}

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    back in main with priority: 100

    i am in task 3 with priority: 98

    i am in task 1 with priority: 99

    i am in task 2 with priority: 199

  • 8/6/2019 Vx Works Rtos Final

    5/38

    5:Program to illustrate the effect of taskdelay on tasklock.

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;main()

    {

    tid_main=taskIdSelf();

    taskLock();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    taskDelay(60);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority: %d",priority);

    taskUnlock();

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);printf("\n i am in task 1 with priority: %d",priority);

    }

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    { taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99

    i am in task 2 with priority: 199

    back in main with priority: 100

    i am in task 3 with priority: 98

  • 8/6/2019 Vx Works Rtos Final

    6/38

    6:Program to illustrate taskdelete

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and no one killed me",priority);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still iam alive",priority);

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);

    }

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

  • 8/6/2019 Vx Works Rtos Final

    7/38

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    i am in task 1 with priority: 99 and i killed main

    7:Program to illustrate effect of tasksafe on taskdelete

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskSafe();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);printf("\n back in main with priority : %d and no one killed me",priority);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still I am alive",priority);

    taskUnsafe();

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);

    }

  • 8/6/2019 Vx Works Rtos Final

    8/38

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    i am in task 3 with priority: 98

    back in main with priority : 100 and no one killed me

    back in main with priority : 100 and still I am alive

    i am in task 1 with priority: 99 and i killed main

    i am in task 2 with priority: 199

    8:Program to illustrate effect of tasksafe on taskdelete

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;main()

    {

    tid_main=taskIdSelf();

    taskSafe();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and no one killed me",priority);

    taskUnsafe();

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still iam alive",priority);

    }

  • 8/6/2019 Vx Works Rtos Final

    9/38

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);}

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    i am in task 3 with priority: 98

    back in main with priority : 100 and no one killed me

    i am in task 1 with priority: 99 and i killed main

    i am in task 2 with priority: 199

  • 8/6/2019 Vx Works Rtos Final

    10/38

    9:Program to illustrate taskDelay,tasksafe and taskdelete

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskSafe();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    taskDelay(10);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and no one killed me",priority);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskUnsafe();

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still iam alive",priority);

    }

    void my_fun1(){

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);

    }

    void my_fun2(){

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

  • 8/6/2019 Vx Works Rtos Final

    11/38

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    i am in task 2 with priority: 199

    back in main with priority : 100 and no one killed me

    i am in task 3 with priority: 98

    i am in task 1 with priority: 99 and i killed main

    10:Program to illustrate taskDelay,tasksafe and taskdelete

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskSafe();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n again in main with priority : %d and no one killed me",priority);

    taskDelay(10);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and no one killed me",priority);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskUnsafe();

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still iam alive",priority);

    }

  • 8/6/2019 Vx Works Rtos Final

    12/38

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDelay(10);

    taskDelete(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);}

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    taskDelete(tid1);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    again in main with priority : 100 and no one killed me

    i am in task 2 with priority: 199

    back in main with priority : 100 and no one killed me

    i am in task 3 with priority: 98

    back in main with priority : 100 and still iam alive

    #include

    #include

    void my_fun1();

    void my_fun2();void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskSafe();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

  • 8/6/2019 Vx Works Rtos Final

    13/38

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n again in main with priority : %d and no one killed me",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid_main,&priority);printf("\n back in main with priority : %d and no one killed me",priority);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskUnsafe();

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still iam alive",priority);

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);

    }

    void my_fun2(){

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    again in main with priority : 100 and no one killed me

    i am in task 1 with priority: 99 and i killed main

    i am in task 2 with priority: 199

  • 8/6/2019 Vx Works Rtos Final

    14/38

    #include

    #include

    void my_fun1();

    void my_fun2();void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskSafe();

    taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n again in main with priority : %d and no one killed me",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and no one killed me",priority);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskUnsafe();taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still iam alive",priority);

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDelete(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);

    }

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

  • 8/6/2019 Vx Works Rtos Final

    15/38

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    again in main with priority : 100 and no one killed me

    i am in task 1 with priority: 99 and i killed main

    i am in task 2 with priority: 199

    #include

    #include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskSafe();taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and no one killed me",priority);

    taskUnsafe();

    taskPriorityGet(tid_main,&priority);

    printf("\n back in main with priority : %d and still iam alive",priority);

    }

  • 8/6/2019 Vx Works Rtos Final

    16/38

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i will kill main",priority);

    taskDeleteForce(tid_main);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in task 1 with priority: %d and i killed main",priority);}

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100

    i am in task 1 with priority: 99 and i will kill main

    i am in task 1 with priority: 99 and i killed main

    #include#include

    void my_fun1();

    void my_fun2();

    void my_fun3();

    int tid1,tid2,tid3,tid_main,priority;

    main()

    {

    tid_main=taskIdSelf();

    taskLock();taskPriorityGet(tid_main,&priority);

    printf("\ni am in main with priority: %d",priority);

    tid1=taskSpawn("my_task1",99,0,1000,my_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",199,0,1000,my_fun2,0,0,0,0,0,0,0,0,0,0);

    taskDelay(10);

    tid3=taskSpawn("my_task3",98,0,1000,my_fun3,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid_main,&priority);

  • 8/6/2019 Vx Works Rtos Final

    17/38

    printf("\n back in main with priority: %d",priority);

    taskUnlock();

    }

    void my_fun1()

    {

    taskPriorityGet(tid1,&priority);

    taskDelete(tid_main);

    printf("\n i am in task 1 with priority: %d",priority);

    }

    void my_fun2()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am in task 2 with priority: %d",priority);

    }

    void my_fun3()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am in task 3 with priority: %d",priority);

    }

    /* --------------------- output-------------------- */

    i am in main with priority: 100i am in task 1 with priority: 99

    i am in task 2 with priority: 199

  • 8/6/2019 Vx Works Rtos Final

    18/38

    Message Queues and semaphores

    1: Program to transmit and receive the message

    #include

    #include

    #include

    #include

    int rx_fun();int tx_fun();

    int tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(3,25,1);

    printf("\n\ni am in main");

    tid1=taskSpawn("my_task1",90,0,1000,rx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    tid2=taskSpawn("my_task2",99,0,1000,tx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\n again in main again\n");

    return(0);

    }

    int rx_fun()

    {

    char rx_buff[25];

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d",priority);

    msgQReceive(msg_que_id,rx_buff,13,WAIT_FOREVER);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d and received message is: %s",priority,rx_buff);

    return(0);

    }

    int tx_fun()

    {

    char tx_buff[]={"hello, world"};

    taskPriorityGet(tid2,&priority);

    printf("\n i am in transmit fun with priority: %d",priority);

    msgQSend(msg_que_id,tx_buff,13,0,0);

    taskPriorityGet(tid2,&priority);

    printf("\n i am in transmit fun with priority: %d",priority);

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    19/38

    /* --------------output------------------------

    i am in main

    i am in receiver fun with priority: 90

    back in main again

    i am in transmit fun with priority: 99

    i am in receiver fun with priority: 90 and received message is: hello, world

    i am in transmit fun with priority: 99

    again in main again-----------------------------------------------*/

    2: Program to transmit and receive the message with same priority

    #include

    #include

    #include

    #include

    int rx_fun();

    int tx_fun();

    int tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(3,25,1);

    printf("\n\ni am in main");

    tid1=taskSpawn("my_task1",90,0,1000,rx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    tid2=taskSpawn("my_task2",90,0,1000,tx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\n again in main again\n");

    return(0);

    }

    int rx_fun()

    {

    char rx_buff[25];

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d",priority);

    msgQReceive(msg_que_id,rx_buff,13,WAIT_FOREVER);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d and received message is: %s",priority,rx_buff);

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    20/38

    int tx_fun()

    {

    char tx_buff[]={"hello, world"};

    taskPriorityGet(tid2,&priority);

    printf("\n i am in transmit fun with priority: %d",priority);

    msgQSend(msg_que_id,tx_buff,13,0,0);

    taskPriorityGet(tid2,&priority);

    printf("\n i am in transmit fun with priority: %d",priority);

    return(0);

    }

    /* --------------output------------------------

    i am in main

    i am in receiver fun with priority: 90

    back in main again

    i am in transmit fun with priority: 90

    i am in transmit fun with priority: 90

    i am in receiver fun with priority: 90 and received message is: hello, world

    again in main again

    -----------------------------------------------*/

    3: Program to transmit and receive the message using FIFO type of message queue

    #include

    #include

    #include#include

    int rx_fun();

    int tx_fun();

    int tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(3,25,1);

    printf("\n\ni am in main");

    tid2=taskSpawn("my_task2",90,0,1000,tx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    tid1=taskSpawn("my_task1",99,0,1000,rx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\n again in main again\n");

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    21/38

    int rx_fun()

    {

    char rx_buff[25];

    int i;

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d",priority);

    for(i=0;i

  • 8/6/2019 Vx Works Rtos Final

    22/38

    4: Program to transmit and receive the message using priority based message queue

    #include

    #include

    #include

    #include

    int rx_fun();

    int tx_fun();int tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(3,25,1);

    printf("\n\ni am in main");

    tid2=taskSpawn("my_task2",90,0,1000,tx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    tid1=taskSpawn("my_task1",99,0,1000,rx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\n again in main again\n");

    return(0);

    }

    int rx_fun()

    {

    char rx_buff[25];

    int i;

    taskPriorityGet(tid1,&priority);printf("\n i am in receiver fun with priority: %d",priority);

    for(i=0;i

  • 8/6/2019 Vx Works Rtos Final

    23/38

    msgQSend(msg_que_id,tx_buff[i],13,0,0);

    }

    msgQSend(msg_que_id,tx_buff[i],13,0,1);

    taskPriorityGet(tid2,&priority);

    printf("\n i am in transmit fun with priority: %d sending urgent message: %s",priority,tx_buff[2]);

    return(0);

    }

    /* --------------output------------------------

    i am in main

    i am in transmit fun with priority: 90 and transmitted message is: hello, world

    i am in transmit fun with priority: 90 and transmitted message is: good morning

    i am in transmit fun with priority: 90 sending urgent message: good evening

    back in main again

    i am in receiver fun with priority: 99

    i am in receiver fun with priority: 99 and received message is: good evening

    i am in receiver fun with priority: 99 and received message is: hello, world

    i am in receiver fun with priority: 99 and received message is: good morning

    again in main again

    -----------------------------------------------*/

    5: Program to illustrate the effect of message queue size.

    #include

    #include

    #include#include

    int rx_fun();

    int tx_fun();

    int tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(2,25,1);

    printf("\n i am in main");

    tid2=taskSpawn("my_task2",90,0,1000,tx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    tid1=taskSpawn("my_task1",99,0,1000,rx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\n again in main\n");

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    24/38

    int rx_fun()

    {

    char rx_buff[25];

    int i;

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d",priority);

    for(i=0;i

  • 8/6/2019 Vx Works Rtos Final

    25/38

    i am in receiver fun with priority: 99 and received message is: message queue

    i am in receiver task

    i am in receiver fun with priority: 99 and received message is: semaphores

    again in main

    -----------------------------------------------*/

    6: Program to illustrate intertask communication by spawning the task from host shell.

    #include

    #include#include

    #include

    int rx_fun();

    int tx_fun();

    int tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(3,25,1);

    printf("\n\ni am in main");

    tid1=taskSpawn("my_task1",99,0,1000,rx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again, spawn the task from host shell \n");

    return(0);

    }

    int rx_fun()

    {

    char rx_buff[25];

    int i;

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d",priority);

    for(i=0;i

  • 8/6/2019 Vx Works Rtos Final

    26/38

    /* --------------output------------------------

    i am in main

    i am in receiver fun with priority: 99

    back in main again, spawn the task from host shell

    i am in transmit fun with priority: 100 and transmitted message is: hello

    i am in receiver fun with priority: 99 and received message is: hello

    i am in transmit fun with priority: 100 and transmitted message is: helloi am in receiver fun with priority: 99 and received message is: hello

    i am in transmit fun with priority: 100 and transmitted message is: hello

    i am in receiver fun with priority: 99 and received message is: hello

    -----------------------------------------------*/

    6: Program to illustrate ITC and task priorities by spawning the task from host shell

    #include

    #include

    #include

    #include

    int rx_fun1();

    int rx_fun2();

    int rx_fun3();

    int tx_fun();

    int tid,tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(3,25,1);

    printf("\n\ni am in main");

    tid1=taskSpawn("my_task1",90,0,1000,rx_fun1,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",99,0,1000,rx_fun2,0,0,0,0,0,0,0,0,0,0);

    tid3=taskSpawn("my_task3",98,0,1000,rx_fun3,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again, spawn the task from host shell \n");

    return(0);

    }

    int rx_fun1(){

    char rx_buff[25];

    msgQReceive(msg_que_id,rx_buff,13,WAIT_FOREVER);

    taskPriorityGet(tid1,&priority);

    printf("\n i am in receiver fun with priority: %d and received message is: %s",priority,rx_buff);

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    27/38

    int rx_fun2()

    {

    char rx_buff[25];

    msgQReceive(msg_que_id,rx_buff,13,WAIT_FOREVER);

    taskPriorityGet(tid2,&priority);

    printf("\n i am in receiver fun with priority: %d and received message is: %s",priority,rx_buff);

    return(0);}

    int rx_fun3()

    {

    char rx_buff[25];

    msgQReceive(msg_que_id,rx_buff,13,WAIT_FOREVER);

    taskPriorityGet(tid3,&priority);

    printf("\n i am in receiver fun with priority: %d and received message is: %s",priority,rx_buff);

    return(0);

    }

    int tx_fun()

    {

    char tx_buff[25]={"hello"};

    taskPriorityGet(tid2,&priority);

    printf("\n i am in transmit fun with priority: %d and transmitted message is: %s",priority,tx_buff);

    msgQSend(msg_que_id,tx_buff,13,0,0);

    return(0);}

    /* ----------------------------------------output--------------------------------------

    -> sp main

    Task spawned: id = 0x103d7c58, name = t2

    value = 272464984 = 0x103d7c58 = 'X'

    ->

    i am in main

    back in main again, spawn the task from host shell

    -> sp tx_fun

    Task spawned: id = 0x103d7c58, name = t3

    value = 272464984 = 0x103d7c58 = 'X'

    ->

    i am in transmit fun with priority: 99 and transmitted message is: hello

    i am in receiver fun with priority: 90 and received message is: hello

    -> sp tx_fun

    Task spawned: id = 0x103d7c58, name = t4

    value = 272464984 = 0x103d7c58 = 'X'

  • 8/6/2019 Vx Works Rtos Final

    28/38

    ->

    i am in transmit fun with priority: 99 and transmitted message is: hello

    i am in receiver fun with priority: 98 and received message is: hello

    -> sp tx_fun

    Task spawned: id = 0x103d7c58, name = t5

    value = 272464984 = 0x103d7c58 = 'X'

    ->

    i am in transmit fun with priority: 99 and transmitted message is: hello

    i am in receiver fun with priority: 99 and received message is: hello------------------------------------------------------------------------*/

    #include

    #include

    #include

    #include

    #define MSG_SIZE 50

    int rx_fun();

    int tx_fun();

    int tid,tid1,tid2,tid3,tid_main,priority;

    MSG_Q_ID msg_que_id;

    int main()

    {

    msg_que_id=msgQCreate(3,MSG_SIZE,1);

    printf("\n\ni am in main");

    tid1=taskSpawn("my_task1",99,0,1000,rx_fun,0,0,0,0,0,0,0,0,0,0);

    tid2=taskSpawn("my_task2",90,0,1000,tx_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again, spawn the task from host shell \n");

    return(0);

    }

    int rx_fun()

    {

    char rx_buff[50],n;

    printf("\n i am in receiver fun");

    n=msgQReceive(msg_que_id,rx_buff,MSG_SIZE,WAIT_FOREVER);

    taskPriorityGet(tid1,&priority);printf("\n i am in receiver fun with priority: %d and received message is: ''%s'' with size:

    %d",priority,rx_buff,n);

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    29/38

    int tx_fun()

    {

    char tx_buff[25]={"good morning india"};

    int n;

    n=msgQSend(msg_que_id,tx_buff,strlen(tx_buff),0,0);

    taskPriorityGet(tid2,&priority);

    printf("\n i am in transmit fun with priority: %d and transmitted message is: ''%s'' with size:

    %d",priority,tx_buff,n);return(0);

    }

    /* ----------------------------------------output--------------------------------------

    i am in main

    i am in receiver fun

    i am in transmit fun with priority: 90 and transmitted message is: ''good morning india'' with size: 0

    i am in receiver fun with priority: 99 and received message is: ''good morning india'' with size: 18

    back in main again, spawn the task from host shell

    NOTE:

    1> if the size of the data to be transmitted is greater then the message size then the message will not be sent and

    the fun(msgQsend) returns -1 or else data will be transmitted successfully and it returns 0.

    2> the msgQreceive fun receives the message and returns the number of bytes it has received( nothing but the size

    of message which was transmitted)....

    ------------------------------------------------------------------------*/

  • 8/6/2019 Vx Works Rtos Final

    30/38

    Semaphores1: Proram to illustrate priority inversion

    #include

    #include

    #include

    int low_pri_fun();

    int med_pri_fun();

    int high_pri_fun();int tid1,tid2,tid3,tid_main,priority;

    SEM_ID sem_one_id, sem_two_id;

    MSG_Q_ID msg_que_id;

    int main()

    {

    sem_one_id=semMCreate(SEM_Q_PRIORITY);

    sem_two_id=semMCreate(SEM_Q_PRIORITY);

    printf("\n\ni am in main");

    tid1=taskSpawn("low_pri_task",99,0,1000,low_pri_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    return(0);

    }

    int low_pri_fun()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am low_pri_task with priority: %d",priority);

    semTake(sem_one_id,WAIT_FOREVER);

    tid2=taskSpawn("high_pri_task",90,0,1000,high_pri_fun,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid1,&priority);

    printf("\n back in low_pri_task with priority: %d",priority);

    tid3=taskSpawn("med_pri_task",95,0,1000,med_pri_fun,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid1,&priority);

    printf("\n again in low_pri_task with priority: %d",priority);

    semGive(sem_one_id);taskPriorityGet(tid1,&priority);

    printf("\n again in low_pri_task with priority: %d",priority);

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    31/38

    int med_pri_fun()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am med_pri_task with priority: %d",priority);

    semTake(sem_two_id,WAIT_FOREVER);

    taskPriorityGet(tid3,&priority);printf("\n still in med_pri_task with priority: %d",priority);

    semGive(sem_two_id);

    taskPriorityGet(tid3,&priority);

    printf("\n finally in med_pri_task with priority: %d",priority);

    return(0);

    }

    int high_pri_fun()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am high_pri_task with priority: %d",priority);

    semTake(sem_one_id,WAIT_FOREVER);

    taskPriorityGet(tid2,&priority);

    printf("\n still in high_pri_task with priority: %d",priority);

    semGive(sem_one_id);

    taskPriorityGet(tid2,&priority);

    printf("\n finally in high_pri_task with priority: %d",priority);

    return(0);}

    /* --------------output------------------------

    i am in main

    i am low_pri_task with priority: 99

    i am high_pri_task with priority: 90

    back in low_pri_task with priority: 99

    i am med_pri_task with priority: 95

    still in med_pri_task with priority: 95

    finally in med_pri_task with priority: 95

    again in low_pri_task with priority: 99still in high_pri_task with priority: 90

    finally in high_pri_task with priority: 90

    again in low_pri_task with priority: 99

    back in main again

    -----------------------------------------------*/

  • 8/6/2019 Vx Works Rtos Final

    32/38

    2: Proram to illustrate priority inheritance

    #include

    #include

    #include

    int low_pri_fun();

    int med_pri_fun();

    int high_pri_fun();

    int tid1,tid2,tid3,tid_main,priority;SEM_ID sem_one_id,sem_two_id;

    MSG_Q_ID msg_que_id;

    int main()

    {

    sem_one_id=semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE);

    sem_two_id=semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE);

    printf("\n\ni am in main");

    tid1=taskSpawn("low_pri_task",99,0,1000,low_pri_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    return(0);

    }

    int low_pri_fun()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am low_pri_task with priority: %d",priority);

    semTake(sem_one_id,WAIT_FOREVER);

    tid2=taskSpawn("high_pri_task",90,0,1000,high_pri_fun,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid1,&priority);

    printf("\n back in low_pri_task with priority: %d",priority);

    tid3=taskSpawn("med_pri_task",95,0,1000,med_pri_fun,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid1,&priority);

    printf("\n again in low_pri_task with priority: %d",priority);

    semGive(sem_one_id);

    taskPriorityGet(tid1,&priority);

    printf("\n finally in low_pri_task with priority: %d",priority);return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    33/38

    int med_pri_fun()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am med_pri_task with priority: %d",priority);

    semTake(sem_two_id,WAIT_FOREVER);

    taskPriorityGet(tid3,&priority);

    printf("\n still in med_pri_task with priority: %d",priority);

    semGive(sem_two_id);

    taskPriorityGet(tid3,&priority);

    printf("\n finally in med_pri_task with priority: %d",priority);

    return(0);

    }

    int high_pri_fun()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am high_pri_task with priority: %d",priority);

    semTake(sem_one_id,WAIT_FOREVER);

    taskPriorityGet(tid2,&priority);

    printf("\n still in high_pri_task with priority: %d",priority);

    semGive(sem_one_id);

    taskPriorityGet(tid2,&priority);

    printf("\n finally in high_pri_task with priority: %d",priority);

    return(0);

    }

    /* --------------output------------------------

    i am in main

    i am low_pri_task with priority: 99

    i am high_pri_task with priority: 90

    back in low_pri_task with priority: 90

    again in low_pri_task with priority: 90

    still in high_pri_task with priority: 90

    finally in high_pri_task with priority: 90

    i am med_pri_task with priority: 95

    still in med_pri_task with priority: 95

    finally in med_pri_task with priority: 95

    finally in low_pri_task with priority: 99

    back in main again

    -----------------------------------------------*/

  • 8/6/2019 Vx Works Rtos Final

    34/38

    #include

    #include

    #include

    int low_pri_fun();

    int med_pri_fun();

    int high_pri_fun();

    int highest_pri_fun();

    int tid1,tid2,tid3,tid4,tid_main,priority;

    SEM_ID sem_one_id,sem_two_id;

    MSG_Q_ID msg_que_id;

    int main()

    {

    sem_one_id=semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE);

    sem_two_id=semMCreate(SEM_Q_PRIORITY | SEM_INVERSION_SAFE);

    printf("\n\ni am in main");

    tid1=taskSpawn("low_pri_task",99,0,1000,low_pri_fun,0,0,0,0,0,0,0,0,0,0);

    printf("\nback in main again\n");

    return(0);

    }

    int low_pri_fun()

    {

    taskPriorityGet(tid1,&priority);

    printf("\n i am low_pri_task with priority: %d",priority);

    semTake(sem_one_id,WAIT_FOREVER);

    tid2=taskSpawn("high_pri_task",90,0,1000,high_pri_fun,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid1,&priority);

    printf("\n back in low_pri_task with priority: %d",priority);

    tid3=taskSpawn("med_pri_task",95,0,1000,med_pri_fun,0,0,0,0,0,0,0,0,0,0);

    tid4=taskSpawn("highest_pri_task",80,0,1000,highest_pri_fun,0,0,0,0,0,0,0,0,0,0);

    taskPriorityGet(tid1,&priority);printf("\n again in low_pri_task with priority: %d",priority);

    semGive(sem_one_id);

    taskPriorityGet(tid1,&priority);

    printf("\n finally in low_pri_task with priority: %d",priority);

    return(0);

    }

  • 8/6/2019 Vx Works Rtos Final

    35/38

    int med_pri_fun()

    {

    taskPriorityGet(tid3,&priority);

    printf("\n i am med_pri_task with priority: %d",priority);

    semTake(sem_two_id,WAIT_FOREVER);

    taskPriorityGet(tid3,&priority);

    printf("\n still in med_pri_task with priority: %d",priority);

    semGive(sem_two_id);

    taskPriorityGet(tid3,&priority);

    printf("\n finally in med_pri_task with priority: %d",priority);return(0);

    }

    int high_pri_fun()

    {

    taskPriorityGet(tid2,&priority);

    printf("\n i am high_pri_task with priority: %d",priority);

    semTake(sem_one_id,WAIT_FOREVER);

    taskPriorityGet(tid2,&priority);

    printf("\n still in high_pri_task with priority: %d",priority);

    semGive(sem_one_id);

    taskPriorityGet(tid2,&priority);

    printf("\n finally in high_pri_task with priority: %d",priority);

    return(0);

    }

    int highest_pri_fun(){

    taskPriorityGet(tid4,&priority);

    printf("\n i am highest_pri_task with priority: %d",priority);

    semTake(sem_one_id,WAIT_FOREVER);

    taskPriorityGet(tid4,&priority);

    printf("\n still in highest_pri_task with priority: %d",priority);

  • 8/6/2019 Vx Works Rtos Final

    36/38

    semGive(sem_one_id);

    taskPriorityGet(tid4,&priority);

    printf("\n finally in highest_pri_task with priority: %d",priority);

    return(0);

    }

    /* --------------output------------------------

    i am in main

    i am low_pri_task with priority: 99

    i am high_pri_task with priority: 90

    back in low_pri_task with priority: 90

    i am highest_pri_task with priority: 80

    again in low_pri_task with priority: 80

    still in highest_pri_task with priority: 80

    finally in highest_pri_task with priority: 80

    still in high_pri_task with priority: 90finally in high_pri_task with priority: 90

    i am med_pri_task with priority: 95

    still in med_pri_task with priority: 95

    finally in med_pri_task with priority: 95

    finally in low_pri_task with priority: 99

    back in main again

  • 8/6/2019 Vx Works Rtos Final

    37/38

    #include "vxWorks.h"

    #include "taskLib.h"

    #include "semLib.h"

    #include "stdio.h"

    /* function prototypes */

    void taskOne(void);

    void taskTwo(void);

    /* globals */

    #define ITER 5

    SEM_ID semBinary;

    int global = 0;

    void main(void)

    {

    int taskIdOne, taskIdTwo;

    /* create semaphore with semaphore available and queue tasks on FIFO basis */semBinary = semBCreate(SEM_Q_FIFO, SEM_FULL);

    /* Note 1: lock the semaphore for scheduling purposes */

    semTake(semBinary,WAIT_FOREVER);

    /* spawn the two tasks */

    taskIdOne = taskSpawn("t1",90,0x100,2000,(FUNCPTR)taskOne,0,0,0,0,0,0,0,0,0,0);

    taskIdTwo = taskSpawn("t2",90,0x100,2000,(FUNCPTR)taskTwo,0,0,0,0,0,0,0,0,0,0);

    }

    void taskOne(void)

    {

    int i;

    for (i=0; i < ITER; i++)

    {

    semTake(semBinary,WAIT_FOREVER); /* wait indefinitely for semaphore */

    printf("I am taskOne and global = %d......................\n", ++global);

    semGive(semBinary); /* give up semaphore */

    }

    }

    void taskTwo(void)

    {

    int i;

    semGive(semBinary); /* Note 2: give up semaphore(a scheduling fix) */

    for (i=0; i < ITER; i++)

    {

    semTake(semBinary,WAIT_FOREVER); /* wait indefinitely for semaphore */

    printf("I am taskTwo and global = %d----------------------\n", --global);

  • 8/6/2019 Vx Works Rtos Final

    38/38

    semGive(semBinary); /* give up semaphore */

    }

    }

    /* -----------------------output------------------------*/

    I am taskOne and global = 1......................

    I am taskTwo and global = 0----------------------

    I am taskOne and global = 1......................

    I am taskTwo and global = 0----------------------

    I am taskOne and global = 1......................

    I am taskTwo and global = 0----------------------

    I am taskOne and global = 1......................

    I am taskTwo and global = 0----------------------

    I am taskOne and global = 1......................

    I am taskTwo and global = 0----------------------