[Xenomai-git] Gilles Chanteperdrix : rtnet: adapt to RTDM task management changes
Module: xenomai-3 Branch: master Commit: bd971c3a9624987d76662b5c67a4ab10bdc51cd8 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=bd971c3a9624987d76662b5c67a4ab10bdc51cd8 Author: Gilles ChanteperdrixDate: Thu Oct 1 02:10:29 2015 +0200 rtnet: adapt to RTDM task management changes Replace rtcfg timer tasks with timers, polled in the rtcfg rx task. Remove useless calls to rtdm_task_join_nrt. --- kernel/drivers/net/addons/proxy.c |7 +- .../drivers/net/stack/include/rtcfg/rtcfg_event.h | 12 ++- .../drivers/net/stack/include/rtcfg/rtcfg_frame.h |6 +- .../drivers/net/stack/include/rtcfg/rtcfg_timer.h |5 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h |1 - .../drivers/net/stack/rtcfg/rtcfg_client_event.c | 70 +++--- kernel/drivers/net/stack/rtcfg/rtcfg_conn_event.c | 14 +-- kernel/drivers/net/stack/rtcfg/rtcfg_event.c | 48 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c | 23 +++-- kernel/drivers/net/stack/rtcfg/rtcfg_proc.c|2 +- kernel/drivers/net/stack/rtcfg/rtcfg_timer.c | 96 kernel/drivers/net/stack/rtmac/nomac/nomac_proto.c |8 +- kernel/drivers/net/stack/rtmac/tdma/tdma_module.c |4 +- kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |2 +- kernel/drivers/net/stack/rtnet_rtpc.c | 13 +-- kernel/drivers/net/stack/stack_mgr.c |6 +- 16 files changed, 187 insertions(+), 130 deletions(-) diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 9b459eb..4887f77 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -103,7 +103,10 @@ static void rtnetproxy_tx_loop(void *arg) struct rtnet_device *rtdev; struct rtskb *rtskb; -while (rtdm_event_wait(_tx_event) == 0) { +while (!rtdm_task_should_stop()) { + if (rtdm_event_wait(_tx_event) < 0) + break; + while ((rtskb = rtskb_dequeue(_queue)) != NULL) { rtdev = rtskb->rtdev; rtdev_xmit_proxy(rtskb); @@ -415,8 +418,8 @@ static void __exit rtnetproxy_cleanup_module(void) unregister_netdev(dev_rtnetproxy); free_netdev(dev_rtnetproxy); +rtdm_task_destroy(_tx_task); rtdm_event_destroy(_tx_event); -rtdm_task_join_nrt(_tx_task, 100); /* free the non-real-time signal */ rtdm_nrtsig_destroy(_rx_signal); diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h index 44c9bbb..a4b7955 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h @@ -34,9 +34,13 @@ #include -#define FLAG_TIMER_STARTED 0x0001 -#define FLAG_TIMER_SHUTDOWN 0x0002 +#define FLAG_TIMER_STARTED 16 +#define FLAG_TIMER_SHUTDOWN 17 +#define FLAG_TIMER_PENDING 18 +#define _FLAG_TIMER_STARTED (1 << FLAG_TIMER_STARTED) +#define _FLAG_TIMER_SHUTDOWN(1 << FLAG_TIMER_SHUTDOWN) +#define _FLAG_TIMER_PENDING (1 << FLAG_TIMER_PENDING) typedef enum { RTCFG_MAIN_OFF, @@ -63,8 +67,8 @@ struct rtcfg_device { rtdm_mutex_tdev_mutex; struct list_headevent_calls; rtdm_lock_t event_calls_lock; -rtdm_task_t timer_task; -unsigned intflags; +rtdm_timer_ttimer; +unsigned long flags; unsigned intburstrate; #ifdef CONFIG_XENO_OPT_VFILE struct xnvfile_directoryproc_entry; diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h index ac9f78b..2a6a415 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h @@ -51,9 +51,11 @@ #define RTCFG_ADDRSIZE_IP 4 #define RTCFG_MAX_ADDRSIZE RTCFG_ADDRSIZE_IP -#define RTCFG_FLAG_STAGE_2_DATA 1 -#define RTCFG_FLAG_READY2 +#define RTCFG_FLAG_STAGE_2_DATA 0 +#define RTCFG_FLAG_READY1 +#define _RTCFG_FLAG_STAGE_2_DATA (1 << RTCFG_FLAG_STAGE_2_DATA) +#define _RTCFG_FLAG_READY(1 << RTCFG_FLAG_READY) struct rtcfg_frm_head { #if defined(__LITTLE_ENDIAN_BITFIELD) diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h index e9f6e27..2da6d50 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h @@ -25,7 +25,10 @@ #ifndef __RTCFG_TIMER_H_ #define __RTCFG_TIMER_H_ +void rtcfg_timer(rtdm_timer_t *t); -void rtcfg_timer(void *arg); +void rtcfg_timer_run(void); + +void rtcfg_thread_signal(void); #endif /* __RTCFG_TIMER_H_ */ diff --git
[Xenomai-git] Gilles Chanteperdrix : rtnet: adapt to RTDM task management changes
Module: xenomai-3 Branch: arm64 Commit: bd971c3a9624987d76662b5c67a4ab10bdc51cd8 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=bd971c3a9624987d76662b5c67a4ab10bdc51cd8 Author: Gilles ChanteperdrixDate: Thu Oct 1 02:10:29 2015 +0200 rtnet: adapt to RTDM task management changes Replace rtcfg timer tasks with timers, polled in the rtcfg rx task. Remove useless calls to rtdm_task_join_nrt. --- kernel/drivers/net/addons/proxy.c |7 +- .../drivers/net/stack/include/rtcfg/rtcfg_event.h | 12 ++- .../drivers/net/stack/include/rtcfg/rtcfg_frame.h |6 +- .../drivers/net/stack/include/rtcfg/rtcfg_timer.h |5 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h |1 - .../drivers/net/stack/rtcfg/rtcfg_client_event.c | 70 +++--- kernel/drivers/net/stack/rtcfg/rtcfg_conn_event.c | 14 +-- kernel/drivers/net/stack/rtcfg/rtcfg_event.c | 48 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c | 23 +++-- kernel/drivers/net/stack/rtcfg/rtcfg_proc.c|2 +- kernel/drivers/net/stack/rtcfg/rtcfg_timer.c | 96 kernel/drivers/net/stack/rtmac/nomac/nomac_proto.c |8 +- kernel/drivers/net/stack/rtmac/tdma/tdma_module.c |4 +- kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |2 +- kernel/drivers/net/stack/rtnet_rtpc.c | 13 +-- kernel/drivers/net/stack/stack_mgr.c |6 +- 16 files changed, 187 insertions(+), 130 deletions(-) diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 9b459eb..4887f77 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -103,7 +103,10 @@ static void rtnetproxy_tx_loop(void *arg) struct rtnet_device *rtdev; struct rtskb *rtskb; -while (rtdm_event_wait(_tx_event) == 0) { +while (!rtdm_task_should_stop()) { + if (rtdm_event_wait(_tx_event) < 0) + break; + while ((rtskb = rtskb_dequeue(_queue)) != NULL) { rtdev = rtskb->rtdev; rtdev_xmit_proxy(rtskb); @@ -415,8 +418,8 @@ static void __exit rtnetproxy_cleanup_module(void) unregister_netdev(dev_rtnetproxy); free_netdev(dev_rtnetproxy); +rtdm_task_destroy(_tx_task); rtdm_event_destroy(_tx_event); -rtdm_task_join_nrt(_tx_task, 100); /* free the non-real-time signal */ rtdm_nrtsig_destroy(_rx_signal); diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h index 44c9bbb..a4b7955 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h @@ -34,9 +34,13 @@ #include -#define FLAG_TIMER_STARTED 0x0001 -#define FLAG_TIMER_SHUTDOWN 0x0002 +#define FLAG_TIMER_STARTED 16 +#define FLAG_TIMER_SHUTDOWN 17 +#define FLAG_TIMER_PENDING 18 +#define _FLAG_TIMER_STARTED (1 << FLAG_TIMER_STARTED) +#define _FLAG_TIMER_SHUTDOWN(1 << FLAG_TIMER_SHUTDOWN) +#define _FLAG_TIMER_PENDING (1 << FLAG_TIMER_PENDING) typedef enum { RTCFG_MAIN_OFF, @@ -63,8 +67,8 @@ struct rtcfg_device { rtdm_mutex_tdev_mutex; struct list_headevent_calls; rtdm_lock_t event_calls_lock; -rtdm_task_t timer_task; -unsigned intflags; +rtdm_timer_ttimer; +unsigned long flags; unsigned intburstrate; #ifdef CONFIG_XENO_OPT_VFILE struct xnvfile_directoryproc_entry; diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h index ac9f78b..2a6a415 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h @@ -51,9 +51,11 @@ #define RTCFG_ADDRSIZE_IP 4 #define RTCFG_MAX_ADDRSIZE RTCFG_ADDRSIZE_IP -#define RTCFG_FLAG_STAGE_2_DATA 1 -#define RTCFG_FLAG_READY2 +#define RTCFG_FLAG_STAGE_2_DATA 0 +#define RTCFG_FLAG_READY1 +#define _RTCFG_FLAG_STAGE_2_DATA (1 << RTCFG_FLAG_STAGE_2_DATA) +#define _RTCFG_FLAG_READY(1 << RTCFG_FLAG_READY) struct rtcfg_frm_head { #if defined(__LITTLE_ENDIAN_BITFIELD) diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h index e9f6e27..2da6d50 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h @@ -25,7 +25,10 @@ #ifndef __RTCFG_TIMER_H_ #define __RTCFG_TIMER_H_ +void rtcfg_timer(rtdm_timer_t *t); -void rtcfg_timer(void *arg); +void rtcfg_timer_run(void); + +void rtcfg_thread_signal(void); #endif /* __RTCFG_TIMER_H_ */ diff --git
[Xenomai-git] Gilles Chanteperdrix : rtnet: adapt to RTDM task management changes
Module: xenomai-gch Branch: for-forge Commit: c1ad65644a3ddabc375177be9e490bd66ef2d394 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=c1ad65644a3ddabc375177be9e490bd66ef2d394 Author: Gilles ChanteperdrixDate: Thu Oct 1 02:10:29 2015 +0200 rtnet: adapt to RTDM task management changes Replace rtcfg timer tasks with timers, polled in the rtcfg rx task. Remove useless calls to rtdm_task_join_nrt. --- kernel/drivers/net/addons/proxy.c |7 +- .../drivers/net/stack/include/rtcfg/rtcfg_event.h | 12 ++- .../drivers/net/stack/include/rtcfg/rtcfg_frame.h |6 +- .../drivers/net/stack/include/rtcfg/rtcfg_timer.h |5 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h |1 - .../drivers/net/stack/rtcfg/rtcfg_client_event.c | 70 +++--- kernel/drivers/net/stack/rtcfg/rtcfg_conn_event.c | 14 +-- kernel/drivers/net/stack/rtcfg/rtcfg_event.c | 48 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c | 23 +++-- kernel/drivers/net/stack/rtcfg/rtcfg_proc.c|2 +- kernel/drivers/net/stack/rtcfg/rtcfg_timer.c | 96 kernel/drivers/net/stack/rtmac/nomac/nomac_proto.c |7 +- kernel/drivers/net/stack/rtmac/tdma/tdma_module.c |4 +- kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |2 +- kernel/drivers/net/stack/rtnet_rtpc.c | 13 +-- kernel/drivers/net/stack/stack_mgr.c |6 +- 16 files changed, 186 insertions(+), 130 deletions(-) diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 9b459eb..4887f77 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -103,7 +103,10 @@ static void rtnetproxy_tx_loop(void *arg) struct rtnet_device *rtdev; struct rtskb *rtskb; -while (rtdm_event_wait(_tx_event) == 0) { +while (!rtdm_task_should_stop()) { + if (rtdm_event_wait(_tx_event) < 0) + break; + while ((rtskb = rtskb_dequeue(_queue)) != NULL) { rtdev = rtskb->rtdev; rtdev_xmit_proxy(rtskb); @@ -415,8 +418,8 @@ static void __exit rtnetproxy_cleanup_module(void) unregister_netdev(dev_rtnetproxy); free_netdev(dev_rtnetproxy); +rtdm_task_destroy(_tx_task); rtdm_event_destroy(_tx_event); -rtdm_task_join_nrt(_tx_task, 100); /* free the non-real-time signal */ rtdm_nrtsig_destroy(_rx_signal); diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h index 44c9bbb..a4b7955 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h @@ -34,9 +34,13 @@ #include -#define FLAG_TIMER_STARTED 0x0001 -#define FLAG_TIMER_SHUTDOWN 0x0002 +#define FLAG_TIMER_STARTED 16 +#define FLAG_TIMER_SHUTDOWN 17 +#define FLAG_TIMER_PENDING 18 +#define _FLAG_TIMER_STARTED (1 << FLAG_TIMER_STARTED) +#define _FLAG_TIMER_SHUTDOWN(1 << FLAG_TIMER_SHUTDOWN) +#define _FLAG_TIMER_PENDING (1 << FLAG_TIMER_PENDING) typedef enum { RTCFG_MAIN_OFF, @@ -63,8 +67,8 @@ struct rtcfg_device { rtdm_mutex_tdev_mutex; struct list_headevent_calls; rtdm_lock_t event_calls_lock; -rtdm_task_t timer_task; -unsigned intflags; +rtdm_timer_ttimer; +unsigned long flags; unsigned intburstrate; #ifdef CONFIG_XENO_OPT_VFILE struct xnvfile_directoryproc_entry; diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h index ac9f78b..2a6a415 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h @@ -51,9 +51,11 @@ #define RTCFG_ADDRSIZE_IP 4 #define RTCFG_MAX_ADDRSIZE RTCFG_ADDRSIZE_IP -#define RTCFG_FLAG_STAGE_2_DATA 1 -#define RTCFG_FLAG_READY2 +#define RTCFG_FLAG_STAGE_2_DATA 0 +#define RTCFG_FLAG_READY1 +#define _RTCFG_FLAG_STAGE_2_DATA (1 << RTCFG_FLAG_STAGE_2_DATA) +#define _RTCFG_FLAG_READY(1 << RTCFG_FLAG_READY) struct rtcfg_frm_head { #if defined(__LITTLE_ENDIAN_BITFIELD) diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h index e9f6e27..2da6d50 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h @@ -25,7 +25,10 @@ #ifndef __RTCFG_TIMER_H_ #define __RTCFG_TIMER_H_ +void rtcfg_timer(rtdm_timer_t *t); -void rtcfg_timer(void *arg); +void rtcfg_timer_run(void); + +void rtcfg_thread_signal(void); #endif /* __RTCFG_TIMER_H_ */ diff --git
[Xenomai-git] Gilles Chanteperdrix : rtnet: adapt to RTDM task management changes
Module: xenomai-gch Branch: for-forge Commit: cb91bcdea9bfcfe57904c4e9272c9fb8adc57480 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=cb91bcdea9bfcfe57904c4e9272c9fb8adc57480 Author: Gilles ChanteperdrixDate: Thu Oct 1 02:10:29 2015 +0200 rtnet: adapt to RTDM task management changes Replace rtcfg timer tasks with timers, polled in the rtcfg rx task. Remove useless calls to rtdm_task_join_nrt. --- kernel/drivers/net/addons/proxy.c |7 +- .../drivers/net/stack/include/rtcfg/rtcfg_event.h | 12 ++- .../drivers/net/stack/include/rtcfg/rtcfg_frame.h |6 +- .../drivers/net/stack/include/rtcfg/rtcfg_timer.h |5 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h |1 - .../drivers/net/stack/rtcfg/rtcfg_client_event.c | 70 +++--- kernel/drivers/net/stack/rtcfg/rtcfg_conn_event.c | 14 +-- kernel/drivers/net/stack/rtcfg/rtcfg_event.c | 48 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c | 23 +++-- kernel/drivers/net/stack/rtcfg/rtcfg_proc.c|2 +- kernel/drivers/net/stack/rtcfg/rtcfg_timer.c | 96 kernel/drivers/net/stack/rtmac/nomac/nomac_proto.c |8 +- kernel/drivers/net/stack/rtmac/tdma/tdma_module.c |4 +- kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |2 +- kernel/drivers/net/stack/rtnet_rtpc.c | 13 +-- kernel/drivers/net/stack/stack_mgr.c |6 +- 16 files changed, 187 insertions(+), 130 deletions(-) diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 9b459eb..4887f77 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -103,7 +103,10 @@ static void rtnetproxy_tx_loop(void *arg) struct rtnet_device *rtdev; struct rtskb *rtskb; -while (rtdm_event_wait(_tx_event) == 0) { +while (!rtdm_task_should_stop()) { + if (rtdm_event_wait(_tx_event) < 0) + break; + while ((rtskb = rtskb_dequeue(_queue)) != NULL) { rtdev = rtskb->rtdev; rtdev_xmit_proxy(rtskb); @@ -415,8 +418,8 @@ static void __exit rtnetproxy_cleanup_module(void) unregister_netdev(dev_rtnetproxy); free_netdev(dev_rtnetproxy); +rtdm_task_destroy(_tx_task); rtdm_event_destroy(_tx_event); -rtdm_task_join_nrt(_tx_task, 100); /* free the non-real-time signal */ rtdm_nrtsig_destroy(_rx_signal); diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h index 44c9bbb..a4b7955 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h @@ -34,9 +34,13 @@ #include -#define FLAG_TIMER_STARTED 0x0001 -#define FLAG_TIMER_SHUTDOWN 0x0002 +#define FLAG_TIMER_STARTED 16 +#define FLAG_TIMER_SHUTDOWN 17 +#define FLAG_TIMER_PENDING 18 +#define _FLAG_TIMER_STARTED (1 << FLAG_TIMER_STARTED) +#define _FLAG_TIMER_SHUTDOWN(1 << FLAG_TIMER_SHUTDOWN) +#define _FLAG_TIMER_PENDING (1 << FLAG_TIMER_PENDING) typedef enum { RTCFG_MAIN_OFF, @@ -63,8 +67,8 @@ struct rtcfg_device { rtdm_mutex_tdev_mutex; struct list_headevent_calls; rtdm_lock_t event_calls_lock; -rtdm_task_t timer_task; -unsigned intflags; +rtdm_timer_ttimer; +unsigned long flags; unsigned intburstrate; #ifdef CONFIG_XENO_OPT_VFILE struct xnvfile_directoryproc_entry; diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h index ac9f78b..2a6a415 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h @@ -51,9 +51,11 @@ #define RTCFG_ADDRSIZE_IP 4 #define RTCFG_MAX_ADDRSIZE RTCFG_ADDRSIZE_IP -#define RTCFG_FLAG_STAGE_2_DATA 1 -#define RTCFG_FLAG_READY2 +#define RTCFG_FLAG_STAGE_2_DATA 0 +#define RTCFG_FLAG_READY1 +#define _RTCFG_FLAG_STAGE_2_DATA (1 << RTCFG_FLAG_STAGE_2_DATA) +#define _RTCFG_FLAG_READY(1 << RTCFG_FLAG_READY) struct rtcfg_frm_head { #if defined(__LITTLE_ENDIAN_BITFIELD) diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h index e9f6e27..2da6d50 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h @@ -25,7 +25,10 @@ #ifndef __RTCFG_TIMER_H_ #define __RTCFG_TIMER_H_ +void rtcfg_timer(rtdm_timer_t *t); -void rtcfg_timer(void *arg); +void rtcfg_timer_run(void); + +void rtcfg_thread_signal(void); #endif /* __RTCFG_TIMER_H_ */ diff --git
[Xenomai-git] Gilles Chanteperdrix : rtnet: adapt to RTDM task management changes
Module: xenomai-gch Branch: for-forge Commit: ee84316ab4d606a9336fb7ddbc6106b177bd0b82 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=ee84316ab4d606a9336fb7ddbc6106b177bd0b82 Author: Gilles ChanteperdrixDate: Thu Oct 1 02:10:29 2015 +0200 rtnet: adapt to RTDM task management changes Replace rtcfg timer tasks with timers, polled in the rtcfg rx task. Remove useless calls to rtdm_task_join_nrt. --- kernel/drivers/net/addons/proxy.c |7 +- .../drivers/net/stack/include/rtcfg/rtcfg_event.h | 12 ++- .../drivers/net/stack/include/rtcfg/rtcfg_frame.h |6 +- .../drivers/net/stack/include/rtcfg/rtcfg_timer.h |5 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h |1 - .../drivers/net/stack/rtcfg/rtcfg_client_event.c | 70 +++--- kernel/drivers/net/stack/rtcfg/rtcfg_conn_event.c | 14 +-- kernel/drivers/net/stack/rtcfg/rtcfg_event.c | 48 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c | 23 +++-- kernel/drivers/net/stack/rtcfg/rtcfg_proc.c|2 +- kernel/drivers/net/stack/rtcfg/rtcfg_timer.c | 96 kernel/drivers/net/stack/rtmac/nomac/nomac_proto.c |7 +- kernel/drivers/net/stack/rtmac/tdma/tdma_module.c |4 +- kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |2 +- kernel/drivers/net/stack/rtnet_rtpc.c |8 +- kernel/drivers/net/stack/stack_mgr.c |6 +- 16 files changed, 185 insertions(+), 126 deletions(-) diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 9b459eb..4887f77 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -103,7 +103,10 @@ static void rtnetproxy_tx_loop(void *arg) struct rtnet_device *rtdev; struct rtskb *rtskb; -while (rtdm_event_wait(_tx_event) == 0) { +while (!rtdm_task_should_stop()) { + if (rtdm_event_wait(_tx_event) < 0) + break; + while ((rtskb = rtskb_dequeue(_queue)) != NULL) { rtdev = rtskb->rtdev; rtdev_xmit_proxy(rtskb); @@ -415,8 +418,8 @@ static void __exit rtnetproxy_cleanup_module(void) unregister_netdev(dev_rtnetproxy); free_netdev(dev_rtnetproxy); +rtdm_task_destroy(_tx_task); rtdm_event_destroy(_tx_event); -rtdm_task_join_nrt(_tx_task, 100); /* free the non-real-time signal */ rtdm_nrtsig_destroy(_rx_signal); diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h index 44c9bbb..a4b7955 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h @@ -34,9 +34,13 @@ #include -#define FLAG_TIMER_STARTED 0x0001 -#define FLAG_TIMER_SHUTDOWN 0x0002 +#define FLAG_TIMER_STARTED 16 +#define FLAG_TIMER_SHUTDOWN 17 +#define FLAG_TIMER_PENDING 18 +#define _FLAG_TIMER_STARTED (1 << FLAG_TIMER_STARTED) +#define _FLAG_TIMER_SHUTDOWN(1 << FLAG_TIMER_SHUTDOWN) +#define _FLAG_TIMER_PENDING (1 << FLAG_TIMER_PENDING) typedef enum { RTCFG_MAIN_OFF, @@ -63,8 +67,8 @@ struct rtcfg_device { rtdm_mutex_tdev_mutex; struct list_headevent_calls; rtdm_lock_t event_calls_lock; -rtdm_task_t timer_task; -unsigned intflags; +rtdm_timer_ttimer; +unsigned long flags; unsigned intburstrate; #ifdef CONFIG_XENO_OPT_VFILE struct xnvfile_directoryproc_entry; diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h index ac9f78b..2a6a415 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h @@ -51,9 +51,11 @@ #define RTCFG_ADDRSIZE_IP 4 #define RTCFG_MAX_ADDRSIZE RTCFG_ADDRSIZE_IP -#define RTCFG_FLAG_STAGE_2_DATA 1 -#define RTCFG_FLAG_READY2 +#define RTCFG_FLAG_STAGE_2_DATA 0 +#define RTCFG_FLAG_READY1 +#define _RTCFG_FLAG_STAGE_2_DATA (1 << RTCFG_FLAG_STAGE_2_DATA) +#define _RTCFG_FLAG_READY(1 << RTCFG_FLAG_READY) struct rtcfg_frm_head { #if defined(__LITTLE_ENDIAN_BITFIELD) diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h index e9f6e27..2da6d50 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h @@ -25,7 +25,10 @@ #ifndef __RTCFG_TIMER_H_ #define __RTCFG_TIMER_H_ +void rtcfg_timer(rtdm_timer_t *t); -void rtcfg_timer(void *arg); +void rtcfg_timer_run(void); + +void rtcfg_thread_signal(void); #endif /* __RTCFG_TIMER_H_ */ diff --git
[Xenomai-git] Gilles Chanteperdrix : rtnet: adapt to RTDM task management changes
Module: xenomai-gch Branch: for-forge Commit: a5aa6fc59312f9ae1000c0168494fccecd2d9a31 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=a5aa6fc59312f9ae1000c0168494fccecd2d9a31 Author: Gilles ChanteperdrixDate: Thu Oct 1 02:10:29 2015 +0200 rtnet: adapt to RTDM task management changes Replace rtcfg timer tasks with timers, polled in the rtcfg rx task. Remove useless calls to rtdm_task_join_nrt. --- kernel/drivers/net/addons/proxy.c |7 +- .../drivers/net/stack/include/rtcfg/rtcfg_event.h | 12 ++- .../drivers/net/stack/include/rtcfg/rtcfg_frame.h |6 +- .../drivers/net/stack/include/rtcfg/rtcfg_timer.h |5 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h |1 - .../drivers/net/stack/rtcfg/rtcfg_client_event.c | 70 +++--- kernel/drivers/net/stack/rtcfg/rtcfg_conn_event.c | 14 +-- kernel/drivers/net/stack/rtcfg/rtcfg_event.c | 48 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c | 23 +++-- kernel/drivers/net/stack/rtcfg/rtcfg_proc.c|2 +- kernel/drivers/net/stack/rtcfg/rtcfg_timer.c | 96 kernel/drivers/net/stack/rtmac/nomac/nomac_proto.c |7 +- kernel/drivers/net/stack/rtmac/tdma/tdma_module.c |4 +- kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |2 +- kernel/drivers/net/stack/rtnet_rtpc.c | 13 +-- kernel/drivers/net/stack/stack_mgr.c |6 +- 16 files changed, 186 insertions(+), 130 deletions(-) diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 9b459eb..4887f77 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -103,7 +103,10 @@ static void rtnetproxy_tx_loop(void *arg) struct rtnet_device *rtdev; struct rtskb *rtskb; -while (rtdm_event_wait(_tx_event) == 0) { +while (!rtdm_task_should_stop()) { + if (rtdm_event_wait(_tx_event) < 0) + break; + while ((rtskb = rtskb_dequeue(_queue)) != NULL) { rtdev = rtskb->rtdev; rtdev_xmit_proxy(rtskb); @@ -415,8 +418,8 @@ static void __exit rtnetproxy_cleanup_module(void) unregister_netdev(dev_rtnetproxy); free_netdev(dev_rtnetproxy); +rtdm_task_destroy(_tx_task); rtdm_event_destroy(_tx_event); -rtdm_task_join_nrt(_tx_task, 100); /* free the non-real-time signal */ rtdm_nrtsig_destroy(_rx_signal); diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h index 44c9bbb..a4b7955 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h @@ -34,9 +34,13 @@ #include -#define FLAG_TIMER_STARTED 0x0001 -#define FLAG_TIMER_SHUTDOWN 0x0002 +#define FLAG_TIMER_STARTED 16 +#define FLAG_TIMER_SHUTDOWN 17 +#define FLAG_TIMER_PENDING 18 +#define _FLAG_TIMER_STARTED (1 << FLAG_TIMER_STARTED) +#define _FLAG_TIMER_SHUTDOWN(1 << FLAG_TIMER_SHUTDOWN) +#define _FLAG_TIMER_PENDING (1 << FLAG_TIMER_PENDING) typedef enum { RTCFG_MAIN_OFF, @@ -63,8 +67,8 @@ struct rtcfg_device { rtdm_mutex_tdev_mutex; struct list_headevent_calls; rtdm_lock_t event_calls_lock; -rtdm_task_t timer_task; -unsigned intflags; +rtdm_timer_ttimer; +unsigned long flags; unsigned intburstrate; #ifdef CONFIG_XENO_OPT_VFILE struct xnvfile_directoryproc_entry; diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h index ac9f78b..2a6a415 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h @@ -51,9 +51,11 @@ #define RTCFG_ADDRSIZE_IP 4 #define RTCFG_MAX_ADDRSIZE RTCFG_ADDRSIZE_IP -#define RTCFG_FLAG_STAGE_2_DATA 1 -#define RTCFG_FLAG_READY2 +#define RTCFG_FLAG_STAGE_2_DATA 0 +#define RTCFG_FLAG_READY1 +#define _RTCFG_FLAG_STAGE_2_DATA (1 << RTCFG_FLAG_STAGE_2_DATA) +#define _RTCFG_FLAG_READY(1 << RTCFG_FLAG_READY) struct rtcfg_frm_head { #if defined(__LITTLE_ENDIAN_BITFIELD) diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h index e9f6e27..2da6d50 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h @@ -25,7 +25,10 @@ #ifndef __RTCFG_TIMER_H_ #define __RTCFG_TIMER_H_ +void rtcfg_timer(rtdm_timer_t *t); -void rtcfg_timer(void *arg); +void rtcfg_timer_run(void); + +void rtcfg_thread_signal(void); #endif /* __RTCFG_TIMER_H_ */ diff --git
[Xenomai-git] Gilles Chanteperdrix : rtnet: adapt to RTDM task management changes
Module: xenomai-3 Branch: next Commit: bd971c3a9624987d76662b5c67a4ab10bdc51cd8 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=bd971c3a9624987d76662b5c67a4ab10bdc51cd8 Author: Gilles ChanteperdrixDate: Thu Oct 1 02:10:29 2015 +0200 rtnet: adapt to RTDM task management changes Replace rtcfg timer tasks with timers, polled in the rtcfg rx task. Remove useless calls to rtdm_task_join_nrt. --- kernel/drivers/net/addons/proxy.c |7 +- .../drivers/net/stack/include/rtcfg/rtcfg_event.h | 12 ++- .../drivers/net/stack/include/rtcfg/rtcfg_frame.h |6 +- .../drivers/net/stack/include/rtcfg/rtcfg_timer.h |5 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h |1 - .../drivers/net/stack/rtcfg/rtcfg_client_event.c | 70 +++--- kernel/drivers/net/stack/rtcfg/rtcfg_conn_event.c | 14 +-- kernel/drivers/net/stack/rtcfg/rtcfg_event.c | 48 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c | 23 +++-- kernel/drivers/net/stack/rtcfg/rtcfg_proc.c|2 +- kernel/drivers/net/stack/rtcfg/rtcfg_timer.c | 96 kernel/drivers/net/stack/rtmac/nomac/nomac_proto.c |8 +- kernel/drivers/net/stack/rtmac/tdma/tdma_module.c |4 +- kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |2 +- kernel/drivers/net/stack/rtnet_rtpc.c | 13 +-- kernel/drivers/net/stack/stack_mgr.c |6 +- 16 files changed, 187 insertions(+), 130 deletions(-) diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 9b459eb..4887f77 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -103,7 +103,10 @@ static void rtnetproxy_tx_loop(void *arg) struct rtnet_device *rtdev; struct rtskb *rtskb; -while (rtdm_event_wait(_tx_event) == 0) { +while (!rtdm_task_should_stop()) { + if (rtdm_event_wait(_tx_event) < 0) + break; + while ((rtskb = rtskb_dequeue(_queue)) != NULL) { rtdev = rtskb->rtdev; rtdev_xmit_proxy(rtskb); @@ -415,8 +418,8 @@ static void __exit rtnetproxy_cleanup_module(void) unregister_netdev(dev_rtnetproxy); free_netdev(dev_rtnetproxy); +rtdm_task_destroy(_tx_task); rtdm_event_destroy(_tx_event); -rtdm_task_join_nrt(_tx_task, 100); /* free the non-real-time signal */ rtdm_nrtsig_destroy(_rx_signal); diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h index 44c9bbb..a4b7955 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_event.h @@ -34,9 +34,13 @@ #include -#define FLAG_TIMER_STARTED 0x0001 -#define FLAG_TIMER_SHUTDOWN 0x0002 +#define FLAG_TIMER_STARTED 16 +#define FLAG_TIMER_SHUTDOWN 17 +#define FLAG_TIMER_PENDING 18 +#define _FLAG_TIMER_STARTED (1 << FLAG_TIMER_STARTED) +#define _FLAG_TIMER_SHUTDOWN(1 << FLAG_TIMER_SHUTDOWN) +#define _FLAG_TIMER_PENDING (1 << FLAG_TIMER_PENDING) typedef enum { RTCFG_MAIN_OFF, @@ -63,8 +67,8 @@ struct rtcfg_device { rtdm_mutex_tdev_mutex; struct list_headevent_calls; rtdm_lock_t event_calls_lock; -rtdm_task_t timer_task; -unsigned intflags; +rtdm_timer_ttimer; +unsigned long flags; unsigned intburstrate; #ifdef CONFIG_XENO_OPT_VFILE struct xnvfile_directoryproc_entry; diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h index ac9f78b..2a6a415 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_frame.h @@ -51,9 +51,11 @@ #define RTCFG_ADDRSIZE_IP 4 #define RTCFG_MAX_ADDRSIZE RTCFG_ADDRSIZE_IP -#define RTCFG_FLAG_STAGE_2_DATA 1 -#define RTCFG_FLAG_READY2 +#define RTCFG_FLAG_STAGE_2_DATA 0 +#define RTCFG_FLAG_READY1 +#define _RTCFG_FLAG_STAGE_2_DATA (1 << RTCFG_FLAG_STAGE_2_DATA) +#define _RTCFG_FLAG_READY(1 << RTCFG_FLAG_READY) struct rtcfg_frm_head { #if defined(__LITTLE_ENDIAN_BITFIELD) diff --git a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h index e9f6e27..2da6d50 100644 --- a/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h +++ b/kernel/drivers/net/stack/include/rtcfg/rtcfg_timer.h @@ -25,7 +25,10 @@ #ifndef __RTCFG_TIMER_H_ #define __RTCFG_TIMER_H_ +void rtcfg_timer(rtdm_timer_t *t); -void rtcfg_timer(void *arg); +void rtcfg_timer_run(void); + +void rtcfg_thread_signal(void); #endif /* __RTCFG_TIMER_H_ */ diff --git