mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
rpl: remove rpl_send_mutex
This PR is based on #2155. Since RPL/Trickle is only using one thread in #2155, the send mutex becomes obsolete and can be removed safely.
This commit is contained in:
parent
319f1b25ae
commit
993f7cc7c6
@ -27,7 +27,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <vtimer.h>
|
#include <vtimer.h>
|
||||||
#include <mutex.h>
|
|
||||||
#include <transceiver.h>
|
#include <transceiver.h>
|
||||||
#include "ipv6.h"
|
#include "ipv6.h"
|
||||||
#include "rpl/rpl_dodag.h"
|
#include "rpl/rpl_dodag.h"
|
||||||
@ -46,10 +45,6 @@ extern "C" {
|
|||||||
/* global variables */
|
/* global variables */
|
||||||
extern kernel_pid_t rpl_process_pid;
|
extern kernel_pid_t rpl_process_pid;
|
||||||
extern uint8_t rpl_max_routing_entries;
|
extern uint8_t rpl_max_routing_entries;
|
||||||
|
|
||||||
/* needed for sending RPL-messages */
|
|
||||||
extern mutex_t rpl_send_mutex;
|
|
||||||
|
|
||||||
extern msg_t rpl_msg_queue[RPL_PKT_RECV_BUF_SIZE];
|
extern msg_t rpl_msg_queue[RPL_PKT_RECV_BUF_SIZE];
|
||||||
extern char rpl_process_buf[RPL_PROCESS_STACKSIZE];
|
extern char rpl_process_buf[RPL_PROCESS_STACKSIZE];
|
||||||
extern uint8_t rpl_buffer[BUFFER_SIZE - LL_HDR_LEN];
|
extern uint8_t rpl_buffer[BUFFER_SIZE - LL_HDR_LEN];
|
||||||
@ -57,7 +52,7 @@ extern uint8_t rpl_buffer[BUFFER_SIZE - LL_HDR_LEN];
|
|||||||
/**
|
/**
|
||||||
* @brief Initialization of RPL.
|
* @brief Initialization of RPL.
|
||||||
*
|
*
|
||||||
* This function initializes all basic RPL resources such as mutex for send/receive,
|
* This function initializes all basic RPL resources such as
|
||||||
* corresponding objective functions and sixlowpan (including own address). Calls
|
* corresponding objective functions and sixlowpan (including own address). Calls
|
||||||
* initialization for mode as specified by PL_DEFAULT_MOP in rpl_structs.h.
|
* initialization for mode as specified by PL_DEFAULT_MOP in rpl_structs.h.
|
||||||
*
|
*
|
||||||
@ -83,7 +78,7 @@ void rpl_init_root(void);
|
|||||||
* @brief Sends a DIO-message to a given destination
|
* @brief Sends a DIO-message to a given destination
|
||||||
*
|
*
|
||||||
* This function sends a DIO message to a given destination. Because nodes can act
|
* This function sends a DIO message to a given destination. Because nodes can act
|
||||||
* differently in different modes, this function just sets the mutex and call the DIO
|
* differently in different modes, this function calls the DIO
|
||||||
* sending function of the chosen mode.
|
* sending function of the chosen mode.
|
||||||
*
|
*
|
||||||
* @param[in] destination IPv6-address of the destination of the DIO. Should be a direct neighbor.
|
* @param[in] destination IPv6-address of the destination of the DIO. Should be a direct neighbor.
|
||||||
@ -95,7 +90,7 @@ void rpl_send_DIO(ipv6_addr_t *destination);
|
|||||||
* @brief Sends a DAO-message to a given destination
|
* @brief Sends a DAO-message to a given destination
|
||||||
*
|
*
|
||||||
* This function sends a DAO message to a given destination. Because nodes can act
|
* This function sends a DAO message to a given destination. Because nodes can act
|
||||||
* differently in different modes, this function just sets the mutex and call the DAO
|
* differently in different modes, this function calls the DAO
|
||||||
* sending function of the chosen mode.
|
* sending function of the chosen mode.
|
||||||
*
|
*
|
||||||
* @param[in] destination IPv6-address of the destination of the DAO. Should be the preferred parent.
|
* @param[in] destination IPv6-address of the destination of the DAO. Should be the preferred parent.
|
||||||
@ -110,7 +105,7 @@ void rpl_send_DAO(ipv6_addr_t *destination, uint8_t lifetime, bool default_lifet
|
|||||||
* @brief Sends a DIS-message to a given destination
|
* @brief Sends a DIS-message to a given destination
|
||||||
*
|
*
|
||||||
* This function sends a DIS message to a given destination or multicast-address. Because nodes can act
|
* This function sends a DIS message to a given destination or multicast-address. Because nodes can act
|
||||||
* differently in different modes, this function just sets the mutex and call the DIS
|
* differently in different modes, this function calls the DIS
|
||||||
* sending function of the chosen mode.
|
* sending function of the chosen mode.
|
||||||
*
|
*
|
||||||
* @param[in] destination IPv6-address of the destination of the DIS. Should be a direct neighbor or multicast-address.
|
* @param[in] destination IPv6-address of the destination of the DIS. Should be a direct neighbor or multicast-address.
|
||||||
@ -122,7 +117,7 @@ void rpl_send_DIS(ipv6_addr_t *destination);
|
|||||||
* @brief Sends a DAO acknowledgment-message to a given destination
|
* @brief Sends a DAO acknowledgment-message to a given destination
|
||||||
*
|
*
|
||||||
* This function sends a DAO_ACK message to a given destination. Because nodes can act
|
* This function sends a DAO_ACK message to a given destination. Because nodes can act
|
||||||
* differently in different modes, this function just sets the mutex and call the DAO_ACK
|
* differently in different modes, this function calls the DAO_ACK
|
||||||
* sending function of the chosen mode.
|
* sending function of the chosen mode.
|
||||||
*
|
*
|
||||||
* @param[in] destination IPv6-address of the destination of the DAO_ACK. Should be a direct neighbor.
|
* @param[in] destination IPv6-address of the destination of the DAO_ACK. Should be a direct neighbor.
|
||||||
@ -170,10 +165,7 @@ void rpl_recv_DAO_ACK(void);
|
|||||||
* @brief Initialization of RPl-root.
|
* @brief Initialization of RPl-root.
|
||||||
*
|
*
|
||||||
* This function initializes all RPL resources especially for root purposes.
|
* This function initializes all RPL resources especially for root purposes.
|
||||||
* corresponding objective functions and sixlowpan (including own address). It also register mutexes for
|
* corresponding objective functions and sixlowpan (including own address).
|
||||||
* sending and receiving RPL-based messages. Both are necessary because of parallel access from different
|
|
||||||
* layers/modules of RIOT. May change with future structure changes.
|
|
||||||
*
|
|
||||||
* @param arg ignored
|
* @param arg ignored
|
||||||
* @returns nothing
|
* @returns nothing
|
||||||
*/
|
*/
|
||||||
|
@ -143,8 +143,7 @@ void rpl_recv_dao_ack_mode(void);
|
|||||||
*
|
*
|
||||||
* This function sends any RPl related messages to a given destination. This implementation should be equal
|
* This function sends any RPl related messages to a given destination. This implementation should be equal
|
||||||
* for all modes and therefore should not be altered. Every mode related RPL-sending function calls this for
|
* for all modes and therefore should not be altered. Every mode related RPL-sending function calls this for
|
||||||
* relaying it in lower layers to sixlowpan. Because send-functions are wrapped by a mutex in rpl.c, the same
|
* relaying it in lower layers to sixlowpan.
|
||||||
* mutex applies here.
|
|
||||||
*
|
*
|
||||||
* @param[in] destination IPv6-address of the destination of the message.
|
* @param[in] destination IPv6-address of the destination of the message.
|
||||||
* @param[in] payload Payload of the message.
|
* @param[in] payload Payload of the message.
|
||||||
|
@ -144,8 +144,7 @@ void rpl_recv_dao_ack_mode(void);
|
|||||||
*
|
*
|
||||||
* This function sends any RPl related messages to a given destination. This implementation should be equal
|
* This function sends any RPl related messages to a given destination. This implementation should be equal
|
||||||
* for all modes and therefore should not be altered. Every mode related RPL-sending function calls this for
|
* for all modes and therefore should not be altered. Every mode related RPL-sending function calls this for
|
||||||
* relaying it in lower layers to sixlowpan. Because send-functions are wrapped by a mutex in rpl.c, the same
|
* relaying it in lower layers to sixlowpan.
|
||||||
* mutex applies here.
|
|
||||||
*
|
*
|
||||||
* @param[in] destination IPv6-address of the destination of the message.
|
* @param[in] destination IPv6-address of the destination of the message.
|
||||||
* @param[in] payload Payload of the message.
|
* @param[in] payload Payload of the message.
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "vtimer.h"
|
#include "vtimer.h"
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
#include "mutex.h"
|
|
||||||
|
|
||||||
#include "msg.h"
|
#include "msg.h"
|
||||||
#include "rpl.h"
|
#include "rpl.h"
|
||||||
@ -51,7 +50,6 @@ char addr_str[IPV6_MAX_ADDR_STR_LEN];
|
|||||||
|
|
||||||
/* global variables */
|
/* global variables */
|
||||||
kernel_pid_t rpl_process_pid = KERNEL_PID_UNDEF;
|
kernel_pid_t rpl_process_pid = KERNEL_PID_UNDEF;
|
||||||
mutex_t rpl_send_mutex = MUTEX_INIT;
|
|
||||||
msg_t rpl_msg_queue[RPL_PKT_RECV_BUF_SIZE];
|
msg_t rpl_msg_queue[RPL_PKT_RECV_BUF_SIZE];
|
||||||
char rpl_process_buf[RPL_PROCESS_STACKSIZE];
|
char rpl_process_buf[RPL_PROCESS_STACKSIZE];
|
||||||
uint8_t rpl_buffer[BUFFER_SIZE - LL_HDR_LEN];
|
uint8_t rpl_buffer[BUFFER_SIZE - LL_HDR_LEN];
|
||||||
@ -291,9 +289,7 @@ void rpl_send_DIO(ipv6_addr_t *destination)
|
|||||||
DEBUGF("Send DIO to %s\n", ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
DEBUGF("Send DIO to %s\n", ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&rpl_send_mutex);
|
|
||||||
rpl_send_DIO_mode(destination);
|
rpl_send_DIO_mode(destination);
|
||||||
mutex_unlock(&rpl_send_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rpl_send_DAO(ipv6_addr_t *destination, uint8_t lifetime,
|
void rpl_send_DAO(ipv6_addr_t *destination, uint8_t lifetime,
|
||||||
@ -303,9 +299,7 @@ void rpl_send_DAO(ipv6_addr_t *destination, uint8_t lifetime,
|
|||||||
DEBUGF("Send DAO to %s\n", ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
DEBUGF("Send DAO to %s\n", ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&rpl_send_mutex);
|
|
||||||
rpl_send_DAO_mode(destination, lifetime, default_lifetime, start_index);
|
rpl_send_DAO_mode(destination, lifetime, default_lifetime, start_index);
|
||||||
mutex_unlock(&rpl_send_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rpl_send_DIS(ipv6_addr_t *destination)
|
void rpl_send_DIS(ipv6_addr_t *destination)
|
||||||
@ -314,9 +308,7 @@ void rpl_send_DIS(ipv6_addr_t *destination)
|
|||||||
DEBUGF("Send DIS to %s\n", ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
DEBUGF("Send DIS to %s\n", ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&rpl_send_mutex);
|
|
||||||
rpl_send_DIS_mode(destination);
|
rpl_send_DIS_mode(destination);
|
||||||
mutex_unlock(&rpl_send_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rpl_send_DAO_ACK(ipv6_addr_t *destination)
|
void rpl_send_DAO_ACK(ipv6_addr_t *destination)
|
||||||
@ -326,9 +318,7 @@ void rpl_send_DAO_ACK(ipv6_addr_t *destination)
|
|||||||
ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN, destination));
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&rpl_send_mutex);
|
|
||||||
rpl_send_DAO_ACK_mode(destination);
|
rpl_send_DAO_ACK_mode(destination);
|
||||||
mutex_unlock(&rpl_send_mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rpl_recv_DIO(void)
|
void rpl_recv_DIO(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user