How do return values of Linux syscalls end up in "errno"? And why does kernel code return negated error codes all the time? http://nullprogram.com/blog/2016/09/23/