Lines Matching refs:cur_reason
48 static int os_reason_alloc_buffer_internal(os_reason_t cur_reason, uint32_t osr_bufsize,
76 os_reason_dealloc_buffer(os_reason_t cur_reason) in os_reason_dealloc_buffer() argument
78 assert(cur_reason != OS_REASON_NULL); in os_reason_dealloc_buffer()
79 LCK_MTX_ASSERT(&cur_reason->osr_lock, LCK_MTX_ASSERT_OWNED); in os_reason_dealloc_buffer()
81 if (cur_reason->osr_kcd_buf != NULL && cur_reason->osr_bufsize != 0) { in os_reason_dealloc_buffer()
82 kfree_data(cur_reason->osr_kcd_buf, cur_reason->osr_bufsize); in os_reason_dealloc_buffer()
85 cur_reason->osr_bufsize = 0; in os_reason_dealloc_buffer()
86 cur_reason->osr_kcd_buf = NULL; in os_reason_dealloc_buffer()
87 bzero(&cur_reason->osr_kcd_descriptor, sizeof(cur_reason->osr_kcd_descriptor)); in os_reason_dealloc_buffer()
105 os_reason_alloc_buffer(os_reason_t cur_reason, uint32_t osr_bufsize) in os_reason_alloc_buffer() argument
107 return os_reason_alloc_buffer_internal(cur_reason, osr_bufsize, Z_WAITOK); in os_reason_alloc_buffer()
125 os_reason_alloc_buffer_noblock(os_reason_t cur_reason, uint32_t osr_bufsize) in os_reason_alloc_buffer_noblock() argument
127 return os_reason_alloc_buffer_internal(cur_reason, osr_bufsize, Z_NOWAIT); in os_reason_alloc_buffer_noblock()
131 os_reason_alloc_buffer_internal(os_reason_t cur_reason, uint32_t osr_bufsize, in os_reason_alloc_buffer_internal() argument
134 if (cur_reason == OS_REASON_NULL) { in os_reason_alloc_buffer_internal()
142 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
144 os_reason_dealloc_buffer(cur_reason); in os_reason_alloc_buffer_internal()
147 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
151 cur_reason->osr_kcd_buf = kalloc_data_tag(osr_bufsize, flags | Z_ZERO, in os_reason_alloc_buffer_internal()
154 if (cur_reason->osr_kcd_buf == NULL) { in os_reason_alloc_buffer_internal()
155 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
159 cur_reason->osr_bufsize = osr_bufsize; in os_reason_alloc_buffer_internal()
161 if (kcdata_memory_static_init(&cur_reason->osr_kcd_descriptor, in os_reason_alloc_buffer_internal()
162 (mach_vm_address_t)cur_reason->osr_kcd_buf, in os_reason_alloc_buffer_internal()
165 os_reason_dealloc_buffer(cur_reason); in os_reason_alloc_buffer_internal()
167 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
171 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_alloc_buffer_internal()
181 os_reason_get_kcdata_descriptor(os_reason_t cur_reason) in os_reason_get_kcdata_descriptor() argument
183 if (cur_reason == OS_REASON_NULL) { in os_reason_get_kcdata_descriptor()
187 if (cur_reason->osr_kcd_buf == NULL) { in os_reason_get_kcdata_descriptor()
191 assert(cur_reason->osr_kcd_descriptor.kcd_addr_begin == in os_reason_get_kcdata_descriptor()
192 (mach_vm_address_t)cur_reason->osr_kcd_buf); in os_reason_get_kcdata_descriptor()
193 if (cur_reason->osr_kcd_descriptor.kcd_addr_begin != in os_reason_get_kcdata_descriptor()
194 (mach_vm_address_t)cur_reason->osr_kcd_buf) { in os_reason_get_kcdata_descriptor()
198 return &cur_reason->osr_kcd_descriptor; in os_reason_get_kcdata_descriptor()
205 os_reason_ref(os_reason_t cur_reason) in os_reason_ref() argument
207 if (cur_reason == OS_REASON_NULL) { in os_reason_ref()
211 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_ref()
212 os_ref_retain_locked(&cur_reason->osr_refcount); in os_reason_ref()
213 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_ref()
222 os_reason_free(os_reason_t cur_reason) in os_reason_free() argument
224 if (cur_reason == OS_REASON_NULL) { in os_reason_free()
228 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_free()
230 if (os_ref_release_locked(&cur_reason->osr_refcount) > 0) { in os_reason_free()
231 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_free()
235 os_reason_dealloc_buffer(cur_reason); in os_reason_free()
237 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_free()
238 lck_mtx_destroy(&cur_reason->osr_lock, &os_reason_lock_grp); in os_reason_free()
240 zfree(os_reason_zone, cur_reason); in os_reason_free()
247 os_reason_set_flags(os_reason_t cur_reason, uint64_t flags) in os_reason_set_flags() argument
249 if (cur_reason == OS_REASON_NULL) { in os_reason_set_flags()
253 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_set_flags()
254 cur_reason->osr_flags = flags; in os_reason_set_flags()
255 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_set_flags()
262 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
266 if (cur_reason == OS_REASON_NULL) { in os_reason_set_description_data()
270 …if (0 != os_reason_alloc_buffer(cur_reason, kcdata_estimate_required_buffer_size(1, reason_data_le… in os_reason_set_description_data()
274 lck_mtx_lock(&cur_reason->osr_lock); in os_reason_set_description_data()
275 …if (KERN_SUCCESS != kcdata_get_memory_addr(&cur_reason->osr_kcd_descriptor, type, reason_data_len,… in os_reason_set_description_data()
278 …if (KERN_SUCCESS != kcdata_memcpy(&cur_reason->osr_kcd_descriptor, osr_data_addr, reason_data, rea… in os_reason_set_description_data()
281 lck_mtx_unlock(&cur_reason->osr_lock); in os_reason_set_description_data()