-/* Copyright (c) 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2008-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
+ * under the terms of the license (GNU LGPL) which comes with this package. */
-#ifndef SMX_MAILBOX_H
-#define SMX_MAILBOX_H
+#ifndef MSG_MAILBOX_H
+#define MSG_MAILBOX_H
#include "xbt/fifo.h"
-#include "simix/simix.h"
-#include "msg/datatypes.h"
+#include "simgrid/simix.h"
+#include "simgrid/msg.h"
SG_BEGIN_DECL()
-#define MAX_ALIAS_NAME ((size_t)260)
+#define MAX_ALIAS_NAME ((size_t)260)
/*! \brief MSG_mailbox_new - create a new mailbox.
*
* The function MSG_mailbox_new creates a new mailbox identified by the key specified
* by the parameter alias and add it in the global dictionary.
*
- * \param alias The alias of the mailbox to create.
+ * \param alias The alias of the mailbox to create.
*
- * \return The newly created mailbox.
+ * \return The newly created mailbox.
*/
XBT_PUBLIC(msg_mailbox_t)
MSG_mailbox_new(const char *alias);
+void MSG_mailbox_free(void *mailbox);
+
/* \brief MSG_mailbox_free - release a mailbox from the memory.
*
* The function MSG_mailbox_free release a mailbox from the memory but does
* not remove it from the dictionary.
*
- * \param mailbox The mailbox to release.
+ * \param mailbox The mailbox to release.
*
- * \see MSG_mailbox_destroy.
+ * \see MSG_mailbox_destroy.
*/
void MSG_mailbox_free(void *mailbox);
* the key specified by the parameter alias. If the mailbox does not exists,
* the function create it.
*
- * \param alias The alias of the mailbox to return.
+ * \param alias The alias of the mailbox to return.
*
- * \return The mailbox associated with the alias specified as parameter
- * or a new mailbox if the key does not match.
+ * \return The mailbox associated with the alias specified as parameter
+ * or a new mailbox if the key does not match.
*/
XBT_PUBLIC(msg_mailbox_t)
MSG_mailbox_get_by_alias(const char *alias);
* The function MSG_mailbox_is_empty tests if a mailbox is empty
* (contains no msg task).
*
- * \param mailbox The mailbox to get test.
+ * \param mailbox The mailbox to get test.
*
- * \return The function returns 1 if the mailbox is empty. Otherwise the function
- * returns 0.
+ * \return The function returns 1 if the mailbox is empty. Otherwise the function
+ * returns 0.
*/
XBT_PUBLIC(int) MSG_mailbox_is_empty(msg_mailbox_t mailbox);
+/* \brief MSG_mailbox_set_async - set a mailbox as eager
+ *
+ * The function MSG_mailbox_set_async sets the mailbox to a permanent receiver mode
+ * Messages sent to this mailbox will then be sent just after the send is issued,
+ * without waiting for the corresponding receive.
+ *
+ * This call should be done before issuing any receive, and on the receiver's side only
+ *
+ * \param alias The alias of the mailbox to modify.
+ *
+ */
+XBT_PUBLIC(void) MSG_mailbox_set_async(const char *alias);
+
/*! \brief MSG_mailbox_get_head - get the task at the head of a mailbox.
*
* The MSG_mailbox_get_head returns the task at the head of the mailbox.
* This function does not remove the task from the mailbox (contrary to
* the function MSG_mailbox_pop_head).
*
- * \param mailbox The mailbox concerned by the operation.
+ * \param mailbox The mailbox concerned by the operation.
*
- * \return The task at the head of the mailbox.
+ * \return The task at the head of the mailbox.
*/
-XBT_PUBLIC(m_task_t)
+XBT_PUBLIC(msg_task_t)
MSG_mailbox_get_head(msg_mailbox_t mailbox);
/*! \brief MSG_mailbox_get_count_host_waiting_tasks - Return the number of tasks
waiting to be received in a mailbox and sent by a host.
*
- * \param mailbox The mailbox concerned by the operation.
- * \param host The msg host containing the processes that have sended the
- * tasks.
+ * \param mailbox The mailbox concerned by the operation.
+ * \param host The msg host containing the processes that have sended the
+ * tasks.
*
- * \return The number of tasks in the mailbox specified by the
- * parameter mailbox and sended by all the processes located
- * on the host specified by the parameter host.
+ * \return The number of tasks in the mailbox specified by the
+ * parameter mailbox and sended by all the processes located
+ * on the host specified by the parameter host.
*/
XBT_PUBLIC(int)
MSG_mailbox_get_count_host_waiting_tasks(msg_mailbox_t mailbox,
- m_host_t host);
+ msg_host_t host);
#ifdef MSG_USE_DEPRECATED
/* \brief MSG_mailbox_get_by_channel - get a mailbox of the specified host from its channel.
*
*/
XBT_PUBLIC(msg_mailbox_t)
- MSG_mailbox_get_by_channel(m_host_t host, m_channel_t channel);
+ MSG_mailbox_get_by_channel(msg_host_t host, m_channel_t channel);
#endif
SG_END_DECL()
-#endif /* !SMX_MAILBOX_H */
+#endif /* !MSG_MAILBOX_H */