Skip to content

Commit da1c5c7

Browse files
wycwyhwyqRbb666
authored andcommitted
add RT_THREAD_CTRL_SET_PRIORITY
1 parent f13193f commit da1c5c7

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

components/lwp/lwp_syscall.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -1634,7 +1634,7 @@ sysret_t sys_setpriority(int which, id_t who, int prio)
16341634
for (list = lwp->t_grp.next; list != &lwp->t_grp; list = list->next)
16351635
{
16361636
thread = rt_list_entry(list, struct rt_thread, sibling);
1637-
rt_thread_control(thread, RT_THREAD_CTRL_CHANGE_PRIORITY, &prio);
1637+
rt_thread_control(thread, RT_THREAD_CTRL_SET_PRIORITY, &prio);
16381638
}
16391639
lwp_pid_lock_release();
16401640
return 0;
@@ -8789,7 +8789,7 @@ sysret_t sys_sched_setparam(pid_t tid, void *param)
87898789

87908790
if (thread)
87918791
{
8792-
ret = rt_thread_control(thread, RT_THREAD_CTRL_CHANGE_PRIORITY, (void *)&sched_param->sched_priority);
8792+
ret = rt_thread_control(thread, RT_THREAD_CTRL_SET_PRIORITY, (void *)&sched_param->sched_priority);
87938793
}
87948794

87958795
lwp_tid_dec_ref(thread);
@@ -8959,7 +8959,7 @@ sysret_t sys_sched_setscheduler(int tid, int policy, void *param)
89598959
}
89608960

89618961
thread = lwp_tid_get_thread_and_inc_ref(tid);
8962-
ret = rt_thread_control(thread, RT_THREAD_CTRL_CHANGE_PRIORITY, (void *)&sched_param->sched_priority);
8962+
ret = rt_thread_control(thread, RT_THREAD_CTRL_SET_PRIORITY, (void *)&sched_param->sched_priority);
89638963
lwp_tid_dec_ref(thread);
89648964

89658965
kmem_put(sched_param);

include/rtdef.h

+1
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,7 @@ enum
643643
#define RT_THREAD_CTRL_CHANGE_PRIORITY 0x02 /**< Change thread priority. */
644644
#define RT_THREAD_CTRL_INFO 0x03 /**< Get thread information. */
645645
#define RT_THREAD_CTRL_BIND_CPU 0x04 /**< Set thread bind cpu. */
646+
#define RT_THREAD_CTRL_SET_PRIORITY 0x05 /**< Set thread priority. */
646647

647648
/**
648649
* CPU usage statistics data

src/thread.c

+12
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,8 @@ RTM_EXPORT(rt_thread_mdelay);
779779
*
780780
* RT_THREAD_CTRL_BIND_CPU for bind the thread to a CPU.
781781
*
782+
* RT_THREAD_CTRL_SET_PRIORITY for set priority level of thread.
783+
*
782784
* @param arg is the argument of control command.
783785
*
784786
* @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)
793795
switch (cmd)
794796
{
795797
case RT_THREAD_CTRL_CHANGE_PRIORITY:
798+
{
799+
rt_err_t error;
800+
rt_sched_lock_level_t slvl;
801+
rt_sched_lock(&slvl);
802+
error = rt_sched_thread_change_priority(thread, *(rt_uint8_t *)arg);
803+
rt_sched_unlock(slvl);
804+
return error;
805+
}
806+
807+
case RT_THREAD_CTRL_SET_PRIORITY:
796808
{
797809
rt_err_t error;
798810
rt_sched_lock_level_t slvl;

0 commit comments

Comments
 (0)