summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-05-30mergecinap_lenrek
2013-05-30kernel: do all fp state fork from procfork() (like pc kernel)cinap_lenrek
this simplifies the arm ports and keeps all the stuff in one place instead of spreading it thru notify(), trap() and syscall() functions and prevents useless fp state copying for kernel procs. also make sure to save fp in notify while still splhi().
2013-05-30pc kernel: simulate FXSAVE/FXRSTOR tag-byte from x87 tag-word, copy fp state ↵cinap_lenrek
across fork the tag-word is not compatible between x87 and sse, have to convert properly for emulation to work. we now copy fp state across fork (again!) to preserve FCW and MXCSR registers. this might not be neccesary as we could probably just get the current value for the curren process and avoid the fpsave() call, but become conservative again.
2013-05-30libmach: fix reversed F0-F7 register ordercinap_lenrek
2013-05-29ircrc: target is more important (especially in winwatch)ftrvxmtrx
2013-05-28io, seg: we should exits(nil) at the end of mainppatience0
2013-05-27mothra: clicking on the url scroll bar, snarfing, or saving a hit when no ↵ppatience0
urls have been loaded (right after running mothra) would crash. this was due to use of w->url and selection when they are actually nil. to fix this, make genwww return 0 if w->url is nil and output an error message when attempting to access selection if it's nil. the problem with the w->url fix is that after clicking on the url scroll bar, an empty url history row could be highlighted by clicking on it. fix this by making sure lp->lo is not less than zero.
2013-05-27tojpg: GREY[1248] images should be grayscaleppatience0
2013-05-28mergecinap_lenrek
2013-05-28kernel: sysrfork abortioncinap_lenrek
when we fail to fork resources for the child due to resource exhaustion, make the half forked child process call pexit() to free the resources that where allocated and error out.
2013-05-26tojpg: add jpeg encoderppatience0
2013-05-27kernel: make imagereclaim() skip notext pages (prevent it from blowing the ↵cinap_lenrek
mount cache) imagereclaim would happily uncache pages from the mountcache (port/cache.c) without ever getting a Image* released from it. simple fix, just check for p->image->notext but make sure todo it under the page lock :)
2013-05-27mergecinap_lenrek
2013-05-27kernel: dont copy fpsave on fork, simplify freeing waitq in pexit(), remove ↵cinap_lenrek
unused semlock from Proc sturcure
2013-05-27devfs/devsd: fix waserror() and unused variable compiler problemcinap_lenrek
the compiler optimizes setting unused variables out, which is problematic if they are used in waserror() handler which the compiler isnt aware of. rearrange the code to avoid this problem.
2013-05-27kernel: closechanq errorcinap_lenrek
catch potential interrupt error from kproc(). this can happen when we run out of processes, then newproc() will call rsrcwait() which does tsleep(). if the process gets a note, this might raise a interrupt error.
2013-05-27kernel: image reclaim pausescinap_lenrek
get a bit more verbose about process image exhaustion and make imagreclaim() try to get at least one image on the freelist. use rsrcwait() to notify the state, and call freebroken() in case imagereclaim() couldnt free any images.
2013-05-27kernel: fix sysexec() error handling compiler problem, sysrendez() busyloopcinap_lenrek
the variables elem and file0 and commited are explicitely set to avoid that they get freed in ther waserror() handlers. but it turns out the compiler optimizes this out as he thinks the variables arent used any further. (the compiler is not aware of the waserror() / longjmp() semantics). rearrange the code to account for this. instead of using a local variable to check for point of no return (commited), we use up->seg[SSEG] to figure it out. for file0 and elem, we just rearrange the code. elem can be checked in the error handler if it was already assigned to up->text, and file0 is just free()'d after the poperror(). remove silly busy loop in sysrendez. it is not needed. dequeueproc() will make sure that the process has come to rest.
2013-05-26keep fpregs always in sse (FXSAVE) format, adapt libmach and acid files for ↵cinap_lenrek
new format we now always use the new FXSAVE format in FPsave structure and fpregs file, converting back and forth in fpx87save() and fpx87restore(). document that fprestore() is a destructive operation now. change fp register definition in libmach and adapt fpr() acid funciton. avoid unneccesary copy of fpstate and fpsave in sysfork(). functions including syscalls do not preserve the fp registers and copying fpstate from the current process would mean we had to fpsave(&up->fpsave); first. simply not doing it, new process starts in FPinit state.
2013-05-26add leading dot for explicit domain in webcookies, bump redirection limit to ↵cinap_lenrek
12 in webfs
2013-05-25graphics(2): remove non existing char *mousedir argument from geninitdraw ↵cinap_lenrek
(from sources / geninitdraw-no-mousedir patch)
2013-05-25libdraw: fix agefont crash when display == nil (from sources / ↵cinap_lenrek
agefont-nodisplay patch) If you run this: {for (i in `{seq 1 70000}) echo '½•α·'} | mc | wc mc will eventually suicide. The error comes from /sys/src/libdraw/font.c:/^agefont which assumes it has a display. Normally, this is set up by geninitdraw (usually via initdraw), but mc.c avoids that to avoid the screen redraws (flicker, at a minimum, but worse in long-running cases). graphics(2) does not prohibit this use, so I made the least intrusive change to make it work.
2013-05-25kernel: fix floating point exceptions (was broken by sse kernel changes)cinap_lenrek
the fpenv() instruction stores in x87 format, using mathstate() would interpret fpsave as FPssestate in case it was enabled! instead, pass the status word and fppc explicitely to mathnote() in matherror(). get rid of m->fpsavealign buffer, as we can just use FPssesave struct which has enougth padding so rounding up base pointer will not overflow.
2013-05-21kernel: cleanup /sys/src/9/pc/mkfile PORT= and OBJ= listscinap_lenrek
2013-05-21kernel: prevent alarm(2) from returning instantly when the tick timer wraps. ↵cinap_lenrek
(from erik quanstros alarmwrap patch)
2013-05-21wifi: properly size internal wifi input processing queuecinap_lenrek
we only used wifi->iq to process management frames only, now its also used to forward encrypted data frames, so size it accordingly.
2013-05-21mergecinap_lenrek
2013-05-22mergejpathy
2013-05-22sse kernel support (sources)jpathy
2013-05-21add 6(a|l) sse support to 8(a|l)jpathy
2013-05-21kernel: make allocb() wait instead of panic() when possiblecinap_lenrek
as long as our process doesnt hold any locks or ilocks, we can try to wait for the memory to become available instead of panicing.
2013-05-20uarti8250: print on malloc failurecinap_lenrek
2013-05-20mergecinap_lenrek
2013-05-20pcuart: malloc error handling, cleanupcinap_lenrek
2013-05-20kbmap/ua: fix uppercase ьftrvxmtrx
2013-05-20devether: handle malloc error in etherprobe()cinap_lenrek
2013-05-20wifi: handle malloc errors in wifiattach()cinap_lenrek
2013-05-20use resrcwait() when waiting for memory to become availablecinap_lenrek
use resrcwait() when waiting for memory to become available. randomize the sleep time and properly restore old process status in case tsleep() gets interrupted.
2013-05-19devsd: don't raise Enomem error if sdmalloc() fails, instead wait for the ↵cinap_lenrek
memory to become available filesystems do not handle i/o errors well (cwfs will abandon the blocks), and temporary exhaustion of kernel memory (because of too many i/o's in parallel) causes read and write on the partition to fail. i think it is better to wait for the memory to become available in this case. the single allocation is at max SDmaxio bytes, which makes it likely to become available. if we havnt even enought fo that, then rebooting the machine would be the best option. (aux/reboot)
2013-05-19kbmap/ru: fix uppercase ьftrvxmtrx
2013-05-18nusb/kb: simplify repeat logic as scancode now contains the info about esc1 ↵cinap_lenrek
extension
2013-05-18nusb/kb: oops, fixupftrvxmtrx
2013-05-18nusb/kb: use a flag to indicate extended code; fix the most unix-friendly ↵ftrvxmtrx
key on se/fi kbd layout
2013-05-15faces: just say no to dejavustanley lieber
2013-05-14netaudit: check if ipgw= is an ip addresscinap_lenrek
2013-05-14make clear that the "ipgw" attribute has to be an ip addresscinap_lenrek
2013-05-14fortunes: Subject: [9fans] [gsoc] Dart9Pstanley lieber
2013-05-13rio: place text at beginning of line before cursor and host pointcinap_lenrek
2013-05-13rio: fix completion and readback and make it possible to complete historycinap_lenrek
2013-05-12toppm: no need to initialize errppatience0