-
Notifications
You must be signed in to change notification settings - Fork 281
Core Changes Versus UZI180 WRS
EtchedPixels edited this page Nov 17, 2014
·
2 revisions
Changes made (base UZI-WRS) before this became git tracked:
- Correct order of cr/lf in putchar()/printk etc
- O_APPEND mode
- Added saving of O_flags beyond r/w/rw
- O_CREAT, O_TRUNC, O_EXCL
- creat now obsolete (frobs and runs open)
- mknod only allows non root user to create pipes
- readi/writei are passed file flag and pass it on
- readi/writei implement non blocking on pipes (minimally)
- rwsetup retrieves access bits for readi/writei to use
- flags are propogated to char devices (but not yet to block devices)
- added uarea.u_root and ref/derefs for it on fork/exit/startup
- n_open starts from udata.u_root and also checks for /.. through root
- modified execve() to honour O_CLOEXEC (sort of) (CLOEXEC should be per fd not per file handle!: FIXME)
- support for O_NDELAY on tty_read (open doesn't do blocking for carrier at all yet, and write is complicated)
- Added fcntl method
- Added u_cloexec to uarea (16bit mask), and made CLOEXEC handlers use it including fcntl, moved CLOEXEC into open only flags.
- Added fchown, fchmod, fchdir
- check if fchown/fchmod are smaller by using shared helpers (yes)
- use a helper for fchdir/chdir/chroot
- add a helper for suser that also sets EPERM
- switch from lib printf to a simple kprintf and kputs etc
- panic tidied to use kputs (also PANIC is now panic in the text)
- added mkdir/rmdir
- forbid unlink of a dir, fix perms checking
- add uf_alloc_base/uf_alloc split, implement F_DUPFD
- added an analyser for size reporting and memory hogs
- return resulting not old position on seek()
- keep a pointer to the offsets we play with in seek (saves 139 bytes)
- add CONFIG_ options for idump and monitor trap (saves over 1K by default and fixes a bug)
- Move long boot up texts into buf[0-2] (cheap trick) (saves 302 bytes)
- All swap* names are now switch* ready for adding a real swapper
- Fix bug in new open() that gave unknown error for opening an unknown file
- Add setpgrp(), and change kill() to honour 0, and -ve for process groups (still need to fix tty ^C to match)
- Fixed "kill 0" semantics
- Added O_NOCTTY to devtty.c and switched to pgrps by changing siggrp to do pgrp not tty matching
- Added a uname that passes 0 seperated strings, return is len so caller can tell if new ones added to ABI
- Added waitpid, and WNOHANG, no support for stopped etc waits
- save p->p_pid before marking slot empty
- dieted sd_init
- added profil syscall pieces, and configurable. Not yet added int handler bits (needs care on mmu mappings)
- Set MAXTICKS to 10 (no reason for switching every tick!)
- implemented the nice syscall
- minimal implementation of uadmin for shutdown/reboot
- extend uname to cover sysconf data and "free" type stuff
- fixed bug introduced in the new tiny kprintf
- fixed memory size in socz80.s
- added rename()
- fix "link" to check only dir permissions and also disallow link to dir
- uninline long shifts in sd_init which bloat the code horribly
- split sd_init parition printing code
- remove fname checks by pushing the "creat /" handlin into ch_link
- clear u_cloexec on exec
- proc interface return 0 for EOF not 1 !!
- remove proc and zero private no-write interfaces and make no_read no_rdwr
- switch to new ugetsys/uputsys for driver buffer copies
- fix error returns on no_ioctl, no_rdwr
- remove progtop uput hacks on minor code
- Make valaddr() handle wraps correctly
- Initial split towards platform/ and generic code
- Fixed optimisation bug introduced in devps
- Allow uname customisation via makefile
- Tweak makeversion to set up uname_len, and make it const
- Fixed bug in devsd SPI init that broke MMC and SDSC cards
- Fix handling of smaller than 32MB final device
- Correct broken permission checks in mount (introdced in esuser mods)
- Correct esuper cases - fixes mkdir with no . and .. and umount bugs
- Clean up fname checking leftovers
- Split the platform dir properly with its own Makefile and moved includes
- Move kprint and friends out of devtty into devio
- Add a sleep/O_NDELAY/signal helper
- NMOUNT so mount table can be smaller than number of devices (can't yet set it differently) [put mount ptr in device table ???]
- fs_tab is device sized pointer table, small mount table of actual filesys objects
- further clean up of shared v private asm code
- get to the point a kernel can be built for either socz80 or z80pack (untested on z80pack!)
- put into git
- UZIX calls driver poll in idle loop rather than halting, implement this choice
- Mini UZI for small boxes with no hd, always runs just the "top" process of the stack (ie fork is fork/sleep). Possibly plus tty irq only mode for some other crap boxes if needed (bg tasks only when fg is in tty waits)
- Clean init died handler
- Add brk() to expand data space within chmem space only
- Adjust allocator so program only get the number of banks they need
- Support better use of memory. New binary type to allow chmem
- Z80pack port needs the bank copier and user copiers done properly
- create a "library" of standard mmu types etc
- split includes further
- clean up assembler common/private bits
- Platform specific mapping
- Introduce 4 bytes of pagemap, pass ptr to pagemap not pagemap data in HL
- Fixed banks, no change Single user - allocate only that space also
- single user swap out in strict parental order and swap just the range specifie d.
- Map small binaries in less pages when non relocatable, map the image at bottom and top repeating. UAREA remains as expected at top, vectors bottom but uses less real pages
- Single user mode with crap swap, instead of relocatables we can ldir
binaries up in memory and stack ram from the PROGTOP
- means PROGTOP becomes a variable
- means SWAP mapping is not fixed (good thing to sort anyway)
- stack into upper ram, swap to disk if option, each new app gets
- 0x0000->the base of the stacked apps
- 30 char names
- Proper major/minor numbers
- uput and efault API
- mapping table for swaps (hand a swap out to users with page1 = swapmap page0=0 meaning swapped). Means we can have a swap where we openswap (check for sig), read the size and set up that many maps. Means swap out can fail but that is fine a s we already cover the out of memory paths it causes. Means we need less swaps as w hile we eat 48K or 64K per task we don't waste any - big deal with large proc tab
- remove doclose hacks on device close occuring each close not final ?
- Add getpagesize() [can be part of a single getsysinfo call with uname etc]
- fix off_t/time_t to be proper values in libc API
- make kernel provide lseek and proper off_t
- make kernel provide proper time_t
- 32 byte directory entries (SYS5 style)
- steal the 'reuse the last buffer exec and file optimisation trick' from OMU
Fuzix: because small is beautiful