I closed out last week by drawing a flow chart in preparation for restructuring my code for some new state variables. For most of this week, I was figuring out details about, and implementing, this chart.
From beginning of week I started reading more stuffs (core) about AHCI and trying to plan a road map which I will follow after making first version of AHCI driver. Throughout the week I made some progress with Interrupt Handler and AHCI port programming. Though I have finished port programming routine and next I will complete Interrupt Handler followed by Srb functions.
At the beginning of the week I finished cleaning up and committing the code I wrote related to extending a file's size. This took me a little longer than I expected and in the future I'm going to commit more often so I don't have this problem.
From there I added support for truncating files, with a couple of caveats. This is significant because it allows for opening a file in Notepad.exe, changing it, and saving it.
After long period of investigation and debugging, this week I have commited first patches for review. And they make difference under 2k3 :)
About fixes I've done
As continuation of usbhub's PnP handler debug and testing, this week I have commited patches with fixes. The most important ones are described below (same description is given in commit messages too).
Going into week 5, I started with a code-complete but very much incorrect implementation of the TDI_SEND and TDI_RECEIVE IRQ handlers. My TCP_CONTEXT data structure and the existing ADDRESS_FILE data structure both did not contain a way to keep track of pending IRQs, so I had no way of keeping track of outstanding pending IRQs and what connection contexts they were supposed to be associated with. Without a clear scheme for keeping track of the information, IRP pointers invariably got lost.