optmized nmbs_bitfield_write

This commit is contained in:
arwa 2025-06-15 00:44:46 -04:00
parent b5fde1c6b3
commit 2d8fee908c

View File

@ -92,24 +92,22 @@ typedef uint8_t nmbs_bitfield_256[32];
/** /**
* Read a bit from the nmbs_bitfield bf at position b * Read a bit from the nmbs_bitfield bf at position b
*/ */
#define nmbs_bitfield_read(bf, b) ((bool) ((bf)[(b) >> 3] & (0x1 << ((b) & (8 - 1))))) #define nmbs_bitfield_read(bf, b) ((bool) ((bf)[(b) >> 3] & (0x1 << ((b) & 7))))
/** /**
* Set a bit of the nmbs_bitfield bf at position b * Set a bit of the nmbs_bitfield bf at position b
*/ */
#define nmbs_bitfield_set(bf, b) (((bf)[(b) >> 3]) = (((bf)[(b) >> 3]) | (0x1 << ((b) & (8 - 1))))) #define nmbs_bitfield_set(bf, b) (((bf)[(b) >> 3]) = (((bf)[(b) >> 3]) | (0x1 << ((b) & 7))))
/** /**
* Reset a bit of the nmbs_bitfield bf at position b * Reset a bit of the nmbs_bitfield bf at position b
*/ */
#define nmbs_bitfield_unset(bf, b) (((bf)[(b) >> 3]) = (((bf)[(b) >> 3]) & ~(0x1 << ((b) & (8 - 1))))) #define nmbs_bitfield_unset(bf, b) (((bf)[(b) >> 3]) = (((bf)[(b) >> 3]) & ~(0x1 << ((b) & 7))))
/** /**
* Write value v to the nmbs_bitfield bf at position b * Write value v to the nmbs_bitfield bf at position b
*/ */
#define nmbs_bitfield_write(bf, b, v) \ #define nmbs_bitfield_write(bf, b, v) ((bf)[(b) >> 3] = ((bf)[(b) >> 3] & ~(1 << ((b) & 7))) | ((v) << ((b) & 7)))
(((bf)[(b) >> 3]) = ((v) ? (((bf)[(b) >> 3]) | (0x1 << ((b) & (8 - 1)))) : (((bf)[(b) >> 3]) & ~(0x1 << ((b) & (8 - 1))))))
/** /**
* Reset (zero) the whole bitfield * Reset (zero) the whole bitfield
*/ */