Return syscall errors in a single word

Use Linux convention that reserves top 4K of return values for errors;
negate errno to produce value in that range.