Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-01-07 | ape/stdio: %z format is VLONG on amd64 | cinap_lenrek | |
2016-01-07 | ape/fmt: %p and %z format for amd64 | cinap_lenrek | |
2015-10-04 | ape: add missing _subv() function to 386/vlop.s | cinap_lenrek | |
2015-10-04 | ape: add machine specific code for spim | cinap_lenrek | |
2015-10-04 | libc: add _uv2d()/uv2f() and _vas*d() functions to vlrt.c | cinap_lenrek | |
on 32 bit archs, implement 64 bit vasop with floatingpoint right hand side. also added is uvlong->double conversion function. | |||
2015-09-25 | ape: add badrect object into ape libdraw | mischief | |
2015-08-08 | ape: fix build for objtype=spim | cinap_lenrek | |
2015-08-04 | ape: implement altzone for tzset() | cinap_lenrek | |
2015-08-04 | ape: fix mktime() again | cinap_lenrek | |
2015-07-07 | ape: port libc smp tas() for arm | cinap_lenrek | |
2015-06-11 | fix strncmp/memcmp used with a wrong number | ftrvxmtrx | |
2015-05-17 | libc: use Runemax instead of hardcoded 0x65536 for fmtchar check (thanks qrstuv) | cinap_lenrek | |
2015-03-25 | ape: fix main9 for mips | cinap_lenrek | |
2015-03-25 | ape: fix lockinit() for mips | cinap_lenrek | |
2015-03-18 | ape: silence compiler "no return at end of function" for mips lock.c | cinap_lenrek | |
2014-12-25 | getfcr: change getfcr/setfcr to use VFP | cinap_lenrek | |
2014-12-22 | ape: add fprint %z format (thanks Ori_B) | cinap_lenrek | |
2014-07-12 | expr: fix missing type declarations for match(), which broke on amd64 as ↵ | cinap_lenrek | |
pointers dont fit into a long | |||
2014-05-29 | ape/stdio: set errno to EMFILE when running out of streams | cinap_lenrek | |
2014-02-17 | prof: properly save and restore RARG for amd64 | cinap_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-01 | libc and ape support for amd64 | cinap_lenrek | |
2014-01-20 | ape: remove local copy of memccpy() | cinap_lenrek | |
2013-12-28 | ape: move strdup() from libbsd to libap (from sources) | cinap_lenrek | |
including <string.h> should be enougth to make strdup() available. | |||
2013-11-06 | synchronize ape's vfprintf with libstdio | mischief | |
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-26 | mkfiles: do not rely on path containing the . element | cinap_lenrek | |
when executing generated binaries and helper scripts, always execute them as ./name instead of relying that path contsins the dot. | |||
2013-09-26 | reverting 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-21 | ape: change tas/sleep locks to cas/semacquire/semrelease locks (from sources) | cinap_lenrek | |
2013-06-08 | ape: fix _main stack setup for arm (_privates and _errnoloc was inside argv) | cinap_lenrek | |
2013-05-11 | ape: 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-06 | ape: remove unused variables | ppatience0 | |
2013-05-06 | ape: fix uninitialized variable bug in getfields() | ppatience0 | |
2013-05-06 | merge | ppatience0 | |
2013-05-06 | access: unused variable | ppatience0 | |
2013-05-03 | ape: get rid of fixed MUXADDR for buffered i/o | cinap_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-03 | ape: remove unused variables from _buf (from erik qunastros _bufupd patch) | cinap_lenrek | |
2013-05-01 | frexp: handle NaN values (from sources) | cinap_lenrek | |
2013-04-05 | ape: inet_ntop() print v4 mapped addresses in v6 as dotted quad | cinap_lenrek | |
2013-04-02 | ape: inet_pton() parse dotted address to IPv4 mapped addresses for AF_INET6 | cinap_lenrek | |
2013-04-02 | ape: 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-01 | ape: add inet_aton() | cinap_lenrek | |
2013-03-31 | ape: initial IPv6 support, inet_pton()/inet_ntop(), getaddrinfo()/getnameinfo() | cinap_lenrek | |
2013-03-29 | ape: fix potential double close in socket() and protect rock chain with spinlock | cinap_lenrek | |
2013-03-11 | ape: threadsafe errno | cinap_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-11 | ape: 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-11 | ape/malloc: make malloc and free threadsafe for python | cinap_lenrek | |
2013-03-11 | ape/stdio: make fopen() quasi threadsafe for python | cinap_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-10 | ape: check for invalid filedescriptors in select() | cinap_lenrek | |
2013-02-28 | ape: 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-08 | ape: fix bug in access() | ppatience0 | |
2013-01-09 | ape: fix getsockname() byte swaped ports (by yarikos) | cinap_lenrek | |
APE's getsockname() returns port with bytes swapped (on 386). |