currsos/inc/clib.h

47 lines
880 B
C

#pragma once
#include "cdef.h"
/**
* Common macros, etc
*/
#define OBTAIN_STRUCT_ADDR(member_addr, struct_name, member_name) ((struct_name*)((uintptr)(member_addr) - (uintptr)(&(((struct_name*)0)->member_name))))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define SWAP(a, b, T) do { T temp = *(a); *(a) = *(b); *(b) = temp; } while(0);
uint64
str_len(char const *str);
uint64
str_cmp(char const *str1, char const *str2);
void
mem_cpy(void *src, void *dst, uint64 size);
void
mem_mv(void *src, void *dst, uint64 size);
#define KASSERT(expr) kassert_ex(#expr, __FILE__, __LINE__, expr)
void
kassert_ex(const char *expr_str, const char *file, int32 line, int32 expr);
void
mem_set(void *src, uint8 val, uint64 size);
static inline uint64
bit_field_mask(uint32 low, uint32 high)
{
return ~((uint64)-1 << (high - low + 1)) << low;
}
void
poor_sleep(uint32 dat);