Module: xenomai-forge Branch: master Commit: 622706fb309f42f979271a9031340eb100d0711e URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=622706fb309f42f979271a9031340eb100d0711e
Author: Philippe Gerum <r...@xenomai.org> Date: Sun Nov 20 23:13:02 2011 +0100 copperplate: introduce copperplate_renice_thread() As a follow up to copperplate_create_thread(), we introduce a call to change the priority of a thread, using the extended pthread_setschedparm_ex() service over Cobalt. As a side-effect, this may turn a regular POSIX thread into a Xenomai shadow. --- lib/copperplate/internal.c | 22 ++++++++++++++++++++++ lib/copperplate/internal.h | 3 +++ 2 files changed, 25 insertions(+), 0 deletions(-) diff --git a/lib/copperplate/internal.c b/lib/copperplate/internal.c index a7f9405..4596457 100644 --- a/lib/copperplate/internal.c +++ b/lib/copperplate/internal.c @@ -92,6 +92,17 @@ int copperplate_create_thread(int prio, return ret; } +int copperplate_renice_thread(pthread_t tid, int prio) +{ + struct sched_param_ex param_ex; + int policy; + + param_ex.sched_priority = prio; + policy = prio ? SCHED_RT : SCHED_OTHER; + + return __bt(-pthread_setschedparam_ex(tid, policy, ¶m_ex)); +} + #else /* CONFIG_XENO_MERCURY */ int copperplate_probe_node(unsigned int id) @@ -126,6 +137,17 @@ int copperplate_create_thread(int prio, return ret; } +int copperplate_renice_thread(pthread_t tid, int prio) +{ + struct sched_param param; + int policy; + + param.sched_priority = prio; + policy = prio ? SCHED_RT : SCHED_OTHER; + + return __bt(-__RT(pthread_setschedparam(tid, policy, ¶m))); +} + #endif /* CONFIG_XENO_MERCURY */ void __printout(struct threadobj *thobj, diff --git a/lib/copperplate/internal.h b/lib/copperplate/internal.h index 8168310..ee9d905 100644 --- a/lib/copperplate/internal.h +++ b/lib/copperplate/internal.h @@ -73,6 +73,9 @@ int copperplate_create_thread(int prio, void *(*start)(void *arg), void *arg, size_t stacksize, pthread_t *tid); + +int copperplate_renice_thread(pthread_t tid, int prio); + #ifdef __cplusplus } #endif _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git