X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Futil.h;h=9df6db5836833522dfeb955fa98e19354f232fda;hb=7feb4503e0cacb8db445ed51593046d92d046473;hp=a945eb2757baafef582ddb259b71c42b73554cbb;hpb=34e63086edddcae06d7c1a4fa84fec0861e50758;p=openvswitch diff --git a/lib/util.h b/lib/util.h index a945eb27..9df6db58 100644 --- a/lib/util.h +++ b/lib/util.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009 Nicira Networks. + * Copyright (c) 2008, 2009, 2010 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,9 +52,19 @@ extern const char *program_name; +/* Returns the number of elements in ARRAY. */ #define ARRAY_SIZE(ARRAY) (sizeof ARRAY / sizeof *ARRAY) -#define ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y) * (Y)) + +/* Returns X / Y, rounding up. X must be nonnegative to round correctly. */ +#define DIV_ROUND_UP(X, Y) (((X) + ((Y) - 1)) / (Y)) + +/* Returns X rounded up to the nearest multiple of Y. */ +#define ROUND_UP(X, Y) (DIV_ROUND_UP(X, Y) * (Y)) + +/* Returns X rounded down to the nearest multiple of Y. */ #define ROUND_DOWN(X, Y) ((X) / (Y) * (Y)) + +/* Returns true if X is a power of 2, otherwise false. */ #define IS_POW2(X) ((X) && !((X) & ((X) - 1))) #ifndef MIN @@ -66,8 +76,6 @@ extern const char *program_name; #endif #define NOT_REACHED() abort() -#define NOT_IMPLEMENTED() abort() -#define NOT_TESTED() ((void) 0) /* XXX should print a message. */ /* Given POINTER, the address of the given MEMBER in a STRUCT object, returns the STRUCT object. */ @@ -88,6 +96,7 @@ void ovs_print_version(char *date, char *time, void out_of_memory(void) NO_RETURN; void *xmalloc(size_t) MALLOC_LIKE; void *xcalloc(size_t, size_t) MALLOC_LIKE; +void *xzalloc(size_t) MALLOC_LIKE; void *xrealloc(void *, size_t); void *xmemdup(const void *, size_t) MALLOC_LIKE; char *xmemdup0(const char *, size_t) MALLOC_LIKE; @@ -110,6 +119,16 @@ bool str_to_uint(const char *, int base, unsigned int *); bool str_to_ulong(const char *, int base, unsigned long *); bool str_to_ullong(const char *, int base, unsigned long long *); +bool str_to_double(const char *, double *); + +int hexit_value(int c); + +char *get_cwd(void); +char *dir_name(const char *file_name); +char *abs_file_name(const char *dir, const char *file_name); + +void ignore(bool x OVS_UNUSED); + #ifdef __cplusplus } #endif