124 lines
2.0 KiB
C
124 lines
2.0 KiB
C
/* ospUtil.h: OSP utility header file */
|
|
|
|
#ifndef __OSPUTILH__
|
|
|
|
#define __OSPUTILH__
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
struct list_head {
|
|
struct list_head *next, *prev;
|
|
};
|
|
|
|
struct hlist_head {
|
|
struct hlist_node *first;
|
|
};
|
|
|
|
struct hlist_node {
|
|
struct hlist_node *next, **pprev;
|
|
};
|
|
|
|
|
|
|
|
#define OSP_NTOHL(x) (x)
|
|
#define OSP_NTOHS(x) (x)
|
|
#define OSP_HTONL(x) (x)
|
|
#define OSP_HTONS(x) (x)
|
|
#define OSP_NTOH64(x) (x)
|
|
#define OSP_HTON64(x) (x)
|
|
|
|
|
|
|
|
#define OSP_OFFSET(structure, member) \
|
|
((uint64_t)&(((structure *)0)->member))
|
|
|
|
|
|
#define __OSP_MEMBEROF(s, f, p) \
|
|
((s *)((char *)(p) - OSP_OFFSET(s, f)))
|
|
|
|
#define OSP_MEMBEROF(s, f, p) \
|
|
(((p) ? __OSP_MEMBEROF(s, f, p) : ((s *)0)))
|
|
|
|
#define OSP_MEMBER_SIZE(structure, member) \
|
|
(sizeof (((structure *)0)->member))
|
|
|
|
|
|
#define OSP_NELEMENTS(array) \
|
|
((sizeof(array) / sizeof((array)[0])))
|
|
|
|
|
|
#define OSP_ROUND_UP(x, align) \
|
|
(((uint64_t) (x) + ((align) - 1)) & ~((align) - 1))
|
|
|
|
|
|
#define OSP_ROUND_DOWN(x, align) \
|
|
((uint64_t)(x) & ~((align) - 1))
|
|
|
|
|
|
|
|
/*32bit byte reversion */
|
|
|
|
#define OSP_LONGSWAP(x) \
|
|
((((x) & 0xFF000000) >> 24) | \
|
|
(((x) & 0x00FF0000) >> 8) | \
|
|
(((x) & 0x0000FF00) << 8) | \
|
|
(((x) & 0x000000FF) << 24) \
|
|
)
|
|
|
|
#define OSP_IS_POWEOF2(x) ((x & (x-1)) == 0)
|
|
|
|
|
|
/*reversing bit order*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define OSP_SETBIT(x, pos) ((x) | (1<<(pos)))
|
|
#define OSP_CLEARBIT(x, pos) ((x) & (~(1 << (pos))))
|
|
#define OSP_GET_BITS(x, start, len) (((x) >> (start)) & ((1 << (len)) - 1))
|
|
#define OSP_SET_BITS(x, start, len, y) \
|
|
(x) = (((x) & (~(((1 << (len)) - 1) << (start)))) | ((y) << (start)))
|
|
|
|
|
|
|
|
/* reverse one specified bit:
|
|
|
|
* a: U32/U16/U8
|
|
|
|
* pos: 0(lsb)~31(msb)
|
|
|
|
*/
|
|
|
|
#define OSP_REVERSE_BIT(a,pos) \
|
|
(((((~(a)) >> (pos)) & 0x01) << (pos)) | ((a) & (~(1 << (pos)))))
|
|
|
|
|
|
|
|
#ifndef min
|
|
#define min(a, b) (((a) < (b)) ? (a) : (b))
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef max
|
|
#define max(a, b) (((a) > (b)) ? (a) : (b))
|
|
#endif
|
|
#define ISPOW2(x) ((x & x - 1) == 0)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __OSPUTILH__ */
|
|
|
|
|