Mode Switch

Leandro Bucci guestleandro11 at gmail.com
Sun Jan 3 23:08:41 CET 2021


But in the task I don't do any printf, how is it possible that MSW = 2?

Il dom 3 gen 2021, 23:00 steve freyder <steve at freyder.net> ha scritto:

> Each time I would do something like this:
>
>
> printf(...) ;
>
> fflush(stdout) ;
>
> rt_task_sleep(1e9/5) ;
>
> rt_task_inquire(...) ;
>
>
> msw incremented by 1, csw would increment by 2.
>
>
> On 1/3/2021 2:29 PM, Leandro Bucci via Xenomai wrote:
>
> Hi, I have a strange behavior regarding the "mode switch".
> In the attached code, the task should never switch to the Linux domain, but
> instead I have a value of MSW = 2.
> How is it possible?
> Even if I do a printf in the task I always get MSW = 2.
> I can't understand where the problem is.
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <alchemy/task.h>
> #include <alchemy/timer.h>
>
> RT_TASK task;
> RT_TASK_INFO info;
>
> void task_body(void *arg)
> {
> rt_task_inquire(NULL, &info);
> }
>
> int main()
> {
> int err;
>
> err = rt_task_create(&task, "mytask", 0, 1, 0);
> if (err != 0){
> fprintf(stderr, "failed to create task\n");
> exit(EXIT_FAILURE);
> }
>
> err = rt_task_start(&task, &task_body, NULL);
> if (err != 0){
> fprintf(stderr, "failed to start task\n");
> exit(EXIT_FAILURE);
> }
>
> sleep(5); //sleep for 5 seconds
>
> printf("mode switch = %d\n", (int)(info.stat.msw));
>
> exit(EXIT_SUCCESS);
> }
>
>


More information about the Xenomai mailing list