• Elliott Hughes's avatar
    Cache getpid. · 7086ad69
    Elliott Hughes authored
    In practice, with this implementation we never need to make a system call.
    We get the main thread's tid (which is the same as our pid) back from
    the set_tid_address system call we have to make during initialization.
    A new pthread will have the same pid as its parent, and a fork child's
    main (and only) thread will have a pid equal to its tid, which we get for
    free from the kernel before clone returns.
    
    The only time we'd actually have to make a getpid system call now is if
    we take a signal during fork and the signal handler calls getpid. (That,
    or we call getpid in the dynamic linker while it's still dealing with its
    own relocations and hasn't even set up the main thread yet.)
    
    Bug: 15387103
    Change-Id: I6d4718ed0a5c912fc75b5f738c49a023dbed5189
    7086ad69