diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 19:41:32 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 19:41:32 +0000 |
commit | f26f66d866ba1a9f3204e6fdfe2b07e67b5492ad (patch) | |
tree | c953c007cbe4f60a147ab62f97937d58abb2e9ca /util/types.h | |
parent | Initial commit. (diff) | |
download | nvme-cli-f26f66d866ba1a9f3204e6fdfe2b07e67b5492ad.tar.xz nvme-cli-f26f66d866ba1a9f3204e6fdfe2b07e67b5492ad.zip |
Adding upstream version 2.8.upstream/2.8
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'util/types.h')
-rw-r--r-- | util/types.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/util/types.h b/util/types.h new file mode 100644 index 0000000..595958b --- /dev/null +++ b/util/types.h @@ -0,0 +1,60 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +#ifndef _MISC_H +#define _MISC_H + +/* type conversion helpers */ + +#include <stdint.h> +#include <linux/types.h> + +#include <libnvme.h> + +#define ABSOLUTE_ZERO_CELSIUS -273 + +static inline long kelvin_to_celsius(long t) +{ + return t + ABSOLUTE_ZERO_CELSIUS; +} + +/* uint128_t is not always available, define our own. */ +union nvme_uint128 { + __u8 bytes[16]; + __u32 words[4]; /* [0] is most significant word */ +}; + +typedef union nvme_uint128 nvme_uint128_t; + +nvme_uint128_t le128_to_cpu(__u8 *data); +long double int128_to_double(__u8 *data); +uint64_t int48_to_long(__u8 *data); + +char *uint128_t_to_string(nvme_uint128_t val); +char *uint128_t_to_l10n_string(nvme_uint128_t val); +char *uint128_t_to_si_string(nvme_uint128_t val, __u32 bytes_per_unit); +const char *util_uuid_to_string(unsigned char uuid[NVME_UUID_LEN]); +const char *util_fw_to_string(char *c); + +/** + * @brief convert time_t format time to a human readable string + * + * @param time, input time_t time + * @param ts_buf, output time string + * @Note, time string format is "Y-M-D|H:M:S:MS" + * + * @return 0 success + */ +int convert_ts(time_t time, char *ts_buf); + +/** + * @brief print once a progress of spinner to stdout + * the output will be looks like if disp_name is "LogDump" and percent is 0.5 + * LogDump [========================- ] 50% + + * + * @param disp_name, const string displayed before spiner + * @param percent [0, 1.0] about the progress + * + */ +void util_spinner(const char *disp_name, float percent); + +#endif /* _MISC_H */ |