This question has many answers, all of which I found it beneficial at some times. a. Get the few key Linux books on Kernel Internals: Understanding the Linux Kernel by Daneil P Boviet, Virtual Memory Manager by Mel Gorman, Understand Linux Network Internals by Christian Benvenuti, and Linux Process Manager by John Gorman, and the indispensable AMD/Intel manual. b. Be well-versed in C and assembly. c. Download Open source and compile. d. Use http://www.google.com/codesearch e. Use Google Video - lots of technical seminar/talks are available there. f. Ask questions - very often you will find the answer even while asking it. Don't be afraid of criticism, this is OpenSource, and everyone is entitled to their own opinions, and everyone can contribute. g. Generally being focused is good - understanding the entire Kernel will take years, and to contribute as soon as possible, it is better to take one area and specialize. h. Contribute in many ways: criticise others ideas, write documentation, write test programs, suggest alternative implementation, participate in newsgroup or mailing lists etc. i. To address your described problem, identifying the program flow, I found a few good reference: http://lxr.linux.no/ http://www.gelato.unsw.edu.au/lxr/ http://xen.begi.net:46984/markup/xen-unstable.hg The above sites enable you to navigate the kernel sources - who are the caller, the structure declaration etc. Or you can download one and index your own source codes - http://gonzui.sourceforge.net/download.html - this one I find it very fast and easy to use (it need ruby and others). In short, the question has no answer - just go with the flow, and work in as many different direction as possible, so long as you enjoy it, and not doing it as a chore. -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