1*ef8d499eSDavid van Moolenbroek #ifndef MINIX_NET_LWIP_UTIL_H 2*ef8d499eSDavid van Moolenbroek #define MINIX_NET_LWIP_UTIL_H 3*ef8d499eSDavid van Moolenbroek 4*ef8d499eSDavid van Moolenbroek /* util.c */ 5*ef8d499eSDavid van Moolenbroek int util_timeval_to_ticks(const struct timeval * tv, clock_t * ticksp); 6*ef8d499eSDavid van Moolenbroek void util_ticks_to_timeval(clock_t ticks, struct timeval * tv); 7*ef8d499eSDavid van Moolenbroek int util_copy_data(const struct sockdriver_data * data, size_t len, size_t off, 8*ef8d499eSDavid van Moolenbroek const struct pbuf * pbuf, size_t skip, int copy_in); 9*ef8d499eSDavid van Moolenbroek ssize_t util_coalesce(char * buf, size_t max, const iovec_t * iov, 10*ef8d499eSDavid van Moolenbroek unsigned int iovcnt); 11*ef8d499eSDavid van Moolenbroek int util_convert_err(err_t err); 12*ef8d499eSDavid van Moolenbroek int util_is_root(endpoint_t user_endpt); 13*ef8d499eSDavid van Moolenbroek ssize_t util_pcblist(struct rmib_call * call, struct rmib_oldp * oldp, 14*ef8d499eSDavid van Moolenbroek const void *(*enum_proc)(const void *), 15*ef8d499eSDavid van Moolenbroek void (*get_info_proc)(struct kinfo_pcb *, const void *)); 16*ef8d499eSDavid van Moolenbroek 17*ef8d499eSDavid van Moolenbroek /* 18*ef8d499eSDavid van Moolenbroek * In our code, pbuf header adjustments should never fail. This wrapper checks 19*ef8d499eSDavid van Moolenbroek * that the pbuf_header() call succeeds, and panics otherwise. 20*ef8d499eSDavid van Moolenbroek */ 21*ef8d499eSDavid van Moolenbroek #define util_pbuf_header(pbuf,incr) \ 22*ef8d499eSDavid van Moolenbroek do { \ 23*ef8d499eSDavid van Moolenbroek if (pbuf_header((pbuf), (incr))) \ 24*ef8d499eSDavid van Moolenbroek panic("unexpected pbuf header adjustment failure"); \ 25*ef8d499eSDavid van Moolenbroek } while (0) 26*ef8d499eSDavid van Moolenbroek 27*ef8d499eSDavid van Moolenbroek #endif /* !MINIX_NET_LWIP_UTIL_H */ 28