MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / rt_thread_control

Function rt_thread_control

src/thread.c:817–881  ·  view source on GitHub ↗

* @brief This function will control thread behaviors according to control command. * * @param thread Handle of the thread to be controlled. * * @param cmd Control command, which includes. * - `RT_THREAD_CTRL_CHANGE_PRIORITY` for changing priority level of thread. * - `RT_THREAD_CTRL_STARTUP` for starting a thread, equivalent to * the `rt_thread

Source from the content-addressed store, hash-verified

815 * If the return value is any other values, it means this operation failed.
816 */
817rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg)
818{
819 /* parameter check */
820 RT_ASSERT(thread != RT_NULL);
821 RT_ASSERT(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread);
822
823 switch (cmd)
824 {
825 case RT_THREAD_CTRL_CHANGE_PRIORITY:
826 {
827 rt_err_t error;
828 rt_sched_lock_level_t slvl;
829 rt_sched_lock(&slvl);
830 error = rt_sched_thread_change_priority(thread, *(rt_uint8_t *)arg);
831 rt_sched_unlock(slvl);
832 return error;
833 }
834
835 case RT_THREAD_CTRL_RESET_PRIORITY:
836 {
837 rt_err_t error;
838 rt_sched_lock_level_t slvl;
839 rt_sched_lock(&slvl);
840 error = rt_sched_thread_reset_priority(thread, *(rt_uint8_t *)arg);
841 rt_sched_unlock(slvl);
842 return error;
843 }
844
845 case RT_THREAD_CTRL_STARTUP:
846 {
847 return rt_thread_startup(thread);
848 }
849
850 case RT_THREAD_CTRL_CLOSE:
851 {
852 rt_err_t rt_err = -RT_EINVAL;
853
854 if (rt_object_is_systemobject((rt_object_t)thread) == RT_TRUE)
855 {
856 rt_err = rt_thread_detach(thread);
857 }
858 #ifdef RT_USING_HEAP
859 else
860 {
861 rt_err = rt_thread_delete(thread);
862 }
863 #endif /* RT_USING_HEAP */
864 rt_schedule();
865 return rt_err;
866 }
867
868 case RT_THREAD_CTRL_BIND_CPU:
869 {
870 rt_uint8_t cpu;
871
872 cpu = (rt_uint8_t)(rt_size_t)arg;
873 return rt_sched_thread_bind_cpu(thread, cpu);
874 }

Callers 15

cmd_bindFunction · 0.85
_lwp_setaffinityFunction · 0.85
lwp_execveFunction · 0.85
sys_setpriorityFunction · 0.85
sys_thread_createFunction · 0.85
_sys_cloneFunction · 0.85
sys_sched_setparamFunction · 0.85
sys_sched_setschedulerFunction · 0.85
usb_osal_thread_deleteFunction · 0.85
_utestd_entryFunction · 0.85
utest_tc_initFunction · 0.85

Calls 11

rt_object_get_typeFunction · 0.85
rt_thread_startupFunction · 0.85
rt_thread_detachFunction · 0.85
rt_thread_deleteFunction · 0.85
rt_sched_lockFunction · 0.70
rt_sched_unlockFunction · 0.70
rt_scheduleFunction · 0.70
rt_sched_thread_bind_cpuFunction · 0.70

Tested by 4

test_cpusmpFunction · 0.68
demo_core_testFunction · 0.68
test_thread_controlFunction · 0.68
test_timesliceFunction · 0.68