summaryrefslogtreecommitdiff
path: root/sys/src/ape
AgeCommit message (Collapse)Author
2016-01-07ape/stdio: %z format is VLONG on amd64cinap_lenrek
2016-01-07ape/fmt: %p and %z format for amd64cinap_lenrek
2015-10-04ape: add missing _subv() function to 386/vlop.scinap_lenrek
2015-10-04ape: add machine specific code for spimcinap_lenrek
2015-10-04libc: add _uv2d()/uv2f() and _vas*d() functions to vlrt.ccinap_lenrek
on 32 bit archs, implement 64 bit vasop with floatingpoint right hand side. also added is uvlong->double conversion function.
2015-09-25ape: add badrect object into ape libdrawmischief
2015-08-08ape: fix build for objtype=spimcinap_lenrek
2015-08-04ape: implement altzone for tzset()cinap_lenrek
2015-08-04ape: fix mktime() againcinap_lenrek
2015-07-07ape: port libc smp tas() for armcinap_lenrek
2015-06-11fix strncmp/memcmp used with a wrong numberftrvxmtrx
2015-05-17libc: use Runemax instead of hardcoded 0x65536 for fmtchar check (thanks qrstuv)cinap_lenrek
2015-03-25ape: fix main9 for mipscinap_lenrek
2015-03-25ape: fix lockinit() for mipscinap_lenrek
2015-03-18ape: silence compiler "no return at end of function" for mips lock.ccinap_lenrek
2014-12-25getfcr: change getfcr/setfcr to use VFPcinap_lenrek
2014-12-22ape: add fprint %z format (thanks Ori_B)cinap_lenrek
2014-07-12expr: fix missing type declarations for match(), which broke on amd64 as ↵cinap_lenrek
pointers dont fit into a long
2014-05-29ape/stdio: set errno to EMFILE when running out of streamscinap_lenrek
2014-02-17prof: properly save and restore RARG for amd64cinap_lenrek
amd64 passes first argument in RARG (BP) register which has the be preserved duing _profin() and _profout() calls. to handle this we introduce _saveret() and _savearg(). _saveret() returns AX, _savearg() returns RARG (BP). for archs other and amd64, _saveret() and _savearg() are the same function, doing nothing. restoing works with dummy function: uintptr _restore(uintptr, uintptr ret) { return ret; } ... ret = _saveret(); arg = _savearg(); ... return _restore(arg, ret); as we pass arg as the first argument, RARG (BP) is restored.
2014-02-01libc and ape support for amd64cinap_lenrek
2014-01-20ape: remove local copy of memccpy()cinap_lenrek
2013-12-28ape: move strdup() from libbsd to libap (from sources)cinap_lenrek
including <string.h> should be enougth to make strdup() available.
2013-11-06synchronize ape's vfprintf with libstdiomischief
in ape's vfprintf we don't check if the file we're writing is actually a string buffer, resulting in a return of -1, when we should actually return the number of bytes that would be written.
2013-10-26mkfiles: do not rely on path containing the . elementcinap_lenrek
when executing generated binaries and helper scripts, always execute them as ./name instead of relying that path contsins the dot.
2013-09-26reverting semaphore lock changes from sources (r41ccd6d221da, rb28756e5ba29)cinap_lenrek
semaphore locks have much higher overhead than initially presented in the "Semaphores in Plan9" paper. until the reason for it has been found out i will revert the changes.
2013-09-21ape: change tas/sleep locks to cas/semacquire/semrelease locks (from sources)cinap_lenrek
2013-06-08ape: fix _main stack setup for arm (_privates and _errnoloc was inside argv)cinap_lenrek
2013-05-11ape: change types from unsigned long to void* for rendezvous() and ↵cinap_lenrek
segattach()/segbrk() (erik), use uniqueue rendezvous tags for _buf and listen
2013-05-06ape: remove unused variablesppatience0
2013-05-06ape: fix uninitialized variable bug in getfields()ppatience0
2013-05-06mergeppatience0
2013-05-06access: unused variableppatience0
2013-05-03ape: get rid of fixed MUXADDR for buffered i/ocinap_lenrek
instead of trying to resize the segment (which will not work when the kernel picks the address as it will allocate right before the base of the topmost segment), we create the mux segment with the maximum size needed (arround 1.4MB) for OPEN_MAX filedescriptors. buf slots will be reused and slots get demand paged once used.
2013-05-03ape: remove unused variables from _buf (from erik qunastros _bufupd patch)cinap_lenrek
2013-05-01frexp: handle NaN values (from sources)cinap_lenrek
2013-04-05ape: inet_ntop() print v4 mapped addresses in v6 as dotted quadcinap_lenrek
2013-04-02ape: inet_pton() parse dotted address to IPv4 mapped addresses for AF_INET6cinap_lenrek
2013-04-02ape: check *alen before copying in getpeername(), getsockname() and accept()cinap_lenrek
*alen has to be initialized to the size of the buffer by the caller, and we are supposed to put the real size of the address in there, but not copy more than the original *alen value (truncate).
2013-04-01ape: add inet_aton()cinap_lenrek
2013-03-31ape: initial IPv6 support, inet_pton()/inet_ntop(), getaddrinfo()/getnameinfo()cinap_lenrek
2013-03-29ape: fix potential double close in socket() and protect rock chain with spinlockcinap_lenrek
2013-03-11ape: threadsafe errnocinap_lenrek
store errno on the private process stack so its always per process and not just per memory space. errno itself becomes a macro dereferencing int *_errnoloc; which is initialized from main9.s pointing to the private stack location. various fixes in programs that just imported errno variable with "extern int errno;" instead of including <errno.h>.
2013-03-11ape: fix thread race with close() and select()cinap_lenrek
in ape close(), do the real filedescriptor _CLOSE() *after* we cleared the _fdinfo[] slot because once closed, we dont own the slot anymore and another process doing open() can trash the slot. make sure open() retuns fd < OPEN_MAX. double check in _startbuf() holding mux->lock if the fd is already buffered preveting running double copyprocs on a fd. dont zero the mux->rwant/ewant bitmaps at the end of select() as we do not hold the mix->lock. in _closebuf() kill copyproc while holding the mux->lock to make sure the copyproc isnt holding it at the time it is killed. run kill() multiple times to make sure the proc is gone.
2013-03-11ape/malloc: make malloc and free threadsafe for pythoncinap_lenrek
2013-03-11ape/stdio: make fopen() quasi threadsafe for pythoncinap_lenrek
python uses processes sharing memory. it requires at least fopen() to be called by multiple threads at once so we introduce _IO_newfile() which allocates the FILE structure slot under a lock.
2013-03-10ape: check for invalid filedescriptors in select()cinap_lenrek
2013-02-28ape: add PASS_MAX constant for getpass() to limits.h (from patch/ape-pass_max)cinap_lenrek
add PASS_MAX to limits.h for ape, and make getpass respect it. also increase the size of the maximum passwords (we use long ones at work). Needed for native port of SVN (in progress).
2013-02-08ape: fix bug in access()ppatience0
2013-01-09ape: fix getsockname() byte swaped ports (by yarikos)cinap_lenrek
APE's getsockname() returns port with bytes swapped (on 386).