Changeset 679 for GPL/trunk/lib32/waitqueue.c
- Timestamp:
- Mar 18, 2021, 8:57:36 PM (4 years ago)
- Location:
- GPL/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk
- Property svn:mergeinfo changed
/GPL/branches/uniaud32-linux-3.2.102 (added) merged: 611-614 /GPL/branches/uniaud32-next (added) merged: 615-678
- Property svn:mergeinfo changed
-
GPL/trunk/lib32/waitqueue.c
r32 r679 38 38 //****************************************************************************** 39 39 //****************************************************************************** 40 void add_wait_queue( wait_queue_head_t *q, wait_queue_t* wait)40 void add_wait_queue(struct wait_queue_head *q, struct wait_queue_entry * wait) 41 41 { 42 42 // dprintf3(("WARNING: add_wait_queue STUB")); … … 44 44 //****************************************************************************** 45 45 //****************************************************************************** 46 void add_wait_queue_exclusive( wait_queue_head_t *q)46 void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry) 47 47 { 48 48 // dprintf3(("WARNING: add_wait_queue_exclusive STUB")); … … 50 50 //****************************************************************************** 51 51 //****************************************************************************** 52 void remove_wait_queue( wait_queue_head_t *q, wait_queue_t* wait)52 void remove_wait_queue(struct wait_queue_head *q, struct wait_queue_entry * wait) 53 53 { 54 54 // dprintf(("WARNING: remove_wait_queue STUB")); … … 75 75 //****************************************************************************** 76 76 //****************************************************************************** 77 void init_waitqueue_entry( wait_queue_t *q, struct task_struct *p)77 void init_waitqueue_entry(struct wait_queue_entry *wq_entry, struct task_struct *p) 78 78 { 79 79 // dprintf(("WARNING: init_waitqueue_entry STUB")); … … 88 88 //****************************************************************************** 89 89 //****************************************************************************** 90 /** 91 * complete: - signals a single thread waiting on this completion 92 * @x: holds the state of this particular completion 93 * 94 * This will wake up a single thread waiting on this completion. Threads will be 95 * awakened in the same order in which they were queued. 96 * 97 * See also complete_all(), wait_for_completion() and related routines. 98 * 99 * It may be assumed that this function implies a write memory barrier before 100 * changing the task state if and only if any tasks are woken up. 101 */ 102 void complete(struct completion *x) 103 { 104 unsigned long flags; 105 106 spin_lock_irqsave(&x->wait.lock, flags); 107 x->done++; 108 __wake_up_locked(&x->wait, TASK_NORMAL, 1); 109 spin_unlock_irqrestore(&x->wait.lock, flags); 110 } 111 /** 112 * complete_all: - signals all threads waiting on this completion 113 * @x: holds the state of this particular completion 114 * 115 * This will wake up all threads waiting on this particular completion event. 116 * 117 * If this function wakes up a task, it executes a full memory barrier before 118 * accessing the task state. 119 * 120 * Since complete_all() sets the completion of @x permanently to done 121 * to allow multiple waiters to finish, a call to reinit_completion() 122 * must be used on @x if @x is to be used again. The code must make 123 * sure that all waiters have woken and finished before reinitializing 124 * @x. Also note that the function completion_done() can not be used 125 * to know if there are still waiters after complete_all() has been called. 126 */ 127 void complete_all(struct completion *x) 128 { 129 unsigned long flags; 130 131 spin_lock_irqsave(&x->wait.lock, flags); 132 __wake_up_locked(&x->wait, TASK_NORMAL, 1); 133 spin_unlock_irqrestore(&x->wait.lock, flags); 134 } 135 //****************************************************************************** 136 //****************************************************************************** 137 void __wake_up_locked(wait_queue_head_t *q, unsigned int mode, int nr) 138 { 139 dprintf3(("WARNING: __wake_up_locked STUB")); 140 } 141 //****************************************************************************** 142 //****************************************************************************** 143 /** 144 * wait_for_completion: - waits for completion of a task 145 * @x: holds the state of this particular completion 146 * 147 * This waits to be signaled for completion of a specific task. It is NOT 148 * interruptible and there is no timeout. 149 * 150 * See also similar routines (i.e. wait_for_completion_timeout()) with timeout 151 * and interrupt capability. Also see complete(). 152 */ 153 void wait_for_completion(struct completion *x) 154 { 155 dprintf3(("WARNING: wait_for_completion STUB")); 156 } 157 158 159 /** 160 * wait_for_completion_timeout: - waits for completion of a task (w/timeout) 161 * @x: holds the state of this particular completion 162 * @timeout: timeout value in jiffies 163 * 164 * This waits for either a completion of a specific task to be signaled or for a 165 * specified timeout to expire. The timeout is in jiffies. It is not 166 * interruptible. 167 * 168 * Return: 0 if timed out, and positive (at least 1, or number of jiffies left 169 * till timeout) if completed. 170 */ 171 unsigned long wait_for_completion_timeout(struct completion *x, unsigned long timeout) 172 { 173 dprintf3(("WARNING: wait_for_completion_timeout STUB")); 174 return 1; 175 }
Note:
See TracChangeset
for help on using the changeset viewer.