NetBSD/sys/compat/mach/mach_iokit.h

357 lines
11 KiB
C

/* $NetBSD: mach_iokit.h,v 1.8 2003/03/09 18:33:29 manu Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Emmanuel Dreyfus
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the NetBSD
* Foundation, Inc. and its contributors.
* 4. Neither the name of The NetBSD Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _MACH_IOKIT_H_
#define _MACH_IOKIT_H_
typedef struct mach_io_object *mach_io_object_t;
/* mach_io_service_get_matching_services */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
mach_io_object_t req_io_master;
mach_msg_size_t req_size;
char req_string[0];
} mach_io_service_get_matching_services_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_match;
mach_msg_trailer_t rep_trailer;
} mach_io_service_get_matching_services_reply_t;
/* mach_io_iterator_next */
typedef struct {
mach_msg_header_t req_msgh;
} mach_io_iterator_next_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_object;
mach_msg_trailer_t rep_trailer;
} mach_io_iterator_next_reply_t;
/* mach_io_service_open */
typedef struct {
mach_msg_header_t req_msgh;
mach_msg_body_t req_body;
mach_msg_port_descriptor_t req_owningtask;
mach_ndr_record_t req_ndr;
int mach_connect_type;
} mach_io_service_open_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_connect;
mach_msg_trailer_t rep_trailer;
} mach_io_service_open_reply_t;
/* mach_io_connect_method_scalari_scalaro */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
int req_selector;
mach_msg_type_number_t req_incount;
int req_in[16];
mach_msg_type_number_t req_outcount;
} mach_io_connect_method_scalari_scalaro_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_ndr_record_t rep_ndr;
mach_kern_return_t rep_retval;
mach_msg_type_number_t rep_outcount;
int rep_out[4096];
mach_msg_trailer_t rep_trailer;
} mach_io_connect_method_scalari_scalaro_reply_t;
/* io_connect_get_service */
typedef struct {
mach_msg_header_t req_msgh;
} mach_io_connect_get_service_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_service;
mach_msg_trailer_t rep_trailer;
} mach_io_connect_get_service_reply_t;
/* io_registry_entry_get_property */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
mach_msg_type_number_t req_property_nameoffset;
mach_msg_type_number_t req_property_namecount;
char req_propery_name[128];
} mach_io_registry_entry_get_property_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_properties;
mach_ndr_record_t rep_ndr;
mach_msg_type_number_t rep_properties_count;
mach_msg_trailer_t rep_trailer;
} mach_io_registry_entry_get_property_reply_t;
/* io_registry_entry_create_iterator */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
mach_msg_type_number_t req_planeoffset;
mach_msg_type_number_t req_planecount;
char req_plane[128];
int req_options;
} mach_io_registry_entry_create_iterator_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_iterator;
mach_msg_trailer_t rep_trailer;
} mach_io_registry_entry_create_iterator_reply_t;
/* io_object_conforms_to */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
mach_msg_type_number_t req_classnameoffset;
mach_msg_type_number_t req_classnamecount;
char req_classname[128];
} mach_io_object_conforms_to_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_ndr_record_t rep_ndr;
mach_kern_return_t rep_retval;
mach_boolean_t rep_conforms;
mach_msg_trailer_t rep_trailer;
} mach_io_object_conforms_to_reply_t;
/* io_service_add_interest_notification */
typedef struct {
mach_msg_header_t req_msgh;
mach_msg_body_t req_body;
mach_msg_port_descriptor_t req_wake_port;
mach_ndr_record_t req_ndr;
mach_msg_type_number_t req_typeofinterestoffset;
mach_msg_type_number_t req_typeofinterestcount;
char req_typeofinterest[128];
mach_msg_type_number_t req_refcount;
mach_natural_t req_ref[8];
} mach_io_service_add_interest_notification_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_notification;
mach_msg_trailer_t rep_trailer;
} mach_io_service_add_interest_notification_reply_t;
/* io_connect_set_notification_port */
typedef struct {
mach_msg_header_t req_msgh;
mach_msg_body_t req_body;
mach_msg_port_descriptor_t req_port;
mach_ndr_record_t req_ndr;
int req_notification_type;
int req_reference;
} mach_io_connect_set_notification_port_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_ndr_record_t rep_ndr;
mach_kern_return_t rep_retval;
mach_msg_trailer_t rep_trailer;
} mach_io_connect_set_notification_port_reply_t;
/* io_registry_get_root_entry */
typedef struct {
mach_msg_header_t req_msgh;
} mach_io_registry_get_root_entry_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_root;
mach_msg_trailer_t rep_trailer;
} mach_io_registry_get_root_entry_reply_t;
/* io_registry_entry_get_child_iterator */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
mach_msg_type_number_t req_planeoffset;
mach_msg_type_number_t req_planecount;
char req_plane[128];
} mach_io_registry_entry_get_child_iterator_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_port_descriptor_t rep_iterator;
mach_msg_trailer_t rep_trailer;
} mach_io_registry_entry_get_child_iterator_reply_t;
/* io_registry_entry_get_name_in_plane */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
mach_msg_type_number_t req_planeoffset;
mach_msg_type_number_t req_planecount;
char req_plane[128];
} mach_io_registry_entry_get_name_in_plane_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_ndr_record_t rep_ndr;
mach_kern_return_t rep_retval;
mach_msg_type_number_t rep_nameoffset;
mach_msg_type_number_t rep_namecount;
char rep_name[128];
mach_msg_trailer_t rep_trailer;
} mach_io_registry_entry_get_name_in_plane_reply_t;
/* io_object_get_class */
typedef struct {
mach_msg_header_t req_msgh;
} mach_io_object_get_class_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_ndr_record_t rep_ndr;
mach_kern_return_t rep_retval;
mach_msg_type_number_t rep_nameoffset;
mach_msg_type_number_t rep_namecount;
char rep_name[128];
mach_msg_trailer_t rep_trailer;
} mach_io_object_get_class_reply_t;
/* io_registry_entry_get_location_in_plane */
typedef struct {
mach_msg_header_t req_msgh;
mach_ndr_record_t req_ndr;
mach_msg_type_number_t req_nameoffset;
mach_msg_type_number_t req_namecount;
char req_plane[128];
} mach_io_registry_entry_get_location_in_plane_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_ndr_record_t rep_ndr;
mach_kern_return_t rep_retval;
mach_msg_type_number_t rep_locationoffset;
mach_msg_type_number_t rep_locationcount;
char rep_location[128];
mach_msg_trailer_t rep_trailer;
} mach_io_registry_entry_get_location_in_plane_reply_t;
/* io_registry_entry_get_properties */
typedef struct {
mach_msg_header_t req_msgh;
} mach_io_registry_entry_get_properties_request_t;
typedef struct {
mach_msg_header_t rep_msgh;
mach_msg_body_t rep_body;
mach_msg_ool_descriptor_t rep_properties;
mach_ndr_record_t rep_ndr;
mach_msg_type_number_t rep_count;
mach_msg_trailer_t rep_trailer;
} mach_io_registry_entry_get_properties_reply_t;
int mach_io_service_get_matching_services(struct mach_trap_args *);
int mach_io_iterator_next(struct mach_trap_args *);
int mach_io_service_open(struct mach_trap_args *);
int mach_io_connect_method_scalari_scalaro(struct mach_trap_args *);
int mach_io_connect_get_service(struct mach_trap_args *);
int mach_io_registry_entry_get_property(struct mach_trap_args *);
int mach_io_registry_entry_create_iterator(struct mach_trap_args *);
int mach_io_object_conforms_to(struct mach_trap_args *);
int mach_io_service_add_interest_notification(struct mach_trap_args *);
int mach_io_connect_set_notification_port(struct mach_trap_args *);
int mach_io_registry_get_root_entry(struct mach_trap_args *);
int mach_io_registry_entry_get_child_iterator(struct mach_trap_args *);
int mach_io_registry_entry_get_name_in_plane(struct mach_trap_args *);
int mach_io_object_get_class(struct mach_trap_args *);
int mach_io_registry_entry_get_location_in_plane(struct mach_trap_args *);
int mach_io_registry_entry_get_properties(struct mach_trap_args *);
extern struct mach_iokit_devclass *mach_iokit_devclasses[];
struct mach_device_iterator {
struct device *mdi_parent;
struct device *mdi_current;
};
struct mach_iokit_devclass {
char *mid_string;
char *mid_properties;
int (*mid_registry_entry_get_property)(struct mach_trap_args *);
int (*mid_connect_method_scalari_scalaro)(struct mach_trap_args *);
char *mid_name;
};
struct mach_iokit_property {
const char *mip_name;
const int mip_value;
};
#endif /* _MACH_IOKIT_H_ */