I am sponsoring this fast track for Raymond Chen.
Requested binding is minor, timeout 1/18/2008.

-Artem

Template Version: @(#)sac_nextcase 1.64 07/13/07 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
     1.1. Project/Component Working Name:
         Integrate OpenUSB into Solaris
     1.2. Name of Document Author/Supplier:
         Author:  Raymond Chen
     1.3  Date of This Document:
        11 January, 2008
4. Technical Description

4.1 Summary

This project integrates OpenUSB into Solaris and makes interfaces
from "PSARC/2003/721 libusb: user level usb library" Obsolete.
Requested binding: minor.
        
4.2 Details
        
Solaris currently ships with an implementation of libusb 0.1.8 API,
supporting both native Solaris USB and Sun Ray USB frameworks.
Unfortunately, libusb development stagnated around version 0.1.12,
bound by lack of involvement from the original author and disagreements
about future directions. To revitalize development, the community
created a fork of libusb, called OpenUSB, and Sun has been actively
contributing to the effort. OpenUSB is licensed under LGPL and BSD
licenses.

OpenUSB provides a set of enhanced APIs for accessing USB devices,
providing better abstraction of the diverse USB frameworks available on
various platforms and ease development of portable applications.
OpenUSB has the following enhancements over libusb 0.1.x:

- Redesigned enumeration. New APIs for searching and managing of busses
and devices, and notify application of hotplug and power management
events.

- OpenUSB supports multi-threaded applications (unlike libusb).

- Addition of asynchronous interfaces. More flexibility over libusb
0.1.x, all of which interfaces are strictly synchronous.

- Support all 4 transfer types: control, bulk, interrupt and
isochronous. libusb 0.1.x did not support isochronous or control on any
endpoint other than default.

- Error code unification. All functions return the same set of error
codes across all platforms.

OpenUSB includes a libusb emulation layer, implemented via native
OpenUSB interfaces, and is ABI-compatible with libusb. Legacy
applications will continue to work without recompilation.

OpenUSB consists of two parts: a frontend, common to all platforms, and
a number of platform-specific backends. This project delivers the
backend for native Solaris USB framework. The backend for Sun Ray USB
will be added in the near future.

This case proposes to mark Obsolete all libusb interfaces from
PSARC/2003/721. This case does not remove libusb from Solaris: it will
continue to coexist with OpenUSB for some time, at least until the new
Sun Ray backend is delivered.

OpenUSB applications will include <openusb.h> and link with -lopenusb.
Planned deliverables:

/usr/lib/libopenusb.so.0.0.0
/usr/lib/libopenusb.so -> libopenusb.so.0.0.0
/usr/lib/libopenusb.so.0 -> libopenusb.so.0.0.0
/usr/lib/openusb_backend/sunos.so
/usr/include/openusb.h
/usr/share/man/man3lib/libopenusb.3lib
/usr/share/doc/openusb/openusb_guide.html

openusb.h and openusb_guide.html are in this case's directory.


4.3 Interfaces

All interfaces in OpenUSB, including structures, macros and functions
are Volatile. Additionally, two environment variables are exported.

-------------------------+----------+-----------------------------
openusb.h (see case dir) | Volatile | OpenUSB C API
OPENUSB_BACKEND_PATH     | Volatile | Alternative backend location
OPENUSB_DEBUG            | Volatile | Enable debug mode
-------------------------+----------+-----------------------------


4.4. References

http://libusb.sourceforge.net/
http://openusb.sourceforge.net/
PSARC/2003/721 libusb: user level usb library

6. Resources and Schedule
     6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                SFW
     6.5. ARC review type: FastTrack
     6.6. ARC Exposure: open


Reply via email to