-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
#200: created macros for adding and setting bits
- Loading branch information
Showing
2 changed files
with
46 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,28 @@ | ||
#ifndef C_UTILS | ||
#define C_UTILS | ||
|
||
/* | ||
* Will retrieve the container of a certain pointer given the container type and | ||
* its pointer Trick pulled from Linux Kernel | ||
*/ | ||
#define CONTAINER_OF(ptr, type, member) \ | ||
((type *)((char *)(ptr) - offsetof(type, member))) | ||
|
||
#endif /* C_UTILS */ | ||
|
||
void endian_swap(void *ptr, int size); | ||
|
||
/// @brief Reverses the bit order of a byte | ||
/// @param b byte | ||
/// @return the same byte but wuth the bits reversed | ||
#ifndef C_UTILS | ||
#define C_UTILS | ||
|
||
/* | ||
* Will retrieve the container of a certain pointer given the container type and | ||
* its pointer Trick pulled from Linux Kernel | ||
*/ | ||
#define CONTAINER_OF(ptr, type, member) \ | ||
((type *)((char *)(ptr) - offsetof(type, member))) | ||
|
||
/* | ||
* Gets a bit of a binary number at desired location | ||
*/ | ||
#define GET_BIT(num, bit) ((num >> bit) & 1) | ||
|
||
/* | ||
* Sets a bit of a binary number at desired location | ||
*/ | ||
#define SET_BIT(num, bit) (num |= (1UL << bit)) | ||
|
||
#endif /* C_UTILS */ | ||
|
||
void endian_swap(void *ptr, int size); | ||
|
||
/// @brief Reverses the bit order of a byte | ||
/// @param b byte | ||
/// @return the same byte but wuth the bits reversed | ||
unsigned char reverse_bits(unsigned char b); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,20 @@ | ||
#include "c_utils.h" | ||
|
||
void endian_swap(void *ptr, int size) | ||
{ | ||
char *p = (char *)ptr; | ||
char tmp; | ||
for (int i = 0; i < size / 2; i++) { | ||
tmp = p[i]; | ||
p[i] = p[size - i - 1]; | ||
p[size - i - 1] = tmp; | ||
} | ||
} | ||
|
||
unsigned char reverse_bits(unsigned char b) | ||
{ | ||
b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; | ||
b = (b & 0xCC) >> 2 | (b & 0x33) << 2; | ||
b = (b & 0xAA) >> 1 | (b & 0x55) << 1; | ||
return b; | ||
#include "c_utils.h" | ||
|
||
void endian_swap(void *ptr, int size) | ||
{ | ||
char *p = (char *)ptr; | ||
char tmp; | ||
for (int i = 0; i < size / 2; i++) { | ||
tmp = p[i]; | ||
p[i] = p[size - i - 1]; | ||
p[size - i - 1] = tmp; | ||
} | ||
} | ||
|
||
unsigned char reverse_bits(unsigned char b) | ||
{ | ||
b = (b & 0xF0) >> 4 | (b & 0x0F) << 4; | ||
b = (b & 0xCC) >> 2 | (b & 0x33) << 2; | ||
b = (b & 0xAA) >> 1 | (b & 0x55) << 1; | ||
return b; | ||
} |