{"push_id":867840582,"size":147,"distinct_size":4,"ref":"refs/heads/p9cons","head":"b8d499e03ea5e003bc4d9152f5c60c1d94de2e5f","before":"ce0983817f0546e330a1bc073533e78d6f2d13c4","commits":[{"sha":"2f541af213ffa0cac8ab8cb09f54ec094e01c24e","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Properly include syscall.h in parlib/event.h\n\nWhen building with -Wsystem-headers, we get a warning like:\n\n\t... /usr/include/parlib/event.h:37:48:\n\twarning: 'struct syscall' declared inside parameter list\n\t bool register_evq(struct syscall *sysc, struct event_queue *ev_q);\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/2f541af213ffa0cac8ab8cb09f54ec094e01c24e"},{"sha":"542db263217c6c54e72a50fe03c0f3c148648de6","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Print the vcoreid for unhandled faults in VC ctx\n\nThis is a little more useful when diagnosing bugs.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/542db263217c6c54e72a50fe03c0f3c148648de6"},{"sha":"729fedfd3357e00dfc0be597e10c5be7fa9ccf86","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"pthread: Fix semaphore's TAILQ type\n\nThe semaphore's TAILQ isn't of pthreads, it's of sem_queue_elements.  I\nspotted this while trying to debug something else in the area.  The\nwarning was hidden because the bad assignment was in a system header.\n\nSpecifically, when the TAILQ macros attempt to do some form of\nassignment, they should generate an incompatible pointer type warning.\nHowever, sys/queue.h is a system header, and those warnings are ignored\nby default.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/729fedfd3357e00dfc0be597e10c5be7fa9ccf86"},{"sha":"11d0ea6595ee28cfdabb9c36465daf38b1d48e55","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Check system headers for warnings for userspace\n\n-Wsystem-headers checks the headers for warnings.  The lack of this flag\nwas masking a minor bug with TAILQs.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/11d0ea6595ee28cfdabb9c36465daf38b1d48e55"},{"sha":"d5f717133f74d1765797fadd351060e07d564361","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"pthread: Fix sem_timedwait() bug\n\n__sem_timedblock() takes a sem_queue_element *, not a semaphore *.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/d5f717133f74d1765797fadd351060e07d564361"},{"sha":"b50178ab79ffb1fbe6d10d5fab6a9094cc14d625","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"pthread: Factor out common active_queue code\n\n__pthread_generic_yield() isn't the greatest name for this, since it's\nused in non-yield paths, but it beats reusing code, and it's not clear\nif we'll want other accounting in there.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/b50178ab79ffb1fbe6d10d5fab6a9094cc14d625"},{"sha":"383de31570adf3c916be7e55254b6495f9cf67ba","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"pthread: Account for pth stopping in has_blocked\n\nThis popped up as\n\n\tuthread.c:621: run_uthread: Assertion `uthread->state == 2' failed.\n\nand\n\n\tpthread.c:246: pth_sched_entry: Assertion `new_thread->state == 2'\n\tfailed.\n\nfor an epoll/eventfd app.\n\nThe ready and active queues were corrupted, due to adding a pthread to\nthe ready queue in pth_thread_runnable() that was still on the active\nqueue.\n\nAnytime a pthread stops and will eventually have pth_thread_runnable()\ncalled, as is the case with blocking a uthread on an event queue (which\nepoll does), then the pthread code needs to yank it off the active\nqueue.  Modifications of pthread->state are a good sign that list\nmanagement needs to be done.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/383de31570adf3c916be7e55254b6495f9cf67ba"},{"sha":"770f325093db21496dae77b42a48f36bd45fa25a","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"pthread: Properly change state for running threads\n\nWe were only setting PTH_RUNNING for thread 0 early on.  After that, it\nwas all PTH_RUNNABLES.  We should now be able to assert that if a thread\nis on the active list, it is marked PTH_RUNNING.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/770f325093db21496dae77b42a48f36bd45fa25a"},{"sha":"407209dc24cd9576dd0ae72fa0807b1dce92a851","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Use a -D when building parlib\n\nThe -D will be defined so that a parlib header can determine how to\n #include a file.\n\nThe search order for user libraries is to first check its include\ndirectory in the source code, and then check the system headers.  This\nis important so that we build with the latest headers, i.e. the ones we\njust changed.\n\nThe problem comes when we want to include a system/glibc header that\nhappens to have the same name as a parlib header, e.g. assert.h in an\nupcoming patch.  From within parlib, we could do an #include_next.  But\nfor external libraries and apps, that fails since user/parlib/include is\nnot on their search path.\n\nWith this -D, we can tell which situation we're in and #include\naccordingly.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/407209dc24cd9576dd0ae72fa0807b1dce92a851"},{"sha":"e3672676a680687c329b971f3eff08c1df46d0b5","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Undefine static_assert() in parlib/rassert.h\n\nstatic_assert() is #defined in glibc's assert.h under certain\ncircumstances.  We'll just use our own in parlib code.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/e3672676a680687c329b971f3eff08c1df46d0b5"},{"sha":"13aa35242b900943c15e4efd3e108cd0ade26091","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Move parlib's assert guts into a C file\n\nHaving the machinery of the print and abort in the header file is\nproblematic for #include loops.  First, we need stdlib included, which\nisn't a big deal.  Second, and more troublesome, is we need vcore.h.\nThat will cause problems with a later commit, where I have all parlib\ncode use parlib's assert.\n\nucq.c was relying on a transitive #include for printd.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/13aa35242b900943c15e4efd3e108cd0ade26091"},{"sha":"a048ac718520817a88edf9970514f01a9ab0777a","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Rename parlib/rassert.h -> parlib/assert.h\n\nSlight change to the #includes in parlib/assert.h, since we are no\nlonger including Glibc's assert.h when we build parlib.  Other libraries\nand tests do include glibc's assert.h.  This is due to the search path\nof the user library Makefrag.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/a048ac718520817a88edf9970514f01a9ab0777a"},{"sha":"5a6c3e32482a19f9ef7b46f4ff1938696052d518","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Remove #include <assert.h> from parlib\n\nOther than the #include <assert.h> in parlib/assert.h, the other assert\nincludes actually do nothing, other than confuse people.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/5a6c3e32482a19f9ef7b46f4ff1938696052d518"},{"sha":"199cd52273a8b2f0d21f3d69ce59efab06561e72","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Do not breakpoint() on parlib's assert\n\nThe breakpoint is very useful for debugging, and people can add it back\nin to their local repos when needed, but it's not needed for the usual\nassertion failure.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/199cd52273a8b2f0d21f3d69ce59efab06561e72"},{"sha":"8a9a5b319756b66c459491c03179fb4f81e4e00c","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Ensure vcore context code includes parlib/assert.h\n\nCode that runs in vcore context should call parlib's assert.  Otherwise,\nthere is a chance glibc's assert will call glibc's printf, which may run\noff the end of the stack and page fault.\n\nBy putting parlib/assert.h in common.h, any downstream headers, such as\nvcore.h, event.t, and parlib.h, will pick up our assert().\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/8a9a5b319756b66c459491c03179fb4f81e4e00c"},{"sha":"d2a9162fc9d310d2dfb322c9f783ba0235f6c489","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"pthread: Panic if there is a bad thread state\n\nThere's no reason to merely print here.  If the type is wrong, there is\na critical bug in the 2LS.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/d2a9162fc9d310d2dfb322c9f783ba0235f6c489"},{"sha":"36acdc59f8952b482afcfe1a638826e4a205ff2a","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Override glibc's printf for vcore context\n\nOur printf is safe from vcore context.  Otherwise, glibc's printf may\nrun off the end of the vcore stack, depending on whether or not the\noutput stream is in buffered mode.\n\nThis only overrides printf, not functions like fprintf, vprintf, or any\nof the other printf functions.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/36acdc59f8952b482afcfe1a638826e4a205ff2a"},{"sha":"0a619aacf78b38d6e94e007defd68e2fc2b3186f","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Call printf() instead of fprintf in signal.c\n\nSignal handlers run in vcore context.  We could page fault on the glibc\nprintf calls.  Our printf() is vcore-context safe.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/0a619aacf78b38d6e94e007defd68e2fc2b3186f"},{"sha":"4140c862931394fabe2bbd8e38174c5875f8d511","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Fix Rock sizeof sockaddr bug (XCC)\n\nWhenever we consider the size of a Rock's sockaddr, we need to use the\nsizeof a struct sockaddr_storage.\n\nRebuild glibc.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/4140c862931394fabe2bbd8e38174c5875f8d511"},{"sha":"c82e32a011bbc47ff179ddae3c22442d1eedd5c5","author":{"email":"66a4aaafefe344f5385586b74770760469cbac80@cs.berkeley.edu","name":"Barret Rhoden"},"message":"Remove (un)likely from the kernel interface (XCC)\n\nUnfortunately, some user libraries out there also #define likely and\nunlikely, and those include both ros/common.h and parlib/common.h.\nSince we're not using likely/unlikely as part of the kernel interface, I\ndon't mind moving it out of ros/.  But it's more unfortunate that we\ncan't put it in a parlib header too.\n\nReinstall your kernel headers.\n\nSigned-off-by: Barret Rhoden <brho@cs.berkeley.edu>","distinct":false,"url":"https://api.github.com/repos/brho/akaros/commits/c82e32a011bbc47ff179ddae3c22442d1eedd5c5"}]}