summaryrefslogtreecommitdiffstats
path: root/src/VBox/HostDrivers/VBoxUSB/solaris/include/usbai_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/HostDrivers/VBoxUSB/solaris/include/usbai_private.h')
-rw-r--r--src/VBox/HostDrivers/VBoxUSB/solaris/include/usbai_private.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/VBox/HostDrivers/VBoxUSB/solaris/include/usbai_private.h b/src/VBox/HostDrivers/VBoxUSB/solaris/include/usbai_private.h
new file mode 100644
index 00000000..2e61d804
--- /dev/null
+++ b/src/VBox/HostDrivers/VBoxUSB/solaris/include/usbai_private.h
@@ -0,0 +1,161 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2009-2010 Oracle Corporation. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _SYS_USB_USBA_USBAI_PRIVATE_H
+#define _SYS_USB_USBA_USBAI_PRIVATE_H
+
+/*
+ * Unstable interfaces not part of USBAI but used by Solaris client drivers.
+ * These interfaces may not be present in future releases and are highly
+ * unstable.
+ *
+ * Status key:
+ * C = Remove from Sun client drivers before removing from this file
+ * D = May be needed by legacy (DDK) drivers.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * convenience function for getting default config index
+ * as saved in usba_device structure
+ *
+ * Status: C
+ */
+uint_t usb_get_current_cfgidx(dev_info_t *);
+
+/*
+ * Usb logging, debug and console message handling.
+ */
+typedef struct usb_log_handle *usb_log_handle_t;
+
+#define USB_LOG_L0 0 /* warnings, console & syslog buffer */
+#define USB_LOG_L1 1 /* errors, syslog buffer */
+#define USB_LOG_L2 2 /* recoverable errors, debug only */
+#define USB_LOG_L3 3 /* interesting data, debug only */
+#define USB_LOG_L4 4 /* tracing, debug only */
+
+#define USB_CHK_BASIC 0 /* Empty mask. Basics always done. */
+#define USB_CHK_SERIAL 0x00000001 /* Compare device serial numbers. */
+#define USB_CHK_CFG 0x00000002 /* Compare raw config clouds. */
+#define USB_CHK_VIDPID 0x00000004 /* Compare product and vendor ID. */
+#define USB_CHK_ALL 0xFFFFFFFF /* Perform maximum checking. */
+
+int usb_check_same_device(dev_info_t *dip,
+ usb_log_handle_t log_handle,
+ int log_level,
+ int log_mask,
+ uint_t check_mask,
+ char *device_string);
+
+/*
+ * **************************************************************************
+ * Serialization functions remaining Contracted Consolidation Private
+ * **************************************************************************
+ */
+
+/* This whole section: status: C and D. */
+
+/*
+ * opaque serialization handle.
+ * Used by all usb_serialization routines.
+ *
+ * This handle is opaque to the client driver.
+ */
+typedef struct usb_serialization *usb_serialization_t;
+
+/*
+ * usb_init_serialization
+ * setup for serialization
+ *
+ * ARGUMENTS:
+ * s_dip - devinfo pointer
+ * flag - USB_INIT_SER_CHECK_SAME_THREAD
+ * when set, usb_release_access() will verify that the same
+ * thread releases access. If not, a console warning will
+ * be issued but access will be released anyways.
+ *
+ * RETURNS:
+ * usb_serialization handle
+ *
+ */
+usb_serialization_t usb_init_serialization(dev_info_t *s_dip,
+ uint_t flag);
+
+#define USB_INIT_SER_CHECK_SAME_THREAD 1
+
+/* fini for serialization */
+void usb_fini_serialization(usb_serialization_t usb_serp);
+
+/*
+ * Various ways of calling usb_serialize_access. These correspond to
+ * their cv_*wait* function counterparts for usb_serialize_access.
+ */
+#define USB_WAIT 0
+#define USB_WAIT_SIG 1
+#define USB_TIMEDWAIT 2
+#define USB_TIMEDWAIT_SIG 3
+
+/*
+ * usb_serialize_access:
+ * acquire serialized access
+ *
+ * ARGUMENTS:
+ * usb_serp - usb_serialization handle
+ * how_to_wait - Which cv_*wait* function to wait for condition.
+ * USB_WAIT: use cv_wait
+ * USB_WAIT_SIG: use cv_wait_sig
+ * USB_TIMEDWAIT: use cv_timedwait
+ * USB_TIMEDWAIT_SIG: use cv_timedwait_sig
+ * delta_timeout - Time in ms from current time to timeout. Checked
+ * only if USB_TIMEDWAIT or USB_TIMEDWAIT_SIG
+ * specified in how_to_wait.
+ * RETURNS:
+ * Same as values returned by cv_*wait* functions,
+ * except for when how_to_wait == USB_WAIT, where 0 is always returned.
+ * For calls where a timeout or signal could be expected, use this value
+ * to tell whether a kill(2) signal or timeout occurred.
+ */
+int usb_serialize_access(usb_serialization_t usb_serp,
+ uint_t how_to_wait,
+ uint_t delta_timeout);
+
+/*
+ * usb_release_access:
+ * release serialized access
+ *
+ * ARGUMENTS:
+ * usb_serp - usb_serialization handle
+ */
+void usb_release_access(usb_serialization_t usb_serp);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_USB_USBA_USBAI_PRIVATE_H */
+