Go to main content

man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: July 2017
 
 

usb_get_current_frame_number(9F)

Name

usb_get_current_frame_number - Return current logical usb frame number

Synopsis

#include <sys/usb/usba.h>

usb_frame_number_t usb_get_current_frame_number(dev_info_t *dip);

Interface Level

Solaris DDI specific (Solaris DDI)

Parameters

dip

Pointer to the device's dev_info structure.

Description

The usb_get_current_frame_number() function retrieves the current logical USB frame number.

Isochronous requests can be started on a particular numbered frame. An offset number of frames (typically between 4 and 10) can be added to the current logical frame number to specify the number of an upcoming frame to start an isochronous request.

The USB specification requires that the frame frequency (the period between start-of-frame packets) is one millisecond. The Solaris operating environment USB implementation uses a running counter of the number of milliseconds since boot as the current logical frame number.

Return Values

On success, the usb_get_current_frame_number() function returns the current USB frame number. On failure it returns 0. The function fails if dip is NULL.

Context

May be called from user, kernel or interrupt context.

Examples


    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(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Architecture
PCI-based systems
Interface Stability
Committed
Availability
system/io/usb

See Also

attributes(5), usb_alloc_isoc_req(9F), usb_get_max_pkts_per_isoc_request(9F), usb_pipe_isoc_xfer(9F), usb_pipe_get_max_bulk_transfer_size(9F), usb_isoc_request(9S)