Lines Matching refs:cur_reason
49 static int os_reason_alloc_buffer_internal(os_reason_t cur_reason, uint32_t osr_bufsize,
77 os_reason_dealloc_buffer(os_reason_t cur_reason) in os_reason_dealloc_buffer() argument
79 assert(cur_reason != OS_REASON_NULL); in os_reason_dealloc_buffer()
80 LCK_MTX_ASSERT(&cur_reason->osr_lock, LCK_MTX_ASSERT_OWNED); in os_reason_dealloc_buffer()
82 if (cur_reason->osr_kcd_buf != NULL && cur_reason->osr_bufsize != 0) { in os_reason_dealloc_buffer()
83 kfree_data(cur_reason->osr_kcd_buf, cur_reason->osr_bufsize); in os_reason_dealloc_buffer()
86 cur_reason->osr_bufsize = 0; in os_reason_dealloc_buffer()
87 cur_reason->osr_kcd_buf = NULL; in os_reason_dealloc_buffer()
88 bzero(&cur_reason->osr_kcd_descriptor, sizeof(cur_reason->osr_kcd_descriptor)); in os_reason_dealloc_buffer()
106 os_reason_alloc_buffer(os_reason_t cur_reason, uint32_t osr_bufsize) in os_reason_alloc_buffer() argument
108 return os_reason_alloc_buffer_internal(cur_reason, osr_bufsize, Z_WAITOK); in os_reason_alloc_buffer()
126 os_reason_alloc_buffer_noblock(os_reason_t cur_reason, uint32_t osr_bufsize) in os_reason_alloc_buffer_noblock() argument
128 return os_reason_alloc_buffer_internal(cur_reason, osr_bufsize, Z_NOWAIT); in os_reason_alloc_buffer_noblock()
132 os_reason_alloc_buffer_internal(os_reason_t cur_reason, uint32_t osr_bufsize, in os_reason_alloc_buffer_internal() argument
135 if (cur_reason == OS_REASON_NULL) { in os_reason_alloc_buffer_internal()
143 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
145 os_reason_dealloc_buffer(cur_reason); in os_reason_alloc_buffer_internal()
148 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
152 cur_reason->osr_kcd_buf = kalloc_data_tag(osr_bufsize, flags | Z_ZERO, in os_reason_alloc_buffer_internal()
155 if (cur_reason->osr_kcd_buf == NULL) { in os_reason_alloc_buffer_internal()
156 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
160 cur_reason->osr_bufsize = osr_bufsize; in os_reason_alloc_buffer_internal()
162 if (kcdata_memory_static_init(&cur_reason->osr_kcd_descriptor, in os_reason_alloc_buffer_internal()
163 (mach_vm_address_t)cur_reason->osr_kcd_buf, in os_reason_alloc_buffer_internal()
166 os_reason_dealloc_buffer(cur_reason); in os_reason_alloc_buffer_internal()
168 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
172 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
182 os_reason_get_kcdata_descriptor(os_reason_t cur_reason) in os_reason_get_kcdata_descriptor() argument
184 if (cur_reason == OS_REASON_NULL) { in os_reason_get_kcdata_descriptor()
188 if (cur_reason->osr_kcd_buf == NULL) { in os_reason_get_kcdata_descriptor()
192 assert(cur_reason->osr_kcd_descriptor.kcd_addr_begin == in os_reason_get_kcdata_descriptor()
193 (mach_vm_address_t)cur_reason->osr_kcd_buf); in os_reason_get_kcdata_descriptor()
194 if (cur_reason->osr_kcd_descriptor.kcd_addr_begin != in os_reason_get_kcdata_descriptor()
195 (mach_vm_address_t)cur_reason->osr_kcd_buf) { in os_reason_get_kcdata_descriptor()
199 return &cur_reason->osr_kcd_descriptor; in os_reason_get_kcdata_descriptor()
206 os_reason_ref(os_reason_t cur_reason) in os_reason_ref() argument
208 if (cur_reason == OS_REASON_NULL) { in os_reason_ref()
212 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_ref()
213 os_ref_retain_locked(&cur_reason->osr_refcount); in os_reason_ref()
214 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_ref()
223 os_reason_free(os_reason_t cur_reason) in os_reason_free() argument
225 if (cur_reason == OS_REASON_NULL) { in os_reason_free()
229 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_free()
231 if (os_ref_release_locked(&cur_reason->osr_refcount) > 0) { in os_reason_free()
232 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_free()
236 os_reason_dealloc_buffer(cur_reason); in os_reason_free()
238 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_free()
239 lck_mtx_destroy(&cur_reason->osr_lock, &os_reason_lock_grp); in os_reason_free()
241 zfree(os_reason_zone, cur_reason); in os_reason_free()
248 os_reason_set_flags(os_reason_t cur_reason, uint64_t flags) in os_reason_set_flags() argument
250 if (cur_reason == OS_REASON_NULL) { in os_reason_set_flags()
254 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_set_flags()
255 cur_reason->osr_flags = flags; in os_reason_set_flags()
256 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_set_flags()
263 os_reason_set_description_data(os_reason_t cur_reason, uint32_t type, void *reason_data, uint32_t r… in os_reason_set_description_data() argument
267 if (cur_reason == OS_REASON_NULL) { in os_reason_set_description_data()
271 …if (0 != os_reason_alloc_buffer(cur_reason, kcdata_estimate_required_buffer_size(1, reason_data_le… in os_reason_set_description_data()
275 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_set_description_data()
276 …if (KERN_SUCCESS != kcdata_get_memory_addr(&cur_reason->osr_kcd_descriptor, type, reason_data_len,… in os_reason_set_description_data()
279 …if (KERN_SUCCESS != kcdata_memcpy(&cur_reason->osr_kcd_descriptor, osr_data_addr, reason_data, rea… in os_reason_set_description_data()
282 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_set_description_data()