Hi! My name is Marcus and i wonder over somthing strange. I have a program that more or less looks below. My question now is why must i use global variables?? If i put "utdata3" after "void start_routine(...)" (localy) then the varible doesn't work properly. I use utdata3 in the function WriteDig2 which sends the data to a ISA-card (and then a couple of lamps falshes realy nice). But if I rmmods the program and then starts it again (insmod) then utdata3 isnt equal 127, but instead it has the same value it had when I removed the module. The solution to this problem was to put the variables outside "start_routine" (globaly). Anouther soultion (a strange one): I could see on the lamps that the old values from before were being used, but if I used a rtl_printf and printet the value of variable, then I got the new-initilized value! (printed value was correct and the lamps also worked as they should) Can't I use local variables if I want to be sure that their next initialization after a rmmod followed by a insmod are correct? -------------------------------------------------------------------------------------- #include.... pthread_t thread; char utdata3=127; int tid = 1000; //antal microsekunder int k=0; void start_routine(void) { pthread_make_periodic_np(pthread_self(),gethrtime(),tid*1000); while (1) { pthread_wait_np (); if (k>1000) { k=0; if (utdata3 <1) utdata3 = 127; utdata3--; WriteDig2(1,2,utdata3); } k++; } } int init_module(void) { return pthread_create (&thread, NULL, start_routine, 0); } void cleanup_module(void) { pthread_delete_np (thread); } -------------------------------------------------------------------------------------------- -- [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/rtlinux/