LibC: Make gettid() cache the thread ID in thread-local-storage

This makes gettid() very cheap, compared to the cost of having to do
a syscall every time.
This commit is contained in:
Andreas Kling 2019-09-14 11:37:58 +02:00
parent ec5091fa7d
commit 161cb89e87
Notes: sideshowbarker 2024-07-19 12:07:05 +09:00

View file

@ -538,10 +538,13 @@ int ftruncate(int fd, off_t length)
__RETURN_WITH_ERRNO(rc, rc, -1);
}
__thread int t_cached_tid = -1;
int gettid()
{
int rc = syscall(SC_gettid);
__RETURN_WITH_ERRNO(rc, rc, -1);
if (t_cached_tid == -1)
t_cached_tid = syscall(SC_gettid);
return t_cached_tid;
}
int donate(int tid)