I got the solution to it
On 2/21/07, Preetam Joshi <[EMAIL PROTECTED]> wrote:
cd ../../.. && /bin/sh ./config.status src/testsuite/mytask/Makefile
depfiles
config.status: error: invalid argument: src/testsuite/mytask/Makefile
make: *** [Makefile] Error 1
What dows this error mean n how do i solve it?
On 2/15/07, Philippe Gerum <[EMAIL PROTECTED]> wrote:
>
> On Thu, 2007-02-15 at 15:46 +0530, Preetam Joshi wrote:
> > Hi using it inside the task loop wwud give me RT_TASK_info as
> > undeclared its a global structure even as mentioned in the API
> > documentation
>
> This is stated nowhere in the doc. Please read again.
>
> > and the behavior wud neways still remain the same as i mentioned in
> > the code?
> >
>
> Of course not, that's why Anders showed you the way.
>
> > Please execute the code and comment.
>
> Your code does not compile properly. There's a missing brace to close
> the high priority task's body to start with. Additionally, 3000000000
> only starts to be an implicitely unsigned value with the ISO C90
> standard, so adding the 'ULL' qualifier would be a nice hint given to
> the compiler that you really now what your are doing here.
>
> Now, aside of those basic issues, the trivial one that bugs you is that:
>
>
> 1) the low priority task starts first, sets "info", then sleeps
> 2) the high priority task starts next while the low one is aslept,
> overwrites "info", then sleeps,
> 3) which in turn causes the low priority task to print out the
> overwritten value indefinitely after wakeup, which relates to the high
> priority one, because it does this without ever reloading this variable
> with its own priority information.
>
> Please read your code again, make the "info" variable a local one for
> both threads, then post anew if anything remains unclear.
>
> >
> > Thanks.
> >
> > On 2/15/07, Anders Blomdell <[EMAIL PROTECTED]> wrote:
> > Preetam Joshi wrote:
> > > ok,
> > >
> > > here is the code.
> > > The code essentially cerates two tasks low and high priority
> > task.
> > > The low priority task has priority as 3 and high as 98
> > >
> > > When i execute this initally everything goes smoothly as low
> > priority task
> > > starts running with priority thread 3 , it sleeps so then
> > the high priority
> > > thread runs with priority 98. But before the high priority
> > thread finishes
> > > the for loop for 7 times the low priority thread prempts it
> > and starts
> > > running with priority = 98.
> > Nope, you just don't read the state (using a global is also a
> > bad idea).
> >
> > >
> > > This is what has baffled me?
> > >
> > > #include <stdio.h>
> > > #include < unistd.h>
> > > #include <sys/mman.h>
> > > #include <native/task.h>
> > > #include <native/timer.h>
> > >
> > > RT_TASK task1;
> > > RT_TASK task2;
> > > RT_TASK_INFO info;
> > >
> > > void low_task(void *arg)
> > > {
> > RT_TASK_INFO info;
> > > rt_task_inquire(&task1, &info);
> > > printf("Priority of low task %d\n", info.cprio);
> > >
> > > rt_task_sleep(3000000000);
> > >
> > > while(1)
> > > {
> > rt_task_inquire(&task1, &info);
> > > printf("Priority of Low task %d
> > \n",info.cprio);
> > > }
> > >
> > > }
> > >
> > > void high_task(void *arg)
> > > {
> > > unsigned int i;
> > > rt_task_inquire(&task2, &info);
> > > printf("Priority of high task before sleep %d\n",
> > info.cprio );
> > > for(i=0;i<7;i++)
> > > {
> > >
> > > printf("Priority of High Priotity task1 %d
> > \n",info.cprio);
> > > rt_task_sleep(1000000000);
> > > }
> > >
> > > printf("High priority thread goin to sleep %d
> > \n",info.cprio);
> > > rt_task_sleep(3000000000);
> > >
> > > for(i=0;i<100;i++)
> > > {
> > > printf("Priority of High task2 %d\n",
> > info.cprio);
> > > }
> > >
> > > int main(int argc, char* argv[])
> > > {
> > > mlockall(MCL_CURRENT|MCL_FUTURE);
> > >
> > > rt_task_create(&task1, "Low Priority Task", 0, 3,
> > 0);
> > > rt_task_create(&task2, "High Priority Task", 0, 98,
> > 0);
> > >
> > > rt_task_start(&task1, &low_task, NULL);
> > > rt_task_start(&task2, &high_task, NULL);
> > >
> > > pause();
> > >
> > > rt_task_join(&task1);
> > > rt_task_join(&task2);
> > >
> > > }
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > On 2/15/07, Jan Kiszka <[EMAIL PROTECTED]> wrote:
> > >>
> > >> Preetam Joshi wrote:
> > >> > Hi,
> > >> >
> > >> > Do u mean to say that if i have created my tasks using
> > native xenomai
> > >> API's
> > >> > like rt_task_create , then inside those tasks i will have
> > to use posix
> > >> skin
> > >> > calls like pthread_setschedpolicy, etc...?
> > >> >
> > >> > Is that so.
> > >>
> > >> Nope. If you picked the native skin API, all scheduler
> > setup for a RT
> > >> task should be done through that interface.
> > >>
> > >> >
> > >> > Cant i just have context switch between the tasks
> > themselves say low
> > >> > priority and a high priority task created by
> > rt_task_create.
> > >> >
> > >> > Reason being i have created two tasks using the
> > rt_task_create API and
> > >> my
> > >> > high priority task is runnning and my low priority task
> > has slept,
> > >> so as
> > >> > soon as my low priority task has expired its sleep time
> > and gets ready
> > >> to
> > >> > run,
> > >> >
> > >> > The low priority task preempts my high priority task and
> > even its
> > >> priority
> > >> > gets raised to that of the high priority task and starts
> > executing. The
> > >> > higgh priority task gets suspended altogether amidst its
> > running.
> > >> Simply
> > >> > baffled by the behavior?
> > >>
> > >> If you have found a weird behaviour of Xenomai, please post
> > some
> > >> as-small-as-possible demo code that exposes the issue. We
> > will have a
> > >> look at it.
> > >>
> > Regards
> >
> > Anders
> >
> > _______________________________________________
> > Xenomai-help mailing list
> > [email protected]
> > https://mail.gna.org/listinfo/xenomai-help
> --
> Philippe.
>
>
>
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help