Lines Matching defs:mo
58 struct kmutexobj *mo;
60 mo = kmem_intr_alloc(sizeof(*mo), KM_SLEEP);
61 KASSERT(ALIGNED_POINTER(mo, coherency_unit));
62 _mutex_init(&mo->mo_lock, type, ipl,
64 mo->mo_magic = MUTEX_OBJ_MAGIC;
65 mo->mo_refcnt = 1;
67 return (kmutex_t *)mo;
78 struct kmutexobj *mo;
80 mo = kmem_intr_alloc(sizeof(*mo), KM_NOSLEEP);
81 KASSERT(ALIGNED_POINTER(mo, coherency_unit));
82 if (__predict_true(mo != NULL)) {
83 _mutex_init(&mo->mo_lock, type, ipl,
85 mo->mo_magic = MUTEX_OBJ_MAGIC;
86 mo->mo_refcnt = 1;
89 return (kmutex_t *)mo;
101 struct kmutexobj *mo = (struct kmutexobj *)lock;
103 KASSERTMSG(mo->mo_magic == MUTEX_OBJ_MAGIC,
104 "%s: lock %p: mo->mo_magic (%#x) != MUTEX_OBJ_MAGIC (%#x)",
105 __func__, mo, mo->mo_magic, MUTEX_OBJ_MAGIC);
106 KASSERTMSG(mo->mo_refcnt > 0,
107 "%s: lock %p: mo->mo_refcnt (%#x) == 0",
108 __func__, mo, mo->mo_refcnt);
110 atomic_inc_uint(&mo->mo_refcnt);
122 struct kmutexobj *mo = (struct kmutexobj *)lock;
124 KASSERTMSG(mo->mo_magic == MUTEX_OBJ_MAGIC,
125 "%s: lock %p: mo->mo_magic (%#x) != MUTEX_OBJ_MAGIC (%#x)",
126 __func__, mo, mo->mo_magic, MUTEX_OBJ_MAGIC);
127 KASSERTMSG(mo->mo_refcnt > 0,
128 "%s: lock %p: mo->mo_refcnt (%#x) == 0",
129 __func__, mo, mo->mo_refcnt);
132 if (atomic_dec_uint_nv(&mo->mo_refcnt) > 0) {
136 mutex_destroy(&mo->mo_lock);
137 kmem_intr_free(mo, sizeof(*mo));
149 struct kmutexobj *mo = (struct kmutexobj *)lock;
151 return mo->mo_refcnt;