From mboxrd@z Thu Jan 1 00:00:00 1970 From: hongzha1 Subject: [PATCH 2/5] cobalt/rtdm: add interface to init timer on specified cpu Date: Sat, 20 Feb 2021 00:53:08 -0500 Message-Id: <20210220055311.23826-2-hongzhan.chen@intel.com> In-Reply-To: <20210220055311.23826-1-hongzhan.chen@intel.com> References: <20210220055311.23826-1-hongzhan.chen@intel.com> List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xenomai@xenomai.org Initialise timer on specified cpu Signed-off-by: hongzha1 diff --git a/include/cobalt/kernel/rtdm/driver.h b/include/cobalt/kernel/rtdm/driver.h index 6cdace324..6a431e7c5 100644 --- a/include/cobalt/kernel/rtdm/driver.h +++ b/include/cobalt/kernel/rtdm/driver.h @@ -966,6 +966,9 @@ enum rtdm_timer_mode { int rtdm_timer_init(rtdm_timer_t *timer, rtdm_timer_handler_t handler, const char *name); +int rtdm_timer_init_on_cpu(rtdm_timer_t *timer, rtdm_timer_handler_t handler, + const char *name, int cpu); + void rtdm_timer_destroy(rtdm_timer_t *timer); int rtdm_timer_start(rtdm_timer_t *timer, nanosecs_abs_t expiry, diff --git a/kernel/cobalt/rtdm/drvlib.c b/kernel/cobalt/rtdm/drvlib.c index 7452850b7..e6145b353 100644 --- a/kernel/cobalt/rtdm/drvlib.c +++ b/kernel/cobalt/rtdm/drvlib.c @@ -601,6 +601,34 @@ int rtdm_timer_init(rtdm_timer_t *timer, rtdm_timer_handler_t handler, EXPORT_SYMBOL_GPL(rtdm_timer_init); +/** + * @brief Initialise a timer on specified cpu + * + * @param[in,out] timer Timer handle + * @param[in] handler Handler to be called on timer expiry + * @param[in] name Optional timer name + * @param[in] cpu that run on + * + * @return 0 on success, otherwise negative error code + * + * @coretags{task-unrestricted} + */ +int rtdm_timer_init_on_cpu(rtdm_timer_t *timer, rtdm_timer_handler_t handler, + const char *name, int cpu) +{ + struct xnsched *sched = xnsched_struct(cpu); + + if (!realtime_core_enabled()) + return -ENOSYS; + + sched = xnsched_struct(cpu); + xntimer_init((timer), &nkclock, handler, sched, XNTIMER_IGRAVITY); + xntimer_set_name((timer), (name)); + + return 0; +} +EXPORT_SYMBOL_GPL(rtdm_timer_init_on_cpu); + /** * @brief Destroy a timer * -- 2.17.1