simplify errno implementation
authorRich Felker <dalias@aerifal.cx>
Tue, 10 Jun 2014 08:49:49 +0000 (04:49 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 10 Jun 2014 08:49:49 +0000 (04:49 -0400)
commitac31bf278d9ed855e6765bb71d64ed19d2b7c0f8
tree7bb84ee108a4ce18d69164e3bd28ca5f586f9d30
parentdf15168cf8baf34fb9c94e19eaa1a5c79c853970
simplify errno implementation

the motivation for the errno_ptr field in the thread structure, which
this commit removes, was to allow the main thread's errno to keep its
address when lazy thread pointer initialization was used. &errno was
evaluated prior to setting up the thread pointer and stored in
errno_ptr for the main thread; subsequently created threads would have
errno_ptr pointing to their own errno_val in the thread structure.

since lazy initialization was removed, there is no need for this extra
level of indirection; __errno_location can simply return the address
of the thread's errno_val directly. this does cause &errno to change,
but the change happens before entry to application code, and thus is
not observable.
src/env/__init_tls.c
src/errno/__errno_location.c
src/internal/pthread_impl.h
src/thread/pthread_create.c