Skip to content

Commit 125027b

Browse files
committed
nvme-print: print both celsius and fahrenheit temperature values
The fahrenheit value always printed so delete the locale country check. Signed-off-by: Tokunori Ikegami <ikegami.t@gmail.com>
1 parent eb12965 commit 125027b

File tree

3 files changed

+42
-63
lines changed

3 files changed

+42
-63
lines changed

nvme-print-stdout.c

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2133,15 +2133,17 @@ static void stdout_id_ctrl_apsta(__u8 apsta)
21332133

21342134
static void stdout_id_ctrl_wctemp(__le16 wctemp)
21352135
{
2136-
printf(" [15:0] : %s (%u K)\tWarning Composite Temperature Threshold (WCTEMP)\n",
2137-
nvme_degrees_string(le16_to_cpu(wctemp)), le16_to_cpu(wctemp));
2136+
printf(" [15:0] : %s (%u K, %s)\tWarning Composite Temperature Threshold (WCTEMP)\n",
2137+
nvme_degrees_string(le16_to_cpu(wctemp)), le16_to_cpu(wctemp),
2138+
nvme_degrees_fahrenheit_string(le16_to_cpu(wctemp)));
21382139
printf("\n");
21392140
}
21402141

21412142
static void stdout_id_ctrl_cctemp(__le16 cctemp)
21422143
{
2143-
printf(" [15:0] : %s (%u K)\tCritical Composite Temperature Threshold (CCTEMP)\n",
2144-
nvme_degrees_string(le16_to_cpu(cctemp)), le16_to_cpu(cctemp));
2144+
printf(" [15:0] : %s (%u K, %s)\tCritical Composite Temperature Threshold (CCTEMP)\n",
2145+
nvme_degrees_string(le16_to_cpu(cctemp)), le16_to_cpu(cctemp),
2146+
nvme_degrees_fahrenheit_string(le16_to_cpu(cctemp)));
21452147
printf("\n");
21462148
}
21472149

@@ -2206,15 +2208,17 @@ static void stdout_id_ctrl_hctma(__le16 ctrl_hctma)
22062208

22072209
static void stdout_id_ctrl_mntmt(__le16 mntmt)
22082210
{
2209-
printf(" [15:0] : %s (%u K)\tMinimum Thermal Management Temperature (MNTMT)\n",
2210-
nvme_degrees_string(le16_to_cpu(mntmt)), le16_to_cpu(mntmt));
2211+
printf(" [15:0] : %s (%u K, %s)\tMinimum Thermal Management Temperature (MNTMT)\n",
2212+
nvme_degrees_string(le16_to_cpu(mntmt)), le16_to_cpu(mntmt),
2213+
nvme_degrees_fahrenheit_string(le16_to_cpu(mntmt)));
22112214
printf("\n");
22122215
}
22132216

22142217
static void stdout_id_ctrl_mxtmt(__le16 mxtmt)
22152218
{
2216-
printf(" [15:0] : %s (%u K)\tMaximum Thermal Management Temperature (MXTMT)\n",
2217-
nvme_degrees_string(le16_to_cpu(mxtmt)), le16_to_cpu(mxtmt));
2219+
printf(" [15:0] : %s (%u K, %s)\tMaximum Thermal Management Temperature (MXTMT)\n",
2220+
nvme_degrees_string(le16_to_cpu(mxtmt)), le16_to_cpu(mxtmt),
2221+
nvme_degrees_fahrenheit_string(le16_to_cpu(mxtmt)));
22182222
printf("\n");
22192223
}
22202224

@@ -4394,8 +4398,9 @@ static void stdout_smart_log(struct nvme_smart_log *smart, unsigned int nsid, co
43944398
(smart->critical_warning & 0x20) >> 5);
43954399
}
43964400

