lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] sys_mbox_post


From: Lorenzo Tessiore
Subject: [lwip-users] sys_mbox_post
Date: Mon, 5 Apr 2010 20:08:47 +0000

Hello,

 

I do not understand, or there is a problem, with the semantic of void sys_mbox_post(sys_mbox_t mbox, void *msg).

 

sys_mbox_post(…) is called by, among several places,

 

 

err_t

tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg)

{

  struct tcpip_msg *msg;

 

  if (mbox != SYS_MBOX_NULL) {

    msg = memp_malloc(MEMP_TCPIP_MSG_API);

    if (msg == NULL) {

      return ERR_MEM;

    }

 

    msg->type = TCPIP_MSG_TIMEOUT;

    msg->msg.tmo.msecs = msecs;

    msg->msg.tmo.h = h;

    msg->msg.tmo.arg = arg;

    sys_mbox_post(mbox, msg);

    return ERR_OK;

  }

  return ERR_VAL;

}

 

 

and

 

 

err_t

tcpip_apimsg(struct api_msg *apimsg)

{

  struct tcpip_msg msg;

 

  if (mbox != SYS_MBOX_NULL) {

    msg.type = TCPIP_MSG_API;

    msg.msg.apimsg = apimsg;

    sys_mbox_post(mbox, &msg);

    sys_arch_sem_wait(apimsg->msg.conn->op_completed, 0);

    return ERR_OK;

  }

  return ERR_VAL;

}

 

 

Please note that the latter is passing a TCPIP_msg instance on the stack, which need therefore to be copied before being queued.

The first instead is allocating the message, which therefore does not need to be copied.

 

Which semantic is the right one and exactly what are the requirements  on the implementor of sys_mbox_post(…)?

 

 

 

Regards

L.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]