All of lore.kernel.org
 help / color / mirror / Atom feed
From: steve freyder <steve@freyder.net>
To: Leandro Bucci <guestleandro11@gmail.com>, xenomai@xenomai.org
Subject: Re: Mode Switch
Date: Sun, 3 Jan 2021 16:57:33 -0600	[thread overview]
Message-ID: <f0983013-5e0e-4cc1-fe07-91d1db6e732e@freyder.net> (raw)
In-Reply-To: <CAFZ-hKgCKiqoUAM3ooXgL=h1zsdn1j7UhnaPT9Sd+=t1iT_b3A@mail.gmail.com>

OK, so then my theory about it having to do with launching a printf 
helper must be wrong (maybe that only happens on the original thread).  
I don't recall whether you had a flush call after your printf though...

On 1/3/2021 4:22 PM, Leandro Bucci wrote:
> I understand, but it's strange because if I do a printf inside the 
> task I always have MSW = 2.  Yes maybe Philippe can help.  Thank you too
>
> Il dom 3 gen 2021, 23:16 steve freyder <steve@freyder.net 
> <mailto:steve@freyder.net>> ha scritto:
>
>     Might need some help from Philippe on this one but my thinking
>     says that thread creation happens in secondary mode, so there's
>     gotta be at least *one* mode switch on the way to becoming a
>     cobalt thread running in primary mode, perhaps the second one has
>     to do with launching the background printf() helper thread?
>
>
>
>     On 1/3/2021 4:08 PM, Leandro Bucci wrote:
>>     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@freyder.net
>>     <mailto:steve@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);
>>>         }
>>

  reply	other threads:[~2021-01-03 22:57 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-03 20:29 Mode Switch Leandro Bucci
2021-01-03 22:00 ` steve freyder
2021-01-03 22:08   ` Leandro Bucci
2021-01-03 22:16     ` steve freyder
2021-01-03 22:22       ` Leandro Bucci
2021-01-03 22:57         ` steve freyder [this message]
2021-02-15 13:00 Leandro Bucci
     [not found] ` <358306354.8105980.1613394904650.JavaMail.zimbra@wolfram.com>
2021-02-15 13:16   ` Leandro Bucci
2021-02-15 13:46     ` Per Oberg
2021-02-15 13:52       ` Leandro Bucci
2021-02-15 13:57         ` Julien Blanc
2021-02-15 14:06           ` Leandro Bucci

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f0983013-5e0e-4cc1-fe07-91d1db6e732e@freyder.net \
    --to=steve@freyder.net \
    --cc=guestleandro11@gmail.com \
    --cc=xenomai@xenomai.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.