{"push_id":865281515,"size":19,"distinct_size":18,"ref":"refs/heads/sigpipe-support","head":"ab5b2c504cbe8c61b2813f5d712b327fbcd756cf","before":"9df3a58e715388f5e6072470286ce3152fbabe76","commits":[{"sha":"1ed63f9f8e25820f7eb217727d4ee88efe827d41","author":{"email":"53f0fc7a137bf76d92c78b2a8db2fc165ef569c0@google.com","name":"Davide Libenzi"},"message":"Migrated Akaros code to use pragma once (XCC)\n\nMigrated Akaros code to use pragma once include file marker.\n\nRebuild glibc.\n\nSigned-off-by: Davide Libenzi <dlibenzi@google.com>\n[toolchain notice]\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/klueska/akaros/commits/1ed63f9f8e25820f7eb217727d4ee88efe827d41"},{"sha":"989eec150da4f9dd3d8a3a68864f18bea7c565e7","author":{"email":"2e7f5e6c120ad45644b6c32fd10bafcf8f554f9f@gmail.com","name":"GanShun"},"message":"Added Timer thread. Started by consin thread.\n\nTimer thread is started by the consin thread and injects interrupts into the\nguest every so often.\n\nSigned-off-by: GanShun <ganshun@gmail.com>\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/989eec150da4f9dd3d8a3a68864f18bea7c565e7"},{"sha":"70691bf409035c8c12b24a99b2579cc022e29d48","author":{"email":"2e7f5e6c120ad45644b6c32fd10bafcf8f554f9f@gmail.com","name":"GanShun"},"message":"Modified vmx_launch in vmx.c to track the phy core of the vm every exit\n\nThis change updates the vmctl every time we exit from the vm to ensure\nthat we keep track of the correct core to send the IPIs to.\n\nSigned-off-by: GanShun <ganshun@gmail.com>\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/70691bf409035c8c12b24a99b2579cc022e29d48"},{"sha":"ba76ccc7aaef8575299de41ea2f78554bc3181cb","author":{"email":"37cb19c7a46630b2441c47b5e3cc166a1579cb00@google.com","name":"Edward Hyunkoo Jee"},"message":"Let the toolchain Makefile respect MAKE_JOBS environment variable\n\nUsers may want to use environment variables or command-line arguments,\ninstead of using Makelocal file.\n\nSigned-off-by: Edward Hyunkoo Jee <edjee@google.com>\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/ba76ccc7aaef8575299de41ea2f78554bc3181cb"},{"sha":"2656cc9f59352726785547797b80094a36969f6c","author":{"email":"f569d0af9a3481c4007b95c7180d6c41009f2513@gmail.com","name":"Ronald G. Minnich"},"message":"When starting a VM, just copy all registers in.\n\nThis allows the VMM to initialize registers, which we ought to do.\n\nWe need this anyway to pass in a bootparams pointer.\n\nSigned-off-by: Ronald G. Minnich <rminnich@gmail.com>\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/2656cc9f59352726785547797b80094a36969f6c"},{"sha":"b0e11c6fa158c65688d06cede55598e72c07c7e0","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Add space between text and url in ak-code-review\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/b0e11c6fa158c65688d06cede55598e72c07c7e0"},{"sha":"a7bd47c1b29933fd5ca2e2d2d556f26f88927896","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Update the user Makefrag to be more generic\n\nThis commit updates the makefrag for user libs so that it can handle\nlibraries that organize their header files using different patterns. As\npart of this, we are now able to remove our custom pthread Makefile, as\none of the patterns we now support is the one used by the pthread\nlibrary.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/a7bd47c1b29933fd5ca2e2d2d556f26f88927896"},{"sha":"bc87a54562abc54c2a7843e56c9eefcf10998353","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Make userspace think it has at least one vcore\n\nThis popped up if you ran Akaros on a single core machine.  In that case, you'd\nhave 0 CG cores, which means the kernel gives you 0 vcores.  However, SCPs\nthink they have one vcore.  If a process runs at all, it needs to think it has\nat least one vcore.\n\nRebuild busybox.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/bc87a54562abc54c2a7843e56c9eefcf10998353"},{"sha":"581c67e32524ce94ad35d51e0754bc84bc9d38f3","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Fix bug in pthread_sigmask() semantics.\n\nPreviously, the 'how' parameter was not being ignored correctly if 'set'\nwas NULL. Moreover, we were not setting the value of 'oset' properly in\ncases where 'set' was NULL and 'how' should be ignored. This patch\nattempts to fix these semantics to match the specification in:\n\nhttp://linux.die.net/man/2/sigprocmask\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/581c67e32524ce94ad35d51e0754bc84bc9d38f3"},{"sha":"413bce806b2822c9a495b645bd80d33e5fd0795b","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Add parlib-compat.c for weak symbols with parlib\n\nThis commit requires a rebuild of glibc (XCC)\n\nHistorically, parlib and glibc have been 2 separate entities. In spirit,\nhowever, they both serve to provide low level functionalitity required\nby higher level libraries. In theory, all of the functionality we\nprovide in parlib could (and arguably should) eventually be pushed down\ninto the akaros port of glibc. However, for now, we have opted to keep\nparlib and glibc separate to maintain a faster turn-around time with\nbuilding parlib vs. glibc.\n\nUnfortunately, keeping parlib and glibc separate is not very clean when\nit comes to building glibc. Glibc is designed to be the lowest level\nlibrary on the system, and as such, doesn't like it when it has\nunresolved symbols from parlib at link time. Since all executables\neventually link with parlib, this is not a problem (in theory), but\nglibc doesn't like it nonetheless, and we have problems building our\ncross compiler if any parlib symbols are referenced inside our akaros\nport of glibc.\n\nTo help with this, I've introduced a new file called parlib-compat.c,\nto define weak symbols for any parlib symbol that needs to be accessed\ninternally by glibc. This way, the symbol will exist at the time libc is\nlinked (to get our cross compiler build to stop complaining), but those\nsymbols will be overridden by parlib.a in any final executable that\ngets linked.\n\nUnfortunately, this trick only works so long as we leave parlib as a\nstatic library. If we ever decide to make parlib a .so, then we will\nhave to revisit this and use function pointers at runtime or something\nsimilar. Maybe by then we will have pushed all of parlib's functionality\ndown into glibc, so the point will be moot anyway.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/413bce806b2822c9a495b645bd80d33e5fd0795b"},{"sha":"7bbb87f41fba62faefd088be10d3d0a2bf8a4355","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Weasel apart parlib/libc symbols for signals (XCC)\n\nPreviously, all of the akaros signal handling code was in parlib, which meant\nthat none of the glibc functions could use it. Moreover, there was no\ngood way for an individul 2LS to overwrite many of the commong signal\nhandling functions with its own functionality.  This commit weasels\napart some of this mess, allowing a 2LS to hook in its own set of\nfunctions for common functions for masking/relaying posix signals.\nMoreover, it allows glibc to now access the generic signal_ops struct,\nso any function pointers a 2LS wishes to set in there can be called from\nglibc if desired.  This will prove useful when implementing SIGPIPE in a\nsubsequent commit.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/7bbb87f41fba62faefd088be10d3d0a2bf8a4355"},{"sha":"226797a2105cba3e26b0bc50d210825d01812a3f","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Add arch independent accessor for user ctx stack\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/226797a2105cba3e26b0bc50d210825d01812a3f"},{"sha":"a886855d00be027747524f97555d79148390dc45","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Remove need for externally alloced sigdata struct\n\nWe now use space on the stack for storing the original user context and\nand any signal specific state when triggering a posix signal on a\npthread.\n\nAs a side effect, we should now be able to safely longjmp out of a\nsignal handler because there is no longer any external state\nto clean up when the singal handler completes.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/a886855d00be027747524f97555d79148390dc45"},{"sha":"2faae3743ceb863b8cf510ad69ae5dc141b9ad68","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Encapsulate pthread sigstate into a single struct\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/2faae3743ceb863b8cf510ad69ae5dc141b9ad68"},{"sha":"5f02a44a3bb30c6534c6493e15754b7c690f74b5","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Add uthread_paused() API call\n\nThis call is much like uthread_has_blocked(), except that it indicates\nthat some external component has temporarily paused a uthread, rather\nthan blocked it. That is, the external component calls uthread_yield()\ndirectly, but then wishes to hand control of the uthread back to the 2LS\nin the body of theyield callback.\n\nIt is the job of the 2LS to implement sched_ops->paused() such that the\nthread becomes runnable again. This sched op actually already exists\nbecause things like preemption can trigger it. Now it is triggerable by\nany external component that wishes to temporarily pause a uthread with\nits own yield call.\n\nThis functionality will prove useful when pausing a temporarily pausing\nthread to run a signal handler in its place.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/5f02a44a3bb30c6534c6493e15754b7c690f74b5"},{"sha":"3ff971a534eeaab72c5d95b1ba9254412e02dedb","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Migrate signal code from pthread.c to signal.c\n\nPreviously all of the code to support intraprocess signals was isolated\nto the pthread library.  However, the actual functionality it provided\nwas quite generic.  This commit pushes all of that code into\nparlib/signal.c and makes uthreads aware of the ability handle posix\nsignals. It is still up to the specific 2LS to actually use these\nfacilities in their scheduler though. For 2LSs that don't require posix\nsignals, the only waste is a few words in the uthread struct, and a few\nunnecessary instructions to clear these fields when a uthread is first\ninitialized.  There is no actual performance hit unless the APIs from\nparlib/signal.h are actually called (as they are in pthread.c now).\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/3ff971a534eeaab72c5d95b1ba9254412e02dedb"},{"sha":"ec2d611509c5dd6361d484a106576a1b2a37d867","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Add signal support to our basic thread0 scheduler\n\nAs part of this, I needed to add an implementation of thread_paused()\nsince the signal stuff relies on this.  Since it would do nothing other\nthan call thread0_thread_runnable, I just reuse this function directly\nin the function pointer table.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/ec2d611509c5dd6361d484a106576a1b2a37d867"},{"sha":"0ce1592398b054ff613eb09c0126f4585e5a6f5a","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Add a sigself() signal_op\n\nAll of the existing signal_ops map directly to traditional signal\noperations fro glibc. This commit introduces a new operation, called sigself().\nThis operation is meant to trigger a signal immediately on the calling\nthread.  Before this call returns, the signal passed into it will be\ngenerated and run to compeltion.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/0ce1592398b054ff613eb09c0126f4585e5a6f5a"},{"sha":"ab5b2c504cbe8c61b2813f5d712b327fbcd756cf","author":{"email":"bad82f9a6b32052c72c6c00c54e3d2aaf917be49@cs.berkeley.edu","name":"Kevin Klues"},"message":"Add support for EPIPE and SIGPIPE (XCC)\n\nWith this change, we now support proper handling of SIGPIPE.  This\nallows us to now run things such as:\n\n$ hexdump -C bin/hexdump | head\n\nHowever, this only currently works for files in the vfs. Things are\nstill broken for chans in the 9ns.  For example,\n\n$ hexdump -C mnt/go.cpio | head\n\nwill page fault in the kernel with an error of \"rpc tags\".  The SIGPIPE\nis still generated properly. but the call to sys_proc_destroy in the\nSIGPIPE signal handler never completes. Specifically, the kernel never\nreturns from the call to close_fdt() in proc_destroy(). My guess is a\ncall to cclose() on the fd for 'mnt/go.cpio' is sleeping on its\nkref->release(), and never recovering properly.\n\nFor now we can ignore this, since a workaround is to just copy the file\ninto the vfs, but we will need to figure this out eventually.\n\nSigned-off-by: Kevin Klues <klueska@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/klueska/akaros/commits/ab5b2c504cbe8c61b2813f5d712b327fbcd756cf"}]}