Re: [PATCH][RFC] global errno considered harmful

Ralf Baechle
2001-12-30T21:01:24Z

On Sun, Dec 30, 2001 at 02:56:21PM -0500, Jeff Dike wrote:

> buytenh@gnu.org said:
> > Is there any particular reason we need a global errno in the kernel at
> > all? (which, by the way, doesn't seem to be subject to any kind of
> > locking)
>
> As far as I've been able to tell, no.

Historically the reason was to make unistd.h usable from userspace. Which
is causing tremendous portability problems so apps better shouldn't think
about using the syscall interface directly.

> > It makes life for User Mode Linux somewhat more complicated
> > than it could be, and it generally just seems a bad idea.
>
> Yeah. In order for -fno-common to not blow up the UML build (because of the
> clash between libc errno and kernel errno), I had to add -Derrno=kernel_errno
> to all the kernel file compiles. It would be nice to get rid of that wart.
>
> > Referenced patch deletes all mention of a global errno from the
> > kernel
>
> Awesome. This definitely needs to happen. If no one spots any breakage,
> send it in...

As user application are trying to use unistd.h and expect errno to get
set properly unistd.h or at least it's syscallX macros will have to be
made unusable from userspace or silent breakage of such apps rebuild
against new headers will occur.

Ralf