| @@ -4565,6 +4565,15 @@ __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr_exclusive) · 4564 unmodified lines |
| 4565 | 4565 | } |
| 4566 | 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 | 4577 | void complete(struct completion *x) |
| 4569 | 4578 | { |
| 4570 | 4579 | unsigned long flags; |
| @@ -4576,6 +4585,12 @@ void complete(struct completion *x) · 5 unmodified lines |
| 4576 | 4585 | } |
| 4577 | 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 | 4594 | void complete_all(struct completion *x) |
| 4580 | 4595 | { |
| 4581 | 4596 | unsigned long flags; |
| @@ -4624,12 +4639,31 @@ wait_for_common(struct completion *x, long timeout, int state) · 42 unmodified lines |
| 4624 | 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 | 4652 | void __sched wait_for_completion(struct completion *x) |
| 4628 | 4653 | { |
| 4629 | 4654 | wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_UNINTERRUPTIBLE); |
| 4630 | 4655 | } |
| 4631 | 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 | 4667 | unsigned long __sched |
| 4634 | 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 | 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 | 4681 | int __sched wait_for_completion_interruptible(struct completion *x) |
| 4641 | 4682 | { |
| 4642 | 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 | 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 | 4698 | unsigned long __sched |
| 4650 | 4699 | wait_for_completion_interruptible_timeout(struct completion *x, |
| 4651 | 4700 | unsigned long timeout) |
| @@ -4654,6 +4703,13 @@ wait_for_completion_interruptible_timeout(struct completion *x, · 2 unmodified lines |
| 4654 | 4703 | } |
| 4655 | 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 | 4713 | int __sched wait_for_completion_killable(struct completion *x) |
| 4658 | 4714 | { |
| 4659 | 4715 | long t = wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_KILLABLE); |