Commit | Line | Data |
---|---|---|
6dc2ca62 MD |
1 | Common Trace Format - Standards, Extensions and Libraries |
2 | Mathieu Desnoyers | |
3 | September 26, 2010 | |
4 | ||
5 | This document describes the CTF library dependencies on standards, extensions | |
6 | and libraries. | |
7 | ||
8 | ||
9 | ** Standards | |
10 | ||
11 | * C99 | |
12 | ||
13 | This library is C99 compliant. A non-documented non-compliance should be | |
14 | reported as a bug. See the ISO/IEC 9899:TC2 publication: | |
15 | ||
16 | http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf | |
17 | ||
18 | ||
19 | * IEEE 754-2008 | |
20 | ||
21 | The IEEE 754-2008 standard is used for binary floating point arithmetic | |
22 | representation. See: | |
23 | ||
24 | http://grouper.ieee.org/groups/754/ | |
25 | ||
26 | ||
27 | * GNU/C extensions | |
28 | ||
29 | This library uses some widely GNU/C extensions widely adopted by compilers. | |
30 | For detail, see: | |
31 | ||
32 | http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions | |
33 | ||
34 | ||
35 | ||
36 | ** Non-standard Dependencies | |
37 | ||
38 | In some cases, standards do not provide the required primitives to write | |
39 | portable code; these are listed here. | |
40 | ||
41 | ||
42 | * Non-standard endian.h | |
43 | ||
44 | endian.h is used to provide the following definitions: | |
45 | ||
46 | #define LITTLE_ENDIAN 1234 | |
47 | #define BIG_ENDIAN 4321 | |
48 | #define BYTE_ORDER /* Your architecture: BIG_ENDIAN or LITTLE_ENDIAN */ | |
49 | ||
50 | ||
51 | * Bitfields | |
52 | ||
53 | The ISO/IEC 9899 standard leaves bitfields implementation defined, which is | |
54 | unacceptable for portability of this library. Section 6.7.2.1 - "Structure and | |
55 | union specifiers", Semantic 10 specifically indicates that padding and order of | |
56 | bit-fields allocation within a unit is implementation-defined. | |
57 | ||
58 | This is why this library provides the bitfield.h header (under the MIT license), | |
59 | which specifies bitfields write primitives that uses the same field order as the | |
60 | GNU/C compiler, but does not require any padding for fields spreading across | |
61 | units. This is therefore a superset of the GNU/C bitfields, which can be dealt | |
62 | with by detecting C structure padding manually given the bit offset and | |
63 | bit-field size as well as the unit size. | |
64 | ||
65 | ||
66 | ** Libraries | |
67 | ||
68 | * The GLib library of C routines | |
69 | ||
70 | The library glib 2 is used for its basic data structures. See | |
71 | ||
72 | http://library.gnome.org/devel/glib/2.24/glib-data-types.html |