Files
2026-10-30 13:55:31 +04:00

65 lines
1.7 KiB
C

/*
* Minimal replacement for wpa_supplicant's src/utils/common.h + the parts
* of src/utils/os.h that wpa_ctrl.c (CONFIG_CTRL_IFACE_UNIX build path)
* actually needs. Trivial os_* helpers are mapped directly onto libc via
* macros (matching upstream's own os.h fallback definitions); the handful
* that need a real body (os_zalloc, os_strlcpy, os_get_reltime, os_sleep)
* are implemented in jl_wpa_os_shim.c.
*/
#ifndef JL_WPA_CTRL_COMMON_H
#define JL_WPA_CTRL_COMMON_H
typedef long os_time_t;
struct os_reltime {
os_time_t sec;
os_time_t usec;
};
void *os_zalloc(size_t size);
size_t os_strlcpy(char *dest, const char *src, size_t siz);
int os_get_reltime(struct os_reltime *t);
void os_sleep(os_time_t sec, os_time_t usec);
#define os_free(p) free((p))
#define os_memcmp(s1, s2, n) memcmp((s1), (s2), (n))
#define os_strncmp(s1, s2, n) strncmp((s1), (s2), (n))
#define os_snprintf snprintf
static inline int os_snprintf_error(size_t size, int res)
{
return res < 0 || (unsigned int) res >= size;
}
static inline int os_reltime_before(struct os_reltime *a,
struct os_reltime *b)
{
return (a->sec < b->sec) ||
(a->sec == b->sec && a->usec < b->usec);
}
static inline void os_reltime_sub(struct os_reltime *a, struct os_reltime *b,
struct os_reltime *res)
{
res->sec = a->sec - b->sec;
res->usec = a->usec - b->usec;
if (res->usec < 0) {
res->sec--;
res->usec += 1000000;
}
}
static inline int os_reltime_expired(struct os_reltime *now,
struct os_reltime *ts,
os_time_t timeout_secs)
{
struct os_reltime age;
os_reltime_sub(now, ts, &age);
return (age.sec > timeout_secs) ||
(age.sec == timeout_secs && age.usec > 0);
}
#endif /* JL_WPA_CTRL_COMMON_H */