xref: /minix3/minix/net/lwip/util.h (revision ef8d499e2d2af900e9b2ab297171d7b088652482)
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