| @@ -4565,6 +4565,15 @@ __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr_exclusive) · 4564 unmodified lines |
| 4565 | } | 4565 | } |
| 4566 | EXPORT_SYMBOL_GPL(__wake_up_sync); /* For internal use only */ | 4566 | EXPORT_SYMBOL_GPL(__wake_up_sync); /* For internal use only */ |
| 4567 | | 4567 | |
| | 4568 | /** |
| | 4569 | * complete: - signals a single thread waiting on this completion |
| | 4570 | * @x: holds the state of this particular completion |
| | 4571 | * |
| | 4572 | * This will wake up a single thread waiting on this completion. Threads will be |
| | 4573 | * awakened in the same order in which they were queued. |
| | 4574 | * |
| | 4575 | * See also complete_all(), wait_for_completion() and related routines. |
| | 4576 | */ |
| 4568 | void complete(struct completion *x) | 4577 | void complete(struct completion *x) |
| 4569 | { | 4578 | { |
| 4570 | unsigned long flags; | 4579 | unsigned long flags; |
| @@ -4576,6 +4585,12 @@ void complete(struct completion *x) · 5 unmodified lines |
| 4576 | } | 4585 | } |
| 4577 | EXPORT_SYMBOL(complete); | 4586 | EXPORT_SYMBOL(complete); |
| 4578 | | 4587 | |
| | 4588 | /** |
| | 4589 | * complete_all: - signals all threads waiting on this completion |
| | 4590 | * @x: holds the state of this particular completion |
| | 4591 | * |
| | 4592 | * This will wake up all threads waiting on this particular completion event. |
| | 4593 | */ |
| 4579 | void complete_all(struct completion *x) | 4594 | void complete_all(struct completion *x) |
| 4580 | { | 4595 | { |
| 4581 | unsigned long flags; | 4596 | unsigned long flags; |
| @@ -4624,12 +4639,31 @@ wait_for_common(struct completion *x, long timeout, int state) · 42 unmodified lines |
| 4624 | return timeout; | 4639 | return timeout; |
| 4625 | } | 4640 | } |
| 4626 | | 4641 | |
| | 4642 | /** |
| | 4643 | * wait_for_completion: - waits for completion of a task |
| | 4644 | * @x: holds the state of this particular completion |
| | 4645 | * |
| | 4646 | * This waits to be signaled for completion of a specific task. It is NOT |
| | 4647 | * interruptible and there is no timeout. |
| | 4648 | * |
| | 4649 | * See also similar routines (i.e. wait_for_completion_timeout()) with timeout |
| | 4650 | * and interrupt capability. Also see complete(). |
| | 4651 | */ |
| 4627 | void __sched wait_for_completion(struct completion *x) | 4652 | void __sched wait_for_completion(struct completion *x) |
| 4628 | { | 4653 | { |
| 4629 | wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_UNINTERRUPTIBLE); | 4654 | wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_UNINTERRUPTIBLE); |
| 4630 | } | 4655 | } |
| 4631 | EXPORT_SYMBOL(wait_for_completion); | 4656 | EXPORT_SYMBOL(wait_for_completion); |
| 4632 | | 4657 | |
| | 4658 | /** |
| | 4659 | * wait_for_completion_timeout: - waits for completion of a task (w/timeout) |
| | 4660 | * @x: holds the state of this particular completion |
| | 4661 | * @timeout: timeout value in jiffies |
| | 4662 | * |
| | 4663 | * This waits for either a completion of a specific task to be signaled or for a |
| | 4664 | * specified timeout to expire. The timeout is in jiffies. It is not |
| | 4665 | * interruptible. |
| | 4666 | */ |
| 4633 | unsigned long __sched | 4667 | unsigned long __sched |
| 4634 | wait_for_completion_timeout(struct completion *x, unsigned long timeout) | 4668 | wait_for_completion_timeout(struct completion *x, unsigned long timeout) |
| 4635 | { | 4669 | { |
| @@ -4637,6 +4671,13 @@ wait_for_completion_timeout(struct completion *x, unsigned long timeout) · 1 unmodified line |
| 4637 | } | 4671 | } |
| 4638 | EXPORT_SYMBOL(wait_for_completion_timeout); | 4672 | EXPORT_SYMBOL(wait_for_completion_timeout); |
| 4639 | | 4673 | |
| | 4674 | /** |
| | 4675 | * wait_for_completion_interruptible: - waits for completion of a task (w/intr) |
| | 4676 | * @x: holds the state of this particular completion |
| | 4677 | * |
| | 4678 | * This waits for completion of a specific task to be signaled. It is |
| | 4679 | * interruptible. |
| | 4680 | */ |
| 4640 | int __sched wait_for_completion_interruptible(struct completion *x) | 4681 | int __sched wait_for_completion_interruptible(struct completion *x) |
| 4641 | { | 4682 | { |
| 4642 | long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_INTERRUPTIBLE); | 4683 | long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_INTERRUPTIBLE); |
| @@ -4646,6 +4687,14 @@ int __sched wait_for_completion_interruptible(struct completion *x) · 3 unmodified lines |
| 4646 | } | 4687 | } |
| 4647 | EXPORT_SYMBOL(wait_for_completion_interruptible); | 4688 | EXPORT_SYMBOL(wait_for_completion_interruptible); |
| 4648 | | 4689 | |
| | 4690 | /** |
| | 4691 | * wait_for_completion_interruptible_timeout: - waits for completion (w/(to,intr)) |
| | 4692 | * @x: holds the state of this particular completion |
| | 4693 | * @timeout: timeout value in jiffies |
| | 4694 | * |
| | 4695 | * This waits for either a completion of a specific task to be signaled or for a |
| | 4696 | * specified timeout to expire. It is interruptible. The timeout is in jiffies. |
| | 4697 | */ |
| 4649 | unsigned long __sched | 4698 | unsigned long __sched |
| 4650 | wait_for_completion_interruptible_timeout(struct completion *x, | 4699 | wait_for_completion_interruptible_timeout(struct completion *x, |
| 4651 | unsigned long timeout) | 4700 | unsigned long timeout) |
| @@ -4654,6 +4703,13 @@ wait_for_completion_interruptible_timeout(struct completion *x, · 2 unmodified lines |
| 4654 | } | 4703 | } |
| 4655 | EXPORT_SYMBOL(wait_for_completion_interruptible_timeout); | 4704 | EXPORT_SYMBOL(wait_for_completion_interruptible_timeout); |
| 4656 | | 4705 | |
| | 4706 | /** |
| | 4707 | * wait_for_completion_killable: - waits for completion of a task (killable) |
| | 4708 | * @x: holds the state of this particular completion |
| | 4709 | * |
| | 4710 | * This waits to be signaled for completion of a specific task. It can be |
| | 4711 | * interrupted by a kill signal. |
| | 4712 | */ |
| 4657 | int __sched wait_for_completion_killable(struct completion *x) | 4713 | int __sched wait_for_completion_killable(struct completion *x) |
| 4658 | { | 4714 | { |
| 4659 | long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE); | 4715 | long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE); |