Lines Matching refs:kq

485 void ksyn_freeallkwe(ksyn_queue_t kq);
490 void ksyn_queue_init(ksyn_queue_t kq);
491 int ksyn_queue_insert(ksyn_wait_queue_t kwq, ksyn_queue_t kq, uint32_t mgen, struct uthread * uth, ksyn_waitq_element_t kwe, int firstfit);
492 ksyn_waitq_element_t ksyn_queue_removefirst(ksyn_queue_t kq, ksyn_wait_queue_t kwq);
493 void ksyn_queue_removeitem(ksyn_wait_queue_t kwq, ksyn_queue_t kq, ksyn_waitq_element_t kwe);
494 int ksyn_queue_move_tofree(ksyn_wait_queue_t kwq, ksyn_queue_t kq, uint32_t upto, ksyn_queue_t freeq, int all, int reease);
500 uint32_t ksyn_queue_count_tolowest(ksyn_queue_t kq, uint32_t upto);
502 ksyn_waitq_element_t ksyn_queue_find_cvpreposeq(ksyn_queue_t kq, uint32_t cgen);
503 uint32_t ksyn_queue_cvcount_entries(ksyn_queue_t kq, uint32_t upto, uint32_t from, int * numwaitersp, int * numintrp, int * numprepop);
506 ksyn_waitq_element_t ksyn_queue_find_signalseq(ksyn_wait_queue_t kwq, ksyn_queue_t kq, uint32_t toseq, uint32_t lockseq);
507 ksyn_waitq_element_t ksyn_queue_find_threadseq(ksyn_wait_queue_t ckwq, ksyn_queue_t kq, thread_t th, uint32_t toseq);
513 ksyn_waitq_element_t ksyn_queue_find_seq(ksyn_wait_queue_t kwq, ksyn_queue_t kq, uint32_t seq, int remove);
1039 ksyn_queue_find_threadseq(ksyn_wait_queue_t ckwq, __unused ksyn_queue_t kq, thread_t th, uint32_t upto)
1066 ksyn_queue_t kq;
1113 kq = &ckwq->kw_ksynqueues[KSYN_QUEUE_WRITER];
1119 kwe = (th != NULL) ? ksyn_queue_find_threadseq(ckwq, kq, th, uptoseq) :
1120 ksyn_queue_find_signalseq(ckwq, kq, uptoseq, signalseq);
1149 ksyn_queue_removeitem(ckwq, kq, kwe);
1247 struct ksyn_queue *kq, kfreeq;
1312 kq = &ckwq->kw_ksynqueues[KSYN_QUEUE_WRITER];
1313 kwe = ksyn_queue_find_cvpreposeq(kq, lockseq);
1331 ksyn_queue_removeitem(ckwq, kq, kwe);
1397 error = ksyn_queue_insert(ckwq, kq, cgen, uth, kwe, SEQFIT);
2711 ksyn_freeallkwe(ksyn_queue_t kq)
2716 kwe = TAILQ_FIRST(&kq->ksynq_kwelist);
2719 TAILQ_REMOVE(&kq->ksynq_kwelist, kwe, kwe_list);
2722 TAILQ_REMOVE(&kq->ksynq_kwelist, kwe, kwe_list);
2724 kwe = TAILQ_FIRST(&kq->ksynq_kwelist);
3279 ksyn_queue_t kq;
3316 kq = &kwq->kw_ksynqueues[KSYN_QUEUE_READ];
3317 while ((kq->ksynq_count != 0) && (allreaders || (is_seqlower(kq->ksynq_firstnum, limitread) != 0))) {
3318 kwe = ksyn_queue_removefirst(kq, kwq);
3356 ksyn_queue_t kq;
3366 kq = &kwq->kw_ksynqueues[KSYN_QUEUE_READ];
3512 numneeded = ksyn_queue_count_tolowest(kq, limitrdnum);
3528 numneeded = ksyn_queue_count_tolowest(kq, limitrdnum);
3644 numneeded = ksyn_queue_count_tolowest(kq, low_writer);
3847 ksyn_queue_init(ksyn_queue_t kq)
3849 TAILQ_INIT(&kq->ksynq_kwelist);
3850 kq->ksynq_count = 0;
3851 kq->ksynq_firstnum = 0;
3852 kq->ksynq_lastnum = 0;
3856 ksyn_queue_insert(ksyn_wait_queue_t kwq, ksyn_queue_t kq, uint32_t mgen, struct uthread * uth, ksyn_waitq_element_t kwe, int fit)
3863 if (kq->ksynq_count == 0) {
3864 TAILQ_INSERT_HEAD(&kq->ksynq_kwelist, kwe, kwe_list);
3865 kq->ksynq_firstnum = lockseq;
3866 kq->ksynq_lastnum = lockseq;
3873 TAILQ_INSERT_TAIL(&kq->ksynq_kwelist, kwe, kwe_list);
3874 if (is_seqlower (lockseq, kq->ksynq_firstnum) != 0)
3875 kq->ksynq_firstnum = lockseq;
3876 if (is_seqhigher (lockseq, kq->ksynq_lastnum) != 0)
3877 kq->ksynq_lastnum = lockseq;
3881 if ((lockseq == kq->ksynq_firstnum) || (lockseq == kq->ksynq_lastnum)) {
3884 q_kwe = ksyn_queue_find_seq(kwq, kq, lockseq, 0);
3887 TAILQ_INSERT_TAIL(&kq->ksynq_kwelist, kwe, kwe_list);
3903 if (is_seqlower(kq->ksynq_lastnum, lockseq) != 0) {
3904 TAILQ_INSERT_TAIL(&kq->ksynq_kwelist, kwe, kwe_list);
3905 kq->ksynq_lastnum = lockseq;
3909 if (is_seqlower(lockseq, kq->ksynq_firstnum) != 0) {
3910 TAILQ_INSERT_HEAD(&kq->ksynq_kwelist, kwe, kwe_list);
3911 kq->ksynq_firstnum = lockseq;
3916 TAILQ_FOREACH_SAFE(q_kwe, &kq->ksynq_kwelist, kwe_list, r_kwe) {
3930 kq->ksynq_count++;
3938 ksyn_queue_removefirst(ksyn_queue_t kq, ksyn_wait_queue_t kwq)
3944 if (kq->ksynq_count != 0) {
3945 kwe = TAILQ_FIRST(&kq->ksynq_kwelist);
3946 TAILQ_REMOVE(&kq->ksynq_kwelist, kwe, kwe_list);
3948 kq->ksynq_count--;
3951 if(kq->ksynq_count != 0) {
3952 q_kwe = TAILQ_FIRST(&kq->ksynq_kwelist);
3953 kq->ksynq_firstnum = (q_kwe->kwe_lockseq & PTHRW_COUNT_MASK);
3955 kq->ksynq_firstnum = 0;
3956 kq->ksynq_lastnum = 0;
3973 ksyn_queue_removeitem(ksyn_wait_queue_t kwq, ksyn_queue_t kq, ksyn_waitq_element_t kwe)
3978 if (kq->ksynq_count > 0) {
3979 TAILQ_REMOVE(&kq->ksynq_kwelist, kwe, kwe_list);
3980 kq->ksynq_count--;
3981 if(kq->ksynq_count != 0) {
3982 q_kwe = TAILQ_FIRST(&kq->ksynq_kwelist);
3983 kq->ksynq_firstnum = (q_kwe->kwe_lockseq & PTHRW_COUNT_MASK);
3984 q_kwe = TAILQ_LAST(&kq->ksynq_kwelist, ksynq_kwelist_head);
3985 kq->ksynq_lastnum = (q_kwe->kwe_lockseq & PTHRW_COUNT_MASK);
3987 kq->ksynq_firstnum = 0;
3988 kq->ksynq_lastnum = 0;
4007 ksyn_queue_find_seq(ksyn_wait_queue_t kwq, ksyn_queue_t kq, uint32_t seq, int remove)
4013 TAILQ_FOREACH_SAFE(q_kwe, &kq->ksynq_kwelist, kwe_list, r_kwe) {
4016 ksyn_queue_removeitem(kwq, kq, q_kwe);
4026 ksyn_queue_find_cvpreposeq(ksyn_queue_t kq, uint32_t cgen)
4032 TAILQ_FOREACH_SAFE(q_kwe, &kq->ksynq_kwelist, kwe_list, r_kwe) {
4055 ksyn_queue_find_signalseq(__unused ksyn_wait_queue_t kwq, ksyn_queue_t kq, uint32_t uptoseq, uint32_t signalseq)
4060 TAILQ_FOREACH_SAFE(q_kwe, &kq->ksynq_kwelist, kwe_list, r_kwe) {
4108 ksyn_queue_move_tofree(ksyn_wait_queue_t ckwq, ksyn_queue_t kq, uint32_t upto, ksyn_queue_t kfreeq, int all, int release)
4120 kwe = TAILQ_FIRST(&kq->ksynq_kwelist);
4137 ksyn_queue_removeitem(ckwq, kq, kwe);
4146 ksyn_queue_removeitem(ckwq, kq, kwe);
4151 kwe = TAILQ_FIRST(&kq->ksynq_kwelist);
4340 ksyn_queue_count_tolowest(ksyn_queue_t kq, uint32_t upto)
4347 if ((kq->ksynq_count == 0) || (is_seqhigher(kq->ksynq_firstnum, upto) != 0))
4349 if (upto == kq->ksynq_firstnum)
4352 TAILQ_FOREACH_SAFE(kwe, &kq->ksynq_kwelist, kwe_list, newkwe) {
4373 ksyn_queue_t kq;
4384 kq = &ckwq->kw_ksynqueues[KSYN_QUEUE_WRITER];
4387 TAILQ_FOREACH_SAFE(kwe, &kq->ksynq_kwelist, kwe_list, newkwe) {
4404 ksyn_queue_removeitem(ckwq, kq, kwe);
4420 ksyn_queue_removeitem(ckwq, kq, kwe);