summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-06-22kernel: new pagecache, remove Lock from page, use cmpswap for Ref instead of ↵cinap_lenrek
Lock make the Page stucture less than half its original size by getting rid of the Lock and the lru. The Lock was required to coordinate the unchaining of pages that where both cached and on the lru freelist. now pages have a single next pointer that is used for palloc.head freelist xor for page cache hash chains in Image.pghash[]. cached pages are not on the freelist anymore, but will be reclaimed from images by the pager when the freelist runs out of pages. each Image has its own 512 hash chains for cached page lookup. That is 2MB worth of pages and there should be no collisions for most text images. page reclaiming can be done without holding palloc.lock as the Image is the owner of the page hash chains protected by the Image's lock. reclaiming Image structures can be done quickly by only reclaiming pages from inactive images, that is images which are not currently in use by segments. the Ref structure has no Lock anymore. Only a single long that is atomically incremented or decremnted using cmpswap(). there are various other changes as a consequence code. and lots of pikeshedding, sorry.
2014-06-22ed: dont pass string constants to mktemp()cinap_lenrek
2014-06-15games/md: small bug fixesaiju
2014-06-15games/md: add shadow/hilight supportaiju
2014-06-15games/md: add save game support, fix cpu bugaiju
2014-06-14games/md: small fixesaiju
2014-06-13games/snes: fix -Taiju
2014-06-13games/md: vdp window fix, added ym2612 timersaiju
2014-06-13games/md: add z80, audio supportaiju
2014-06-13mergecinap_lenrek
2014-06-13pc64: fix MS2HZ (thanks Anthony Martin)cinap_lenrek
2014-06-12termrc, cpurc: clarify comments by removing liesstanley lieber
2014-06-12libstdio: avoid issues with aliasing in dtoa() on amd64 (from 9atom, thanks ↵cinap_lenrek
to erik and charles)
2014-06-12libsec: use u32int instead of uint when we need 32 bit (thanks erik)cinap_lenrek
2014-06-11samterm: use 4K stacks for amd64 (thanks burnzez)cinap_lenrek
we got a stack overflow on the hostproc on amd64 overflowing by arround 200 byte. so just use 4K stacks for everything.
2014-06-11revert ramfs examplecinap_lenrek
the code was correct. erealloc9p() terminates the process on error, but the code was handling realloc() error explicitely and responded the request with Enomem error.
2014-06-11libsec: fix dsagen 64-bit bug (thanks rsc)ftrvxmtrx
2014-06-11lib9p: ramfs example: s/realloc/erealloc9p/ftrvxmtrx
2014-06-09pool: declare pooldump in pool.h. the manual says it is public.mischief
2014-06-09audiohda: add Intel 8 Series/C220 Series supportftrvxmtrx
2014-06-09ether8169: support for RTL8168Gftrvxmtrx
2014-06-09mkpaqfs: englishmischief
2014-06-09pc: clip rectangles before sending them to the hardware in flushmemscreenmischief
the vmware svga video card emulated by qemu (qemu -vga vmware) complains and eventually causes a panic if the rectangles aren't clipped. messages like the following can be observed from qemu before the kernel panics: vmsvga_update_rect: update h was < 0 (-20000) vmsvga_update_rect: update height too large y: 10000, h: 0 vmsvga_update_rect: update w was < 0 (-20000) vmsvga_update_rect: update width too large x: 10000, w: 0 i could only reproduce this in qemu 2.0.50 on the master branch, when using the ui and had selected 'Zoom To Fit' from the View menu.
2014-06-09ether79c970: fix mistakecinap_lenrek
fix bug introduced by amd64 support: forgot to update ring index i on receive. surprisingly this was working until there where more than one packet to process. sorry. ilock the controller while processing rings. this should be fixed and use kprocs instead.
2014-06-08iostats: add -C flag to enable mount cachecinap_lenrek
2014-06-08iostats: dont sysfatal on 9p read error due to program terminationcinap_lenrek
the note mechanism is racy and can lead to the fs terminating iostats because it gets "i/o on hugup channel" (namespace closed).
2014-06-08swap: make sure swap address sticks arround until page is written to swapcinap_lenrek
we have to make sure the *swap address* doesnt go away, after putting the swap address in the segment pte. after we unlock the segment, the process could be killed or fault which would cause the swap address to be freed *before* we write the page to disk when it pulls the page from the cache and putswap() swap pte. keeping a reference to the page is no good. we have to hold on the swap address. this also has the advantage that we can now test if the swap address is still referenced and can avoid writing to disk.
2014-06-08pc64: use pc/pcrandom.$O instead of port/random.$O for RDRAND instruction ↵cinap_lenrek
support
2014-06-08kernel: remove _xinc()/_xdec()cinap_lenrek
as with the Block refcount changes, _xinc() and _xdec() arent used anymore, so remove them. architecure can still define ainc()/adec() when it needs them.
2014-06-08pc, pc64: fix missed qunlock, use Ref with incref()/decref() instead of ↵cinap_lenrek
_xinc()/_xdec()
2014-06-08omap: move syscall.$O target from config to mkfilecinap_lenrek
2014-06-08omap: remove Block refcountingcinap_lenrek
2014-06-08kernel: remove Block refcounting (thanks erik)cinap_lenrek
2014-06-08teg2: move syscall.$O and syscallfmt.$O targets from config to mkfilecinap_lenrek
2014-06-08kw: move syscall.$O target from config to mkfilecinap_lenrek
2014-06-08omap4: update for new syscall interface and syscallfmtcinap_lenrek
2014-06-07dougfacts: remove html corruption and end file with newlinestanley lieber
2014-06-07pc64: remove unneeded parens in pmap()cinap_lenrek
2014-06-07mergecinap_lenrek
2014-06-07pc64: implement checkmmu() debug functioncinap_lenrek
2014-06-07sdvirtio: experimental support for virtio-scsicinap_lenrek
2014-06-07file: djvuftrvxmtrx
2014-06-06fortunes: i believe any successful Plan 9 distro will need to provide some ↵stanley lieber
transparency in the change review process. -- Skip Tavakkolian
2014-06-06file: detect NES and SEGA rom files, fix newlinecinap_lenrek
2014-06-05mergecinap_lenrek
2014-06-05kernel: dont use atomic increment for Proc.nlocks, maintain Lock.m for ↵cinap_lenrek
lock(), use uintptr intstead of long for pc values change Proc.nlocks from Ref to int and just use normal increment and decrelemt as done in erik quanstros 9atom. It is not clear why we used atomic increment in the fist place as even if we get preempted by interrupt and scheduled before we write back the incremented value, it shouldnt be a problem and we'll just continue where we left off as our process is the only one that can write to it. Yoann Padioleau found that the Mach pointer Lock.m wasnt maintained consistently for lock() vs canlock() and ilock(). Fixed. Use uintptr instead of ulong for maxlockpc, maxilockpc and ilockpc debug variables.
2014-06-05g: add *.cppftrvxmtrx
2014-06-05pc64: dont trap _xinc()/_xdec() overflow/underflow, delete unused atomic ↵cinap_lenrek
functions
2014-06-04webfs: explicitely unmount old /mnt/web (thanks BurnZeZ)cinap_lenrek
webfs forks the namespace to isolate itself from its mount point which has the side effect that it captures the mount of previous instances of webfs mounted on /mnt/web. explicitely unmount the mountpoint in our namespace copy to drop the reference.
2014-06-04nusbrc: dont fork usb drivers into backgroundcinap_lenrek
probing needs to run synchronous to avoid races with other readers of /dev/usbevent.