4 ms·
> The syscall/errno stuff has always seemed unusual, inelegant, and inefficient And non-reentrant. errno is usually defined as TLS (thread local storage). It
by 77pt77 10y ago
> The syscall/errno stuff has always seemed unusual, inelegant, and inefficient
And non-reentrant.
errno is usually defined as TLS (thread local storage).
It's a mess.
- bodyfour 10y agoYes, if UNIX had supported multithreading from the start, there is no way they would have chosen "errno" as the solution. Obvious in hindsight, not so much in the 1970s.
- PeCaN 10y agoSomehow VMS managed to avoid that same mistake in the 70s.
- 77pt77 10y agoI keep hearing that a lot! VMS sounds amazing, but somehow I'm still thinking this might be nostalgia.
- bogomipz 10y agoCan you elaborate on how "errno"'s design is rooted in the fact that there was no multithreading at the time? I am not understanding the connection. Thanks.
- lomnakkus 10y agoMultithreading usually means that threads share the address space and so can (inadvertently) stomp on each other's "errno". (Hence making it Thread-Local Storage to solve that issue. Doesn't solve the reentrancy issue, though.) If multithreading were pervasive nobody in their right mind would choose to use a global variable for error status codes.
- bogomipz 10y agoAh yes that makes sense. Thanks!
- Ace17 10y agoIs TLS actually needed for anything else than errno/GetLastError/SDL_GetError/etc. ?
- 77pt77 10y agoThread id :)