strace: Block the target when the strace q is full
authorBarret Rhoden <brho@cs.berkeley.edu>
Sun, 29 Jan 2017 22:42:54 +0000 (17:42 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 9 Feb 2017 17:31:09 +0000 (12:31 -0500)
commitb2334ffbf006c8e8b06ec7a16cd1c5da34fb06d9
tree9e19e40c2a062ef9c79420eea5bd35fdbbf8b799
parent4892c61493728b61dc3a91459f5bf8a218e118af
strace: Block the target when the strace q is full

Unless drop_overflow is set, the *target* will block instead of dropping
a systrace record, for most syscalls.

Syscalls that cannot block are blacklisted.  The main reason for not
blocking is due to accessing per-core state of the calling core.  Once
we block, we could migrate or that state could otherwise be invalid.

This strace option triggered a bunch of bugs, so be careful.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/dev/proc.c
kern/include/syscall.h
kern/src/syscall.c