X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Fuuid.hpp;fp=src%2Fcommon%2Fuuid.hpp;h=431490ef28a2ed7c468ef5c9a7b7862e00cd5de9;hb=c9e313bc594f40a86eed237dce222c0fc99c957f;hp=0000000000000000000000000000000000000000;hpb=4878de5c7deb512bbdac4fdfc498907efa06fb7c;p=lttng-tools.git diff --git a/src/common/uuid.hpp b/src/common/uuid.hpp new file mode 100644 index 000000000..431490ef2 --- /dev/null +++ b/src/common/uuid.hpp @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2011 Mathieu Desnoyers + * + * SPDX-License-Identifier: MIT + * + */ + +#ifndef LTTNG_UUID_H +#define LTTNG_UUID_H + +#include +#include +#include +#include + +/* + * Includes final \0. + */ +#define LTTNG_UUID_STR_LEN 37 +#define LTTNG_UUID_LEN 16 +#define LTTNG_UUID_VER 4 + +#define LTTNG_UUID_FMT \ + "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "-%02" SCNx8 \ + "%02" SCNx8 "-%02" SCNx8 "%02" SCNx8 "-%02" SCNx8 "%02" SCNx8 \ + "-%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 "%02" SCNx8 \ + "%02" SCNx8 + +#define LTTNG_UUID_FMT_VALUES(uuid) \ + (uuid)[0], (uuid)[1], (uuid)[2], (uuid)[3], (uuid)[4], (uuid)[5], \ + (uuid)[6], (uuid)[7], (uuid)[8], (uuid)[9], (uuid)[10], (uuid)[11], \ + (uuid)[12], (uuid)[13], (uuid)[14], (uuid)[15] + +#define LTTNG_UUID_SCAN_VALUES(uuid) \ + &(uuid)[0], &(uuid)[1], &(uuid)[2], &(uuid)[3], &(uuid)[4], &(uuid)[5], \ + &(uuid)[6], &(uuid)[7], &(uuid)[8], &(uuid)[9], &(uuid)[10], &(uuid)[11], \ + &(uuid)[12], &(uuid)[13], &(uuid)[14], &(uuid)[15] + +typedef uint8_t lttng_uuid[LTTNG_UUID_LEN]; + +int lttng_uuid_from_str(const char *str_in, lttng_uuid uuid_out); + +/* + * Convert a UUID to a human-readable, NULL-terminated, string of the form + * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. + * + * Assumes uuid_str is at least LTTNG_UUID_STR_LEN byte long. + */ +void lttng_uuid_to_str(const lttng_uuid uuid, char *uuid_str); + +bool lttng_uuid_is_equal(const lttng_uuid a, const lttng_uuid b); + +bool lttng_uuid_is_nil(const lttng_uuid uuid); + +void lttng_uuid_copy(lttng_uuid dst, const lttng_uuid src); + +/* + * Generate a random UUID according to RFC4122, section 4.4. + */ +int lttng_uuid_generate(lttng_uuid uuid_out); + +#endif /* LTTNG_UUID_H */