mirror of https://github.com/RT-Thread/rt-thread
add RT_THREAD_CTRL_SET_PRIORITY
This commit is contained in:
parent
f13193ff92
commit
da1c5c7882
|
@ -1634,7 +1634,7 @@ sysret_t sys_setpriority(int which, id_t who, int prio)
|
||||||
for (list = lwp->t_grp.next; list != &lwp->t_grp; list = list->next)
|
for (list = lwp->t_grp.next; list != &lwp->t_grp; list = list->next)
|
||||||
{
|
{
|
||||||
thread = rt_list_entry(list, struct rt_thread, sibling);
|
thread = rt_list_entry(list, struct rt_thread, sibling);
|
||||||
rt_thread_control(thread, RT_THREAD_CTRL_CHANGE_PRIORITY, &prio);
|
rt_thread_control(thread, RT_THREAD_CTRL_SET_PRIORITY, &prio);
|
||||||
}
|
}
|
||||||
lwp_pid_lock_release();
|
lwp_pid_lock_release();
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -8789,7 +8789,7 @@ sysret_t sys_sched_setparam(pid_t tid, void *param)
|
||||||
|
|
||||||
if (thread)
|
if (thread)
|
||||||
{
|
{
|
||||||
ret = rt_thread_control(thread, RT_THREAD_CTRL_CHANGE_PRIORITY, (void *)&sched_param->sched_priority);
|
ret = rt_thread_control(thread, RT_THREAD_CTRL_SET_PRIORITY, (void *)&sched_param->sched_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
lwp_tid_dec_ref(thread);
|
lwp_tid_dec_ref(thread);
|
||||||
|
@ -8959,7 +8959,7 @@ sysret_t sys_sched_setscheduler(int tid, int policy, void *param)
|
||||||
}
|
}
|
||||||
|
|
||||||
thread = lwp_tid_get_thread_and_inc_ref(tid);
|
thread = lwp_tid_get_thread_and_inc_ref(tid);
|
||||||
ret = rt_thread_control(thread, RT_THREAD_CTRL_CHANGE_PRIORITY, (void *)&sched_param->sched_priority);
|
ret = rt_thread_control(thread, RT_THREAD_CTRL_SET_PRIORITY, (void *)&sched_param->sched_priority);
|
||||||
lwp_tid_dec_ref(thread);
|
lwp_tid_dec_ref(thread);
|
||||||
|
|
||||||
kmem_put(sched_param);
|
kmem_put(sched_param);
|
||||||
|
|
|
@ -643,6 +643,7 @@ enum
|
||||||
#define RT_THREAD_CTRL_CHANGE_PRIORITY 0x02 /**< Change thread priority. */
|
#define RT_THREAD_CTRL_CHANGE_PRIORITY 0x02 /**< Change thread priority. */
|
||||||
#define RT_THREAD_CTRL_INFO 0x03 /**< Get thread information. */
|
#define RT_THREAD_CTRL_INFO 0x03 /**< Get thread information. */
|
||||||
#define RT_THREAD_CTRL_BIND_CPU 0x04 /**< Set thread bind cpu. */
|
#define RT_THREAD_CTRL_BIND_CPU 0x04 /**< Set thread bind cpu. */
|
||||||
|
#define RT_THREAD_CTRL_SET_PRIORITY 0x05 /**< Set thread priority. */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CPU usage statistics data
|
* CPU usage statistics data
|
||||||
|
|
12
src/thread.c
12
src/thread.c
|
@ -779,6 +779,8 @@ RTM_EXPORT(rt_thread_mdelay);
|
||||||
*
|
*
|
||||||
* RT_THREAD_CTRL_BIND_CPU for bind the thread to a CPU.
|
* RT_THREAD_CTRL_BIND_CPU for bind the thread to a CPU.
|
||||||
*
|
*
|
||||||
|
* RT_THREAD_CTRL_SET_PRIORITY for set priority level of thread.
|
||||||
|
*
|
||||||
* @param arg is the argument of control command.
|
* @param arg is the argument of control command.
|
||||||
*
|
*
|
||||||
* @return Return the operation status. If the return value is RT_EOK, the function is successfully executed.
|
* @return Return the operation status. If the return value is RT_EOK, the function is successfully executed.
|
||||||
|
@ -793,6 +795,16 @@ rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg)
|
||||||
switch (cmd)
|
switch (cmd)
|
||||||
{
|
{
|
||||||
case RT_THREAD_CTRL_CHANGE_PRIORITY:
|
case RT_THREAD_CTRL_CHANGE_PRIORITY:
|
||||||
|
{
|
||||||
|
rt_err_t error;
|
||||||
|
rt_sched_lock_level_t slvl;
|
||||||
|
rt_sched_lock(&slvl);
|
||||||
|
error = rt_sched_thread_change_priority(thread, *(rt_uint8_t *)arg);
|
||||||
|
rt_sched_unlock(slvl);
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
|
case RT_THREAD_CTRL_SET_PRIORITY:
|
||||||
{
|
{
|
||||||
rt_err_t error;
|
rt_err_t error;
|
||||||
rt_sched_lock_level_t slvl;
|
rt_sched_lock_level_t slvl;
|
||||||
|
|
Loading…
Reference in New Issue