libraw1394 fork
d3ace3dfb4
The firewire-core (juju) backend of libraw1394 installs address range mappings on the default ioctl fd, i.e. a file that represents a random device on the chosen port. It receives incoming requests from any sender node via this address range mapping. Due to a kernel ABI limitation, the sender node ID is not known though. So far libraw1394 simply assumed the node ID of the device that provided the default ioctl fd. This only works if there is only one accessible fd on the entire bus. This limitation caused for example libffado to fail to work with another AV/C or IIDC device attached to the bus, because node IDs of FCP requests and FCP responses did not match since the latter were wrong. FCP clients which did not check sender node IDs were seemingly not affected by this bug. The bug is fixed by a kernel ABI extension in Linux 2.6.36. This libraw1394 change implements libraw1394's counterpart to this ABI extension. Hence this libraw1394 fix requires - kernel-headers 2.6.36 or later at build time of libraw1394 - kernel 2.6.36 or later at runtime. Otherwise, libraw1394 simply degrades to the faulty previous behaviour. Side note: The change of IMPLEMENTED_CDEV_ABI_VERSION to 4 requires that we fill in struct fw_cdev_allocate.region_end which was added in the ABI v4. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> |
||
---|---|---|
debian | ||
doc | ||
src | ||
tools | ||
AUTHORS | ||
autogen.sh | ||
ChangeLog | ||
configure.ac | ||
COPYING.LIB | ||
INSTALL | ||
libraw1394.pc.in | ||
libraw1394.spec.in | ||
Makefile.am | ||
NEWS | ||
README |
libraw1394 ========== 1. About libraw1394 libraw1394 is the only supported interface to the kernel side raw1394 of the Linux IEEE-1394 subsystem, which provides direct access to the connected 1394 buses to user space. Through libraw1394/raw1394, applications can directly send to and receive from other nodes without requiring a kernel driver for the protocol in question. The reason for making a library the interface to the kernel is to avoid a program dependancy on the kernel version, which would hinder development and optimization of raw1394. If development changed the protocol and made it incompatible with previous versions only the libraw1394 has to be upgraded to match the kernel version (instead of all applications). 2. Copyleft libraw1394 itself is licensed under the Lesser General Public License (short LGPL, see file COPYING.LIB in the source distribution). Other files in the source archives not belonging to but being part of the build procedure of libraw1394 are under their own licenses, as stated at the top of the individual files. 3. API documentation Finally there is something, in the doc subdirectory. The file is libraw1394.sgml (it's Docbook format), and there are preformatted PostScript and HTML available. This documentation is not complete yet. 4. Multithreading This library should be multithreadable with the restriction that one raw1394handle_t may be used only within a single thread. Multiple threads operating on the same handle would royally mess up the kernel-user protocol. Simply use separate handles for each thread in which you need to use libraw1394. 5. Pkg-config The library comes with a pkg-config .pc file, so you can check for libraw1394 and its version in your configure script. For example, here is how to use the autoconf macro: PKG_CHECK_MODULES(LIBRAW1394, libraw1394 >= 1.1.0) This macro sets the variables LIBRAW1394_CFLAGS and LIBRAW1394_LIBS. You have to include those into your build variables so that the build process correctly links with libraw1394. 6. Contact Send questions, suggestions, bug reports and patches to the mailing list linux1394-devel@lists.sourceforge.net. This list is open for posting without prior subscription, and replies will usually be Cc'd to you. Maintainer of libraw1394 is currently Dan Dennedy. See the file AUTHORS for a complete list of contributors to libraw1394. Visit http://ieee1394.wiki.kernel.org/ for more information, including links to mailing list subscription interfaces, to list archives, and to the libraw1394 source repository.