mirror of
https://github.com/anrieff/libcpuid
synced 2025-02-12 20:24:05 +00:00
Improve errors handling in cpuid_get_all_raw_data() and cpuid_get_raw_data_core()
Close #202
This commit is contained in:
parent
dec92af12f
commit
505c8b5fe6
1 changed files with 8 additions and 9 deletions
|
@ -1287,7 +1287,7 @@ int cpuid_get_raw_data_core(struct cpu_raw_data_t* data, logical_cpu_t logical_c
|
|||
if (logical_cpu != (logical_cpu_t) -1) {
|
||||
debugf(2, "Getting raw dump for logical CPU %u\n", logical_cpu);
|
||||
if (!set_cpu_affinity(logical_cpu))
|
||||
return ERR_INVCNB;
|
||||
return cpuid_set_error(ERR_INVCNB);
|
||||
affinity_saved = save_cpu_affinity();
|
||||
}
|
||||
|
||||
|
@ -1414,8 +1414,7 @@ int cpuid_get_raw_data_core(struct cpu_raw_data_t* data, logical_cpu_t logical_c
|
|||
|
||||
int cpuid_get_all_raw_data(struct cpu_raw_data_array_t* data)
|
||||
{
|
||||
int cur_error = cpuid_set_error(ERR_OK);
|
||||
int ret_error = cpuid_set_error(ERR_OK);
|
||||
int r = ERR_OK;
|
||||
logical_cpu_t logical_cpu = 0;
|
||||
struct cpu_raw_data_t raw_tmp;
|
||||
|
||||
|
@ -1425,17 +1424,17 @@ int cpuid_get_all_raw_data(struct cpu_raw_data_array_t* data)
|
|||
cpu_raw_data_array_t_constructor(data, true);
|
||||
do {
|
||||
memset(&raw_tmp, 0, sizeof(struct cpu_raw_data_t));
|
||||
cur_error = cpuid_get_raw_data_core(&raw_tmp, logical_cpu);
|
||||
if (cur_error == ERR_INVCNB)
|
||||
if ((r = cpuid_get_raw_data_core(&raw_tmp, logical_cpu)) != ERR_OK)
|
||||
break;
|
||||
cpuid_grow_raw_data_array(data, logical_cpu + 1);
|
||||
memcpy(&data->raw[logical_cpu], &raw_tmp, sizeof(struct cpu_raw_data_t));
|
||||
if (ret_error == ERR_OK)
|
||||
ret_error = cur_error;
|
||||
logical_cpu++;
|
||||
} while (cur_error == ERR_OK);
|
||||
} while (r == ERR_OK);
|
||||
|
||||
return ret_error;
|
||||
/* On ERR_INVCNB, it means that logical_cpu value is out of bounds and we must break the loop, but it is a normal behavior. */
|
||||
if (r == ERR_INVCNB)
|
||||
r = ERR_OK;
|
||||
return cpuid_set_error(r);
|
||||
}
|
||||
|
||||
int cpuid_serialize_raw_data(struct cpu_raw_data_t* data, const char* filename)
|
||||
|
|
Loading…
Add table
Reference in a new issue