about summary refs log tree commit diff
path: root/src/thread/pthread_create.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2018-05-07 22:39:07 -0400
committerRich Felker <dalias@aerifal.cx>2018-05-07 23:37:36 -0400
commit1db9a35569d51155eb7f2ccf26d420ae4e42e416 (patch)
tree4bd0bcefddeaae127c244c0cea659517070a1ba1 /src/thread/pthread_create.c
parentcdba6b2562bc5c2078e0e1e6f86c8835a42ae4ff (diff)
downloadmusl-1db9a35569d51155eb7f2ccf26d420ae4e42e416.tar.gz
musl-1db9a35569d51155eb7f2ccf26d420ae4e42e416.tar.xz
musl-1db9a35569d51155eb7f2ccf26d420ae4e42e416.zip
clean up and reduce size of internal pthread structure
over time the pthread structure has accumulated a lot of cruft taking
up size. this commit removes unused fields and packs booleans and
other small data more efficiently. changes which would also require
changing code are not included at this time.

non-volatile booleans are packed as unsigned char bitfield members.

the canceldisable and cancelasync fields need volatile qualification
due to how they're accessed from the cancellation signal handler and
cancellable syscalls called from signal handlers. since volatile
bitfield semantics are not clearly defined, discrete char objects are
used instead.

the pid field is completely removed; it has been unused since commit
83dc6eb087633abcf5608ad651d3b525ca2ec35e.

the tid field's type is changed to int because its use is as a value
in futexes, which are defined as plain int. it has no conceptual
relationship to pid_t. also, its position is not ABI.

startlock is reduced to a length-1 array. the second element was
presumably intended as a waiter count, but it was never used and made
no sense, since there is at most one waiter.
Diffstat (limited to 'src/thread/pthread_create.c')
0 files changed, 0 insertions, 0 deletions