From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <9ab217670812171610k2dcc5650ve5f69da704afe55c@mail.gmail.com> Date: Wed, 17 Dec 2008 19:10:57 -0500 From: "Devon H. O'Dell" To: "Fans of the OS Plan 9 from Bell Labs" <9fans@9fans.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Subject: [9fans] 9vx Patches Topicbox-Message-UUID: 6578b3aa-ead4-11e9-9d60-3106f5b1d025 Hey guys, Back in my ``let's have fun with Plan 9'' yearly phase. Here I come back and I see some really cool work. 9vx definitely is the coolest thing I've seen so far, and devtrace looks pretty nifty too. What's really cool to me about them is that they're available and there is open work to be done with them. So I've started hacking away. My 9vx has a couple changes that I found useful / thought would be fun to implement / thought others might find useful. A brief synopsis: * Memory bounds -- gives 9vx an upper bound on resident memory usage as it limits the size of the pagefile. Set by running 9vx with -m [MB] * CPU bounds -- only works on FreeBSD so far. I've got a Linux port of that management code, but it doesn't seem to actually do the right thing (and it hasn't been a priority to fix since I rarely run Linux). I do plan on fixing it, but if someone else wants to fix it first, that'd be fine by me, too. Darwin support looks unlikely because, although the libkvm stuff is there and likely would work after just changing some of the member names of where things look, it has neither a clone(2) or rfork(2) implementation. If anybody has an idea about how to spawn and disassociate a child process in Darwin so it doesn't receive its parents' signals, let me know. Set by running 9vx with -l [% CPU]. * Set window width/height on the console. Set with -w [width] and -h [height], respectively. * Lock tracing. I needed this when debugging some of the netstack stuff because I screwed up a qunlock which deadlocked the system. Set by toggling -L. Things in the works: * Native Plan 9 netstack. It's ported, it compiles, but my virtual ethernet device doesn't seem to be transmitting anything (though I haven't done any extensive tests). See also: http://testbed.dh0.us/~dho/fuxyes.png * Porting devtrace. Needs some changes to compile with gas; the #pragmas are useless, but I think should work after a little more tweaking. * FreeBSD/amd64 support. I don't think it works yet, but it compiles. I don't rightly understand what all the LDT modification does on Linux x86_64 in relation to what I'm actually doing with %gs (hints from people with knowledge welcome). Other stuff * Automatic provisioning via a web browser. Yeah, Plan 9 in the web browser (if you have Java, I guess -- otherwise it's just VNC). http://testbed.dh0.us/ -- this code isn't version controlled, but I could probably put it in hg with little effort. The code for the rest of the stuff is at http://testbed.dh0.us:8000/ --dho