Lines Matching refs:obj
18 bool is_idle_thread(const struct thread_object *obj) in is_idle_thread() argument
20 uint16_t pcpu_id = obj->pcpu_id; in is_idle_thread()
21 return (obj == &per_cpu(idle, pcpu_id)); in is_idle_thread()
24 static inline bool is_blocked(const struct thread_object *obj) in is_blocked() argument
26 return obj->status == THREAD_STS_BLOCKED; in is_blocked()
29 static inline bool is_running(const struct thread_object *obj) in is_running() argument
31 return obj->status == THREAD_STS_RUNNING; in is_running()
34 static inline void set_thread_status(struct thread_object *obj, enum thread_object_state status) in set_thread_status() argument
36 obj->status = status; in set_thread_status()
60 uint16_t sched_get_pcpuid(const struct thread_object *obj) in sched_get_pcpuid() argument
62 return obj->pcpu_id; in sched_get_pcpuid()
120 void init_thread_data(struct thread_object *obj, struct sched_params *params) in init_thread_data() argument
122 struct acrn_scheduler *scheduler = get_scheduler(obj->pcpu_id); in init_thread_data()
125 obtain_schedule_lock(obj->pcpu_id, &rflag); in init_thread_data()
127 scheduler->init_data(obj, params); in init_thread_data()
130 set_thread_status(obj, THREAD_STS_BLOCKED); in init_thread_data()
131 release_schedule_lock(obj->pcpu_id, rflag); in init_thread_data()
134 void deinit_thread_data(struct thread_object *obj) in deinit_thread_data() argument
136 struct acrn_scheduler *scheduler = get_scheduler(obj->pcpu_id); in deinit_thread_data()
139 scheduler->deinit_data(obj); in deinit_thread_data()
211 void sleep_thread(struct thread_object *obj) in sleep_thread() argument
213 uint16_t pcpu_id = obj->pcpu_id; in sleep_thread()
219 scheduler->sleep(obj); in sleep_thread()
221 if (is_running(obj)) { in sleep_thread()
223 obj->be_blocking = true; in sleep_thread()
225 set_thread_status(obj, THREAD_STS_BLOCKED); in sleep_thread()
230 void sleep_thread_sync(struct thread_object *obj) in sleep_thread_sync() argument
232 sleep_thread(obj); in sleep_thread_sync()
233 while (!is_blocked(obj)) { in sleep_thread_sync()
238 void wake_thread(struct thread_object *obj) in wake_thread() argument
240 uint16_t pcpu_id = obj->pcpu_id; in wake_thread()
245 if (is_blocked(obj) || obj->be_blocking) { in wake_thread()
248 scheduler->wake(obj); in wake_thread()
250 if (is_blocked(obj)) { in wake_thread()
251 set_thread_status(obj, THREAD_STS_RUNNABLE); in wake_thread()
254 obj->be_blocking = false; in wake_thread()
264 void run_thread(struct thread_object *obj) in run_thread() argument
268 obtain_schedule_lock(obj->pcpu_id, &rflag); in run_thread()
269 get_cpu_var(sched_ctl).curr_obj = obj; in run_thread()
270 set_thread_status(obj, THREAD_STS_RUNNING); in run_thread()
271 release_schedule_lock(obj->pcpu_id, rflag); in run_thread()
273 if (obj->thread_entry != NULL) { in run_thread()
274 obj->thread_entry(obj); in run_thread()