libdc1394
2.2.6
|
#include <dc1394/juju/firewire-cdev.h>
struct fw_cdev_allocate_iso_resource - (De)allocate a channel or bandwidth @closure: Passed back to userspace in correponding iso resource events @channels: Isochronous channels of which one is to be (de)allocated @bandwidth: Isochronous bandwidth units to be (de)allocated @handle: Handle to the allocation, written by the kernel (only valid in case of FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctls)
The FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctl initiates allocation of an isochronous channel and/or of isochronous bandwidth at the isochronous resource manager (IRM). Only one of the channels specified in @channels is allocated. An FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED is sent after communication with the IRM, indicating success or failure in the event data. The kernel will automatically reallocate the resources after bus resets. Should a reallocation fail, an FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event will be sent. The kernel will also automatically deallocate the resources when the file descriptor is closed.
The FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE ioctl can be used to initiate deallocation of resources which were allocated as described above. An FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
The FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE ioctl is a variant of allocation without automatic re- or deallocation. An FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED event concludes this operation, indicating success or failure in its data.
The FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE ioctl works like FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE except that resources are freed instead of allocated. An FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
To summarize, FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE allocates iso resources for the lifetime of the fd or @handle. In contrast, FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE allocates iso resources for the duration of a bus generation.
@channels is a host-endian bitfield with the least significant bit representing channel 0 and the most significant bit representing channel 63: 1ULL << c for each channel c that is a candidate for (de)allocation.
@bandwidth is expressed in bandwidth allocation units, i.e. the time to send one quadlet of data (payload or header data) at speed S1600.