Add (allocated) job to queue */
| 491 | |
| 492 | /* Add (allocated) job to queue */ |
| 493 | static void jobqueue_push(jobqueue *jobqueue_p, struct job *newjob) { |
| 494 | newjob->prev = NULL; |
| 495 | |
| 496 | pthread_mutex_lock(&jobqueue_p->rwmutex); |
| 497 | |
| 498 | switch(jobqueue_p->len) { |
| 499 | case 0: /* no jobs in queue */ |
| 500 | jobqueue_p->front = newjob; |
| 501 | jobqueue_p->rear = newjob; |
| 502 | break; |
| 503 | default: /* jobs in queue */ |
| 504 | jobqueue_p->rear->prev = newjob; |
| 505 | jobqueue_p->rear = newjob; |
| 506 | } |
| 507 | |
| 508 | jobqueue_p->len++; |
| 509 | bsem_post(jobqueue_p->has_jobs); |
| 510 | |
| 511 | pthread_mutex_unlock(&jobqueue_p->rwmutex); |
| 512 | } |
| 513 | |
| 514 | /* Get first job from queue(removes it from queue) |
| 515 | * |
no test coverage detected