int test_bit(int nr, const void *addr) { int *a; int mask; int nr_5; int nr_1f; a = (int *)addr; nr_5 = nr >> 5; a += nr_5; nr_1f = nr & 0x1f; mask = 1 << nr_1f; if (mask & *a) return 1; else return 0; } struct { struct { int disabled; } *data[1]; } global_trace; struct { unsigned long bits[1]; } tracing_cpumask; foo() { int cpu; for (cpu = 0; cpu < 1; cpu++) { if (test_bit(cpu, tracing_cpumask.bits)) inc(&global_trace.data[cpu]->disabled); if (!test_bit(cpu, tracing_cpumask.bits)) dec(&global_trace.data[cpu]->disabled); } }