X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Flib.h;h=92c891526767e8b7333c55900596a15d266ebbeb;hb=d5e8872563f6fde8299db971ffb6494c2438c590;hp=ea795c92d8f220a0c4ab405114301e2462c630a5;hpb=d407a0f6d1b3730e6d9c15571eacd7da83f5f326;p=libucw.git diff --git a/lib/lib.h b/lib/lib.h index ea795c92..92c89152 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -4,6 +4,7 @@ * (c) 1997--2007 Martin Mares * (c) 2005 Tomas Valla * (c) 2006 Robert Spalek + * (c) 2007 Pavel Charvat * * This software may be freely distributed and used according to the terms * of the GNU Lesser General Public License. @@ -111,9 +112,9 @@ void assert_failed(char *assertion, char *file, int line) NONRET; void assert_failed_noinfo(void) NONRET; #ifdef DEBUG_ASSERTS -#define ASSERT(x) do { if (unlikely(!(x))) assert_failed(#x, __FILE__, __LINE__); } while(0) +#define ASSERT(x) ({ if (unlikely(!(x))) assert_failed(#x, __FILE__, __LINE__); 1; }) #else -#define ASSERT(x) do { if (__builtin_constant_p(x) && !(x)) assert_failed_noinfo(); } while(0) +#define ASSERT(x) ({ if (__builtin_constant_p(x) && !(x)) assert_failed_noinfo(); 1; }) #endif #define COMPILE_ASSERT(name,x) typedef char _COMPILE_ASSERT_##name[!!(x)-1] @@ -192,11 +193,11 @@ uns prev_table_prime(uns x); /* timer.c */ -struct timeval; +timestamp_t get_timestamp(void); -void init_timer(void); -uns get_timer(void); -void get_last_timeval(struct timeval *tv); +void init_timer(timestamp_t *timer); +uns get_timer(timestamp_t *timer); +uns switch_timer(timestamp_t *old, timestamp_t *new); /* regex.c */ @@ -209,6 +210,7 @@ int rx_subst(regex *r, byte *by, byte *src, byte *dest, uns destlen); /* random.c */ +uns random_u32(void); uns random_max(uns max); u64 random_u64(void); u64 random_max_u64(u64 max); @@ -262,10 +264,17 @@ sh_sighandler_t set_signal_handler(int signum, sh_sighandler_t new); /* string.c */ byte *str_unesc(byte *dest, byte *src); +byte *str_format_flags(byte *dest, const byte *fmt, uns flags); /* bigalloc.c */ -void *big_alloc(unsigned int len); -void big_free(void *start, unsigned int len); +void *page_alloc(u64 len) LIKE_MALLOC; // allocates a multiple of CPU_PAGE_SIZE bytes with mmap +void *page_alloc_zero(u64 len) LIKE_MALLOC; +void page_free(void *start, u64 len); +void *page_realloc(void *start, u64 old_len, u64 new_len); + +void *big_alloc(u64 len) LIKE_MALLOC; // allocate a large memory block in the most efficient way available +void *big_alloc_zero(u64 len) LIKE_MALLOC; +void big_free(void *start, u64 len); #endif