END_TEST START_TEST(next_job_from_back_test) { struct all_jobs alljobs; struct job *result; initialize_all_jobs_array(&alljobs); result = next_job_from_back(NULL,NULL); fail_unless(result == NULL, "null input parameters fail"); result = next_job_from_back(&alljobs,NULL); fail_unless(result == NULL, "NULL input iterator fail"); }
job *next_job_from_back( struct all_jobs *aj, int *iter) { job *pjob; pthread_mutex_lock(aj->alljobs_mutex); pjob = (job *)next_thing_from_back(aj->ra,iter); if (pjob != NULL) lock_ji_mutex(pjob, __func__, NULL, LOGLEVEL); pthread_mutex_unlock(aj->alljobs_mutex); if (pjob != NULL) { if (pjob->ji_being_recycled == TRUE) { unlock_ji_mutex(pjob, __func__, "1", LOGLEVEL); pjob = next_job_from_back(aj,iter); } } return(pjob); } /* END next_job_from_back() */
job *next_job_from_back( struct all_jobs *aj, int *iter) { job *pjob; if (aj == NULL) { log_err(PBSE_BAD_PARAMETER, __func__, "null input pointer to all_jobs struct"); return(NULL); } if (iter == NULL) { log_err(PBSE_BAD_PARAMETER, __func__, "null input iterator"); return(NULL); } pthread_mutex_lock(aj->alljobs_mutex); pjob = (job *)next_thing_from_back(aj->ra,iter); if (pjob != NULL) lock_ji_mutex(pjob, __func__, NULL, LOGLEVEL); pthread_mutex_unlock(aj->alljobs_mutex); if (pjob != NULL) { if (pjob->ji_being_recycled == TRUE) { unlock_ji_mutex(pjob, __func__, "1", LOGLEVEL); pjob = next_job_from_back(aj,iter); } } return(pjob); } /* END next_job_from_back() */