The serial ops used a legacy calling convention that passed in just the pointer to the userdata pointer (ie the first argument to the functions was "void **userdata"). That's actually very inconvenient, because the custom IO data can not only contain other interesting information that was filled in by the custom IO provider, it also made it harder to chain these things together, as exemplified by the core to emulate serial over the packet interface in the subsurface bluetooth code. This also adds the 'dc_context_t' field that is passed to the packet routine open. That can allow the open routine to override the 'custom_io' details of the context at open time (to allow nested custom_io operation). Note that callers of the open function need to be aware that the 'custom_io' can be changed by the act of opening a custom_io, and the value shouldn't be cached in some local variable. Finally, this adds a new user-supplied opaque pointer dc_user_device_t *user_device; to the custom_io descriptor. The 'user_device' data is filled in when registering the custom_io with data that the custom IO open() routines can use. This is different from the existing 'userdata' in that the 'user_device' is filled in before dc_open_device() is called (and "open" can then use it to limit what kinds of devices it looks for, for example). In contrast, the existing 'userdata' field is filled in by the "xyz_open()" routines, and contains the data necessary for the IO itself. The SSRF_CUSTOM_IO define is updated to v2 to indicate the new interfaces. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Overview ======== Libdivecomputer is a cross-platform and open source library for communication with dive computers from various manufacturers. The official web site is: http://www.libdivecomputer.org/ The sourceforge project page is: http://sourceforge.net/projects/libdivecomputer/ Installation ============ On UNIX-like systems (including Linux, Mac OS X, MinGW), use the autotools based build system. Run the following commands from the top directory (containing this file) to configure, build and install the library and utilities: $ ./configure $ make $ make install If you downloaded the libdivecomputer source code directly from the git source code repository, then you need to create the configure script as the first step: $ autoreconf --install To uninstall libdivecomputer again, run: $ make uninstall Support ======= Please send bug reports, feedback or questions to the mailing list: http://libdivecomputer.org/cgi-bin/mailman/listinfo/devel or contact me directly: jef@libdivecomputer.org License ======= Libdivecomputer is free software, released under the terms of the GNU Lesser General Public License (LGPL). You can find a copy of the license in the file COPYING.
Description
Languages
C
98.3%
M4
1.2%
Makefile
0.5%