agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
bitfield.h File Reference
#include <zrtos/types.h>
#include <zrtos/mem.h>
Include dependency graph for bitfield.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  zrtos_bitfield_t
 

Macros

#define ZRTOS_BITFIELD__NFDBITS   (8 * sizeof(zrtos_bitfield_mask_t))
 
#define ZRTOS_BITFIELD__ELT(d)   (((size_t)d) / ZRTOS_BITFIELD__NFDBITS)
 
#define ZRTOS_BITFIELD__MASK(d)   ((zrtos_bitfield_mask_t) (1 << (((size_t)d) % ZRTOS_BITFIELD__NFDBITS)))
 
#define ZRTOS_BITFIELD__MASK_MSB(d)   ((zrtos_bitfield_mask_t) (1 << (7-(((size_t)d) % ZRTOS_BITFIELD__NFDBITS))))
 
#define ZRTOS_BITFIELD__EACH(thiz, len, pos)
 

Typedefs

typedef uint8_t zrtos_bitfield_mask_t
 

Functions

void zrtos_bitfield__set (zrtos_bitfield_t *thiz, size_t pos, bool val)
 
void zrtos_bitfield__set_msb (zrtos_bitfield_t *thiz, size_t pos, bool val)
 
bool zrtos_bitfield__get (zrtos_bitfield_t *thiz, size_t pos)
 
uint8_t zrtos_bitfield__get_uint8 (zrtos_bitfield_t *thiz, size_t pos)
 
void zrtos_bitfield__zero (zrtos_bitfield_t *thiz, size_t len)
 
void zrtos_bitfield__copy (zrtos_bitfield_t *thiz, zrtos_bitfield_t *src, size_t len)
 
size_t zrtos_bitfield__find_first (zrtos_bitfield_t *thiz, size_t len, size_t start, bool zero)
 
size_t zrtos_bitfield__find_first_zero (zrtos_bitfield_t *thiz, size_t len, size_t start)
 
size_t zrtos_bitfield__find_first_set (zrtos_bitfield_t *thiz, size_t len, size_t start)
 

Macro Definition Documentation

◆ ZRTOS_BITFIELD__EACH

#define ZRTOS_BITFIELD__EACH (   thiz,
  len,
  pos 
)
Value:
for(size_t pos = 0 \
!= (pos = zrtos_bitfield__find_first_set(thiz,len,pos)) \
;pos++ \
)
#define ZRTOS_TYPES__SIZE_MAX
Definition: types.h:170
size_t zrtos_bitfield__find_first_set(zrtos_bitfield_t *thiz, size_t len, size_t start)
Definition: bitfield.h:101

Definition at line 114 of file bitfield.h.

◆ ZRTOS_BITFIELD__ELT

#define ZRTOS_BITFIELD__ELT (   d)    (((size_t)d) / ZRTOS_BITFIELD__NFDBITS)

Definition at line 27 of file bitfield.h.

◆ ZRTOS_BITFIELD__MASK

#define ZRTOS_BITFIELD__MASK (   d)    ((zrtos_bitfield_mask_t) (1 << (((size_t)d) % ZRTOS_BITFIELD__NFDBITS)))

Definition at line 28 of file bitfield.h.

◆ ZRTOS_BITFIELD__MASK_MSB

#define ZRTOS_BITFIELD__MASK_MSB (   d)    ((zrtos_bitfield_mask_t) (1 << (7-(((size_t)d) % ZRTOS_BITFIELD__NFDBITS))))

Definition at line 29 of file bitfield.h.

◆ ZRTOS_BITFIELD__NFDBITS

#define ZRTOS_BITFIELD__NFDBITS   (8 * sizeof(zrtos_bitfield_mask_t))

Definition at line 26 of file bitfield.h.

Typedef Documentation

◆ zrtos_bitfield_mask_t

Definition at line 18 of file bitfield.h.

Function Documentation

◆ zrtos_bitfield__copy()

void zrtos_bitfield__copy ( zrtos_bitfield_t thiz,
zrtos_bitfield_t src,
size_t  len 
)

Definition at line 63 of file bitfield.h.

63  {
64  zrtos_mem__cpy(thiz,src,len);
65 }
void zrtos_mem__cpy(void *dest, void *src, size_t length)
Definition: mem.h:105
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_bitfield__find_first()

size_t zrtos_bitfield__find_first ( zrtos_bitfield_t thiz,
size_t  len,
size_t  start,
bool  zero 
)

Definition at line 67 of file bitfield.h.