4397-
printf("temperature : %s (%u K)\n",
4398-
nvme_degrees_string(temperature), temperature);
4401+
printf("temperature : %s (%u K, %s)\n",
4402+
nvme_degrees_string(temperature), temperature,
4403+
nvme_degrees_fahrenheit_string(temperature));
43994404
printf("available_spare : %u%%\n", smart->avail_spare);
44004405
printf("available_spare_threshold : %u%%\n", smart->spare_thresh);
44014406
printf("percentage_used : %u%%\n", smart->percent_used);
@@ -4431,8 +4436,9 @@ static void stdout_smart_log(struct nvme_smart_log *smart, unsigned int nsid, co
44314436
temperature = le16_to_cpu(smart->temp_sensor[i]);
44324437
if (!temperature)
44334438
continue;
4434-
printf("Temperature Sensor %d : %s (%u K)\n", i + 1,
4435-
nvme_degrees_string(temperature), temperature);
4439+
printf("Temperature Sensor %d : %s (%u K, %s)\n", i + 1,
4440+
nvme_degrees_string(temperature), temperature,
4441+
nvme_degrees_fahrenheit_string(temperature));
44364442
}
44374443

44384444
printf("Thermal Management T1 Trans Count : %u\n",
@@ -5033,16 +5039,17 @@ static void stdout_feature_show_fields(enum nvme_features_id fid,
50335039
break;
50345040
case NVME_FEAT_FID_TEMP_THRESH:
50355041
field = (result & 0x1c00000) >> 22;
5036-
printf("\tTemperature Threshold Hysteresis(TMPTHH): %s (%u K)\n",
5037-
nvme_degrees_string(field), field);
5042+
printf("\tTemperature Threshold Hysteresis(TMPTHH): %s (%u K, %s)\n",
5043+
nvme_degrees_string(field), field, nvme_degrees_fahrenheit_string(field));
50385044
field = NVME_FEAT_TT_THSEL(result);
50395045
printf("\tThreshold Type Select (THSEL): %u - %s\n", field,
50405046
nvme_feature_temp_type_to_string(field));
50415047
field = NVME_FEAT_TT_TMPSEL(result);
50425048
printf("\tThreshold Temperature Select (TMPSEL): %u - %s\n",
50435049
field, nvme_feature_temp_sel_to_string(field));
5044-
printf("\tTemperature Threshold (TMPTH): %s (%u K)\n",
5045-
nvme_degrees_string(NVME_FEAT_TT_TMPTH(result)), NVME_FEAT_TT_TMPTH(result));
5050+
printf("\tTemperature Threshold (TMPTH): %s (%u K, %s)\n",
5051+
nvme_degrees_string(NVME_FEAT_TT_TMPTH(result)), NVME_FEAT_TT_TMPTH(result),
5052+
nvme_degrees_fahrenheit_string(NVME_FEAT_TT_TMPTH(result)));
50465053
break;
50475054
case NVME_FEAT_FID_ERR_RECOVERY:
50485055
printf("\tDeallocated or Unwritten Logical Block Error Enable (DULBE): %s\n",
@@ -5135,12 +5142,14 @@ static void stdout_feature_show_fields(enum nvme_features_id fid,
51355142
printf("\tKeep Alive Timeout (KATO) in milliseconds: %u\n", result);
51365143
break;
51375144
case NVME_FEAT_FID_HCTM:
5138-
printf("\tThermal Management Temperature 1 (TMT1) : %u K (%s)\n",
5145+
printf("\tThermal Management Temperature 1 (TMT1) : %u K (%s, %s)\n",
51395146
NVME_FEAT_HCTM_TMT1(result),
5140-
nvme_degrees_string(NVME_FEAT_HCTM_TMT1(result)));
5141-
printf("\tThermal Management Temperature 2 (TMT2) : %u K (%s)\n",
5147+
nvme_degrees_string(NVME_FEAT_HCTM_TMT1(result)),
5148+
nvme_degrees_fahrenheit_string(NVME_FEAT_HCTM_TMT1(result)));
5149+
printf("\tThermal Management Temperature 2 (TMT2) : %u K (%s, %s)\n",
51425150
NVME_FEAT_HCTM_TMT2(result),
5143-
nvme_degrees_string(NVME_FEAT_HCTM_TMT2(result)));
5151+
nvme_degrees_string(NVME_FEAT_HCTM_TMT2(result)),
5152+
nvme_degrees_fahrenheit_string(NVME_FEAT_HCTM_TMT2(result)));
51445153
break;
51455154
case NVME_FEAT_FID_NOPSC:
51465155
printf("\tNon-Operational Power State Permissive Mode Enable (NOPPME): %s\n",

nvme-print.c

Lines changed: 12 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -815,59 +815,28 @@ void nvme_show_endurance_log(struct nvme_endurance_group_log *endurance_log,
815815
nvme_print(endurance_log, flags, endurance_log, group_id, devname);
816816
}
817817

818-
static bool is_fahrenheit_country(const char *country)
819-
{
820-
static const char * const countries[] = {
821-
"AQ", "AS", "BS", "BZ", "CY", "FM", "GU", "KN", "KY", "LR",
822-
"MH", "MP", "MS", "PR", "PW", "TC", "US", "VG", "VI"
823-
};
824-
int i;
825-
826-
for (i = 0; i < ARRAY_SIZE(countries); i++) {
827-
if (!strcmp(country, countries[i]))
828-
return true;
829-
}
830-
831-
return false;
832-
}
833-
834-
#ifndef LC_MEASUREMENT
835-
#define LC_MEASUREMENT LC_ALL
836-
#endif
837-
838-
static bool is_temperature_fahrenheit(void)
818+
const char *nvme_degrees_string(long t)
839819
{
840-
const char *locale, *underscore;
841-
char country[3] = { 0 };
842-
843-
setlocale(LC_MEASUREMENT, "");
844-
locale = setlocale(LC_MEASUREMENT, NULL);
845-
846-
if (!locale || strlen(locale) < 2)
847-
return false;
848-
849-
underscore = strchr(locale, '_');
850-
if (underscore && strlen(underscore) >= 3)
851-
locale = underscore + 1;
820+
static char str[STR_LEN];
821+
long val = kelvin_to_celsius(t);
852822

853-
memcpy(country, locale, 2);
823+
if (nvme_is_output_format_json())
824+
sprintf(str, "%ld %s", val, "Celsius");
825+
else
826+
sprintf(str, "%ld °%s", val, "C");
854827

855-
return is_fahrenheit_country(country);
828+
return str;
856829
}
857830

858-
const char *nvme_degrees_string(long t)
831+
const char *nvme_degrees_fahrenheit_string(long t)
859832
{
860833
static char str[STR_LEN];
861-
long val = kelvin_to_celsius(t);
862-
bool fahrenheit = is_temperature_fahrenheit();
863-
864-
if (fahrenheit)
865-
val = kelvin_to_fahrenheit(t);
834+
long val = kelvin_to_fahrenheit(t);
866835

867836
if (nvme_is_output_format_json())
868-
sprintf(str, "%ld %s", val, fahrenheit ? "Fahrenheit" : "Celsius");
837+
sprintf(str, "%ld %s", val, "Fahrenheit");
869838
else
870-
sprintf(str, "%ld °%s", val, fahrenheit ? "F" : "C");
839+
sprintf(str, "%ld °%s", val, "F");
871840

872841
return str;
873842
}

nvme-print.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ bool nvme_is_fabrics_optional_reg(int offset);
346346
bool nvme_registers_cmbloc_support(__u32 cmbsz);
347347
bool nvme_registers_pmrctl_ready(__u32 pmrctl);
348348
const char *nvme_degrees_string(long t);
349+
const char *nvme_degrees_fahrenheit_string(long t);
349350
void print_array(char *name, __u8 *data, int size);
350351
void json_print(struct json_object *r);
351352
struct json_object *obj_create_array_obj(struct json_object *o, const char *k);

0 commit comments

Comments
 (0)