perf: Fix buggy bitops
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 8 Sep 2017 14:51:53 +0000 (10:51 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 8 Sep 2017 17:49:51 +0000 (13:49 -0400)
commitb7c8eddb9e6632c73c7884c19ecf653130dbb059
treef5961847102f37712c5a6c4609a4fd989fb65bf5
parent52f2a75b675b897c26110c70dfb2f6f2dec589a3
perf: Fix buggy bitops

The moral of the story here is to not rewrite your own bitops.  If you
don't like the existing ones, then fix them.

This:

static inline void ros_set_bit(void *addr, size_t nbit)
{
((uint8_t *) addr)[nbit % CHAR_BIT] |= 1 << (nbit % CHAR_BIT);
}

is just plain wrong.  The first '%' should be a '/'.  Select the byte with
/, then select the bit with %.

Oh, and test the damn thing once or twice.

I noticed this since perf was provisioning extra cores.  For instance, if
you asked for -C 4, you'd get 4 and 12.

As Ron put it: 'Oh fun!!'.  =)

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/dev-util/perf/akaros.h