Hi all, I have a problem to catch segment violations with Xenomai: For demonstration I use the following program: ------------------------------------------ #include <stdio.h> #include <sys/mman.h>
#include <native/task.h>
#include <native/sem.h>
RT_TASK taska_desc;
volatile int *pointer = 0;
void mytaska(void *cookie)
{
int i;
for (i=0; i < 50; i++)
{
rt_task_sleep(50000000);
if (i > 20)
{
*pointer = 123;
}
printf("Hello %i\n", i);
}
printf("Hi, this is task A\n");
}
int main(void)
{
mlockall(MCL_CURRENT|MCL_FUTURE);
rt_task_create(&taska_desc, "mytaska", 0, 81, T_JOINABLE);
rt_task_start(&taska_desc, &mytaska, NULL);
rt_task_join(&taska_desc);
printf("Main: A joined\n");
return 0;
}
---------------------------------------
Whenever i is greater than 20 a segment violation occurs, as I must not write
to address 0 (the pointer is always NULL).
However, what happens is, that my system freezes after printing out 18 or 19.
I have to reset the PC to continue.
When I write a printf() directly before the invalid assignment I get the usual
linux
"segmentation fault" error message.
How can I catch a signal in a Xenomai real time task?
I am running Xenomai 2.3.0 + NOCOW patch.
I have enclosed the .c file and a Makefile in a .tgz file.
Thanks for any feedback on that issue
Regards
Mathias
~
~
--
Mathias Koehrer
[EMAIL PROTECTED]
Viel oder wenig? Schnell oder langsam? Unbegrenzt surfen + telefonieren
ohne Zeit- und Volumenbegrenzung? DAS TOP ANGEBOT JETZT bei Arcor: günstig
und schnell mit DSL - das All-Inclusive-Paket für clevere Doppel-Sparer,
nur 39,85 inkl. DSL- und ISDN-Grundgebühr!
http://www.arcor.de/rd/emf-dsl-2
signal.tgz
Description: Binary data
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
