glibc used to have a getpid wrapper which cached the current PID in userspace. It turned out that this cache was difficult to maintain because certain system calls (with specific flags) invalidate it, while at the same time, the semantics of those system calls do not permit unconditional invalidation of the cache. However, as pointed out in bug 1443976 comment 5 and bug 1469670, the system call overhead introduces a substantial performance regression in some cases. Therefore, it would be nice to have a getpid implementation in the vDSO which does not perform a context switch.