svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
usb_request_attributes(9s)
Kernel & Driver Data Structures
usb_request_attributes(9S)
NAME
usb_request_attributes - Definition of USB request attributes
SYNOPSIS
#include <sys/usb/usba.h>
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI)
DESCRIPTION
Request attributes specify how the USBA framework handles request exe‐
cution. Request attributes are specified in the request's *_attributes
field and belong to the enumerated type usb_req_attrs_t.
Supported request attributes are:
USB_ATTRS_SHORT_XFER_OK Use this attribute when the maximum
transfer size is known, but it is possi‐
ble for the request to receive a smaller
amount of data. This attribute tells the
USBA framework to accept without error
transfers which are shorter than
expected.
USB_ATTRS_PIPE_RESET Have the USB framework reset the pipe
automatically if an error occurs during
the transfer. Do not attempt to clear any
stall. The USB_CB_RESET_PIPE callback
flag is passed to the client driver's
exception handler to show the pipe has
been reset. Pending requests on pipes
which are reset are flushed unless the
pipe is the default pipe.
USB_ATTRS_AUTOCLEARING Have the USB framework reset the pipe and
clear functional stalls automatically if
an error occurs during the transfer. The
callback flags passed to the client
driver's exception handler show the sta‐
tus after the attempt to clear the stall.
USB_CB_FUNCTIONAL_STALL is set in the
callback flags to indicate that a func‐
tional stall occurred.
USB_CB_STALL_CLEARED is also set if the
stall is cleared. The default pipe never
shows a functional stall if the
USB_ATTRS_AUTOCLEARING attribute is set.
If USB_CB_FUNCTIONAL_STALL is seen when
autoclearing is enabled, the device has a
fatal error.
USB_CB_PROTOCOL_STALL is set without
USB_CB_STALL_CLEARED in the callback
flags to indicate that a protocol stall
was seen but was not explicitly cleared.
Protocol stalls are cleared automatically
when a subsequent command is issued.
Autoclearing a stalled default pipe is
not allowed. The USB_CB_PROTOCOL_STALL
callback flag is set in the callback
flags to indicate the default pipe is
stalled.
Autoclearing is not allowed when the
request is USB_REQ_GET_STATUS on the
default pipe.
USB_ATTRS_ONE_XFER Applies only to interrupt-IN requests.
Without this flag, interrupt-IN requests
start periodic polling of the interrupt
pipe. This flag specifies to perform only
a single transfer. Do not start periodic
transfers with this request.
USB_ATTRS_ISOC_START_FRAME Applies only to isochronous requests and
specifies that a request be started at a
given frame number. The starting frame
number is provided in the isoc_frame_no
field of the usb_isoc_req_t. Please see
usb_isoc_request(9S) for more information
about isochronous requests.
USB_ATTRS_ISOC_START_FRAME can be used to
delay a transfer by a few frames, allow‐
ing transfers to an endpoint to sync up
with another source. (For example, sync‐
ing up audio endpoints to a video
source.) The number of a suitable start‐
ing frame in the near future can be found
by adding an offset number of frames
(usually between four and ten) to the
current frame number returned from
usb_get_current_frame_number(9F). Note
that requests with starting frames which
have passed are rejected.
USB_ATTRS_ISOC_XFER_ASAP Applies only to isochronous requests and
specifies that a request start as soon as
possible. The host controller driver
picks a starting frame number which imme‐
diately follows the last frame of the
last queued request. The isoc_frame_no of
the usb_isoc_req_t is ignored. Please see
usb_isoc_request(9S) for more information
about isochronous requests.
USB_ATTRS_BULK_STREAM Applies only to bulk requests. This flag
specifies streams to be used.
EXAMPLES
/*
* Allocate, initialize and issue a synchronous bulk-IN request.
* Allow for short transfers.
*/
struct buf *bp;
usb_bulk_req_t bulk_req;
mblk_t *mblk;
bulk_req = usb_alloc_bulk_req(dip, bp->b_bcount, USB_FLAGS_SLEEP);
bulk_req->bulk_attributes =
USB_ATTRS_AUTOCLEARING | USB_ATTRS_SHORT_XFER_OK;
if ((rval = usb_pipe_bulk_xfer(pipe, bulk_req, USB_FLAGS_SLEEP)) !=
USB_SUCCESS) {
cmn_err (CE_WARN, "%s%d: Error reading bulk data.",
ddi_driver_name(dip), ddi_get_instance(dip));
}
mblk = bulk_req->bulk_data;
bcopy(mblk->rptr, buf->b_un.b_addr, mblk->wptr - mblk->rptr);
bp->b_resid = bp->b_count - (mblk->wptr = mblk->rptr);
...
...
----
usb_pipe_handle_t handle;
usb_frame_number_t offset = 10;
usb_isoc_req_t *isoc_req;
isoc_req = usb_alloc_isoc_req(...);
...
...
isoc_req->isoc_frame_no = usb_get_current_frame_number(dip) + offset;
isoc_req->isoc_attributes = USB_ATTRS_ISOC_START_FRAME;
...
...
if (usb_pipe_isoc_xfer(handle, isoc_req, 0) != USB_SUCCESS) {
...
}
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ ArchitecturePCI-based systems _ Interface Stability‐
Committed _ Availabilitysystem/io/usb
SEE ALSO
usb_alloc_request(9F), usb_get_current_frame_number(9F),
usb_pipe_bulk_xfer(9F), usb_pipe_ctrl_xfer(9F), usb_pipe_intr_xfer(9F),
usb_pipe_isoc_xfer(9F), usb_bulk_request(9S), usb_callback_flags(9S),
usb_completion_reason(9S), usb_ctrl_request(9S), usb_intr_request(9S),
usb_isoc_request(9S)
Oracle Solaris 11.4 13 Nov 2020
usb_request_attributes(9S)