From 12355095821fc17529af5b6eaefa31c3c520be39 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 6 Jul 2012 17:50:00 +0200 Subject: man: document libsystemd-id128 --- man/sd-id128.xml | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 man/sd-id128.xml (limited to 'man/sd-id128.xml') diff --git a/man/sd-id128.xml b/man/sd-id128.xml new file mode 100644 index 0000000000..cbc130d751 --- /dev/null +++ b/man/sd-id128.xml @@ -0,0 +1,168 @@ + + + + + + + + + sd-id128 + systemd + + + + Developer + Lennart + Poettering + lennart@poettering.net + + + + + + sd-id128 + 7 + + + + sd-id128 + sd_id128_t + SD_ID128_MAKE + SD_ID128_FORMAT_STR + SD_ID128_FORMAT_VAL + sd_id128_equal + APIs for processing 128 bit IDs + + + + + #include <systemd/sd-id128.h> + + + + pkg-config --cflags --libs libsystemd-id128 + + + + + + Description + + sd-id128.h provides APIs to + process and generate 128 bit ID values. The 128 bit ID + values processed and generated by these APIs are a + generalization of OSF UUIDs as defined by RFC + 4122, though use a simpler string + formatting. These functions impose no structure on the + used IDs, much unlike OSF UUIDs or Microsoft GUIDs, + but are fully compatible with those types of IDs. + + + See + sd_id128_to_string3 and + sd_id128_randomize3 + for more information about the functions + implemented. + + A 128 bit ID is implemented as the following + union type: + + typedef union sd_id128 { + uint8_t bytes[16]; + uint64_t qwords[2]; +} sd_id128_t; + + This union type allows accessing the 128 bit ID + as 16 separate bytes or 2 64 bit words. It is generally + safer to access the ID components by their 8 bit array + to avoid endianess issues. This union is intended to + be passed call-by-value (as opposed to + call-by-reference) and may be directly manipulated by + clients. + + A couple of macros are defined to denote and + decode 128 bit IDs: + + SD_ID128_MAKE() may be used + to write a 128 bit ID in source code. A commonly used + idiom is to give 128 bit IDs names using this macro: + + #define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1) + + SD_ID128_FORMAT_STR and + SD_ID128_FORMAT_VAL() may be used + to format a 128 bit ID in a + printf3 + format string, as shown in the following + example: + + int main(int argc, char *argv[]) { + sd_id128_t id; + id = SD_ID128_MAKE(ee,89,be,71,bd,6e,43,d6,91,e6,c5,5d,eb,03,02,07); + printf("The ID encoded in this C file is " SD_ID128_FORMAT_STR ".\n", SD_ID128_FORMAT_VAL(id)); + return 0; +} + + Use sd_id128_equal() to compare two 128 bit IDs: + + int main(int argc, char *argv[]) { + sd_id128_t a, b, c; + a = SD_ID128_MAKE(ee,89,be,71,bd,6e,43,d6,91,e6,c5,5d,eb,03,02,07); + b = SD_ID128_MAKE(f2,28,88,9c,5f,09,44,15,9d,d7,04,77,58,cb,e7,3e); + c = a; + assert(sd_id128_equal(a, c)); + assert(!sd_id128_equal(a, b)); + return 0; +} + + Note that new, randomized IDs may be generated + with + journalctl1's + --new-id command. + + + + Notes + + These APIs are implemented as shared library, + which can be compiled and linked to with the + libsystemd-id128 + pkg-config1 + file. + + + + + See Also + + systemd1, + sd_id128_to_string3, + sd_id128_randomize3, + printf3, + journalctl1, + sd-journal7, + pkg-config1, + machine-id5 + + + + -- cgit v1.2.3-54-g00ecf