| 180 | } |
| 181 | |
| 182 | void * |
| 183 | dequeue(LLQ *Q) |
| 184 | { |
| 185 | LLQrec *rec; |
| 186 | void *d; |
| 187 | ink_sem_wait(&(Q->sema)); |
| 188 | ink_mutex_acquire(&(Q->mux)); |
| 189 | |
| 190 | if (Q->head == nullptr) { |
| 191 | ink_mutex_release(&(Q->mux)); |
| 192 | |
| 193 | return nullptr; |
| 194 | } |
| 195 | |
| 196 | rec = Q->head; |
| 197 | |
| 198 | Q->head = Q->head->next; |
| 199 | if (Q->head == nullptr) { |
| 200 | Q->tail = nullptr; |
| 201 | } |
| 202 | |
| 203 | d = rec->data; |
| 204 | // freerec(Q, rec); |
| 205 | ats_free(rec); |
| 206 | |
| 207 | Q->len--; |
| 208 | ink_mutex_release(&(Q->mux)); |
| 209 | |
| 210 | return d; |
| 211 | } |
| 212 | |
| 213 | #ifdef LLQUEUE_MAIN |
| 214 |
no test coverage detected