diff options
Diffstat (limited to 'plugins/ymtc')
-rw-r--r-- | plugins/ymtc/ymtc-nvme.c | 35 | ||||
-rw-r--r-- | plugins/ymtc/ymtc-nvme.h | 1 | ||||
-rw-r--r-- | plugins/ymtc/ymtc-utils.h | 1 |
3 files changed, 27 insertions, 10 deletions
diff --git a/plugins/ymtc/ymtc-nvme.c b/plugins/ymtc/ymtc-nvme.c index dd5f004..cfbf6a6 100644 --- a/plugins/ymtc/ymtc-nvme.c +++ b/plugins/ymtc/ymtc-nvme.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0-or-later #include <fcntl.h> #include <errno.h> #include <stdio.h> @@ -30,9 +31,21 @@ static int show_ymtc_smart_log(int fd, __u32 nsid, const char *devname, u8 *nm = malloc(NM_SIZE * sizeof(u8)); u8 *raw = malloc(RAW_SIZE * sizeof(u8)); + if (!nm) { + if (raw) + free(raw); + return -1; + } + if (!raw) { + free(nm); + return -1; + } err = nvme_identify_ctrl(fd, &ctrl); - if (err) + if (err) { + free(nm); + free(raw); return err; + } snprintf(fw_ver, sizeof(fw_ver), "%c.%c%c.%c%c%c%c", ctrl.fr[0], ctrl.fr[1], ctrl.fr[2], ctrl.fr[3], @@ -51,17 +64,17 @@ static int show_ymtc_smart_log(int fd, __u32 nsid, const char *devname, /* 02 SI_VD_WEARLEVELING_COUNT */ get_ymtc_smart_info(smart, SI_VD_WEARLEVELING_COUNT, nm, raw); printf("wear_leveling : %3d%% min: %u, max: %u, avg: %u\n", *nm, - *raw, *(raw+2), *(raw+4)); + *(uint16_t *)raw, *(uint16_t *)(raw+2), *(uint16_t *)(raw+4)); /* 03 SI_VD_E2E_DECTECTION_COUNT */ get_ymtc_smart_info(smart, SI_VD_E2E_DECTECTION_COUNT, nm, raw); printf("end_to_end_error_detection_count: %3d%% %"PRIu64"\n", *nm, int48_to_long(raw)); /* 04 SI_VD_PCIE_CRC_ERR_COUNT */ get_ymtc_smart_info(smart, SI_VD_PCIE_CRC_ERR_COUNT, nm, raw); - printf("crc_error_count : %3d%% %"PRIu64"\n", *nm, int48_to_long(raw)); + printf("crc_error_count : %3d%% %"PRIu32"\n", *nm, *(uint32_t *)raw); /* 08 SI_VD_THERMAL_THROTTLE_STATUS */ get_ymtc_smart_info(smart, SI_VD_THERMAL_THROTTLE_STATUS, nm, raw); - printf("thermal_throttle_status : %3d%% %"PRIu64"%%, cnt: %"PRIu64"\n", *nm, - int48_to_long(raw), int48_to_long(raw+1)); + printf("thermal_throttle_status : %3d%% %d%%, cnt: %"PRIu32"\n", *nm, + *raw, *(uint32_t *)(raw+1)); /* 11 SI_VD_TOTAL_WRITE */ get_ymtc_smart_info(smart, SI_VD_TOTAL_WRITE, nm, raw); printf("nand_bytes_written : %3d%% sectors: %"PRIu64"\n", *nm, int48_to_long(raw)); @@ -74,15 +87,15 @@ static int show_ymtc_smart_log(int fd, __u32 nsid, const char *devname, /* 15 SI_VD_TEMPT_SINCE_BORN */ get_ymtc_smart_info(smart, SI_VD_TEMPT_SINCE_BORN, nm, raw); printf("tempt_since_born : %3d%% max: %u, min: %u, curr: %u\n", *nm, - *raw, *(raw+2), *(raw+4)); + *(uint16_t *)raw-273, *(uint16_t *)(raw+2)-273, *(int16_t *)(raw+4)-273); /* 16 SI_VD_POWER_CONSUMPTION */ get_ymtc_smart_info(smart, SI_VD_POWER_CONSUMPTION, nm, raw); printf("power_consumption : %3d%% max: %u, min: %u, curr: %u\n", *nm, - *raw, *(raw+2), *(raw+4)); + *(uint16_t *)raw, *(uint16_t *)(raw+2), *(uint16_t *)(raw+4)); /* 17 SI_VD_TEMPT_SINCE_BOOTUP */ get_ymtc_smart_info(smart, SI_VD_TEMPT_SINCE_BOOTUP, nm, raw); - printf("tempt_since_bootup : %3d%% max: %u, min: %u, curr: %u\n", *nm, *raw, - *(raw+2), *(raw+4)); + printf("tempt_since_bootup : %3d%% max: %u, min: %u, curr: %u\n", *nm, + *(uint16_t *)raw-273, *(uint16_t *)(raw+2)-273, *(uint16_t *)(raw+4)-273); /* 18 SI_VD_POWER_LOSS_PROTECTION */ get_ymtc_smart_info(smart, SI_VD_POWER_LOSS_PROTECTION, nm, raw); printf("power_loss_protection : %3d%% %"PRIu64"\n", *nm, int48_to_long(raw)); @@ -91,7 +104,8 @@ static int show_ymtc_smart_log(int fd, __u32 nsid, const char *devname, printf("read_fail : %3d%% %"PRIu64"\n", *nm, int48_to_long(raw)); /* 20 SI_VD_THERMAL_THROTTLE_TIME */ get_ymtc_smart_info(smart, SI_VD_THERMAL_THROTTLE_TIME, nm, raw); - printf("thermal_throttle_time : %3d%% %"PRIu64"\n", *nm, int48_to_long(raw)); + printf("thermal_throttle_time : %3d%% %u, time: %"PRIu32"\n", *nm, + *raw, *(uint32_t *)(raw+1)); /* 21 SI_VD_FLASH_MEDIA_ERROR */ get_ymtc_smart_info(smart, SI_VD_FLASH_MEDIA_ERROR, nm, raw); printf("flash_error_media_count : %3d%% %"PRIu64"\n", *nm, int48_to_long(raw)); @@ -140,5 +154,6 @@ static int get_additional_smart_log(int argc, char **argv, struct command *cmd, if (err > 0) nvme_show_status(err); + close(fd); return err; } diff --git a/plugins/ymtc/ymtc-nvme.h b/plugins/ymtc/ymtc-nvme.h index c1ebc11..df5d598 100644 --- a/plugins/ymtc/ymtc-nvme.h +++ b/plugins/ymtc/ymtc-nvme.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ #undef CMD_INC_FILE #define CMD_INC_FILE plugins/ymtc/ymtc-nvme diff --git a/plugins/ymtc/ymtc-utils.h b/plugins/ymtc/ymtc-utils.h index 700c764..39f79cb 100644 --- a/plugins/ymtc/ymtc-utils.h +++ b/plugins/ymtc/ymtc-utils.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef __YMTC_UTILS_H__ #define __YMTC_UTILS_H__ |