72  {
74  for(size_t i=start;i<len;i++){
75  bool val = zrtos_bitfield__get(thiz,i);
76 
77  if(zero){
78  val = !val;
79  }
80 
81  if(val){
82  return i;
83  }
84  }
85  return ZRTOS_TYPES__SIZE_MAX;
86 }
#define ZRTOS_BITFIELD__NFDBITS
Definition: bitfield.h:26
bool zrtos_bitfield__get(zrtos_bitfield_t *thiz, size_t pos)
Definition: bitfield.h:49
#define ZRTOS_TYPES__SIZE_MAX
Definition: types.h:170
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_bitfield__find_first_set()

size_t zrtos_bitfield__find_first_set ( zrtos_bitfield_t thiz,
size_t  len,
size_t  start 
)

Definition at line 101 of file bitfield.h.

105  {
107  thiz
108  ,len
109  ,start
110  ,false
111  );
112 }
size_t zrtos_bitfield__find_first(zrtos_bitfield_t *thiz, size_t len, size_t start, bool zero)
Definition: bitfield.h:67
Here is the call graph for this function:

◆ zrtos_bitfield__find_first_zero()

size_t zrtos_bitfield__find_first_zero ( zrtos_bitfield_t thiz,
size_t  len,
size_t  start 
)

Definition at line 88 of file bitfield.h.

92  {
94  thiz
95  ,len
96  ,start
97  ,true
98  );
99 }
size_t zrtos_bitfield__find_first(zrtos_bitfield_t *thiz, size_t len, size_t start, bool zero)
Definition: bitfield.h:67
Here is the call graph for this function:

◆ zrtos_bitfield__get()

bool zrtos_bitfield__get ( zrtos_bitfield_t thiz,
size_t  pos 
)

Definition at line 49 of file bitfield.h.

49  {
50  return 0 != (
51  (&thiz->val)[ZRTOS_BITFIELD__ELT(pos)] & ZRTOS_BITFIELD__MASK(pos)
52  );
53 }
#define ZRTOS_BITFIELD__MASK(d)
Definition: bitfield.h:28
#define ZRTOS_BITFIELD__ELT(d)
Definition: bitfield.h:27
uint8_t val
Definition: bitfield.h:22
Here is the caller graph for this function:

◆ zrtos_bitfield__get_uint8()

uint8_t zrtos_bitfield__get_uint8 ( zrtos_bitfield_t thiz,
size_t  pos 
)

Definition at line 55 of file bitfield.h.

55  {
56  return (&thiz->val)[pos];
57 }
uint8_t val
Definition: bitfield.h:22

◆ zrtos_bitfield__set()

void zrtos_bitfield__set ( zrtos_bitfield_t thiz,
size_t  pos,
bool  val 
)

Definition at line 31 of file bitfield.h.

31  {
32  zrtos_bitfield_mask_t *tmp = &(&thiz->val)[ZRTOS_BITFIELD__ELT(pos)];
33  if(val){
34  *tmp |= ZRTOS_BITFIELD__MASK(pos);
35  }else{
36  *tmp &= ~ZRTOS_BITFIELD__MASK(pos);
37  }
38 }
#define ZRTOS_BITFIELD__MASK(d)
Definition: bitfield.h:28
#define ZRTOS_BITFIELD__ELT(d)
Definition: bitfield.h:27
uint8_t val
Definition: bitfield.h:22
uint8_t zrtos_bitfield_mask_t
Definition: bitfield.h:18
Here is the caller graph for this function:

◆ zrtos_bitfield__set_msb()

void zrtos_bitfield__set_msb ( zrtos_bitfield_t thiz,
size_t  pos,
bool  val 
)

Definition at line 40 of file bitfield.h.

40  {
41  zrtos_bitfield_mask_t *tmp = &(&thiz->val)[ZRTOS_BITFIELD__ELT(pos)];
42  if(val){
43  *tmp |= ZRTOS_BITFIELD__MASK_MSB(pos);
44  }else{
45  *tmp &= ~ZRTOS_BITFIELD__MASK_MSB(pos);
46  }
47 }
#define ZRTOS_BITFIELD__ELT(d)
Definition: bitfield.h:27
uint8_t val
Definition: bitfield.h:22
uint8_t zrtos_bitfield_mask_t
Definition: bitfield.h:18
#define ZRTOS_BITFIELD__MASK_MSB(d)
Definition: bitfield.h:29

◆ zrtos_bitfield__zero()

void zrtos_bitfield__zero ( zrtos_bitfield_t thiz,
size_t  len 
)

Definition at line 59 of file bitfield.h.

59  {
60  zrtos_mem__zero(thiz,len);
61 }
void zrtos_mem__zero(void *dest, size_t len)
Definition: mem.h:144
Here is the call graph for this function:
Here is the caller graph for this function: