Hello Pablo, Thanks much for the reply. It had solved the problem. Now this works fine on all the systems I have here.
Just curious, how did this work fine on some machines and did not work fine on some other machines. Can you see any reason behind this? I have the intel xeon processor where this code worked fine without any problem. It failed on the intel pentium 4 consistently. Once again, thank you for the response. Regards, Ravi -----Original Message----- From: Pablo Alvarez [mailto:[EMAIL PROTECTED]] Sent: Wednesday, March 27, 2002 6:34 PM To: [EMAIL PROTECTED] Subject: Re: [rtl] Regarding RT-Threads Hi Ravi, I think you should not use the same attribute object for both threads, especially since they are supposed to have different priorities. Do you get the kernel panic if you use two separate attribute objects? Pablo Alvarez At 12:02 PM 3/27/2002 +0530, you wrote: >Hello, > >I am facing a problem while creating more than one rt-threads in my program. >On some machines it is consistantly giving kernel panic result. Some other >machines it does not give any problem and my program works fine. > >I would like to know whethere there is any limitation in creating more than >one RT-Threads in a single process. If anyone out there has any idea, can >you please let me know where I am doing wrong? > >Both the machines have rtl-3.1 and kernel version 2.4.4. > >Here I am attaching the small sample program I have written. I have modified >the same hello.c in the examples that come along with the rt-linux >installation and am using the same Makefile for creating the module and >inserting it. > >Thanks much in advance for your help. > >Regards, >Ravi > >/* === >hello.c >====*/ > > >#include <rtl.h> >#include <time.h> >#include <pthread.h> >#include <linux/malloc.h> > >pthread_t thread; >pthread_t thread1; >pthread_attr_t attr; >struct sched_param schedParam; > >char *name = NULL; > >void * start_routine(void *arg) >{ > int cnt = 0; > > pthread_make_periodic_np (pthread_self(), gethrtime(), 500000000); > > while (1) { > pthread_wait_np (); > if(cnt %10 == 0) > { > cnt = 0; > rtl_printf("I'm here; my arg is %x\n", (unsigned) >arg); > } > cnt++; > } > return 0; >} >void * start_routine1(void *arg) >{ > int cnt = 0; > char *name = "Test program"; > > pthread_make_periodic_np (pthread_self(), gethrtime(), 500000000); > > while (1) { > pthread_wait_np (); > if(cnt % 20 == 0) > { > rtl_printf("in thread 2 \n"); > rtl_printf("my arg is %x\n", (unsigned) arg); > if(name != NULL) > rtl_printf(" Name = %s \n", name); > cnt = 0; > } > cnt++; > } > return 0; >} > >int init_module(void) { > int ret = 0; > pthread_attr_init(&attr); > schedParam.sched_priority = 2; > pthread_attr_setschedparam(&attr, &schedParam); > ret = pthread_create (&thread, &attr, start_routine, 0); > > pthread_attr_init(&attr); > schedParam.sched_priority = 1; > pthread_attr_setschedparam(&attr, &schedParam); > ret = pthread_create (&thread1, &attr, start_routine1, 0); > return ret; >} > >void cleanup_module(void) { > pthread_delete_np (thread); > pthread_delete_np (thread1); >} > >/* ================ >end of the hello.c program >================== */ >-- [rtl] --- >To unsubscribe: >echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR >echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED] >-- >For more information on Real-Time Linux see: >http://www.rtlinux.org/ ------------------------------------------------------------ Pablo Alvarez, Ph.D. Phone: (617) 353-1423 Boston University Fax: (617) 353-1414 Dept. of Psychology email: [EMAIL PROTECTED] 64 Cummington Street Boston, MA 02215, USA ------------------------------------------------------------ -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/ -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/