Lines Matching +full:lock +full:- +full:state

1 /*-
60 const char *wmesg, long timeout, int state) in linux_add_to_sleepqueue() argument
64 MPASS((state & ~(TASK_PARKED | TASK_NORMAL)) == 0); in linux_add_to_sleepqueue()
66 flags = SLEEPQ_SLEEP | ((state & TASK_INTERRUPTIBLE) != 0 ? in linux_add_to_sleepqueue()
75 if ((state & TASK_INTERRUPTIBLE) != 0) { in linux_add_to_sleepqueue()
77 ret = -sleepq_wait_sig(wchan, 0); in linux_add_to_sleepqueue()
79 ret = -sleepq_timedwait_sig(wchan, 0); in linux_add_to_sleepqueue()
85 ret = -sleepq_timedwait(wchan, 0); in linux_add_to_sleepqueue()
90 if (ret != 0 && ret != -EWOULDBLOCK) { in linux_add_to_sleepqueue()
92 ret = -ERESTARTSYS; in linux_add_to_sleepqueue()
105 ret = -pause_sbt("lnxsleep", mstosbt(ms), 0, C_HARDCLOCK | C_CATCH); in linux_msleep_interruptible()
108 case -EWOULDBLOCK: in linux_msleep_interruptible()
117 wake_up_task(struct task_struct *task, unsigned int state) in wake_up_task() argument
123 if ((atomic_read(&task->state) & state) != 0) { in wake_up_task()
138 td = task->task_thread; in linux_signal_pending()
139 PROC_LOCK(td->td_proc); in linux_signal_pending()
140 pending = td->td_siglist; in linux_signal_pending()
141 SIGSETOR(pending, td->td_proc->p_siglist); in linux_signal_pending()
142 SIGSETNAND(pending, td->td_sigmask); in linux_signal_pending()
143 PROC_UNLOCK(td->td_proc); in linux_signal_pending()
153 td = task->task_thread; in linux_fatal_signal_pending()
154 PROC_LOCK(td->td_proc); in linux_fatal_signal_pending()
155 ret = SIGISMEMBER(td->td_siglist, SIGKILL) || in linux_fatal_signal_pending()
156 SIGISMEMBER(td->td_proc->p_siglist, SIGKILL); in linux_fatal_signal_pending()
157 PROC_UNLOCK(td->td_proc); in linux_fatal_signal_pending()
162 linux_signal_pending_state(long state, struct task_struct *task) in linux_signal_pending_state() argument
165 MPASS((state & ~TASK_NORMAL) == 0); in linux_signal_pending_state()
167 if ((state & TASK_INTERRUPTIBLE) == 0) in linux_signal_pending_state()
177 td = task->task_thread; in linux_send_sig()
178 PROC_LOCK(td->td_proc); in linux_send_sig()
180 PROC_UNLOCK(td->td_proc); in linux_send_sig()
184 autoremove_wake_function(wait_queue_t *wq, unsigned int state, int flags, in autoremove_wake_function() argument
190 task = wq->private; in autoremove_wake_function()
191 if ((ret = wake_up_task(task, state)) != 0) in autoremove_wake_function()
192 list_del_init(&wq->task_list); in autoremove_wake_function()
197 default_wake_function(wait_queue_t *wq, unsigned int state, int flags, in default_wake_function() argument
200 return (wake_up_task(wq->private, state)); in default_wake_function()
204 linux_wait_woken(wait_queue_t *wq, unsigned state, long timeout) in linux_wait_woken() argument
212 wchan = wq->private; in linux_wait_woken()
216 set_task_state(task, state); in linux_wait_woken()
219 if (!(wq->flags & WQ_FLAG_WOKEN)) { in linux_wait_woken()
221 timeout, state); in linux_wait_woken()
228 wq->flags &= ~WQ_FLAG_WOKEN; in linux_wait_woken()
234 remainder -= jiffies; in linux_wait_woken()
237 if (ret == -ERESTARTSYS && remainder < 1) in linux_wait_woken()
247 woken_wake_function(wait_queue_t *wq, unsigned int state, in woken_wake_function() argument
252 wchan = wq->private; in woken_wake_function()
255 wq->flags |= WQ_FLAG_WOKEN; in woken_wake_function()
267 wq->flags = flags; in linux_init_wait_entry()
268 wq->private = current; in linux_init_wait_entry()
269 wq->func = autoremove_wake_function; in linux_init_wait_entry()
270 INIT_LIST_HEAD(&wq->task_list); in linux_init_wait_entry()
274 linux_wake_up(wait_queue_head_t *wqh, unsigned int state, int nr, bool locked) in linux_wake_up() argument
279 spin_lock(&wqh->lock); in linux_wake_up()
280 list_for_each_entry_safe(pos, next, &wqh->task_list, task_list) { in linux_wake_up()
281 if (pos->func == NULL) { in linux_wake_up()
282 if (wake_up_task(pos->private, state) != 0 && --nr == 0) in linux_wake_up()
285 if (pos->func(pos, state, 0, NULL) != 0 && --nr == 0) in linux_wake_up()
290 spin_unlock(&wqh->lock); in linux_wake_up()
294 linux_prepare_to_wait(wait_queue_head_t *wqh, wait_queue_t *wq, int state) in linux_prepare_to_wait() argument
297 spin_lock(&wqh->lock); in linux_prepare_to_wait()
298 if (list_empty(&wq->task_list)) in linux_prepare_to_wait()
300 set_task_state(current, state); in linux_prepare_to_wait()
301 spin_unlock(&wqh->lock); in linux_prepare_to_wait()
308 spin_lock(&wqh->lock); in linux_finish_wait()
310 if (!list_empty(&wq->task_list)) { in linux_finish_wait()
312 INIT_LIST_HEAD(&wq->task_list); in linux_finish_wait()
314 spin_unlock(&wqh->lock); in linux_finish_wait()
322 spin_lock(&wqh->lock); in linux_waitqueue_active()
323 ret = !list_empty(&wqh->task_list); in linux_waitqueue_active()
324 spin_unlock(&wqh->lock); in linux_waitqueue_active()
330 unsigned int state, spinlock_t *lock) in linux_wait_event_common() argument
335 if (lock != NULL) in linux_wait_event_common()
336 spin_unlock_irq(lock); in linux_wait_event_common()
341 if (atomic_read(&task->state) != TASK_WAKING) { in linux_wait_event_common()
343 state); in linux_wait_event_common()
349 if (lock != NULL) in linux_wait_event_common()
350 spin_lock_irq(lock); in linux_wait_event_common()
359 int ret, state; in linux_schedule_timeout() local
366 state = atomic_read(&task->state); in linux_schedule_timeout()
367 if (state != TASK_WAKING) { in linux_schedule_timeout()
369 state); in linux_schedule_timeout()
380 remainder -= jiffies; in linux_schedule_timeout()
383 if (ret == -ERESTARTSYS && remainder < 1) in linux_schedule_timeout()
410 linux_wait_on_bit_timeout(unsigned long *word, int bit, unsigned int state, in linux_wait_on_bit_timeout() argument
426 set_task_state(task, state); in linux_wait_on_bit_timeout()
428 state); in linux_wait_on_bit_timeout()
445 linux_wait_on_atomic_t(atomic_t *a, unsigned int state) in linux_wait_on_atomic_t() argument
460 set_task_state(task, state); in linux_wait_on_atomic_t()
461 ret = linux_add_to_sleepqueue(wchan, task, "watomic", 0, state); in linux_wait_on_atomic_t()
471 linux_wake_up_state(struct task_struct *task, unsigned int state) in linux_wake_up_state() argument
474 return (wake_up_task(task, state) != 0); in linux_wake_up_state()