From 2e342c7e9bb90c985cf4826edfaec380fca4481b Mon Sep 17 00:00:00 2001 From: Oleg Hahm Date: Wed, 30 Sep 2015 19:12:27 +0200 Subject: [PATCH] gnrc netreg: make message queue mandatory Any thread that registers for gnrc events (i.e. incoming packets) must provide a message queue. --- sys/include/net/gnrc/netreg.h | 2 ++ sys/net/gnrc/netreg/gnrc_netreg.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/sys/include/net/gnrc/netreg.h b/sys/include/net/gnrc/netreg.h index 5a8529c854..dba155d72a 100644 --- a/sys/include/net/gnrc/netreg.h +++ b/sys/include/net/gnrc/netreg.h @@ -79,6 +79,8 @@ void gnrc_netreg_init(void); * @warning Call gnrc_netreg_unregister() *before* you leave the context you * allocated @p entry in. Otherwise it might get overwritten. * + * @pre The calling thread must provide a message queue. + * * @return 0 on success * @return -EINVAL if @p type was < GNRC_NETTYPE_UNDEF or >= GNRC_NETTYPE_NUMOF */ diff --git a/sys/net/gnrc/netreg/gnrc_netreg.c b/sys/net/gnrc/netreg/gnrc_netreg.c index 2d0976f3b8..e725522616 100644 --- a/sys/net/gnrc/netreg/gnrc_netreg.c +++ b/sys/net/gnrc/netreg/gnrc_netreg.c @@ -37,6 +37,9 @@ void gnrc_netreg_init(void) int gnrc_netreg_register(gnrc_nettype_t type, gnrc_netreg_entry_t *entry) { + /* only threads with a message queue are allowed to register at gnrc */ + assert(sched_active_thread->msg_array); + if (_INVALID_TYPE(type)) { return -EINVAL; }