On Mon, 19 May 2008 10:11:26 +0200, Matthieu
<[EMAIL PROTECTED]> wrote:
> Hi
> 
> I'm using vxwork's API.
> Is SIGXCPU signal sent when primary to seconday VxWorks task's mode
switch
> ? If it's the case, which implementation would work ?
> 
> Use of signal (native Xenomai API) :
> 
>      void vx_task_create(...)
>      {
>      ...
>      signal(SIGXCPU, xe_signal_thread);
>      ...
>      }
> 
>      void *xe_signal_thread (void *sig_caught)
>      {
>        /* Mode switching warning */
>      }
> 
>      There is missing rt_task_set_mode(0, T_WARNSW, NULL); which I don't
> know where I have to put it because I want all the task to warn in case
of
> a mode switch and I don't what to write this sentense in each task's body
> routine.
> 
> 
> 
> Use of  pthread_sigmask
> 
>      static sigset_t sigusr1Mask;
> 
>      void vx_task_create(...)
>      {
>      ...
>      sigemptyset(&sigusr1Mask);
>      sigaddset(&sigusr1Mask,SIGXCPU);
>      ...
>      }
> 
>      void vx_task_start(...) {
>      ...
>      pthread_sigmask (SIG_BLOCK, &sigusr1Mask, NULL);
>      pthread_create (&sig_thr_id, NULL, xe_signal_thread, NULL);
>      ...
>      }
> 
>      void *xe_signal_thread (void *arg)
>      {
>        int       sig_caught;    /* signal caught       */
>        sigwait (&signal_mask, &sig_caught);
>        switch (sig_caught)
>        {
>           case SIGXCPU:     /* process SIGXCPU  */
>             /* Mode switching warning */
>             fprintf (stderr, "\nPrimary to secondary mode switch %d\n",
> sig_caught);
>             break;
>           default:         /* should normally not happen */
>             fprintf (stderr, "\nUnexpected signal %d\n", sig_caught);
>             break;
>        }
>      }
> 
>      In this case, a thread waiting for the signal will be created with
> each task, I don't thing it's necessary !!
> 
> On last thing, how can I force a vxworks task switching in primary mode,
> like in the native API rt_task_set_mode(0, T_PRIMARY, NULL);
> 
> Thank's in advance
> 
> Matthieu
> 
> 

I found out that it is possible to mix API since SIGXCPU signal, sent when
swiching in secondary mode, is obviously only used by Xenomai Native API.
Well, I tried to implement it in a vxworks context, but I don't have test
it yet. I have some problems remaining with rt_task_set_mode(0, T_WARNSW,
NULL) that I don't know where to use.
Do you have any solution ?

Matthieu



_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to