• SoC: Status report 5

    I started this week's work by reading the first chapters of Design and Implementation of the UVM virtual memory system to see if I'd learn how to manage anonymous memory. I had been suggested to use anonymous memory objects (aobjs, for short) to store file contents, so I was shown with the task to learn what they are and how to use them. I have to confess that I was afraid of not knowing how to complete the read/write operations for the file-system, because things were very confusing to me even after reading the document.

  • Raw disk devices vs. regular ones

    People have sometimes asked me what is the difference between regular disk devices and raw ones in BSD systems; as an example, take /dev/fd0a and its corresponding /dev/rfd0a. The thing is that I wasn't able to answer them correctly because I didn't know how they really differed. However, while reading The Design and Implementation of the 4.4BSD Operating System during past month, I found the explanation. So here goes a clarification:

  • SoC: Status report 4

    This past week has been quite productive as regards my SoC project, tmpfs, although at the beginning I was a bit stalled (and afraid of not knowing how to solve the problems I had). I started trying to fix the rmdir operation, which was broken since its addition. Thanks to the dedicated test machine, I was able to discover the point of failure quite easily because it panic'ed long before the iBook did.

  • Using 'goto's in C

    It is common knowledge that usages of the goto statement are potentially dangerous in any structured programming language, as their abuse can quickly make your code unreadable. This is why this construction is seldom explained to people learning how to program and their use is strongly discouraged. However, there are some situations in which it is very useful and, despite what some people might say, makes your code more readable. I had never used gotos before, but have experienced this recently while writing tmpfs.

  • Dedicated machine for kernel testing

    During the past month, I had to do all tmpfs development on my laptop. This includes coding and testing. If you have ever done any kernel hacking you know what this means: reboot every now and then to test your changes, which can drive you crazy after few reboots (specially if things keep breaking). So when I got back home, the first thing I did was to set up a machine I had lying around for kernel testing exclusively.

  • Hollywood OS

    Have you ever been disappointed by how software looks and behaves on almost all movies? If so, just go and read the description of Hollywood OS; it's worth it ;-)

  • SoC: Status report 3

    It has been a long time since the previous status report; I'm sorry for that, but I haven't been able to publish one earlier. The good thing is I'm finally back from my vacations, so I'll able to work on tmpfs more seriously and continuously from now on (and I have to!). Anyway, to the point of this post. I've just pushed all the changes I had in my work tree to the mainstream CVS server.