Lines Matching defs:rcpu
100 #define SCHED_FASTPATH(rcpu) rcpu->rcpu_fastpath++;
101 #define SCHED_SLOWPATH(rcpu) rcpu->rcpu_slowpath++;
102 #define SCHED_MIGRATED(rcpu) rcpu->rcpu_migrated++;
104 #define SCHED_FASTPATH(rcpu)
105 #define SCHED_SLOWPATH(rcpu)
106 #define SCHED_MIGRATED(rcpu)
154 struct rumpcpu *rcpu;
168 rcpu = &rcpu_storage[i];
169 rcpu->rcpu_ci = ci;
170 rcpu->rcpu_wanted = 0;
171 rumpuser_cv_init(&rcpu->rcpu_cv);
172 rumpuser_mutex_init(&rcpu->rcpu_mtx, RUMPUSER_MTX_SPIN);
185 struct rumpcpu *rcpu = cpuinfo_to_rumpcpu(ci);
187 rumpuser_mutex_enter_nowrap(rcpu->rcpu_mtx);
189 rumpuser_mutex_exit(rcpu->rcpu_mtx);
199 struct rumpcpu *rcpu = cpuinfo_to_rumpcpu(l->l_cpu);
202 rumpuser_cv_wait(cv, rcpu->rcpu_mtx);
209 struct rumpcpu *rcpu = cpuinfo_to_rumpcpu(l->l_cpu);
212 return rumpuser_cv_timedwait(cv, rcpu->rcpu_mtx,
303 struct rumpcpu *rcpu;
322 rcpu = cpuinfo_to_rumpcpu(l->l_target_cpu);
323 if (atomic_cas_ptr(&rcpu->rcpu_prevlwp, l, RCPULWP_BUSY) == l) {
324 if (interlock == rcpu->rcpu_mtx)
325 rumpuser_mutex_exit(rcpu->rcpu_mtx);
326 SCHED_FASTPATH(rcpu);
341 if (interlock != rcpu->rcpu_mtx)
342 rumpuser_mutex_enter_nowrap(rcpu->rcpu_mtx);
345 SCHED_SLOWPATH(rcpu);
346 old = atomic_swap_ptr(&rcpu->rcpu_prevlwp, RCPULWP_WANTED);
350 if (atomic_cas_ptr(&rcpu->rcpu_prevlwp,
364 SCHED_MIGRATED(rcpu);
365 rumpuser_mutex_exit(rcpu->rcpu_mtx);
366 rcpu = getnextcpu();
367 rumpuser_mutex_enter_nowrap(rcpu->rcpu_mtx);
372 rcpu->rcpu_wanted++;
373 rumpuser_cv_wait_nowrap(rcpu->rcpu_cv, rcpu->rcpu_mtx);
374 rcpu->rcpu_wanted--;
376 rumpuser_mutex_exit(rcpu->rcpu_mtx);
379 ci = rcpu->rcpu_ci;
381 l->l_mutex = rcpu->rcpu_ci->ci_schedstate.spc_mutex;
458 struct rumpcpu *rcpu;
464 rcpu = cpuinfo_to_rumpcpu(ci);
466 KASSERT(rcpu->rcpu_ci == ci);
480 if (interlock == rcpu->rcpu_mtx)
481 rumpuser_mutex_enter_nowrap(rcpu->rcpu_mtx);
486 old = atomic_swap_ptr(&rcpu->rcpu_prevlwp, l);
501 if (interlock != rcpu->rcpu_mtx)
502 rumpuser_mutex_enter_nowrap(rcpu->rcpu_mtx);
503 if (rcpu->rcpu_wanted)
504 rumpuser_cv_broadcast(rcpu->rcpu_cv);
505 if (interlock != rcpu->rcpu_mtx)
506 rumpuser_mutex_exit(rcpu->rcpu_mtx);