12 typedef long os_time_t;
19 void os_sleep(os_time_t sec, os_time_t usec);
36 int os_get_time(
struct os_time *t);
48 static inline int os_time_before(
struct os_time *a,
struct os_time *b)
50 return (a->sec < b->sec) ||
51 (a->sec == b->sec && a->usec < b->usec);
55 static inline void os_time_sub(
struct os_time *a,
struct os_time *b,
58 res->sec = a->sec - b->sec;
59 res->usec = a->usec - b->usec;
69 static inline int os_reltime_before(
struct os_reltime *a,
72 return (a->sec < b->sec) ||
73 (a->sec == b->sec && a->usec < b->usec);
80 res->sec = a->sec - b->sec;
81 res->usec = a->usec - b->usec;
89 static inline void os_reltime_age(
struct os_reltime *start,
95 os_reltime_sub(&now, start, age);
99 static inline int os_reltime_expired(
struct os_reltime *now,
101 os_time_t timeout_secs)
105 os_reltime_sub(now, ts, &age);
106 return (age.sec > timeout_secs) ||
107 (age.sec == timeout_secs && age.usec > 0);
111 static inline int os_reltime_initialized(
struct os_reltime *t)
113 return t->sec != 0 || t->usec != 0;
132 int os_mktime(
int year,
int month,
int day,
int hour,
int min,
int sec,
144 int os_gmtime(os_time_t t,
struct os_tm *tm);
151 int os_daemonize(
const char *pid_file);
157 void os_daemonize_terminate(
const char *pid_file);
165 int os_get_random(
unsigned char *buf,
size_t len);
171 unsigned long os_random(
void);
186 char * os_rel2abs_path(
const char *rel_path);
196 int os_program_init(
void);
206 void os_program_deinit(
void);
218 int os_setenv(
const char *name,
const char *value,
int overwrite);
228 int os_unsetenv(
const char *name);
240 char * os_readfile(
const char *name,
size_t *len);
247 int os_file_exists(
const char *fname);
254 int os_fdatasync(FILE *stream);
263 void * os_zalloc(
size_t size);
277 static inline void * os_calloc(
size_t nmemb,
size_t size)
279 if (size && nmemb > (~(
size_t) 0) / size)
281 return os_zalloc(nmemb * size);
301 #ifdef OS_NO_C_LIB_DEFINES 310 void * os_malloc(
size_t size);
322 void * os_realloc(
void *ptr,
size_t size);
328 void os_free(
void *ptr);
340 void * os_memcpy(
void *dest,
const void *src,
size_t n);
351 void * os_memmove(
void *dest,
const void *src,
size_t n);
360 void * os_memset(
void *s,
int c,
size_t n);
371 int os_memcmp(
const void *s1,
const void *s2,
size_t n);
380 char * os_strdup(
const char *s);
387 size_t os_strlen(
const char *s);
396 int os_strcasecmp(
const char *s1,
const char *s2);
407 int os_strncasecmp(
const char *s1,
const char *s2,
size_t n);
415 char * os_strchr(
const char *s,
int c);
423 char * os_strrchr(
const char *s,
int c);
432 int os_strcmp(
const char *s1,
const char *s2);
443 int os_strncmp(
const char *s1,
const char *s2,
size_t n);
451 char * os_strstr(
const char *haystack,
const char *needle);
474 int os_snprintf(
char *str,
size_t size,
const char *format, ...);
479 void * os_malloc(
size_t size);
480 void * os_realloc(
void *ptr,
size_t size);
481 void os_free(
void *ptr);
482 char * os_strdup(
const char *s);
485 #define os_malloc(s) malloc((s)) 488 #define os_realloc(p, s) realloc((p), (s)) 491 #define os_free(p) free((p)) 495 #define os_strdup(s) _strdup(s) 497 #define os_strdup(s) strdup(s) 503 #define os_memcpy(d, s, n) memcpy((d), (s), (n)) 506 #define os_memmove(d, s, n) memmove((d), (s), (n)) 509 #define os_memset(s, c, n) memset(s, c, n) 512 #define os_memcmp(s1, s2, n) memcmp((s1), (s2), (n)) 516 #define os_strlen(s) strlen(s) 518 #ifndef os_strcasecmp 520 #define os_strcasecmp(s1, s2) _stricmp((s1), (s2)) 522 #define os_strcasecmp(s1, s2) strcasecmp((s1), (s2)) 525 #ifndef os_strncasecmp 527 #define os_strncasecmp(s1, s2, n) _strnicmp((s1), (s2), (n)) 529 #define os_strncasecmp(s1, s2, n) strncasecmp((s1), (s2), (n)) 533 #define os_strchr(s, c) strchr((s), (c)) 536 #define os_strcmp(s1, s2) strcmp((s1), (s2)) 539 #define os_strncmp(s1, s2, n) strncmp((s1), (s2), (n)) 542 #define os_strrchr(s, c) strrchr((s), (c)) 545 #define os_strstr(h, n) strstr((h), (n)) 550 #define os_snprintf _snprintf 552 #define os_snprintf snprintf 559 static inline int os_snprintf_error(
size_t size,
int res)
561 return res < 0 || (unsigned int) res >= size;
565 static inline void * os_realloc_array(
void *ptr,
size_t nmemb,
size_t size)
567 if (size && nmemb > (~(
size_t) 0) / size)
569 return os_realloc(ptr, nmemb * size);
579 static inline void os_remove_in_array(
void *ptr,
size_t nmemb,
size_t size,
583 os_memmove(((
unsigned char *) ptr) + idx * size,
584 ((
unsigned char *) ptr) + (idx + 1) * size,
585 (nmemb - idx - 1) * size);
598 size_t os_strlcpy(
char *dest,
const char *src,
size_t siz);
615 int os_memcmp_const(
const void *a,
const void *b,
size_t len);
624 int os_exec(
const char *program,
const char *arg,
int wait_completion);
627 #ifdef OS_REJECT_C_LIB_FUNCTIONS 628 #define malloc OS_DO_NOT_USE_malloc 629 #define realloc OS_DO_NOT_USE_realloc 630 #define free OS_DO_NOT_USE_free 631 #define memcpy OS_DO_NOT_USE_memcpy 632 #define memmove OS_DO_NOT_USE_memmove 633 #define memset OS_DO_NOT_USE_memset 634 #define memcmp OS_DO_NOT_USE_memcmp 636 #define strdup OS_DO_NOT_USE_strdup 637 #define strlen OS_DO_NOT_USE_strlen 638 #define strcasecmp OS_DO_NOT_USE_strcasecmp 639 #define strncasecmp OS_DO_NOT_USE_strncasecmp 641 #define strchr OS_DO_NOT_USE_strchr 643 #define strcmp OS_DO_NOT_USE_strcmp 645 #define strncmp OS_DO_NOT_USE_strncmp 647 #define strncpy OS_DO_NOT_USE_strncpy 648 #define strrchr OS_DO_NOT_USE_strrchr 649 #define strstr OS_DO_NOT_USE_strstr 651 #define snprintf OS_DO_NOT_USE_snprintf 653 #define strcpy OS_DO_NOT_USE_strcpy 657 #if defined(WPA_TRACE_BFD) && defined(CONFIG_TESTING_OPTIONS) 658 #define TEST_FAIL() testing_test_fail() 659 int testing_test_fail(
void);
660 extern char wpa_trace_fail_func[256];
661 extern unsigned int wpa_trace_fail_after;
662 extern char wpa_trace_test_fail_func[256];
663 extern unsigned int wpa_trace_test_fail_after;
665 #define TEST_FAIL() 0