>>What does it mean to mandate portability? >>Does it mean writing no assembly code at all? Go ahead and try to write a >>kernel that wa >>y. :-) > >Well, of course not. :) :-) >>Does it mean writing as little assembly as possible? That is good kernel >>design. > >Good for design, not so good for speed. Eh. Assembly is over-rated. The number of people who *can* write better code than the compiler is *far* smaller than the number who *think* that they can. And that is increasing by the day. Not to sound old, but back in my Amiga days, it wasn't too tough to do better 68k asm than SAS/C. But I would be surprised if more than a few people on this list (or, in fact, in the whole Be community) could write better asm than gcc. Personally, I couldn't. Not without a *WHOLE* lot of learning. Most people save most time by improving their algorithms. ;-) >>Does it mean being modular? That, too, is good kernel design. And the BeOS >>way. > >This is exactly it. Make strong use of abstraction layers, when appropriate. >Use >a nice clean interface, so it's easy to write a few simple assembly functions >to get >a port *running*, but it isn't necessary to stick just to C, inlined assembly >is >fine too, and can be extremely beneficial. I've seen bits of NetBSD be >rewritten >as assembly, and improve say, network performance by 5-20%, depending on the >hardware, >yet not impact portability whatsoever, since there's still the C functions >available >for new ports until whatever time they choose to write the optimized version, >or not. :) I think that (and this may just be me) this is probably the least likely optimization that people will find. Now, having said that, if someone will find it, the NetBSD people will. :-) >When it comes down to it, it's not too difficult to work in the portability >bits, >and the gain is huge when someone wants to add New Platform X(tm) support to >the >OS. I 100% agree. Travis did *exceptional* work with this. Better than the Linux source, for example, that I have looked at. Way better. Porting NewOS is trivial *COMPARED* to other OS's. But getting a functioning kernel is *FAR* different from a complete and tested system. :-) That is what I have been (subtly) saying to the PPC folks. I like PPC better, too, as far as chip deisgn and all goes. But basically, you need to write a whole new set of drivers (or at least many of them) for PPC. The PCI, USB, IDE (if applicable) and SCSI drivers would need work, if not a re-write. Then there is video, audio, networking, internal modems, etc. Even the iMac's - there are a zillion motherboard revisions and a couple of different models now. Not to mention the colors. ;-) A port to make the raw kernel (no devices) work on another chip is as trivial as that process can be, IMHO. Writing device drivers, though, is never trivial. Especially without specs. :-/ I would *love* to buy my Mom an iMac and throw OBOS R1 on it. Really. I think that the hardware is pretty slick. But I can't tell people that we will ship in 2009, either. :-/ >>I am not sure what I, as a kernel developer, should feel mandated to do, here. >You're the one making the decisions at the moment, I think.. :) :-) My point was that the request wasn't clear. :-) And I don't *ever* want to be project dictator. I *need* input from others. That is really the whole point of this list. :-) >You choose the mandates, I'm just throwing in my CAD0.02 (effectively nothing! >Yay!) :) Come spend it in Rochester - we need it. :-)