Lines Matching refs:upm
55 #define UPMTX(mtx) struct upmtx *upm = *(struct upmtx **)mtx
68 struct upmtx *upm;
77 upm = rump_hypermalloc(sizeof(*upm), 0, true, "mutex_init");
78 memset(upm, 0, sizeof(*upm));
79 rumpuser_cv_init(&upm->upm_rucv);
80 memcpy(mtx, &upm, sizeof(void *));
88 KASSERT(upm->upm_owner == NULL);
89 KASSERT(upm->upm_wanted == 0);
90 rumpuser_cv_destroy(upm->upm_rucv);
91 rump_hyperfree(upm, sizeof(*upm));
106 upm->upm_wanted++;
108 rump_schedlock_cv_wait(upm->upm_rucv);
110 upm->upm_wanted--;
112 KASSERT(upm->upm_wanted >= 0);
127 if (upm->upm_owner)
130 upm->upm_owner = curlwp;
139 if (upm->upm_wanted) {
140 rumpuser_cv_signal(upm->upm_rucv); /* CPU is our interlock */
142 upm->upm_owner = NULL;
157 return upm->upm_owner == curlwp;
164 return upm->upm_owner;
343 KASSERT(upm->upm_owner == curlwp);
374 KASSERT(upm->upm_owner == curlwp);