Home | History | Annotate | Download | only in rumpkern

Lines Matching defs:upm

55 #define UPMTX(mtx) struct upmtx *upm = *(struct upmtx **)mtx
68 struct upmtx *upm;
84 upm = rump_hypermalloc(sizeof(*upm), 0, true, "mutex_init");
85 memset(upm, 0, sizeof(*upm));
86 rumpuser_cv_init(&upm->upm_rucv);
87 memcpy(mtx, &upm, sizeof(void *));
95 KASSERT(upm->upm_owner == NULL);
96 KASSERT(upm->upm_wanted == 0);
97 rumpuser_cv_destroy(upm->upm_rucv);
98 rump_hyperfree(upm, sizeof(*upm));
113 upm->upm_wanted++;
115 rump_schedlock_cv_wait(upm->upm_rucv);
117 upm->upm_wanted--;
119 KASSERT(upm->upm_wanted >= 0);
134 if (upm->upm_owner)
137 upm->upm_owner = curlwp;
146 if (upm->upm_wanted) {
147 rumpuser_cv_signal(upm->upm_rucv); /* CPU is our interlock */
149 upm->upm_owner = NULL;
164 return upm->upm_owner == curlwp;
349 KASSERT(upm->upm_owner == curlwp);
380 KASSERT(upm->upm_owner == curlwp);