int test_bit(int nr, void *addr) { int *a = (int *)addr; int mask; a += nr; mask = 1 << nr; return mask & *a; } struct { struct { int disabled; } *data[1]; } trace; struct { unsigned bits[1]; } cpumask; void inc(int *); void dec(int *); int foo(void) { int cpu; for (cpu = 0; cpu < 1; cpu++) { if (test_bit(cpu, cpumask.bits)) inc(&trace.data[cpu]->disabled); if (!test_bit(cpu, cpumask.bits)) dec(&trace.data[cpu]->disabled); } }