Visit The New, Modern Unix Linux Community

Linux and UNIX Man Pages

Test Your Knowledge in Computers #981
Difficulty: Medium
The follow operating systems are all examples of monolithic kernels: OpenVMS, Linux, BSD, SunOS, AIX, and MULTICS.
True or False?
Linux & Unix Commands - Search Man Pages

sd_id128_get_machine(3) [centos man page]

SD_ID128_GET_MACHINE(3) 				       sd_id128_get_machine					   SD_ID128_GET_MACHINE(3)

NAME
sd_id128_get_machine, sd_id128_get_boot - Retrieve 128-bit IDs SYNOPSIS
#include <systemd/sd-id128.h> int sd_id128_get_machine(sd_id128_t* ret); int sd_id128_get_boot(sd_id128_t* ret); DESCRIPTION
sd_id128_get_machine() returns the machine ID of the executing host. This reads and parses the machine-id(5) file. This function caches the machine ID internally to make retrieving the machine ID a cheap operation. sd_id128_get_boot() returns the boot ID of the executing kernel. This reads and parses the /proc/sys/kernel/random/boot_id file exposed by the kernel. It is randomly generated early at boot and is unique for every running kernel instance. See random(4) for more information. This function also internally caches the returned ID to make this call a cheap operation. Note that sd_id128_get_boot() always returns a UUID v4 compatible ID. sd_id128_get_machine() will also return a UUID v4-compatible ID on new installations but might not on older. It is possible to convert the machine ID into a UUID v4-compatible one. For more information, see machine-id(5). For more information about the "sd_id128_t" type see sd-id128(3). RETURN VALUE
The two calls return 0 on success (in which case ret is filled in), or a negative errno-style error code. NOTES
The sd_id128_get_machine() and sd_id128_get_boot() interfaces are available as a shared library, which can be compiled and linked to with the "libsystemd-id128" pkg-config(1) file. SEE ALSO
systemd(1), sd-id128(3), machine-id(5), random(4), sd_id128_randomize(3) systemd 208 SD_ID128_GET_MACHINE(3)

Check Out this Related Man Page

SD-ID128(3)							     sd-id128							       SD-ID128(3)

NAME
sd-id128, sd_id128_t, SD_ID128_MAKE, SD_ID128_CONST_STR, SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL, sd_id128_equal - APIs for processing 128-bit IDs SYNOPSIS
#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[1] but use a simpler string format. 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_string(3), sd_id128_randomize(3) and sd_id128_get_machine(3) for more information about the implemented functions. 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 two 64-bit words. It is generally safer to access the ID components by their 8-bit array to avoid endianness 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 denote a constant 128-bit ID in source code. A commonly used idiom is to assign a name to a 128-bit ID 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_CONST_STR() may be used to convert constant 128-bit IDs into constant strings for output. The following example code will output the string "fc2e22bc6ee647b6b90729ab34a250b1": int main(int argc, char *argv[]) { puts(SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP)); } SD_ID128_FORMAT_STR and SD_ID128_FORMAT_VAL() may be used to format a 128-bit ID in a printf(3) 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 ". ", 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 journalctl(1)'s --new-id option. NOTES
These APIs are implemented as a shared library, which can be compiled and linked to with the "libsystemd-id128" pkg-config(1) file. SEE ALSO
systemd(1), sd_id128_to_string(3), sd_id128_randomize(3), sd_id128_get_machine(3), printf(3), journalctl(1), sd-journal(7), pkg-config(1), machine-id(5) NOTES
1. RFC 4122 https://tools.ietf.org/html/rfc4122 systemd 208 SD-ID128(3)

Featured Tech Videos