Lines Matching defs:pq
234 struct ldap_int_thread_poolq_s *pq;
296 pq = pool->ltp_wqs[i];
297 pq->ltp_pool = pool;
298 rc = ldap_pvt_thread_mutex_init(&pq->ltp_mutex);
301 rc = ldap_pvt_thread_cond_init(&pq->ltp_cond);
304 LDAP_STAILQ_INIT(&pq->ltp_pending_list);
305 pq->ltp_work_list = &pq->ltp_pending_list;
306 LDAP_SLIST_INIT(&pq->ltp_free_list);
308 pq->ltp_max_count = max_threads / numqs;
310 pq->ltp_max_count++;
313 pq->ltp_max_pending = max_pending / numqs;
315 pq->ltp_max_pending++;
366 struct ldap_int_thread_poolq_s *pq;
411 pq = pool->ltp_wqs[i];
412 task = LDAP_SLIST_FIRST(&pq->ltp_free_list);
414 LDAP_SLIST_REMOVE_HEAD(&pq->ltp_free_list, ltt_next.l);
423 task->ltt_queue = pq;
427 pq->ltp_pending_count++;
428 LDAP_STAILQ_INSERT_TAIL(&pq->ltp_pending_list, task, ltt_next.q);
434 if (pq->ltp_open_count < pq->ltp_active_count+pq->ltp_pending_count &&
435 pq->ltp_open_count < pq->ltp_max_count)
437 pq->ltp_starting++;
438 pq->ltp_open_count++;
441 &thr, 1, ldap_int_thread_pool_wrapper, pq))
446 pq->ltp_starting--;
447 pq->ltp_open_count--;
449 if (pq->ltp_open_count == 0) {
455 ldap_pvt_thread_cond_signal(&pq->ltp_cond);
457 LDAP_STAILQ_FOREACH(ptr, &pq->ltp_pending_list, ltt_next.q)
464 pq->ltp_pending_count--;
465 LDAP_STAILQ_REMOVE(&pq->ltp_pending_list, task,
467 LDAP_SLIST_INSERT_HEAD(&pq->ltp_free_list, task,
477 ldap_pvt_thread_cond_signal(&pq->ltp_cond);
480 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
484 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
503 struct ldap_int_thread_poolq_s *pq;
509 pq = ttmp->ltt_queue;
510 if (pq == NULL)
513 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
514 LDAP_STAILQ_FOREACH(task, &pq->ltp_pending_list, ltt_next.q)
523 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
536 struct ldap_int_thread_poolq_s *pq;
553 pq = pool->ltp_wqs[i];
554 LDAP_STAILQ_FOREACH(task, &pq->ltp_pending_list, ltt_next.q) {
575 struct ldap_int_thread_poolq_s *pq;
602 pq = (struct ldap_int_thread_poolq_s *)(((size_t)ptr + CACHELINE-1) & ~(CACHELINE-1));
603 pq->ltp_free = ptr;
604 pool->ltp_wqs[i] = pq;
605 pq->ltp_pool = pool;
606 rc = ldap_pvt_thread_mutex_init(&pq->ltp_mutex);
609 rc = ldap_pvt_thread_cond_init(&pq->ltp_cond);
612 LDAP_STAILQ_INIT(&pq->ltp_pending_list);
613 pq->ltp_work_list = &pq->ltp_pending_list;
614 LDAP_SLIST_INIT(&pq->ltp_free_list);
620 pq = pool->ltp_wqs[i];
621 pq->ltp_max_count = pool->ltp_max_count / numqs;
623 pq->ltp_max_count++;
626 pq
628 pq->ltp_max_pending++;
643 struct ldap_int_thread_poolq_s *pq;
666 pq = pool->ltp_wqs[i];
667 pq->ltp_max_count = max_threads;
669 pq->ltp_max_count++;
724 struct ldap_int_thread_poolq_s *pq = pool->ltp_wqs[i];
725 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
728 count += pq->ltp_open_count;
731 count += pq->ltp_starting;
734 count += pq->ltp_active_count;
737 count += pq->ltp_pending_count;
740 count += pq->ltp_pending_count + pq->ltp_active_count;
745 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
852 struct ldap_int_thread_poolq_s *pq;
880 pq = pool->ltp_wqs[i];
881 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
882 if (pq->ltp_max_pending > 0)
883 pq->ltp_max_pending = -pq->ltp_max_pending;
885 while ((task = LDAP_STAILQ_FIRST(&pq->ltp_pending_list)) != NULL) {
886 LDAP_STAILQ_REMOVE_HEAD(&pq->ltp_pending_list, ltt_next.q);
889 pq->ltp_pending_count = 0;
892 while (pq->ltp_open_count) {
893 ldap_pvt_thread_cond_broadcast(&pq->ltp_cond);
894 ldap_pvt_thread_cond_wait(&pq->ltp_cond, &pq->ltp_mutex);
897 while ((task = LDAP_SLIST_FIRST(&pq->ltp_free_list)) != NULL)
899 LDAP_SLIST_REMOVE_HEAD(&pq->ltp_free_list, ltt_next.l);
902 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
913 struct ldap_int_thread_poolq_s *pq;
937 pq = pool->ltp_wqs[i];
939 assert( !pq->ltp_open_count );
940 assert( LDAP_SLIST_EMPTY(&pq->ltp_free_list) );
941 ldap_pvt_thread_cond_destroy(&pq->ltp_cond);
942 ldap_pvt_thread_mutex_destroy(&pq->ltp_mutex);
943 if (pq->ltp_free) {
944 LDAP_FREE(pq->ltp_free);
959 struct ldap_int_thread_poolq_s *pq = xpool;
960 struct ldap_int_thread_pool_s *pool = pq->ltp_pool;
973 ctx.ltu_pq = pq;
998 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
999 pq->ltp_starting--;
1000 pq->ltp_active_count++;
1003 work_list = pq->ltp_work_list; /* help the compiler a bit */
1006 if (--(pq->ltp_active_count) < 1) {
1008 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
1019 if (pool->ltp_finishing || pq->ltp_open_count > pq->ltp_max_count) {
1042 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
1046 ldap_pvt_thread_cond_wait(&pq->ltp_cond, &pq->ltp_mutex);
1048 work_list = pq->ltp_work_list;
1054 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
1057 pq->ltp_active_count++;
1061 pq->ltp_pending_count--;
1062 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
1066 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
1067 LDAP_SLIST_INSERT_HEAD(&pq->ltp_free_list, task, ltt_next.l);
1080 pq->ltp_open_count--;
1081 if (pq->ltp_open_count == 0) {
1084 ldap_pvt_thread_cond_signal(&pq->ltp_cond);
1092 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
1095 ldap_pvt_thread_cond_destroy(&pq->ltp_cond);
1096 ldap_pvt_thread_mutex_destroy(&pq->ltp_mutex);
1097 LDAP_FREE(pq->ltp_free);
1098 pq->ltp_free = NULL;
1118 struct ldap_int_thread_poolq_s *pq;
1134 pq = ctx->ltu_pq;
1135 if ( !pq )
1151 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
1152 pq->ltp_pending_count++;
1153 pq->ltp_active_count--;
1154 if (pause && pq->ltp_active_count < 1) {
1157 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
1174 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
1175 pq->ltp_pending_count--;
1176 pq->ltp_active_count++;
1177 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
1189 if (pool->ltp_wqs[i] == pq) break;
1191 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
1193 pq->ltp_active_count--;
1197 pq = pool->ltp_wqs[j];
1199 ldap_pvt_thread_mutex_lock(&pq->ltp_mutex);
1202 pq->ltp_work_list = &empty_pending_list;
1204 if (pq->ltp_active_count > 0)
1207 ldap_pvt_thread_mutex_unlock(&pq->ltp_mutex);
1312 struct ldap_int_thread_poolq_s *pq;
1327 pq = pool->ltp_wqs[i];
1328 pq->ltp_work_list = &pq->ltp_pending_list;
1329 ldap_pvt_thread_cond_broadcast(&pq->ltp_cond);