72#ifdef LWIP_HOOK_FILENAME
73#include LWIP_HOOK_FILENAME
78#define API_MSG_VAR_REF(name) API_VAR_REF(name)
79#define API_MSG_VAR_DECLARE(name) API_VAR_DECLARE(struct api_msg, name)
80#define API_MSG_VAR_ALLOC(name) API_VAR_ALLOC(struct api_msg, MEMP_API_MSG, name, ERR_MEM)
81#define API_MSG_VAR_ALLOC_RETURN_NULL(name) API_VAR_ALLOC(struct api_msg, MEMP_API_MSG, name, NULL)
82#define API_MSG_VAR_FREE(name) API_VAR_FREE(MEMP_API_MSG, name)
87#define API_MSG_VAR_ALLOC_ACCEPT(msg) API_MSG_VAR_ALLOC(msg)
88#define API_MSG_VAR_FREE_ACCEPT(msg) API_MSG_VAR_FREE(msg)
90#define API_MSG_VAR_ALLOC_ACCEPT(msg)
91#define API_MSG_VAR_FREE_ACCEPT(msg)
94#if LWIP_NETCONN_FULLDUPLEX
95#define NETCONN_RECVMBOX_WAITABLE(conn) (sys_mbox_valid(&(conn)->recvmbox) && (((conn)->flags & NETCONN_FLAG_MBOXINVALID) == 0))
96#define NETCONN_ACCEPTMBOX_WAITABLE(conn) (sys_mbox_valid(&(conn)->acceptmbox) && (((conn)->flags & (NETCONN_FLAG_MBOXCLOSED|NETCONN_FLAG_MBOXINVALID)) == 0))
97#define NETCONN_MBOX_WAITING_INC(conn) SYS_ARCH_INC(conn->mbox_threads_waiting, 1)
98#define NETCONN_MBOX_WAITING_DEC(conn) SYS_ARCH_DEC(conn->mbox_threads_waiting, 1)
100#define NETCONN_RECVMBOX_WAITABLE(conn) sys_mbox_valid(&(conn)->recvmbox)
101#define NETCONN_ACCEPTMBOX_WAITABLE(conn) (sys_mbox_valid(&(conn)->acceptmbox) && (((conn)->flags & NETCONN_FLAG_MBOXCLOSED) == 0))
102#define NETCONN_MBOX_WAITING_INC(conn)
103#define NETCONN_MBOX_WAITING_DEC(conn)
127#if LWIP_NETCONN_SEM_PER_THREAD
149netconn_new_with_proto_and_callback(
enum netconn_type
t,
u8_t proto, netconn_callback
callback)
152 API_MSG_VAR_DECLARE(
msg);
153 API_MSG_VAR_ALLOC_RETURN_NULL(
msg);
159 API_MSG_VAR_REF(
msg).msg.n.proto =
proto;
160 API_MSG_VAR_REF(
msg).conn = conn;
161 err = netconn_apimsg(lwip_netconn_do_newconn, &API_MSG_VAR_REF(
msg));
163 LWIP_ASSERT(
"freeing conn without freeing pcb", conn->pcb.tcp ==
NULL);
168#if !LWIP_NETCONN_SEM_PER_THREAD
174 API_MSG_VAR_FREE(
msg);
178 API_MSG_VAR_FREE(
msg);
192netconn_prepare_delete(
struct netconn *conn)
195 API_MSG_VAR_DECLARE(
msg);
202 API_MSG_VAR_ALLOC(
msg);
203 API_MSG_VAR_REF(
msg).conn = conn;
205#if LWIP_SO_SNDTIMEO || LWIP_SO_LINGER
208 API_MSG_VAR_REF(
msg).msg.sd.time_started =
sys_now();
210 API_MSG_VAR_REF(
msg).msg.sd.polls_left =
214 err = netconn_apimsg(lwip_netconn_do_delconn, &API_MSG_VAR_REF(
msg));
215 API_MSG_VAR_FREE(
msg);
233netconn_delete(
struct netconn *conn)
242#if LWIP_NETCONN_FULLDUPLEX
243 if (conn->flags & NETCONN_FLAG_MBOXINVALID) {
249 err = netconn_prepare_delete(conn);
271 API_MSG_VAR_DECLARE(
msg);
278 API_MSG_VAR_ALLOC(
msg);
279 API_MSG_VAR_REF(
msg).conn = conn;
280 API_MSG_VAR_REF(
msg).msg.ad.local =
local;
281#if LWIP_MPU_COMPATIBLE
282 err = netconn_apimsg(lwip_netconn_do_getaddr, &API_MSG_VAR_REF(
msg));
288 err = netconn_apimsg(lwip_netconn_do_getaddr, &
msg);
290 API_MSG_VAR_FREE(
msg);
309 API_MSG_VAR_DECLARE(
msg);
321#if LWIP_IPV4 && LWIP_IPV6
325 if ((netconn_get_ipv6only(conn) == 0) &&
331 API_MSG_VAR_ALLOC(
msg);
332 API_MSG_VAR_REF(
msg).conn = conn;
333 API_MSG_VAR_REF(
msg).msg.bc.ipaddr = API_MSG_VAR_REF(
addr);
334 API_MSG_VAR_REF(
msg).msg.bc.port =
port;
335 err = netconn_apimsg(lwip_netconn_do_bind, &API_MSG_VAR_REF(
msg));
336 API_MSG_VAR_FREE(
msg);
353 API_MSG_VAR_DECLARE(
msg);
358 API_MSG_VAR_ALLOC(
msg);
359 API_MSG_VAR_REF(
msg).conn = conn;
360 API_MSG_VAR_REF(
msg).msg.bc.if_idx = if_idx;
361 err = netconn_apimsg(lwip_netconn_do_bind_if, &API_MSG_VAR_REF(
msg));
362 API_MSG_VAR_FREE(
msg);
379 API_MSG_VAR_DECLARE(
msg);
391 API_MSG_VAR_ALLOC(
msg);
392 API_MSG_VAR_REF(
msg).conn = conn;
393 API_MSG_VAR_REF(
msg).msg.bc.ipaddr = API_MSG_VAR_REF(
addr);
394 API_MSG_VAR_REF(
msg).msg.bc.port =
port;
395 err = netconn_apimsg(lwip_netconn_do_connect, &API_MSG_VAR_REF(
msg));
396 API_MSG_VAR_FREE(
msg);
409netconn_disconnect(
struct netconn *conn)
411 API_MSG_VAR_DECLARE(
msg);
416 API_MSG_VAR_ALLOC(
msg);
417 API_MSG_VAR_REF(
msg).conn = conn;
418 err = netconn_apimsg(lwip_netconn_do_disconnect, &API_MSG_VAR_REF(
msg));
419 API_MSG_VAR_FREE(
msg);
434netconn_listen_with_backlog(
struct netconn *conn,
u8_t backlog)
437 API_MSG_VAR_DECLARE(
msg);
445 API_MSG_VAR_ALLOC(
msg);
446 API_MSG_VAR_REF(
msg).conn = conn;
447#if TCP_LISTEN_BACKLOG
448 API_MSG_VAR_REF(
msg).msg.lb.backlog = backlog;
450 err = netconn_apimsg(lwip_netconn_do_listen, &API_MSG_VAR_REF(
msg));
451 API_MSG_VAR_FREE(
msg);
477#if TCP_LISTEN_BACKLOG
478 API_MSG_VAR_DECLARE(
msg);
488 err = netconn_err(conn);
493 if (!NETCONN_ACCEPTMBOX_WAITABLE(conn)) {
499 API_MSG_VAR_ALLOC_ACCEPT(
msg);
501 NETCONN_MBOX_WAITING_INC(conn);
502 if (netconn_is_nonblocking(conn)) {
504 API_MSG_VAR_FREE_ACCEPT(
msg);
505 NETCONN_MBOX_WAITING_DEC(conn);
511 API_MSG_VAR_FREE_ACCEPT(
msg);
512 NETCONN_MBOX_WAITING_DEC(conn);
519 NETCONN_MBOX_WAITING_DEC(conn);
520#if LWIP_NETCONN_FULLDUPLEX
521 if (conn->flags & NETCONN_FLAG_MBOXINVALID) {
522 if (lwip_netconn_is_deallocated_msg(accept_ptr)) {
524 API_MSG_VAR_FREE_ACCEPT(
msg);
531 API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
533 if (lwip_netconn_is_err_msg(accept_ptr, &
err)) {
535 API_MSG_VAR_FREE_ACCEPT(
msg);
538 if (accept_ptr ==
NULL) {
540 API_MSG_VAR_FREE_ACCEPT(
msg);
543 newconn = (
struct netconn *)accept_ptr;
544#if TCP_LISTEN_BACKLOG
546 API_MSG_VAR_REF(
msg).conn = newconn;
548 netconn_apimsg(lwip_netconn_do_accepted, &API_MSG_VAR_REF(
msg));
549 API_MSG_VAR_FREE(
msg);
579netconn_recv_data(
struct netconn *conn,
void **new_buf,
u8_t apiflags)
588 if (!NETCONN_RECVMBOX_WAITABLE(conn)) {
597 NETCONN_MBOX_WAITING_INC(conn);
598 if (netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK) ||
599 (conn->flags & NETCONN_FLAG_MBOXCLOSED) || (conn->pending_err !=
ERR_OK)) {
602 NETCONN_MBOX_WAITING_DEC(conn);
603 err = netconn_err(conn);
608 if (conn->flags & NETCONN_FLAG_MBOXCLOSED) {
616 NETCONN_MBOX_WAITING_DEC(conn);
623 NETCONN_MBOX_WAITING_DEC(conn);
624#if LWIP_NETCONN_FULLDUPLEX
625 if (conn->flags & NETCONN_FLAG_MBOXINVALID) {
626 if (lwip_netconn_is_deallocated_msg(
buf)) {
628 API_MSG_VAR_FREE_ACCEPT(
msg);
635#if (LWIP_UDP || LWIP_RAW)
636 if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP)
641 if (lwip_netconn_is_err_msg(
buf, &
err)) {
652#if LWIP_TCP && (LWIP_UDP || LWIP_RAW)
655#if (LWIP_UDP || LWIP_RAW)
666 API_EVENT(conn, NETCONN_EVT_RCVMINUS,
len);
677netconn_tcp_recvd_msg(
struct netconn *conn,
size_t len,
struct api_msg *
msg)
679 LWIP_ERROR(
"netconn_recv_tcp_pbuf: invalid conn", (conn !=
NULL) &&
680 NETCONNTYPE_GROUP(netconn_type(conn)) == NETCONN_TCP,
return ERR_ARG;);
685 return netconn_apimsg(lwip_netconn_do_recv,
msg);
689netconn_tcp_recvd(
struct netconn *conn,
size_t len)
692 API_MSG_VAR_DECLARE(
msg);
693 LWIP_ERROR(
"netconn_recv_tcp_pbuf: invalid conn", (conn !=
NULL) &&
694 NETCONNTYPE_GROUP(netconn_type(conn)) == NETCONN_TCP,
return ERR_ARG;);
696 API_MSG_VAR_ALLOC(
msg);
698 API_MSG_VAR_FREE(
msg);
703netconn_recv_data_tcp(
struct netconn *conn,
struct pbuf **new_buf,
u8_t apiflags)
707 API_MSG_VAR_DECLARE(
msg);
708#if LWIP_MPU_COMPATIBLE
712 if (!NETCONN_RECVMBOX_WAITABLE(conn)) {
716 if (netconn_is_flag_set(conn, NETCONN_FIN_RX_PENDING)) {
717 netconn_clear_flags(conn, NETCONN_FIN_RX_PENDING);
721 if (!(apiflags & NETCONN_NOAUTORCVD)) {
724 API_MSG_VAR_ALLOC(
msg);
727 err = netconn_recv_data(conn, (
void **)new_buf, apiflags);
729 if (!(apiflags & NETCONN_NOAUTORCVD)) {
730 API_MSG_VAR_FREE(
msg);
735 if (!(apiflags & NETCONN_NOAUTORCVD)) {
741 API_MSG_VAR_FREE(
msg);
746 if (apiflags & NETCONN_NOFIN) {
749 netconn_set_flags(conn, NETCONN_FIN_RX_PENDING);
753 API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
754 if (conn->pcb.ip ==
NULL) {
756 err = netconn_err(conn);
763 netconn_close_shutdown(conn, NETCONN_SHUT_RD);
782netconn_recv_tcp_pbuf(
struct netconn *conn,
struct pbuf **new_buf)
784 LWIP_ERROR(
"netconn_recv_tcp_pbuf: invalid conn", (conn !=
NULL) &&
785 NETCONNTYPE_GROUP(netconn_type(conn)) == NETCONN_TCP,
return ERR_ARG;);
787 return netconn_recv_data_tcp(conn, new_buf, 0);
803netconn_recv_tcp_pbuf_flags(
struct netconn *conn,
struct pbuf **new_buf,
u8_t apiflags)
805 LWIP_ERROR(
"netconn_recv_tcp_pbuf: invalid conn", (conn !=
NULL) &&
806 NETCONNTYPE_GROUP(netconn_type(conn)) == NETCONN_TCP,
return ERR_ARG;);
808 return netconn_recv_data_tcp(conn, new_buf, apiflags);
822netconn_recv_udp_raw_netbuf(
struct netconn *conn,
struct netbuf **new_buf)
824 LWIP_ERROR(
"netconn_recv_udp_raw_netbuf: invalid conn", (conn !=
NULL) &&
825 NETCONNTYPE_GROUP(netconn_type(conn)) != NETCONN_TCP,
return ERR_ARG;);
827 return netconn_recv_data(conn, (
void **)new_buf, 0);
842netconn_recv_udp_raw_netbuf_flags(
struct netconn *conn,
struct netbuf **new_buf,
u8_t apiflags)
844 LWIP_ERROR(
"netconn_recv_udp_raw_netbuf: invalid conn", (conn !=
NULL) &&
845 NETCONNTYPE_GROUP(netconn_type(conn)) != NETCONN_TCP,
return ERR_ARG;);
847 return netconn_recv_data(conn, (
void **)new_buf, apiflags);
872#if (LWIP_UDP || LWIP_RAW)
873 if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP)
884 err = netconn_recv_data_tcp(conn, &
p, 0);
900#if LWIP_TCP && (LWIP_UDP || LWIP_RAW)
904#if (LWIP_UDP || LWIP_RAW)
905 return netconn_recv_data(conn, (
void **)new_buf, 0);
943 API_MSG_VAR_DECLARE(
msg);
950 API_MSG_VAR_ALLOC(
msg);
951 API_MSG_VAR_REF(
msg).conn = conn;
952 API_MSG_VAR_REF(
msg).msg.b =
buf;
953 err = netconn_apimsg(lwip_netconn_do_send, &API_MSG_VAR_REF(
msg));
954 API_MSG_VAR_FREE(
msg);
975 u8_t apiflags,
size_t *bytes_written)
980 return netconn_write_vectors_partly(conn, &
vector, 1, apiflags, bytes_written);
997netconn_write_vectors_partly(
struct netconn *conn,
struct netvector *vectors,
u16_t vectorcnt,
998 u8_t apiflags,
size_t *bytes_written)
1000 API_MSG_VAR_DECLARE(
msg);
1007 LWIP_ERROR(
"netconn_write: invalid conn->type", (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP),
return ERR_VAL;);
1008 dontblock = netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK);
1010 if (conn->send_timeout != 0) {
1014 if (dontblock && !bytes_written) {
1022 for (
i = 0;
i < vectorcnt;
i++) {
1023 size += vectors[
i].len;
1034 if (!bytes_written) {
1042 API_MSG_VAR_ALLOC(
msg);
1044 API_MSG_VAR_REF(
msg).conn = conn;
1045 API_MSG_VAR_REF(
msg).msg.w.vector = vectors;
1046 API_MSG_VAR_REF(
msg).msg.w.vector_cnt = vectorcnt;
1047 API_MSG_VAR_REF(
msg).msg.w.vector_off = 0;
1048 API_MSG_VAR_REF(
msg).msg.w.apiflags = apiflags;
1049 API_MSG_VAR_REF(
msg).msg.w.len =
size;
1050 API_MSG_VAR_REF(
msg).msg.w.offset = 0;
1052 if (conn->send_timeout != 0) {
1055 API_MSG_VAR_REF(
msg).msg.w.time_started =
sys_now();
1057 API_MSG_VAR_REF(
msg).msg.w.time_started = 0;
1064 err = netconn_apimsg(lwip_netconn_do_write, &API_MSG_VAR_REF(
msg));
1066 if (bytes_written !=
NULL) {
1067 *bytes_written = API_MSG_VAR_REF(
msg).msg.w.offset;
1075 API_MSG_VAR_FREE(
msg);
1089netconn_close_shutdown(
struct netconn *conn,
u8_t how)
1091 API_MSG_VAR_DECLARE(
msg);
1097 API_MSG_VAR_ALLOC(
msg);
1098 API_MSG_VAR_REF(
msg).conn = conn;
1101 API_MSG_VAR_REF(
msg).msg.sd.shut = how;
1102#if LWIP_SO_SNDTIMEO || LWIP_SO_LINGER
1105 API_MSG_VAR_REF(
msg).msg.sd.time_started =
sys_now();
1107 API_MSG_VAR_REF(
msg).msg.sd.polls_left =
1111 err = netconn_apimsg(lwip_netconn_do_close, &API_MSG_VAR_REF(
msg));
1112 API_MSG_VAR_FREE(
msg);
1128 return netconn_close_shutdown(conn, NETCONN_SHUT_RDWR);
1139netconn_err(
struct netconn *conn)
1147 err = conn->pending_err;
1148 conn->pending_err =
ERR_OK;
1165 return netconn_close_shutdown(conn, (
u8_t)((shut_rx ? NETCONN_SHUT_RD : 0) | (shut_tx ? NETCONN_SHUT_WR : 0)));
1168#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD)
1181netconn_join_leave_group(
struct netconn *conn,
1184 enum netconn_igmp join_or_leave)
1186 API_MSG_VAR_DECLARE(
msg);
1191 API_MSG_VAR_ALLOC(
msg);
1195 if (multiaddr ==
NULL) {
1196 multiaddr = IP4_ADDR_ANY;
1198 if (netif_addr ==
NULL) {
1199 netif_addr = IP4_ADDR_ANY;
1203 API_MSG_VAR_REF(
msg).conn = conn;
1204 API_MSG_VAR_REF(
msg).msg.jl.multiaddr = API_MSG_VAR_REF(multiaddr);
1205 API_MSG_VAR_REF(
msg).msg.jl.netif_addr = API_MSG_VAR_REF(netif_addr);
1206 API_MSG_VAR_REF(
msg).msg.jl.join_or_leave = join_or_leave;
1207 err = netconn_apimsg(lwip_netconn_do_join_leave_group, &API_MSG_VAR_REF(
msg));
1208 API_MSG_VAR_FREE(
msg);
1223netconn_join_leave_group_netif(
struct netconn *conn,
1226 enum netconn_igmp join_or_leave)
1228 API_MSG_VAR_DECLARE(
msg);
1233 API_MSG_VAR_ALLOC(
msg);
1237 if (multiaddr ==
NULL) {
1238 multiaddr = IP4_ADDR_ANY;
1245 API_MSG_VAR_REF(
msg).conn = conn;
1246 API_MSG_VAR_REF(
msg).msg.jl.multiaddr = API_MSG_VAR_REF(multiaddr);
1247 API_MSG_VAR_REF(
msg).msg.jl.if_idx = if_idx;
1248 API_MSG_VAR_REF(
msg).msg.jl.join_or_leave = join_or_leave;
1249 err = netconn_apimsg(lwip_netconn_do_join_leave_group_netif, &API_MSG_VAR_REF(
msg));
1250 API_MSG_VAR_FREE(
msg);
1268#if LWIP_IPV4 && LWIP_IPV6
1278#if !LWIP_MPU_COMPATIBLE
1286#if LWIP_MPU_COMPATIBLE
1292#ifdef LWIP_HOOK_NETCONN_EXTERNAL_RESOLVE
1293#if LWIP_IPV4 && LWIP_IPV6
1294 if (LWIP_HOOK_NETCONN_EXTERNAL_RESOLVE(
name,
addr, dns_addrtype, &
err)) {
1296 if (LWIP_HOOK_NETCONN_EXTERNAL_RESOLVE(
name,
addr, NETCONN_DNS_DEFAULT, &
err)) {
1303#if LWIP_MPU_COMPATIBLE
1312#if LWIP_IPV4 && LWIP_IPV6
1315#if LWIP_NETCONN_SEM_PER_THREAD
1326#if !LWIP_NETCONN_SEM_PER_THREAD
1334#if LWIP_MPU_COMPATIBLE
1344#if LWIP_NETCONN_SEM_PER_THREAD
1346netconn_thread_init(
void)
1357netconn_thread_cleanup(
void)
ACPI_SIZE strlen(const char *String)
void netconn_close(struct netconn *conn)
BOOL netconn_recv(struct netconn *conn, void *buf, size_t len, int flags, int *recvd)
BOOL netconn_send(struct netconn *conn, const void *msg, size_t len, int *sent)
#define SYS_ARCH_UNPROTECT(lev)
#define SYS_ARCH_PROTECT(lev)
#define SYS_ARCH_DECL_PROTECT(lev)
#define LWIP_DEBUGF(debug, message)
#define LWIP_ERROR(message, expression, handler)
#define LWIP_ASSERT(message, assertion)
void(* tcpip_callback_fn)(void *ctx)
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLvoid * addr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define LWIP_UNUSED_ARG(x)
#define DNS_MAX_NAME_LENGTH
#define LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT
u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout)
void sys_mbox_free(sys_mbox_t *mbox)
u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg)
void sys_sem_free(sys_sem_t *sem)
err_t sys_sem_new(sys_sem_t *sem, u8_t count)
#define ip_addr_set(dest, src)
#define ip_addr_eq(addr1, addr2)
#define ip_addr_set_zero(ipaddr)
int const JOCTET * dataptr
#define sys_mbox_valid(mbox)
#define LWIP_NETCONN_THREAD_SEM_GET()
#define LWIP_NETCONN_THREAD_SEM_ALLOC()
#define LWIP_NETCONN_THREAD_SEM_FREE()
#define sys_sem_valid(sema)
void * memp_malloc(memp_t type)
void memp_free(memp_t type, void *mem)
static IPrintDialogCallback callback
#define SYS_ARCH_DEC(var, val)
err_t tcpip_send_msg_wait_sem(tcpip_callback_fn fn, void *apimsg, sys_sem_t *sem)
#define API_EXPR_REF(expr)
#define API_VAR_FREE(pool, name)
#define API_VAR_REF(name)
#define API_VAR_ALLOC(type, pool, name, errorval)
#define API_VAR_DECLARE(type, name)
static GLenum _GLUfuncptr fn