dillon@ucbvax.BERKELEY.EDU (Matt Dillon) (01/17/86)
FLAME ON Arrggg... the O_NDELAY flag for Lattice C's open() doesn't work. Does anybody know how to do non-blocking I/O without using those idiot Ports ??? If the operating system was done right, it would be an ioctl, generic for any file descriptor (or File structure pointer). One should not need so many include files for simple programs. Why weren't the generic Read() and Write() routines given these options? Also, I am quite sick an tired of having to write 40 lines of code just to simply read all the character's currently in the serial buffer, and NOT block when there aren't any (or the buffer isn't full... yucc) Further gripes: The signalling was done wrong, Devices are not generic enough, The directory structure was done wrong, The filesystem is minimal and not flexable, The Screen/Window routines are not generic enough, The Wait(), message, and packet protocols are all wrong. The multi-tasking was done all wrong. Not only are tasks defined fuzzily (and this goes along with the signal structure), but the OS does not have the ability to kill a task and release it's resources. Additionaly, most of the devices should NOT have been done as tasks. P.S. generic: On the Amiga it takes 40 lines of code to do things (Like non-blocking I/O) which takes 2 lines of code (an open() and an ioctl()) on UNIX systems. FLAME OFF Really, though, the OS is fantastic, but the interface lacks forsight. In fact, there is no interface. As far as I can tell, and judging from the include files, nobody bothered to write a syscall interface. Calls like Open, Close, Rename, Delete file, etc... should be syscalls. Ports, Device driver calls, and specific device I/O calls should NOT. They should have been implimented through Open. Now you know why UNIX is based on "The File Descriptor"; you've screwed yourself by not taking that into consideration. Solutions, anybody? I think I'm going to re-write the OS. -Matt P.S. The graphics routines are excellent, once all the libraries, screens, and windows are initialized.