From 7086ad6919feb2415c6027163f5c63323bcca27c Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 19 Jun 2014 16:39:01 -0700 Subject: Cache getpid. 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 --- libc/arch-mips/syscalls/__getpid.S | 19 +++++++++++++++++++ libc/arch-mips/syscalls/getpid.S | 19 ------------------- 2 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 libc/arch-mips/syscalls/__getpid.S delete mode 100644 libc/arch-mips/syscalls/getpid.S (limited to 'libc/arch-mips/syscalls') diff --git a/libc/arch-mips/syscalls/__getpid.S b/libc/arch-mips/syscalls/__getpid.S new file mode 100644 index 0000000..52cf6f4 --- /dev/null +++ b/libc/arch-mips/syscalls/__getpid.S @@ -0,0 +1,19 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include + +ENTRY(__getpid) + .set noreorder + .cpload t9 + li v0, __NR_getpid + syscall + bnez a3, 1f + move a0, v0 + j ra + nop +1: + la t9,__set_errno + j t9 + nop + .set reorder +END(__getpid) diff --git a/libc/arch-mips/syscalls/getpid.S b/libc/arch-mips/syscalls/getpid.S deleted file mode 100644 index a053f5b..0000000 --- a/libc/arch-mips/syscalls/getpid.S +++ /dev/null @@ -1,19 +0,0 @@ -/* Generated by gensyscalls.py. Do not edit. */ - -#include - -ENTRY(getpid) - .set noreorder - .cpload t9 - li v0, __NR_getpid - syscall - bnez a3, 1f - move a0, v0 - j ra - nop -1: - la t9,__set_errno - j t9 - nop - .set reorder -END(getpid) -- cgit v1.1