Dan Stole the Subject for My Farewell
I had been thinking of what subject line to use for my farewell post, as my internship has come to an end - back to school. Halfway through last week I picked the perfect farewell subject line. Unfortunately, Dan used the Hitchhiker's Guide reference I'd settled on when he left last Friday. He should be most of the way back to the east coast now (he's driving). I've got a plane to catch early Tuesday morning. I started thinking about Spinal Tap references for the title, but nothing quite fitting came to mind.
My project is pretty much wrapped up for me, the code's cleaned up, and is now getting some wider attention from people other than Steve. And while waiting for feedback, I spent some time looking at a P2 panic that appeared Wednesday morning, which revealed an odd API quirk and an inconsistency in counting the number of CPUs available to a zone. These bugs, and my project RFEs have been transferred to Steve.
I've had a good time here, and I may be back after I graduate in May. Thanks to all the folks I've met here at Sun for showing me a good time, and teaching me a lot. I'm heading back to school having signed the OpenSolaris contributor agreement, so if I have any spare time at school, I may keep working on OpenSolaris while there. In fact one of the projects I passed on initially, which I later found myself wanting was prototyped by two people previously, but needs a bit of work, and was just posted as a new project on opensolaris.org, and I'm thinking of jumping into that.
As soon as I leave, my login account goes away, so this will be the last entry in this blog. I'm [colin at cs dot brown dot edu], or [colin dot s dot gordon at gmail dot com], and I'll keep blogging at http://ahamsandwich.wordpress.com/.
Posted by csg [Personal] ( August 17, 2007 04:19 PM ) Permalink | Comments[0]
Processor Sets as Processor Pools Putback Preparations?
I've now gotten some more feedback on my changes, and my project mentor Steve tells me that several others are interested in taking a look at my diffs. Approval for putting back a subsystem rewrite like this, even if it passes all tests and doesn't alter user APIs, takes longer than I have left on my internship. So most likely, if it goes back, it will be Steve's doing. But a number of people seem to really want this put back to the gate, and as a result I'm cleaning stuff up in preparation to hand it over.- I sync'ed with the gate
- I filed a few CRs, which I'm now the RE for:
- I'm cleaning up now-spurious comments, and a few more of the artifacts from pools tracking previously being per-process rather than per-thread as it is with my changes, and the left-over remnants of pools being something with an on-off switch rather than being a core subsystem.
- As part of my cleanup, I'm also cleaning up the svc-pools script for the pools service, and making a couple libzonecfg changes since with pools always-on, some error handling and attempts to start the pools service are no longer needed
- I'm making an exhaustive list (which isn't that long) of final checklist items before filing a request to integrate (things like updating manpages to remove references to failure modes which no longer exist)
Posted by csg [Sun] ( August 09, 2007 01:47 PM ) Permalink | Comments[0]
Kernel Technical Discussion Slides
The Intern KTD presentations went pretty well today. Slides are here. If I get a chance before I leave, I might post annotated versions.Posted by csg [Sun] ( August 06, 2007 02:19 PM ) Permalink | Comments[0]
Coming to a close
Well, I have two more full weeks left on my internship, and things are wrapping up. On Monday morning I'll be giving a KTD (Kernel Technical Discussion) to those interested. We just did a practice run, and I'm feeling pretty good about it. If I can, I'll try to post the slides from my talk (just have to double-check the whole NDA thing, but since I was encouraged to blog about this project, I'm not expecting to hear a "No").
In addition to that, my project has mostly wrapped up. I match the gate on results from the pools test suite. I have not been able to panic my system by poking at it or running the psets stress test. I'm basically going back through, making sure my code is well-commented, and that I clean up a few rough edges before I leave. I unfortunately will probably not be doing a putback of my stuff, at least not personally - the ARC process to approve project integration takes a minimum of a week, plus code review, and satisfying an RTI advocate. However, it's in pretty good shape, is pretty clean code, and if someone chose to put it back relatively soon, they shouldn't have much trouble with it. So I guess I'll be watching commit messages for the next few months (though I hope someone would email me if they put my stuff back! :-p).
Next week I'll probably do a final wrap-up summary of the project, or post annotated versions of my talk.
Posted by csg [Sun] ( August 03, 2007 06:35 PM ) Permalink | Comments[0]
Favorite Comments and Constants in OpenSolaris Source
While perusing the code for OpenSolaris, my fellow interns and I have come across some great comments, variable names, and documentation, as any large code base must inevitably have:- usr/src/uts/common/os/clock.c: "If the TOD chip isn't giving correct time, then set it to the time that was passed in as a rough estimate. If we don't have an estimate, then set the clock back to a time when Oliver North, ALF and Dire Straits were all on the collective brain: 1987." (Found by Dan)
- usr/src/uts/i86pc/os/machdep.c: "This routine is almost correct now, but not quite." (also from Dan)
- usr/src/uts/common/os/condvar.c: Regarding
cv_wait_stop(), "This is a horrible kludge. It is evil. It is vile. It is swill. If your code has to call this function then your code is the same." - usr/src/uts/common/sys/dumphdr.h: The magic number at the start of all core dumps:
#define DUMP_MAGIC 0xdefec8edU /* dump magic number */
- usr/src/lib/watchmalloc/common/malloc.c: While poking around in mdb, I printed the words at the end of an array and found
0xbaddcabband0xfeedface. So I opened the OS source browser, searched, and found:/* * Patterns to be copied into freed blocks and allocated blocks. * 0xfeedbeef and 0xfeedface are invalid pointer values in all programs. */ static uint64_t patterns[2] = { 0xdeadbeefdeadbeefULL, /* pattern in a freed block */ 0xbaddcafebaddcafeULL /* pattern in an allocated block */ }; - Earlier today I found out that the Solaris libc defines a struct uberdata. It ends up being used on the sly in the psig command.
- For a good time, follow
int bsd_evil_hackthrough the grub source.
Posted by csg [Personal] ( August 01, 2007 02:58 PM ) Permalink | Comments[1]
