Best recent c99 example: int foo[] = { [0] = 1, [1] = 2, [2] = 4, [3] = 8, [4] = 16, [5] = 32 };
I shudder to think about foo[6]. Paul On Thursday, February 17, 2011, ron minnich <rminn...@gmail.com> wrote: > I was looking at another fine example of modern programming from glibc > and just had to share it. > > Where does the getpid happen? It's anyone's guess. This is just so > readable too ... I'm glad they want to such effort to optimize getpid. > > ron > > #ifndef NOT_IN_libc > static inline __attribute__((always_inline)) pid_t really_getpid (pid_t > oldval); > > static inline __attribute__((always_inline)) pid_t > really_getpid (pid_t oldval) > { > if (__builtin_expect (oldval == 0, 1)) > { > pid_t selftid = THREAD_GETMEM (THREAD_SELF, tid); > if (__builtin_expect (selftid != 0, 1)) > return selftid; > } > > INTERNAL_SYSCALL_DECL (err); > pid_t result = INTERNAL_SYSCALL (getpid, err, 0); > > /* We do not set the PID field in the TID here since we might be > called from a signal handler while the thread executes fork. */ > if (oldval == 0) > THREAD_SETMEM (THREAD_SELF, tid, result); > return result; > } > #endif > > pid_t > __getpid (void) > { > #ifdef NOT_IN_libc > INTERNAL_SYSCALL_DECL (err); > pid_t result = INTERNAL_SYSCALL (getpid, err, 0); > #else > pid_t result = THREAD_GETMEM (THREAD_SELF, pid); > if (__builtin_expect (result <= 0, 0)) > result = really_getpid (result); > #endif > return result; > } > > libc_hidden_def (__getpid) > weak_alias (__getpid, getpid) > libc_hidden_def (getpid) > > -- I'm migrating my email. plalo...@telus.net will soon be disconnected. Please use paul.a.lalo...@gmail.com from now on.