ipc_voucher_attr_control_t voucher_attr_control; /* communication channel from ATM to voucher system */
static zone_t atm_value_zone, atm_descriptors_zone, atm_link_objects_zone;
-static aid_t get_aid();
-static mach_atm_subaid_t get_subaid();
+static aid_t get_aid(void);
+static mach_atm_subaid_t get_subaid(void);
static atm_value_t atm_value_alloc_init(aid_t);
static void atm_value_dealloc(atm_value_t atm_value);
-static void atm_hash_table_init();
+static void atm_hash_table_init(void);
static kern_return_t atm_value_hash_table_insert(atm_value_t new_atm_value);
static void atm_value_hash_table_delete(atm_value_t atm_value);
static atm_value_t get_atm_value_from_aid(aid_t aid) __unused;
return KERN_FAILURE;
}
- /* Set the honor queue limit option on the thread. */
- th->options |= TH_OPT_HONOR_QLIMIT;
+ thread_set_honor_qlimit(th);
kr = atm_collect_trace_info(user_port, aid, sub_aid, flags, buffers_array, count, sizes_array, count);
- /* Make sure that honor queue limit option is unset on the thread. */
- th->options &= (~TH_OPT_HONOR_QLIMIT);
+ thread_clear_honor_qlimit(th);
- if (kr == MACH_SEND_TIMED_OUT) {
- kr = KERN_SUCCESS;
+ if (kr != KERN_SUCCESS) {
+ ipc_port_release_send(user_port);
+
+ if (kr == MACH_SEND_TIMED_OUT) {
+ kr = KERN_SUCCESS;
+ }
}
+
return kr;
}
return KERN_FAILURE;
}
- /* Set the honor queue limit option on the thread. */
- th->options |= TH_OPT_HONOR_QLIMIT;
+ thread_set_honor_qlimit(th);
kr = atm_inspect_process_buffer(user_port, traced_pid, traced_uniqueid, buffer_size, memory_port);
- /* Make sure that honor queue limit option is unset on the thread. */
- th->options &= (~TH_OPT_HONOR_QLIMIT);
+ thread_clear_honor_qlimit(th);
- if (kr == MACH_SEND_TIMED_OUT) {
- kr = KERN_SUCCESS;
+ if (kr != KERN_SUCCESS) {
+ ipc_port_release_send(user_port);
+
+ if (kr == MACH_SEND_TIMED_OUT) {
+ kr = KERN_SUCCESS;
+ }
}
ipc_port_release_send(memory_port);