Module: xenomai-3 Branch: master Commit: a9db34d45f9705ac887bf31f2f7762a2cb4a1130 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=a9db34d45f9705ac887bf31f2f7762a2cb4a1130
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Sun Nov 16 00:17:54 2014 +0100 cobalt/rtdm: add rtdm_schedule_nrt_work service to allow triggering a call to schedule_work() from primary domain --- include/cobalt/kernel/rtdm/driver.h | 1 + kernel/cobalt/rtdm/drvlib.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/include/cobalt/kernel/rtdm/driver.h b/include/cobalt/kernel/rtdm/driver.h index 703b6ec..2d4af92 100644 --- a/include/cobalt/kernel/rtdm/driver.h +++ b/include/cobalt/kernel/rtdm/driver.h @@ -847,6 +847,7 @@ struct rtdm_nrtsig { void *arg; }; +void rtdm_schedule_nrt_work(struct work_struct *lostage_work); /** @} rtdm_nrtsignal */ #ifndef DOXYGEN_CPP /* Avoid static inline tags for RTDM in doxygen */ diff --git a/kernel/cobalt/rtdm/drvlib.c b/kernel/cobalt/rtdm/drvlib.c index 165768a..b6a988a 100644 --- a/kernel/cobalt/rtdm/drvlib.c +++ b/kernel/cobalt/rtdm/drvlib.c @@ -1484,6 +1484,38 @@ void rtdm_nrtsig_pend(rtdm_nrtsig_t *nrt_sig) ipipe_post_work_root(&nrtsig_work, work); } EXPORT_SYMBOL_GPL(rtdm_nrtsig_pend); + +struct lostage_schedule_work { + struct ipipe_work_header work; + struct work_struct *lostage_work; +}; + +static void lostage_schedule_work(struct ipipe_work_header *work) +{ + struct lostage_schedule_work *w; + + w = container_of(work, typeof(*w), work); + schedule_work(w->lostage_work); +} + +/** + * Put a work task in Linux non real-time global workqueue from primary mode. + * + * @param lostage_work + */ +void rtdm_schedule_nrt_work(struct work_struct *lostage_work) +{ + struct lostage_schedule_work macb_work = { + .work = { + .size = sizeof(macb_work), + .handler = lostage_schedule_work, + }, + .lostage_work = lostage_work, + }; + ipipe_post_work_root(&macb_work, work); +} +EXPORT_SYMBOL_GPL(rtdm_schedule_nrt_work); + /** @} Non-Real-Time Signalling Services */ _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git