| .. | .. |
|---|
| 14 | 14 | Each /dev/fw* is associated with one IEEE 1394 node, which can |
|---|
| 15 | 15 | be remote or local nodes. Operations on a /dev/fw* file have |
|---|
| 16 | 16 | different scope: |
|---|
| 17 | + |
|---|
| 17 | 18 | - The 1394 node which is associated with the file: |
|---|
| 19 | + |
|---|
| 18 | 20 | - Asynchronous request transmission |
|---|
| 19 | 21 | - Get the Configuration ROM |
|---|
| 20 | 22 | - Query node ID |
|---|
| 21 | 23 | - Query maximum speed of the path between this node |
|---|
| 22 | 24 | and local node |
|---|
| 25 | + |
|---|
| 23 | 26 | - The 1394 bus (i.e. "card") to which the node is attached to: |
|---|
| 27 | + |
|---|
| 24 | 28 | - Isochronous stream transmission and reception |
|---|
| 25 | 29 | - Asynchronous stream transmission and reception |
|---|
| 26 | 30 | - Asynchronous broadcast request transmission |
|---|
| .. | .. |
|---|
| 31 | 35 | manager |
|---|
| 32 | 36 | - Query cycle time |
|---|
| 33 | 37 | - Bus reset initiation, bus reset event reception |
|---|
| 38 | + |
|---|
| 34 | 39 | - All 1394 buses: |
|---|
| 40 | + |
|---|
| 35 | 41 | - Allocation of IEEE 1212 address ranges on the local |
|---|
| 36 | 42 | link layers, reception of inbound requests to such |
|---|
| 37 | 43 | an address range, asynchronous response transmission |
|---|
| .. | .. |
|---|
| 43 | 49 | userland implement different access permission models, some |
|---|
| 44 | 50 | operations are restricted to /dev/fw* files that are associated |
|---|
| 45 | 51 | with a local node: |
|---|
| 52 | + |
|---|
| 46 | 53 | - Addition of descriptors or directories to the local |
|---|
| 47 | 54 | nodes' Configuration ROM |
|---|
| 48 | 55 | - PHY packet transmission and reception |
|---|
| .. | .. |
|---|
| 55 | 62 | The following file operations are supported: |
|---|
| 56 | 63 | |
|---|
| 57 | 64 | open(2) |
|---|
| 58 | | - Currently the only useful flags are O_RDWR. |
|---|
| 65 | + Currently the only useful flags are O_RDWR. |
|---|
| 59 | 66 | |
|---|
| 60 | 67 | ioctl(2) |
|---|
| 61 | | - Initiate various actions. Some take immediate effect, others |
|---|
| 62 | | - are performed asynchronously while or after the ioctl returns. |
|---|
| 63 | | - See the inline documentation in <linux/firewire-cdev.h> for |
|---|
| 64 | | - descriptions of all ioctls. |
|---|
| 68 | + Initiate various actions. Some take immediate effect, others |
|---|
| 69 | + are performed asynchronously while or after the ioctl returns. |
|---|
| 70 | + See the inline documentation in <linux/firewire-cdev.h> for |
|---|
| 71 | + descriptions of all ioctls. |
|---|
| 65 | 72 | |
|---|
| 66 | 73 | poll(2), select(2), epoll_wait(2) etc. |
|---|
| 67 | | - Watch for events to become available to be read. |
|---|
| 74 | + Watch for events to become available to be read. |
|---|
| 68 | 75 | |
|---|
| 69 | 76 | read(2) |
|---|
| 70 | | - Receive various events. There are solicited events like |
|---|
| 71 | | - outbound asynchronous transaction completion or isochronous |
|---|
| 72 | | - buffer completion, and unsolicited events such as bus resets, |
|---|
| 73 | | - request reception, or PHY packet reception. Always use a read |
|---|
| 74 | | - buffer which is large enough to receive the largest event that |
|---|
| 75 | | - could ever arrive. See <linux/firewire-cdev.h> for descriptions |
|---|
| 76 | | - of all event types and for which ioctls affect reception of |
|---|
| 77 | | - events. |
|---|
| 77 | + Receive various events. There are solicited events like |
|---|
| 78 | + outbound asynchronous transaction completion or isochronous |
|---|
| 79 | + buffer completion, and unsolicited events such as bus resets, |
|---|
| 80 | + request reception, or PHY packet reception. Always use a read |
|---|
| 81 | + buffer which is large enough to receive the largest event that |
|---|
| 82 | + could ever arrive. See <linux/firewire-cdev.h> for descriptions |
|---|
| 83 | + of all event types and for which ioctls affect reception of |
|---|
| 84 | + events. |
|---|
| 78 | 85 | |
|---|
| 79 | 86 | mmap(2) |
|---|
| 80 | | - Allocate a DMA buffer for isochronous reception or transmission |
|---|
| 81 | | - and map it into the process address space. The arguments should |
|---|
| 82 | | - be used as follows: addr = NULL, length = the desired buffer |
|---|
| 83 | | - size, i.e. number of packets times size of largest packet, |
|---|
| 84 | | - prot = at least PROT_READ for reception and at least PROT_WRITE |
|---|
| 85 | | - for transmission, flags = MAP_SHARED, fd = the handle to the |
|---|
| 86 | | - /dev/fw*, offset = 0. |
|---|
| 87 | + Allocate a DMA buffer for isochronous reception or transmission |
|---|
| 88 | + and map it into the process address space. The arguments should |
|---|
| 89 | + be used as follows: addr = NULL, length = the desired buffer |
|---|
| 90 | + size, i.e. number of packets times size of largest packet, |
|---|
| 91 | + prot = at least PROT_READ for reception and at least PROT_WRITE |
|---|
| 92 | + for transmission, flags = MAP_SHARED, fd = the handle to the |
|---|
| 93 | + /dev/fw*, offset = 0. |
|---|
| 87 | 94 | |
|---|
| 88 | 95 | Isochronous reception works in packet-per-buffer fashion except |
|---|
| 89 | 96 | for multichannel reception which works in buffer-fill mode. |
|---|
| 90 | 97 | |
|---|
| 91 | 98 | munmap(2) |
|---|
| 92 | | - Unmap the isochronous I/O buffer from the process address space. |
|---|
| 99 | + Unmap the isochronous I/O buffer from the process address space. |
|---|
| 93 | 100 | |
|---|
| 94 | 101 | close(2) |
|---|
| 95 | | - Besides stopping and freeing I/O contexts that were associated |
|---|
| 96 | | - with the file descriptor, back out any changes to the local |
|---|
| 97 | | - nodes' Configuration ROM. Deallocate isochronous channels and |
|---|
| 98 | | - bandwidth at the IRM that were marked for kernel-assisted |
|---|
| 99 | | - re- and deallocation. |
|---|
| 102 | + Besides stopping and freeing I/O contexts that were associated |
|---|
| 103 | + with the file descriptor, back out any changes to the local |
|---|
| 104 | + nodes' Configuration ROM. Deallocate isochronous channels and |
|---|
| 105 | + bandwidth at the IRM that were marked for kernel-assisted |
|---|
| 106 | + re- and deallocation. |
|---|
| 100 | 107 | |
|---|
| 101 | | -Users: libraw1394 |
|---|
| 102 | | - libdc1394 |
|---|
| 103 | | - libhinawa |
|---|
| 108 | +Users: libraw1394; |
|---|
| 109 | + libdc1394; |
|---|
| 110 | + libhinawa; |
|---|
| 104 | 111 | tools like linux-firewire-utils, fwhack, ... |
|---|