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 <[email protected]> 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. [email protected] will soon be disconnected.
Please use [email protected] from now on.