library: remove remaining 'likely' & 'unlikely' macros

Say goodbye to the 'makes it hard to read' macro shit.

Reference(s):
http://www.freelists.org/post/procps/me-too-newlib,4

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2016-04-17 00:00:00 -05:00 committed by Craig Small
parent 7fdab1fcc8
commit 81e0f15ac3

View File

@ -42,10 +42,6 @@
#endif #endif
#include <proc/namespace.h> #include <proc/namespace.h>
#define likely(x) __builtin_expect(!!(x),1)
#define unlikely(x) __builtin_expect(!!(x),0)
#define expected(x,y) __builtin_expect((x),(y))
// sometimes it's easier to do this manually, w/o gcc helping // sometimes it's easier to do this manually, w/o gcc helping
#ifdef PROF #ifdef PROF
extern void __cyg_profile_func_enter(void*,void*); extern void __cyg_profile_func_enter(void*,void*);
@ -80,7 +76,7 @@ static unsigned long long unhex(const char *restrict cp){
unsigned long long ull = 0; unsigned long long ull = 0;
for(;;){ for(;;){
char c = *cp++; char c = *cp++;
if(unlikely(c<0x30)) break; if(c<0x30) break;
ull = (ull<<4) | (c - (c>0x57) ? 0x57 : 0x30) ; ull = (ull<<4) | (c - (c>0x57) ? 0x57 : 0x30) ;
} }
return ull; return ull;
@ -247,18 +243,18 @@ ENTER(0x220);
// advance to next line // advance to next line
S = strchr(S, '\n'); S = strchr(S, '\n');
if(unlikely(!S)) break; // if no newline if(!S) break; // if no newline
S++; S++;
// examine a field name (hash and compare) // examine a field name (hash and compare)
base: base:
if(unlikely(!*S)) break; if(!*S) break;
entry = table[(GPERF_TABLE_SIZE -1) & (asso[(int)S[3]] + asso[(int)S[2]] + asso[(int)S[0]])]; entry = table[(GPERF_TABLE_SIZE -1) & (asso[(int)S[3]] + asso[(int)S[2]] + asso[(int)S[0]])];
colon = strchr(S, ':'); colon = strchr(S, ':');
if(unlikely(!colon)) break; if(!colon) break;
if(unlikely(colon[1]!='\t')) break; if(colon[1]!='\t') break;
if(unlikely(colon-S != entry.len)) continue; if(colon-S != entry.len) continue;
if(unlikely(memcmp(entry.name,S,colon-S))) continue; if(memcmp(entry.name,S,colon-S)) continue;
S = colon+2; // past the '\t' S = colon+2; // past the '\t'
@ -273,9 +269,9 @@ ENTER(0x220);
unsigned u = 0; unsigned u = 0;
while(u < sizeof(buf) - 1u){ while(u < sizeof(buf) - 1u){
int c = *S++; int c = *S++;
if(unlikely(c=='\n')) break; if(c=='\n') break;
if(unlikely(c=='\0')) break; // should never happen if(c=='\0') break; // should never happen
if(unlikely(c=='\\')){ if(c=='\\'){
c = *S++; c = *S++;
if(c=='\n') break; // should never happen if(c=='\n') break; // should never happen
if(!c) break; // should never happen if(!c) break; // should never happen
@ -394,7 +390,7 @@ ENTER(0x220);
if (j) { if (j) {
P->supgid = xmalloc(j+1); // +1 in case space disappears P->supgid = xmalloc(j+1); // +1 in case space disappears
memcpy(P->supgid, S, j); memcpy(P->supgid, S, j);
if (unlikely(' ' != P->supgid[--j])) ++j; if (' ' != P->supgid[--j]) ++j;
P->supgid[j] = '\0'; // whack the space or the newline P->supgid[j] = '\0'; // whack the space or the newline
for ( ; j; j--) for ( ; j; j--)
if (' ' == P->supgid[j]) if (' ' == P->supgid[j])
@ -538,7 +534,7 @@ ENTER(0x160);
S = strchr(S, '(') + 1; S = strchr(S, '(') + 1;
tmp = strrchr(S, ')'); tmp = strrchr(S, ')');
num = tmp - S; num = tmp - S;
if(unlikely(num >= 16)) num = 15; if(num >= 16) num = 15;
if (!P->cmd) if (!P->cmd)
P->cmd = strndup(S, num); P->cmd = strndup(S, num);
S = tmp + 2; // skip ") " S = tmp + 2; // skip ") "
@ -615,7 +611,7 @@ static int file2str(const char *directory, const char *what, struct utlbuf_s *ub
}; };
ub->buf[tot_read] = '\0'; ub->buf[tot_read] = '\0';
close(fd); close(fd);
if (unlikely(tot_read < 1)) return -1; if (tot_read < 1) return -1;
return tot_read; return tot_read;
#undef buffGRW #undef buffGRW
} }
@ -873,7 +869,7 @@ static proc_t* simple_readproc(PROCTAB *restrict const PT, proc_t *restrict cons
char *restrict const path = PT->path; char *restrict const path = PT->path;
unsigned flags = PT->flags; unsigned flags = PT->flags;
if (unlikely(stat(path, &sb) == -1)) /* no such dirent (anymore) */ if (stat(path, &sb) == -1) /* no such dirent (anymore) */
goto next_proc; goto next_proc;
if ((flags & PROC_UID) && !XinLN(uid_t, sb.st_uid, PT->uids, PT->nuid)) if ((flags & PROC_UID) && !XinLN(uid_t, sb.st_uid, PT->uids, PT->nuid))
@ -883,18 +879,18 @@ static proc_t* simple_readproc(PROCTAB *restrict const PT, proc_t *restrict cons
p->egid = sb.st_gid; /* need a way to get real gid */ p->egid = sb.st_gid; /* need a way to get real gid */
if (flags & PROC_FILLSTAT) { // read /proc/#/stat if (flags & PROC_FILLSTAT) { // read /proc/#/stat
if (unlikely(file2str(path, "stat", &ub) == -1)) if (file2str(path, "stat", &ub) == -1)
goto next_proc; goto next_proc;
stat2proc(ub.buf, p); stat2proc(ub.buf, p);
} }
if (flags & PROC_FILLMEM) { // read /proc/#/statm if (flags & PROC_FILLMEM) { // read /proc/#/statm
if (likely(file2str(path, "statm", &ub) != -1)) if (file2str(path, "statm", &ub) != -1)
statm2proc(ub.buf, p); statm2proc(ub.buf, p);
} }
if (flags & PROC_FILLSTATUS) { // read /proc/#/status if (flags & PROC_FILLSTATUS) { // read /proc/#/status
if (likely(file2str(path, "status", &ub) != -1)){ if (file2str(path, "status", &ub) != -1){
status2proc(ub.buf, p, 1); status2proc(ub.buf, p, 1);
if (flags & PROC_FILLSUPGRP) if (flags & PROC_FILLSUPGRP)
supgrps_from_supgids(p); supgrps_from_supgids(p);
@ -928,7 +924,7 @@ static proc_t* simple_readproc(PROCTAB *restrict const PT, proc_t *restrict cons
} }
} }
if (unlikely(flags & PROC_FILLENV)) { // read /proc/#/environ if (flags & PROC_FILLENV) { // read /proc/#/environ
if (flags & PROC_EDITENVRCVT) if (flags & PROC_EDITENVRCVT)
fill_environ_cvt(path, p); fill_environ_cvt(path, p);
else else
@ -952,23 +948,23 @@ static proc_t* simple_readproc(PROCTAB *restrict const PT, proc_t *restrict cons
} else } else
p->cgroup = NULL; p->cgroup = NULL;
if (unlikely(flags & PROC_FILLOOM)) { if (flags & PROC_FILLOOM) {
if (likely(file2str(path, "oom_score", &ub) != -1)) if (file2str(path, "oom_score", &ub) != -1)
oomscore2proc(ub.buf, p); oomscore2proc(ub.buf, p);
if (likely(file2str(path, "oom_score_adj", &ub) != -1)) if (file2str(path, "oom_score_adj", &ub) != -1)
oomadj2proc(ub.buf, p); oomadj2proc(ub.buf, p);
} }
if (unlikely(flags & PROC_FILLNS)) // read /proc/#/ns/* if (flags & PROC_FILLNS) // read /proc/#/ns/*
procps_ns_read_pid(p->tid, &(p->ns)); procps_ns_read_pid(p->tid, &(p->ns));
#ifdef WITH_SYSTEMD #ifdef WITH_SYSTEMD
if (unlikely(flags & PROC_FILLSYSTEMD)) // get sd-login.h stuff if (flags & PROC_FILLSYSTEMD) // get sd-login.h stuff
sd2proc(p); sd2proc(p);
#endif #endif
if (unlikely(flags & PROC_FILL_LXC)) // value the lxc name if (flags & PROC_FILL_LXC) // value the lxc name
p->lxcname = lxc_containers(path); p->lxcname = lxc_containers(path);
return p; return p;
@ -990,7 +986,7 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
static struct stat sb; // stat() buffer static struct stat sb; // stat() buffer
unsigned flags = PT->flags; unsigned flags = PT->flags;
if (unlikely(stat(path, &sb) == -1)) /* no such dirent (anymore) */ if (stat(path, &sb) == -1) /* no such dirent (anymore) */
goto next_task; goto next_task;
// if ((flags & PROC_UID) && !XinLN(uid_t, sb.st_uid, PT->uids, PT->nuid)) // if ((flags & PROC_UID) && !XinLN(uid_t, sb.st_uid, PT->uids, PT->nuid))
@ -1000,19 +996,19 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
t->egid = sb.st_gid; /* need a way to get real gid */ t->egid = sb.st_gid; /* need a way to get real gid */
if (flags & PROC_FILLSTAT) { // read /proc/#/task/#/stat if (flags & PROC_FILLSTAT) { // read /proc/#/task/#/stat
if (unlikely(file2str(path, "stat", &ub) == -1)) if (file2str(path, "stat", &ub) == -1)
goto next_task; goto next_task;
stat2proc(ub.buf, t); stat2proc(ub.buf, t);
} }
#ifndef QUICK_THREADS #ifndef QUICK_THREADS
if (flags & PROC_FILLMEM) // read /proc/#/task/#statm if (flags & PROC_FILLMEM) // read /proc/#/task/#statm
if (likely(file2str(path, "statm", &ub) != -1)) if (file2str(path, "statm", &ub) != -1)
statm2proc(ub.buf, t); statm2proc(ub.buf, t);
#endif #endif
if (flags & PROC_FILLSTATUS) { // read /proc/#/task/#/status if (flags & PROC_FILLSTATUS) { // read /proc/#/task/#/status
if (likely(file2str(path, "status", &ub) != -1)) { if (file2str(path, "status", &ub) != -1) {
status2proc(ub.buf, t, 0); status2proc(ub.buf, t, 0);
#ifndef QUICK_THREADS #ifndef QUICK_THREADS
if (flags & PROC_FILLSUPGRP) if (flags & PROC_FILLSUPGRP)
@ -1046,13 +1042,13 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
#ifdef QUICK_THREADS #ifdef QUICK_THREADS
if (!p) { if (!p) {
if (flags & PROC_FILLMEM) if (flags & PROC_FILLMEM)
if (likely(file2str(path, "statm", &ub) != -1)) if (file2str(path, "statm", &ub) != -1)
statm2proc(ub.buf, t); statm2proc(ub.buf, t);
if (flags & PROC_FILLSUPGRP) if (flags & PROC_FILLSUPGRP)
supgrps_from_supgids(t); supgrps_from_supgids(t);
#endif #endif
if (unlikely(flags & PROC_FILLENV)) { // read /proc/#/task/#/environ if (flags & PROC_FILLENV) { // read /proc/#/task/#/environ
if (flags & PROC_EDITENVRCVT) if (flags & PROC_EDITENVRCVT)
fill_environ_cvt(path, t); fill_environ_cvt(path, t);
else else
@ -1077,11 +1073,11 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
t->cgroup = NULL; t->cgroup = NULL;
#ifdef WITH_SYSTEMD #ifdef WITH_SYSTEMD
if (unlikely(flags & PROC_FILLSYSTEMD)) // get sd-login.h stuff if (flags & PROC_FILLSYSTEMD) // get sd-login.h stuff
sd2proc(t); sd2proc(t);
#endif #endif
if (unlikely(flags & PROC_FILL_LXC)) // value the lxc name if (flags & PROC_FILL_LXC) // value the lxc name
t->lxcname = lxc_containers(path); t->lxcname = lxc_containers(path);
#ifdef QUICK_THREADS #ifdef QUICK_THREADS
@ -1110,14 +1106,14 @@ static proc_t* simple_readtask(PROCTAB *restrict const PT, const proc_t *restric
} }
#endif #endif
if (unlikely(flags & PROC_FILLOOM)) { if (flags & PROC_FILLOOM) {
if (likely(file2str(path, "oom_score", &ub) != -1)) if (file2str(path, "oom_score", &ub) != -1)
oomscore2proc(ub.buf, t); oomscore2proc(ub.buf, t);
if (likely(file2str(path, "oom_score_adj", &ub) != -1)) if (file2str(path, "oom_score_adj", &ub) != -1)
oomadj2proc(ub.buf, t); oomadj2proc(ub.buf, t);
} }
if (unlikely(flags & PROC_FILLNS)) // read /proc/#/task/#/ns/* if (flags & PROC_FILLNS) // read /proc/#/task/#/ns/*
procps_ns_read_pid(t->tid, &(t->ns)); procps_ns_read_pid(t->tid, &(t->ns));
return t; return t;
@ -1136,8 +1132,8 @@ static int simple_nextpid(PROCTAB *restrict const PT, proc_t *restrict const p)
char *restrict const path = PT->path; char *restrict const path = PT->path;
for (;;) { for (;;) {
ent = readdir(PT->procfs); ent = readdir(PT->procfs);
if(unlikely(unlikely(!ent) || unlikely(!ent->d_name[0]))) return 0; if(!ent || !ent->d_name[0]) return 0;
if(likely(likely(*ent->d_name > '0') && likely(*ent->d_name <= '9'))) break; if(*ent->d_name > '0' && *ent->d_name <= '9') break;
} }
p->tgid = strtoul(ent->d_name, NULL, 10); p->tgid = strtoul(ent->d_name, NULL, 10);
p->tid = p->tgid; p->tid = p->tgid;
@ -1163,8 +1159,8 @@ static int simple_nexttid(PROCTAB *restrict const PT, const proc_t *restrict con
} }
for (;;) { for (;;) {
ent = readdir(PT->taskdir); ent = readdir(PT->taskdir);
if(unlikely(unlikely(!ent) || unlikely(!ent->d_name[0]))) return 0; if(!ent || !ent->d_name[0]) return 0;
if(likely(likely(*ent->d_name > '0') && likely(*ent->d_name <= '9'))) break; if(*ent->d_name > '0' && *ent->d_name <= '9') break;
} }
t->tid = strtoul(ent->d_name, NULL, 10); t->tid = strtoul(ent->d_name, NULL, 10);
t->tgid = p->tgid; t->tgid = p->tgid;
@ -1179,7 +1175,7 @@ static int simple_nexttid(PROCTAB *restrict const PT, const proc_t *restrict con
static int listed_nextpid(PROCTAB *restrict const PT, proc_t *restrict const p) { static int listed_nextpid(PROCTAB *restrict const PT, proc_t *restrict const p) {
char *restrict const path = PT->path; char *restrict const path = PT->path;
pid_t tgid = *(PT->pids)++; pid_t tgid = *(PT->pids)++;
if(likely(tgid)){ if(tgid){
snprintf(path, PROCPATHLEN, "/proc/%d", tgid); snprintf(path, PROCPATHLEN, "/proc/%d", tgid);
p->tgid = tgid; p->tgid = tgid;
p->tid = tgid; // they match for leaders p->tid = tgid; // they match for leaders
@ -1215,7 +1211,7 @@ proc_t* readproc(PROCTAB *restrict const PT, proc_t *restrict p) {
for(;;){ for(;;){
// fills in the path, plus p->tid and p->tgid // fills in the path, plus p->tid and p->tgid
if (unlikely(!PT->finder(PT,p))) goto out; if (!PT->finder(PT,p)) goto out;
// go read the process data // go read the process data
ret = PT->reader(PT,p); ret = PT->reader(PT,p);