On 9/21/05, raja <vnagaraju@xxxxxxxxxxxx> wrote: > Hi, > I am trying to trace the race condition by creating 2 threads in > kernel space. One thread incriments a global value and other > decrements that value. > But I am unable to trace the race condition. > I am listing my code.Will you please help me. > > > static int __init init_module_atomic(void); > static void __exit exit_module_atomic(void); > No need for the above declaration .......... > int value=0; Can change this to unsigned long value ......... > > int thread_function_1(void * data) > { > printk("Entered into Thread 1\n"); > int i; > for(i=0;i<1000;i++) > { Can change this loop to for( ; ; ) to get the result more properly > udelay(1000); Change this to schedule(); > value++; > printk("Value Is : %d\t",value); > } > printk("Exited From Thread 1\n"); > return 0; > } > > int thread_function_2(void * data) > { > printk("Entered into Thread 2\n"); > int i; > for(i=0;i<1000;i++) > { Change to for ( ; ; ) > udelay(100); change to schedule() > value--; > printk("Value Is : %d\t",value); > } > printk("Exited From Thread 2\n"); > return 0; > } > In your code you won't be able to see just as your thread_1 terminates quickly before starting thread_2 and udelay is stalling the whole CPU and won't allow CPU to do other stuffs, so changing it to schedule() will give you better result ........... -- Fawad Lateef -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/