Module: xenomai-forge Branch: master Commit: 108d9146a7e6e8fc427cd06a2356b4ae5c1c85fb URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=108d9146a7e6e8fc427cd06a2356b4ae5c1c85fb
Author: Philippe Gerum <r...@xenomai.org> Date: Tue Jan 7 16:46:27 2014 +0100 cobalt/posix/thread: sanitize schedparm change --- kernel/cobalt/posix/thread.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/kernel/cobalt/posix/thread.c b/kernel/cobalt/posix/thread.c index 89f9640..656ea30 100644 --- a/kernel/cobalt/posix/thread.c +++ b/kernel/cobalt/posix/thread.c @@ -254,16 +254,13 @@ struct xnpersonality *cobalt_thread_finalize(struct xnthread *zombie) static struct xnsched_class * get_policy_param(union xnsched_policy_param *param, - struct cobalt_thread *thread, int u_policy, const struct sched_param_ex *param_ex, xnticks_t *tslice_r) { struct xnsched_class *sched_class; - struct xnthread *base_thread; int prio, policy; xnticks_t tslice; - base_thread = &thread->threadbase; prio = param_ex->sched_priority; tslice = XN_INFINITE; policy = u_policy; @@ -348,7 +345,6 @@ get_policy_param(union xnsched_policy_param *param, return NULL; } - thread->sched_u_policy = u_policy; *tslice_r = tslice; return sched_class; @@ -441,11 +437,12 @@ pthread_setschedparam_ex(struct cobalt_thread *thread, } tslice = xnthread_time_slice(&thread->threadbase); - sched_class = get_policy_param(¶m, thread, policy, param_ex, &tslice); + sched_class = get_policy_param(¶m, policy, param_ex, &tslice); if (sched_class == NULL) { ret = -EINVAL; goto fail; } + thread->sched_u_policy = policy; xnthread_set_slice(&thread->threadbase, tslice); xnthread_set_schedparam(&thread->threadbase, sched_class, ¶m); cobalt_call_extension(thread_setsched, &thread->extref, ret, @@ -625,7 +622,7 @@ static inline int pthread_create(struct cobalt_thread **thread_p, return -EAGAIN; tslice = cobalt_time_slice; - sched_class = get_policy_param(¶m, thread, policy, param_ex, &tslice); + sched_class = get_policy_param(¶m, policy, param_ex, &tslice); if (sched_class == NULL) { xnfree(thread); return -EINVAL; @@ -641,6 +638,7 @@ static inline int pthread_create(struct cobalt_thread **thread_p, return -EAGAIN; } + thread->sched_u_policy = policy; thread->magic = COBALT_THREAD_MAGIC; xnsynch_init(&thread->monitor_synch, XNSYNCH_FIFO, NULL); thread->monitor_queued = 0; _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git