Thanks for your reply. Regarding your suspects -
1. I am actually calling the register_timer_interrupt routine to register the hook only once by running the userspace program once that registers the hook. So there should not be any lock contention I think unless the lock is global in the kernel!!!
2. I can't think about why it would overflow kernel stack because do_timer() calls many other functions too and my registered hook is like any function call which is currently empty. So it should not take any time to execute it.
3. After I load the module, I run the userspace program which registers the hook and terminates. The system runs fine for about 5-10 secs after that before freezing.
- Meraj
Mulyadi Santosa <mulyadi.santosa@xxxxxxxxx> wrote:
Hello...
> Why is registering an empty function and calling it from inside do_timer
> freezing the system after a short period of good run?
There are several suspects:
1. your code (call_timer_hook) is called while xtime_lock is held. it
could lead to lock contention.
2. you're running out of kernel stack. I don't have hard proof, purely
blind guessing. Try to make all your hook function a "static inline"
one. Silently overflowing kernel stack, AFAIK, is hard to detect. Do
you use 4K or 8K stack size? try 8K and see if it helps.
Before I forgot, you said it runs OK for after (quick?) period? So
this problem is intermitent?
regards,
Mulyadi.
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ
Boardwalk for $500? In 2007? Ha!
Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.