utils: add bitfield inline ops

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
Felix Fietkau 2013-06-10 13:37:14 +02:00
parent 2851ce7edb
commit e5032709b2

15
utils.h
View file

@ -22,6 +22,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h> #include <sys/time.h>
#include <stdint.h> #include <stdint.h>
#include <stdbool.h>
#include <time.h> #include <time.h>
/* /*
@ -151,4 +152,18 @@ void clock_gettime(int type, struct timespec *tv);
#define __packed __attribute__((packed)) #define __packed __attribute__((packed))
#endif #endif
#ifndef BITS_PER_LONG
#define BITS_PER_LONG (8 * sizeof(unsigned long))
#endif
static inline void bitfield_set(unsigned long *bits, int bit)
{
bits[bit / BITS_PER_LONG] |= (1UL << (bit % BITS_PER_LONG));
}
static inline bool bitfield_test(unsigned long *bits, int bit)
{
return !!(bits[bit / BITS_PER_LONG] & (1UL << (bit % BITS_PER_LONG)));
}
#endif #endif