Commit graph

2062 commits

Author SHA1 Message Date
cinap_lenrek dba77caa35 archacpi: implement amldelay(), remove unused variable in setuplink() 2013-09-07 14:41:08 +02:00
cinap_lenrek cf166c3850 libaml: amldelay(), _OSI(), fix bug in Load() (from plhk's acpi patch)
export amldelay() for microsecond sleeps.

implement _OSI() method.

fix rwreg argument in evalload()
2013-09-07 14:40:24 +02:00
cinap_lenrek 81618e61df libc: set malloctag for runesmprint() 2013-09-06 16:55:13 +02:00
cinap_lenrek 1eb2c757e7 scram: remove amlalloc()/amlfree()
these are now part of libaml but can still be overridden
when needed.
2013-09-06 16:54:02 +02:00
cinap_lenrek 616eb1f9ba archacpi: experimental handling of interrupt link devices, io access 2013-09-06 16:50:43 +02:00
cinap_lenrek 9add5b765f libaml: new io interface, add amlnew()/amltake()/amldrop(), late binding names, FindSetLeftBit/FindSetRightBit
new io interface was added. user defines amlmapio() and amlunmapio() functions
that will fill out Amlio structure with function pointers to read/write
routines for a particular region.

amlnew() function added allowing the creation of aml objects like buffers
or packages. these can be passed to amleval() with b, p or * format.

amltake()/amldrop() exclude an aml object from garbage collection.

on load, names are not always resolvable until the whole table is loaded.
for this, we create n objects that are just name strings. after load, we
recursively traverse the namespace and resolve them (see fixnames()).

the FindSetLeftBit and FindSetRightBit opcodes got implemened.
2013-09-06 16:48:27 +02:00
cinap_lenrek 95fac5e873 libhtml: fix potential linked list corruption
the difficulty is freeing items while parsing because items might already
be linked into various linked lists like in docinfo.images or form.fiels.
so we link images, tables and formfields to the docinfo as the final step
of getitems() pass using the new recursive function linkitems(). as only
reachable items get linked theres no danger of dangeling pointers.
2013-09-05 00:55:58 +02:00
cinap_lenrek cca9a1b523 abaco: fix memory leaks 2013-09-04 21:27:59 +02:00
cinap_lenrek 32236b4957 libhtml: fix memory leaks 2013-09-04 21:27:15 +02:00
cinap_lenrek 425338fd1f webfs: add exits(0) to main() 2013-09-03 21:27:48 +02:00
cinap_lenrek c1562daee0 libhtml: fix double free of form action 2013-09-02 23:18:46 +02:00
cinap_lenrek b14138c2ae 9bootfat: always try plan9 partition even when not marked active, fix bug
always look for 9fat in plan9 partition even tho the partition
is *not* maked active. marking partitions active is not
recommended anymore with grub so this makes life easier for
some people. multiple plan9 partitions on a single drive
is not supported.

have to copy partition table as buf gets trashed when reading
first block of fat partition. it worked only when the first
fat partition found (the one marked active) was the right one,
but conffat() can fail.
2013-09-01 21:18:11 +02:00
ppatience0 243cb68011 jpg(1), jpg: add -y flag to usage
png: colorspace will never be CYCbCr (this is no
doubt from copy-pasting from jpg)

tif: everyone else uses colorspace as a function
argument, so we will too

readtif, writetif: credit paul bourke
2013-08-31 13:39:51 -04:00
cinap_lenrek f104cc9d79 usbehci: portreset timing
assert port reset for 50ms, not 10ms.
2013-08-30 16:00:03 +02:00
mveety f459320bb4 removed unused variable resize in wind.c 2013-08-28 23:05:52 -04:00
mveety ba7c22f781 Added the p9p acme patch the allows multiline tags (thanks rsc and lf94). 2013-08-28 23:01:23 -04:00
cinap_lenrek 12ecb3e568 usbehci: fix portreset.
Port Reset R/W. 1=Port is in Reset. 0=Port is not in Reset. Default = 0. When
software writes a one to this bit (from a zero), the bus reset sequence as defined in the
USB Specification Revision 2.0 is started. Software writes a zero to this bit to terminate
the bus reset sequence. Software must keep this bit at a one long enough to ensure the
reset sequence, as specified in the USB Specification Revision 2.0, completes. Note:
when software writes this bit to a one, it must also write a zero to the Port Enable bit.
Note that when software writes a zero to this bit there may be a delay before the bit
status changes to a zero. The bit status will not read as a zero until after the reset
has completed.
2013-08-27 19:01:41 +02:00
cinap_lenrek d76eccaf88 imap4d: apply djc's patch to fix search (from /n/sources/patch/imap4d-cistrcmp)
Fix SEARCH command in imap4d by replacing the cistrstr typo with cistrcmp.
2013-08-27 00:34:17 +02:00
cinap_lenrek 43d3c87294 devproc: properly handle exclusive refcount for /proc/trace 2013-08-27 23:57:17 +02:00
cinap_lenrek 84109a3159 devshr, devaudio: openmode()/devopen() error handling 2013-08-27 23:27:46 +02:00
cinap_lenrek 52a84514ac devmouse: fix openmode() handling
openmode() can raise error with invalid mode passed, but we already
incremented the exclusive mouse refcount at that point! call openmode()
early to avoid this.
2013-08-27 23:26:30 +02:00
cinap_lenrek 244d2ee84b devkbd: fix wrong refcount on open error
only decrement refcount when file was successfully opend
on clunk, fix refcount when devopen() errors.
2013-08-27 23:23:29 +02:00
cinap_lenrek 5e37e6361c etheriwl: recover from rfkill toggle or firmware crash
spawn a kernel process to check the broken state of the controller.
if the firmware crashed, or rfkill was toggled we will reset and
reboot the firmware. also power down the card when rfkill is off.
2013-08-25 18:50:14 +02:00
ppatience0 334054e0e7 nusb/ether: add aue driver for admtek pegasus usb ethernet adapter 2013-08-24 19:18:15 -04:00
cinap_lenrek 808480f76b usbehci, usbuhci: paranoia
double the td abort delay and make sure the tsleep() isnt
shortened by a pending note. in that case, tsleep() would
raise error(Eintr); immidiately and would not sleep the
requested amount potentially cauing us to release active
dma memory too early! so we wrap the tsleep() call in a
while(waserror()) so we will at least wait the Abortdelay
amount if error is raised.

also, only try to idle the still active td's.

do not copy data in epio() when there was an error, theres
no reason to touch user buffer in that case.

for uhci, we also check that theres not more data in the
buffers than requested to avoid overflowing user buffer
in epio(). this should not happen but we'r paranoid.

for ehci, we also halt the queue head first in aborttds().
mark the queue heads as Qfree after unlinking and remove
some silly nil checks that are impossible.
2013-08-25 22:03:02 +02:00
stanley lieber e112160105 file(1): recognize AAC audio files, from sources 2013-08-22 12:14:57 -04:00
cinap_lenrek e5095cca49 wifi: remove pool.h include 2013-08-20 19:48:39 +02:00
cinap_lenrek 9a3a722dde rc: flush environment variables (update /env) before fork
on races... normal forks will all share the /env environment but
not the in memory variables of rc. so when we would normally fork
whoever does an exec (flush) first will override what the values of the
/env variables are, *independent* of the variables that where
actually modified *in* the process.

when we flush *before* fork, then at least both processes start out
with marked clean in memory variables and the processes will flush
only the things they actually change.
2013-08-20 23:56:15 +02:00
cinap_lenrek d8cd5d197d rio: position keyboard window (-k) at the bottom of the screen 2013-08-20 23:48:18 +02:00
cinap_lenrek a0bc81f0be bitsy/keyboard: dont resize our own window
the resizing fails if run with rio in rio. dont try
to be too clever.
2013-08-20 23:36:04 +02:00
cinap_lenrek dda7b2c49f wpa: repeat rsne setup after deassociation (roamng between access points)
the "auth" ctl command only sets the rsne of the current selected
access point. so on deassociation, we wait for the connection to
the potentially new access point and then setup new rsne before
processing eapol messages.
2013-08-19 16:07:07 +02:00
cinap_lenrek 3c3a573562 libsec: only send client cert when we have one (fix regression from r6e976b2004dd) 2013-08-15 00:29:42 +02:00
cinap_lenrek c23a2f6a79 libc: Prevent infinite recursion when modf is called with NaN or Inf argument. (apply richard millers / modf-nan patch from sources) 2013-08-14 18:49:45 +02:00
cinap_lenrek 508b53a29a libdraw: fix leftover processes or programs failing to restore window labels when receiving interrupt note
fix the default note handler for event programs. only handle non system
notes or notes in the slave processes. for interrupt in the main process,
just call exits() which will do the cleanup and restore window label
properly.

this makes completely overriding the note handler in gping and
stats uneccesary.
2013-08-13 21:46:13 +02:00
cinap_lenrek df9597ecde resample: fix XRGB32 color channel handling 2013-08-12 19:28:10 +02:00
cinap_lenrek 1b58ec9279 esd: enlightenment sound daemon
this program allows one to stream audio from linux/windows
to plan9 /dev/audio. sometimes handy to augment vnc sessions
with sound.
2013-08-12 03:43:42 +02:00
cinap_lenrek d4f39b35bf games/doom: remove useless allocation of screen[0] buffer
screens 0-3 are already initialized by V_Init().
2013-08-12 00:40:09 +02:00
cinap_lenrek 762093d212 games/juggle, games/catclock: keep up with queued mouse events
many queued mouse events delay eresize() because
new ebread() takes from the queue first before attempting
to read from the event pipe. this is a waste of memory, so
just process (dequeue) all the events as long as there are
any on each iteration.
2013-08-12 00:08:51 +02:00
cinap_lenrek 883ded7b49 catclock: protect black border with clip rectangle and dont print when window is too small 2013-08-12 23:31:53 +02:00
cinap_lenrek 09d3dbc741 ether6105m: increase timeouts for Soekris 5501s (from sources) 2013-08-11 18:32:42 +02:00
cinap_lenrek bf10f672ec vt: fix off by one memory corruption
account for the final 0 byte in host_buf.
2013-08-11 08:34:34 +02:00
cinap_lenrek 09d465a976 libdraw: make ebread() return buffer immidiately if available, cleanup
this reduces number of syscalls and improves performance for vt
2013-08-11 08:31:53 +02:00
cinap_lenrek 62bd2ae8b9 libdraw: fix ekbd() memory leak 2013-08-11 08:22:21 +02:00
cinap_lenrek 4e3a8e41fb tm2sec: assume local timezone when Tm.zone[0] == 0 (fixes dossrv, zipfs timestamps)
from the manual:

Tm2sec converts a broken-down time to seconds since the
start of the epoch.  It ignores wday, and assumes the local
time zone if zone is not GMT.

so we can assume localtime if Tm.zone is not set to GMT.

all code that wants no localtime conversion should set
Tm.zone explicitely to GMT. (see previous commits)

tm2sec() now does the reverse of localtime() when Tm.zone[0] == 0
which seems to be what the calling code (dossrv, zipfs) assumes.
this also makes sense because theres no simple way todo it
outside of libc as theres otherwise no access to the timezone
structure with the daylight saving periods.
2013-08-11 02:19:02 +02:00
cinap_lenrek 9fb29e09ea cifs: fix timezone for timestamps
tm2sec() ignores tm.tzoff and will use the local timezone for
conversion. to make it work right, we convert the dos timestamp
as GMT and then correct timezone with the offset provided by the
server.
2013-08-11 01:36:03 +02:00
cinap_lenrek c7b56cfe58 auth(8) commands: fix uninitialized Tm.zone in getdate() 2013-08-11 23:21:13 +02:00
cinap_lenrek f536320698 TEQ with S bit = 0 would be pointless, so ARM uses this case to encode "miscellaneous"
instructions like BKPT, BX and BLX.  Decoding these correctly allows db/acid to
single step through BX and BLX on armv5t+, and to show a breakpoint instruction
as 'BKPT $#0' instead of 'TEQ R0@>R0,R0'.
2013-08-10 16:40:36 +02:00
cinap_lenrek bfe852b3a2 nusb/kb: *really* only send to mousein when mouse state actually changes (zero detlas, same buttons) 2013-08-10 08:47:43 +02:00
cinap_lenrek 2012ba4d03 revert previous commit... stupid idea 2013-08-10 08:37:13 +02:00
cinap_lenrek f887f71320 nusb/kb: only send to mousein when mouse state actually changes 2013-08-10 07:59:54 +02:00
cinap_lenrek dfe6118e30 rio: fix unused variable warning in wscroll() 2013-08-10 03:58:52 +02:00
cinap_lenrek 66531b005f rio: shorten overlong window labels 2013-08-10 03:54:55 +02:00
cinap_lenrek e71ff9dc18 mothra: log post data with debug flag, increase max token length from 1K to 4K 2013-08-09 18:23:08 +02:00
cinap_lenrek 0e8fecdad5 mothra: fix nil pointer dereference 2013-08-09 17:24:48 +02:00
cinap_lenrek 7c25ff0c11 sam: avoid thread stack overflow with 32bit runes (from sources) 2013-08-08 01:44:20 +02:00
cinap_lenrek a28bdd3e1f cwfs: fix out of order replies
using a shared reply queue and a pool of worker procs does
result in replies to be send out of order under some conditions.
the symptoms are mnt errors when interrupting requests (Rflush
arriving before the original requests response).

this change gives each connection its own reply queue and its
own srvo process. so now a connection consists of one reply
queue, a srvi process reading the connections file descriptor
and a srvo process reading the reply queue and writng replies
to the connections file descriptor.

the srvi processes live as long as the connection is established.
the srvo prcoesses live forever and are attached to the chan
(which gets reused).

to avoid excessive process creation, we limit the number of
connections to 30. srvchan() returns nil when all 30 network
channels are in use.
2013-08-08 01:07:01 +02:00
cinap_lenrek 3663ffeefa cwfs: use atomic compare and swap to avoid semacquire() syscalls in new queue implementation 2013-08-07 01:32:11 +02:00
cinap_lenrek 2f3f8d50c1 wikifmt: handle & as & in anchor name, cleanup 2013-08-05 06:25:23 +02:00
cinap_lenrek 98c6d867fd wikifmt: more complete title to name= anchor translation 2013-08-05 06:17:24 +02:00
cinap_lenrek 684cf70857 rio: make sure flush replies are send only *after* the request got flushed or was replied
due to the xfid handlers clearing flushtag too early, xfidflush might respond too early
causing spurious replies send later by the handler. now, we clear the flushtag in
filsysrespond *after* the reply was send. xfidflush will wait for us on the active
qlock.
2013-08-05 04:21:34 +02:00
cinap_lenrek 1df707a0b2 unsticky scrollbars
scrollbars used to put the mouse on the scrollbar while scrolling. if latency
is high, this often results to the cursor jumping back. instead, make button 2
srolling work without needing the mouse to be inside the scrollbar and leave
the mouse position alone.
2013-08-05 00:25:40 +02:00
cinap_lenrek cdc0b89d81 fix this megashit 2013-08-05 22:31:37 +02:00
cinap_lenrek 755108a144 cwfs: remove reflock
queues allow multiple readers, reflock seems unneccesary.
2013-08-05 22:07:50 +02:00
cinap_lenrek e3d9591283 cwfs: faster queue implementation using semacquire() 2013-08-04 06:47:56 +02:00
cinap_lenrek 24349c52b4 rio: add ^B control sequence to move cursor to output point 2013-08-04 06:45:58 +02:00
cinap_lenrek a269ced358 apply richard millers arm debug fixes (from sources)
From richard:

A couple of patches applied yesterday should make debugging on ARM a
bit more reliable.  Using db or acid on ARM, you may have noticed that
a program being debugged would sometimes execute through a breakpoint
without stopping, or run away while being single stepped.  It turns out,
as often happens, that one symptom had two separate causes.  For details:
	/n/sources/patch/applied/5db-condcode/readme
	/n/sources/patch/applied/arm-bkpt-cond/readme

To take advantage of the patches, rebuild libmach.a, then acid and db.
On machines with a kw kernel (sheevaplug et al), you'll also want to
rebuild /arm/9plug; otherwise breakpoints will stop working at all.
The new 9plug will, however, still work with the old libmach; and
the bcm and teg2 kernels are already compatible with the new libmach.
2013-08-04 01:52:46 +02:00
cinap_lenrek 7dee88ec33 dns: ignore spam addresses from cname answers 2013-08-04 00:52:39 +02:00
cinap_lenrek 631ac3d2e2 page: maintain a lru list and do unloading from oldest to newest 2013-08-03 17:37:20 +02:00
cinap_lenrek 79b16616d7 libhtml: handle ' character reference
the ' is not strickly html, but can appear in xhtml files.
2013-08-03 05:45:40 +02:00
cinap_lenrek 041eb4b30d page: use less aggressive read ahead and keep track of image memory allocation 2013-08-03 04:11:24 +02:00
cinap_lenrek 3904a8357d do not limit kernelpercent IFF *imagemaxmb= is used on a cpu server
the heuristics that limits kernel memory on a cpu server to
a fixed amout (64MB + size for page tables) makes using devdraw
impractical.

if *imagemaxmb= is specified, we can assume that the draw device
will be used so we want to get a reasonable amount (30% default)
of kernel memory.
2013-08-02 17:52:51 +02:00
cinap_lenrek b0a470fa0d smtp: fix -t flag 2013-08-02 01:22:53 +02:00
cinap_lenrek 2353a35dc8 ether82567: determine phy number by probing phy id registers
link status not working on 82567 was due to wrong phy number
used. instead of hardcoding the phy numbers, probe the phys
by reading id1 and id2 registers (code stolen from ethermii).
2013-07-30 22:51:40 +02:00
cinap_lenrek 3b06ca8566 ether82563: make link status work for 82567
on the 82567, reading any phy register just gives 0 back.
however, the card works just fine and no action is required
to (re-)start auto negotiation. so we add maclproc() which just
reads the speed setting and link status from the mac status
register instead of reading the phy registers.

we'v probably seen this symptom on other cards (link: 0) like
82566. we should test if we can make link status work on
these cards as well by just using the maclproc().
2013-07-29 02:32:16 +02:00
cinap_lenrek c23715d268 ether82598, etherigbe: remove receive buffer pool optimization 2013-07-27 12:39:34 +02:00
cinap_lenrek 95b7745419 ether82563: fix mistake (missing buffer alignment) 2013-07-27 10:33:51 +02:00
cinap_lenrek b116a9ad33 ether82563: remove buffer pool optimizations
rx pool exhaustion causes the system to deadlock when netbooted.
queue management should (etheroq) already makes sure the systen
can keep up with the data thowing away buffers.
2013-07-27 09:25:36 +02:00
cinap_lenrek 2009d55643 ether82563, etheriwl, pmmc: fix potential multiprocessor races with wakeup
make sure that the wakeup enable conditions
are seen by different processors before sleep
is called.

the problems havnt been observed so far.
2013-07-26 04:37:32 +02:00
cinap_lenrek ac52599eef ether82563: avoid deadlock due to icansleep() trying to acquire Rbpool.Lock
icansleep() violates the lock ordering due to the following cases:

rbfree(): ilock(Rbpool.Lock) -> wakeup(): spli(), lock(Rbpool.Rendez)
sleep(): splhi(), lock(Rbpool.Rendez) -> icansleep(): ilock(Rbpool.Lock)

erik fixed this moving the wakeup() out of the ilock() in rbfree(),
but i think it is an error to try acquiering a ilock in sleeps wait
condition function in general.

so this is what we do:

in the icansleep() function, we check for the *real* event we care about;
that is, if theres a buffer available in the Rbpool. this is to handle
the case when rbfree() makes a buffer available *before* it sees us
setting p->starve = 1.

p->starve is now just used to gate rbfree() from calling wakeup() as
an optimization.

this might cause spurious wakeups but they are not a problem. missed
wakeups is the thing we have to prevent.
2013-07-26 01:51:03 +02:00
cinap_lenrek 2759b81dec ether82563: work arround for 82579LM on Lenovo X230
dont reset the the phy on reset as this causes the link
to be stuck at 10mbps.
2013-07-24 22:17:13 +02:00
ppatience0 9a5763624f etherrt2860: add rt3090 support and make style more consistent 2013-07-21 18:13:27 -04:00
ppatience0 776056dcd0 readtif, writetif: remove multiplication in inner loops of predict functions 2013-07-21 10:56:11 -04:00
cinap_lenrek 176569ca4d apply erik quanstros tcp-bdp patch (from sources)
this patch consists of two bits of work submitted as one
patch.

the first bit fixed a "pacing" problem, where a tcp connection
rate-limited by the reading process would experience 10%
of the expected throughput, and could even get into live
lock.  it was noticed at the time of this initial work that
the stack often sent tiny grams.  some good bits from nix'
original tcp were merged in.  the test program
	/n/sources/contrib/quanstro/tcptest.c
will verify that under most conditions, a reader-paced connection
now gets the expected throughput.  expected arguments
would be
	tcptest -s1 -n 5000 -l

the second bit is a first step in preparing tcp to handle
modest (1-2MB) bandwidth-delay products.  the strategy
was to completely implement NewReno.  the testing network
was a 7/35/70ms by 100Mbit wan emulator with 0/.05/.1% loss.
here are the performance comparisons from the changes after
the first round "old" to the submitted patch "new".  the
smallest improvement was 80%, the largest was 11x.

loss%	rtt	old	new
0.10	7	4.40	7.85
0.10	35	0.88	1.79
0.10	70	0.47	0.84
0.05	7	4.80	9.38
0.05	35	1.00	2.02
0.05	70	0.52	1.77
0.01	7	5.33	11.87
0.01	35	1.14	10.97
0.01	70	0.54	4.75
0.00	7	4.49	11.92
0.00	35	1.04	11.35
0.00	70	0.58	10.56

since the diff is not very easy to read, i wrote a small
paper detailing the changes

	http://www.quanstro.net/plan9/tcp/tcp.pdf

- erik
2013-07-21 14:41:51 +02:00
cinap_lenrek 638a822362 abaco: use faster resize instead of resample for image scaling 2013-07-21 00:55:56 +02:00
ppatience0 61c82d2bb8 readtif: simplify rounding in other places 2013-07-20 18:19:20 -04:00
ppatience0 171db68c3d readtif, writetif: simplify rounding 2013-07-20 18:00:34 -04:00
ppatience0 0fc3aa99a1 readtif: if getbit returns less than 0 during eol fill bits, return early 2013-07-20 16:56:29 -04:00
ppatience0 92b14e72b0 readtif, writetif: prevent buffer overflows in some corner cases 2013-07-20 16:42:33 -04:00
ppatience0 105155880c tojpg, totif: change flags to better match those of the decoders 2013-07-20 12:11:52 -04:00
ppatience0 360cabb858 readtif: fix many bugs
totif: add tiff encoder
2013-07-19 02:16:43 -04:00
ppatience0 24a5720bec writejpg: the call to Bflush() is unnecessary; free data before exiting in case of malloc error
writeppm: do not print a space after the last pixel
2013-07-19 01:07:15 -04:00
cinap_lenrek b0cd0020df mothra: use pldraw() to put cmd box on screen for alt display
the cmd box is not part of the alt display hirarchy. for command
typing to show the box in alt display, we call pldraw() on it
in eresized() to initialize its cmd->b image so it knows where to
draw itself on typing.
2013-07-18 20:56:19 +02:00
cinap_lenrek 4755fce1dc wpa: wait for bss to connect
waiting at the auth command is too late because we want to
read the brsne first to build the rsne used in the auth message.
2013-07-18 16:16:31 +02:00
cinap_lenrek b6122a4c42 wifi: make "auth" command non-blocking, let aux/wpa do the waiting for bss scan to complete. 2013-07-18 15:30:53 +02:00
cinap_lenrek 24e8c78cb2 cwfs: add rtmp flag for check command to remove temporary files after recover 2013-07-18 15:04:37 +02:00
cinap_lenrek 8ef9f7bbee mothra: restore usage fix, document -a option in manual 2013-07-18 11:18:31 +02:00
cinap_lenrek 26e93aa49c mothra: add -a flag to start in alt-display mode 2013-07-18 11:03:39 +02:00
stanley lieber 07b4aeeacc mothra: fix usage 2013-07-17 20:25:57 -04:00
cinap_lenrek a7a90b2f3c abaco: remove unused stuff, move pipeline() into util.c 2013-07-14 18:37:10 +02:00
cinap_lenrek 1bc8f69780 abaco: simplify, pipeline html directly thru uhtml 2013-07-14 18:31:07 +02:00