SWDEV-457337 - Fix header alignment
Change-Id: I9f25f6c4f0d00c76b66d13162f30be11368f5b59 Signed-off-by: Dalibor Stanisavljevic <Dalibor.Stanisavljevic@amd.com>
Bu işleme şunda yer alıyor:
@@ -94,7 +94,7 @@ static amdsmi_status_t get_gpu_device_from_handle(amdsmi_processor_handle proces
|
||||
.handle_to_processor(processor_handle, &device);
|
||||
if (r != AMDSMI_STATUS_SUCCESS) return r;
|
||||
|
||||
if (device->get_processor_type() == AMD_GPU) {
|
||||
if (device->get_processor_type() == AMDSMI_PROCESSOR_TYPE_AMD_GPU) {
|
||||
*gpudevice = static_cast<amd::smi::AMDSmiGPUDevice*>(processor_handle);
|
||||
return AMDSMI_STATUS_SUCCESS;
|
||||
}
|
||||
@@ -304,11 +304,11 @@ amdsmi_status_t amdsmi_get_processor_count_from_handles(amdsmi_processor_handle*
|
||||
&processor_type);
|
||||
if (r != AMDSMI_STATUS_SUCCESS) return r;
|
||||
|
||||
if(processor_type == AMD_CPU) {
|
||||
if(processor_type == AMDSMI_PROCESSOR_TYPE_AMD_CPU) {
|
||||
count_cpusockets++;
|
||||
} else if(processor_type == AMD_CPU_CORE) {
|
||||
} else if(processor_type == AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE) {
|
||||
count_cpucores++;
|
||||
} else if(processor_type == AMD_GPU) {
|
||||
} else if(processor_type == AMDSMI_PROCESSOR_TYPE_AMD_GPU) {
|
||||
count_gpus++;
|
||||
}
|
||||
}
|
||||
@@ -538,7 +538,7 @@ amdsmi_status_t amdsmi_get_temp_metric(amdsmi_processor_handle processor_handle
|
||||
}
|
||||
|
||||
// Get the PLX temperature from the gpu_metrics
|
||||
if (sensor_type == TEMPERATURE_TYPE_PLX) {
|
||||
if (sensor_type == AMDSMI_TEMPERATURE_TYPE_PLX) {
|
||||
amdsmi_gpu_metrics_t metric_info;
|
||||
auto r_status = amdsmi_get_gpu_metrics_info(
|
||||
processor_handle, &metric_info);
|
||||
@@ -568,7 +568,7 @@ amdsmi_status_t amdsmi_get_gpu_vram_usage(amdsmi_processor_handle processor_hand
|
||||
.handle_to_processor(processor_handle, &device);
|
||||
if (ret != AMDSMI_STATUS_SUCCESS) return ret;
|
||||
|
||||
if (device->get_processor_type() != AMD_GPU) {
|
||||
if (device->get_processor_type() != AMDSMI_PROCESSOR_TYPE_AMD_GPU) {
|
||||
return AMDSMI_STATUS_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
@@ -639,27 +639,27 @@ amdsmi_status_t amdsmi_get_gpu_revision(amdsmi_processor_handle processor_handle
|
||||
amdsmi_status_t amdsmi_get_fw_info(amdsmi_processor_handle processor_handle,
|
||||
amdsmi_fw_info_t *info) {
|
||||
const std::map<amdsmi_fw_block_t, rsmi_fw_block_t> fw_in_rsmi = {
|
||||
{ FW_ID_ASD, RSMI_FW_BLOCK_ASD},
|
||||
{ FW_ID_CP_CE, RSMI_FW_BLOCK_CE},
|
||||
{ FW_ID_DMCU, RSMI_FW_BLOCK_DMCU},
|
||||
{ FW_ID_MC, RSMI_FW_BLOCK_MC},
|
||||
{ FW_ID_CP_ME, RSMI_FW_BLOCK_ME},
|
||||
{ FW_ID_CP_MEC1, RSMI_FW_BLOCK_MEC},
|
||||
{ FW_ID_CP_MEC2, RSMI_FW_BLOCK_MEC2},
|
||||
{ FW_ID_CP_PFP, RSMI_FW_BLOCK_PFP},
|
||||
{ FW_ID_RLC, RSMI_FW_BLOCK_RLC},
|
||||
{ FW_ID_RLC_RESTORE_LIST_CNTL, RSMI_FW_BLOCK_RLC_SRLC},
|
||||
{ FW_ID_RLC_RESTORE_LIST_GPM_MEM, RSMI_FW_BLOCK_RLC_SRLG},
|
||||
{ FW_ID_RLC_RESTORE_LIST_SRM_MEM, RSMI_FW_BLOCK_RLC_SRLS},
|
||||
{ FW_ID_SDMA0, RSMI_FW_BLOCK_SDMA},
|
||||
{ FW_ID_SDMA1, RSMI_FW_BLOCK_SDMA2},
|
||||
{ FW_ID_PM, RSMI_FW_BLOCK_SMC},
|
||||
{ FW_ID_PSP_SOSDRV, RSMI_FW_BLOCK_SOS},
|
||||
{ FW_ID_TA_RAS, RSMI_FW_BLOCK_TA_RAS},
|
||||
{ FW_ID_TA_XGMI, RSMI_FW_BLOCK_TA_XGMI},
|
||||
{ FW_ID_UVD, RSMI_FW_BLOCK_UVD},
|
||||
{ FW_ID_VCE, RSMI_FW_BLOCK_VCE},
|
||||
{ FW_ID_VCN, RSMI_FW_BLOCK_VCN}
|
||||
{ AMDSMI_FW_ID_ASD, RSMI_FW_BLOCK_ASD},
|
||||
{ AMDSMI_FW_ID_CP_CE, RSMI_FW_BLOCK_CE},
|
||||
{ AMDSMI_FW_ID_DMCU, RSMI_FW_BLOCK_DMCU},
|
||||
{ AMDSMI_FW_ID_MC, RSMI_FW_BLOCK_MC},
|
||||
{ AMDSMI_FW_ID_CP_ME, RSMI_FW_BLOCK_ME},
|
||||
{ AMDSMI_FW_ID_CP_MEC1, RSMI_FW_BLOCK_MEC},
|
||||
{ AMDSMI_FW_ID_CP_MEC2, RSMI_FW_BLOCK_MEC2},
|
||||
{ AMDSMI_FW_ID_CP_PFP, RSMI_FW_BLOCK_PFP},
|
||||
{ AMDSMI_FW_ID_RLC, RSMI_FW_BLOCK_RLC},
|
||||
{ AMDSMI_FW_ID_RLC_RESTORE_LIST_CNTL, RSMI_FW_BLOCK_RLC_SRLC},
|
||||
{ AMDSMI_FW_ID_RLC_RESTORE_LIST_GPM_MEM, RSMI_FW_BLOCK_RLC_SRLG},
|
||||
{ AMDSMI_FW_ID_RLC_RESTORE_LIST_SRM_MEM, RSMI_FW_BLOCK_RLC_SRLS},
|
||||
{ AMDSMI_FW_ID_SDMA0, RSMI_FW_BLOCK_SDMA},
|
||||
{ AMDSMI_FW_ID_SDMA1, RSMI_FW_BLOCK_SDMA2},
|
||||
{ AMDSMI_FW_ID_PM, RSMI_FW_BLOCK_SMC},
|
||||
{ AMDSMI_FW_ID_PSP_SOSDRV, RSMI_FW_BLOCK_SOS},
|
||||
{ AMDSMI_FW_ID_TA_RAS, RSMI_FW_BLOCK_TA_RAS},
|
||||
{ AMDSMI_FW_ID_TA_XGMI, RSMI_FW_BLOCK_TA_XGMI},
|
||||
{ AMDSMI_FW_ID_UVD, RSMI_FW_BLOCK_UVD},
|
||||
{AMDSMI_FW_ID_VCE, RSMI_FW_BLOCK_VCE},
|
||||
{ AMDSMI_FW_ID_VCN, RSMI_FW_BLOCK_VCN}
|
||||
};
|
||||
|
||||
AMDSMI_CHECK_INIT();
|
||||
@@ -794,8 +794,8 @@ amdsmi_status_t amdsmi_get_gpu_vram_info(
|
||||
return r;
|
||||
|
||||
// init the info structure with default value
|
||||
info->vram_type = VRAM_TYPE_UNKNOWN;
|
||||
info->vram_size_mb = 0;
|
||||
info->vram_type = AMDSMI_VRAM_TYPE_UNKNOWN;
|
||||
info->vram_size = 0;
|
||||
info->vram_vendor = AMDSMI_VRAM_VENDOR__PLACEHOLDER0;
|
||||
|
||||
// Only can read vram type from libdrm
|
||||
@@ -811,8 +811,8 @@ amdsmi_status_t amdsmi_get_gpu_vram_info(
|
||||
}
|
||||
|
||||
// if vram type is greater than the max enum set it to unknown
|
||||
if (info->vram_type > VRAM_TYPE__MAX)
|
||||
info->vram_type = VRAM_TYPE_UNKNOWN;
|
||||
if (info->vram_type > AMDSMI_VRAM_TYPE__MAX)
|
||||
info->vram_type = AMDSMI_VRAM_TYPE_UNKNOWN;
|
||||
|
||||
// map the vendor name to enum
|
||||
char brand[256];
|
||||
@@ -843,7 +843,7 @@ amdsmi_status_t amdsmi_get_gpu_vram_info(
|
||||
r = rsmi_wrapper(rsmi_dev_memory_total_get, processor_handle,
|
||||
RSMI_MEM_TYPE_VRAM, &total);
|
||||
if (r == AMDSMI_STATUS_SUCCESS) {
|
||||
info->vram_size_mb = total / (1024 * 1024);
|
||||
info->vram_size = total / (1024 * 1024);
|
||||
}
|
||||
|
||||
return AMDSMI_STATUS_SUCCESS;
|
||||
@@ -1250,7 +1250,7 @@ amdsmi_get_power_cap_info(amdsmi_processor_handle processor_handle,
|
||||
set_ret_success = true;
|
||||
|
||||
info->power_cap = power_cap;
|
||||
status = smi_amdgpu_get_ranges(gpudevice, CLK_TYPE_GFX,
|
||||
status = smi_amdgpu_get_ranges(gpudevice, AMDSMI_CLK_TYPE_GFX,
|
||||
NULL, NULL, &dpm, NULL);
|
||||
if ((status == AMDSMI_STATUS_SUCCESS) && !set_ret_success)
|
||||
set_ret_success = true;
|
||||
@@ -1349,10 +1349,10 @@ amdsmi_status_t amdsmi_get_clk_freq(amdsmi_processor_handle processor_handle,
|
||||
// nullptr api supported
|
||||
|
||||
// Get from gpu_metrics
|
||||
if (clk_type == CLK_TYPE_VCLK0 ||
|
||||
clk_type == CLK_TYPE_VCLK1 ||
|
||||
clk_type == CLK_TYPE_DCLK0 ||
|
||||
clk_type == CLK_TYPE_DCLK1 ) {
|
||||
if (clk_type == AMDSMI_CLK_TYPE_VCLK0 ||
|
||||
clk_type == AMDSMI_CLK_TYPE_VCLK1 ||
|
||||
clk_type == AMDSMI_CLK_TYPE_DCLK0 ||
|
||||
clk_type == AMDSMI_CLK_TYPE_DCLK1 ) {
|
||||
|
||||
// when f == nullptr -> check if metrics are supported
|
||||
amdsmi_gpu_metrics_t metric_info;
|
||||
@@ -1369,19 +1369,19 @@ amdsmi_status_t amdsmi_get_clk_freq(amdsmi_processor_handle processor_handle,
|
||||
return r_status;
|
||||
|
||||
f->num_supported = 1;
|
||||
if (clk_type == CLK_TYPE_VCLK0) {
|
||||
if (clk_type == AMDSMI_CLK_TYPE_VCLK0) {
|
||||
f->current = metric_info_p->current_vclk0;
|
||||
f->frequency[0] = metric_info_p->average_vclk0_frequency;
|
||||
}
|
||||
if (clk_type == CLK_TYPE_VCLK1) {
|
||||
if (clk_type == AMDSMI_CLK_TYPE_VCLK1) {
|
||||
f->current = metric_info_p->current_vclk1;
|
||||
f->frequency[0] = metric_info_p->average_vclk1_frequency;
|
||||
}
|
||||
if (clk_type == CLK_TYPE_DCLK0) {
|
||||
if (clk_type == AMDSMI_CLK_TYPE_DCLK0) {
|
||||
f->current = metric_info_p->current_dclk0;
|
||||
f->frequency[0] = metric_info_p->average_dclk0_frequency;
|
||||
}
|
||||
if (clk_type == CLK_TYPE_DCLK1) {
|
||||
if (clk_type == AMDSMI_CLK_TYPE_DCLK1) {
|
||||
f->current = metric_info_p->current_dclk1;
|
||||
f->frequency[0] = metric_info_p->average_dclk1_frequency;
|
||||
}
|
||||
@@ -1399,10 +1399,10 @@ amdsmi_status_t amdsmi_set_clk_freq(amdsmi_processor_handle processor_handle,
|
||||
AMDSMI_CHECK_INIT();
|
||||
|
||||
// Not support the clock type write into gpu_metrics
|
||||
if (clk_type == CLK_TYPE_VCLK0 ||
|
||||
clk_type == CLK_TYPE_VCLK1 ||
|
||||
clk_type == CLK_TYPE_DCLK0 ||
|
||||
clk_type == CLK_TYPE_DCLK1 ) {
|
||||
if (clk_type == AMDSMI_CLK_TYPE_VCLK0 ||
|
||||
clk_type == AMDSMI_CLK_TYPE_VCLK1 ||
|
||||
clk_type == AMDSMI_CLK_TYPE_DCLK0 ||
|
||||
clk_type == AMDSMI_CLK_TYPE_DCLK1 ) {
|
||||
return AMDSMI_STATUS_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
@@ -1692,7 +1692,7 @@ amdsmi_get_clock_info(amdsmi_processor_handle processor_handle, amdsmi_clk_type_
|
||||
return AMDSMI_STATUS_INVAL;
|
||||
}
|
||||
|
||||
if (clk_type > CLK_TYPE__MAX) {
|
||||
if (clk_type > AMDSMI_CLK_TYPE__MAX) {
|
||||
return AMDSMI_STATUS_INVAL;
|
||||
}
|
||||
|
||||
@@ -1717,26 +1717,26 @@ amdsmi_get_clock_info(amdsmi_processor_handle processor_handle, amdsmi_clk_type_
|
||||
}
|
||||
info->max_clk = max_freq;
|
||||
info->min_clk = min_freq;
|
||||
info->sleep_clk = sleep_state_freq;
|
||||
info->clk_deep_sleep = sleep_state_freq;
|
||||
|
||||
switch (clk_type) {
|
||||
case CLK_TYPE_GFX:
|
||||
info->cur_clk = metrics.current_gfxclk;
|
||||
case AMDSMI_CLK_TYPE_GFX:
|
||||
info->clk = metrics.current_gfxclk;
|
||||
break;
|
||||
case CLK_TYPE_MEM:
|
||||
info->cur_clk = metrics.current_uclk;
|
||||
case AMDSMI_CLK_TYPE_MEM:
|
||||
info->clk = metrics.current_uclk;
|
||||
break;
|
||||
case CLK_TYPE_VCLK0:
|
||||
info->cur_clk = metrics.current_vclk0;
|
||||
case AMDSMI_CLK_TYPE_VCLK0:
|
||||
info->clk = metrics.current_vclk0;
|
||||
break;
|
||||
case CLK_TYPE_VCLK1:
|
||||
info->cur_clk = metrics.current_vclk1;
|
||||
case AMDSMI_CLK_TYPE_VCLK1:
|
||||
info->clk = metrics.current_vclk1;
|
||||
break;
|
||||
case CLK_TYPE_DCLK0:
|
||||
info->cur_clk = metrics.current_dclk0;
|
||||
case AMDSMI_CLK_TYPE_DCLK0:
|
||||
info->clk = metrics.current_dclk0;
|
||||
break;
|
||||
case CLK_TYPE_DCLK1:
|
||||
info->cur_clk = metrics.current_dclk1;
|
||||
case AMDSMI_CLK_TYPE_DCLK1:
|
||||
info->clk = metrics.current_dclk1;
|
||||
break;
|
||||
default:
|
||||
return AMDSMI_STATUS_INVAL;
|
||||
@@ -2207,10 +2207,10 @@ amdsmi_status_t amdsmi_get_processor_handle_from_bdf(amdsmi_bdf_t bdf,
|
||||
return status;
|
||||
}
|
||||
amdsmi_bdf_t found_bdf = gpu_device->get_bdf();
|
||||
if ((bdf.fields.bus_number == found_bdf.fields.bus_number) &&
|
||||
(bdf.fields.device_number == found_bdf.fields.device_number) &&
|
||||
(bdf.fields.domain_number == found_bdf.fields.domain_number) &&
|
||||
(bdf.fields.function_number == found_bdf.fields.function_number)) {
|
||||
if ((bdf.bus_number == found_bdf.bus_number) &&
|
||||
(bdf.device_number == found_bdf.device_number) &&
|
||||
(bdf.domain_number == found_bdf.domain_number) &&
|
||||
(bdf.function_number == found_bdf.function_number)) {
|
||||
*processor_handle = devs[idx];
|
||||
return AMDSMI_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -173,10 +173,10 @@ amdsmi_status_t AMDSmiDrm::init() {
|
||||
}
|
||||
|
||||
has_valid_fds = true;
|
||||
bdf.fields.function_number = device->businfo.pci->func;
|
||||
bdf.fields.device_number = device->businfo.pci->dev;
|
||||
bdf.fields.bus_number = device->businfo.pci->bus;
|
||||
bdf.fields.domain_number = device->businfo.pci->domain;
|
||||
bdf.function_number = device->businfo.pci->func;
|
||||
bdf.device_number = device->businfo.pci->dev;
|
||||
bdf.bus_number = device->businfo.pci->bus;
|
||||
bdf.domain_number = device->businfo.pci->domain;
|
||||
|
||||
vendor_id = device->deviceinfo.pci->vendor_id;
|
||||
|
||||
|
||||
@@ -71,13 +71,13 @@ amdsmi_status_t AMDSmiSocket::get_processor_count(uint32_t* processor_count) con
|
||||
amdsmi_status_t AMDSmiSocket::get_processor_count(processor_type_t type, uint32_t* processor_count) const {
|
||||
amdsmi_status_t ret = AMDSMI_STATUS_SUCCESS;
|
||||
switch (type) {
|
||||
case AMD_GPU:
|
||||
case AMDSMI_PROCESSOR_TYPE_AMD_GPU:
|
||||
*processor_count = static_cast<uint32_t>(processors_.size());
|
||||
break;
|
||||
case AMD_CPU:
|
||||
case AMDSMI_PROCESSOR_TYPE_AMD_CPU:
|
||||
*processor_count = static_cast<uint32_t>(cpu_processors_.size());
|
||||
break;
|
||||
case AMD_CPU_CORE:
|
||||
case AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE:
|
||||
*processor_count = static_cast<uint32_t>(cpu_core_processors_.size());
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -162,12 +162,12 @@ amdsmi_status_t AMDSmiSystem::populate_amd_cpus() {
|
||||
socket = new AMDSmiSocket(cpu_socket_id);
|
||||
sockets_.push_back(socket);
|
||||
}
|
||||
AMDSmiProcessor* cpusocket = new AMDSmiProcessor(AMD_CPU, i);
|
||||
AMDSmiProcessor* cpusocket = new AMDSmiProcessor(AMDSMI_PROCESSOR_TYPE_AMD_CPU, i);
|
||||
socket->add_processor(cpusocket);
|
||||
processors_.insert(cpusocket);
|
||||
|
||||
for (uint32_t k = 0; k < (cpus/threads)/sockets; k++) {
|
||||
AMDSmiProcessor* core = new AMDSmiProcessor(AMD_CPU_CORE, k);
|
||||
AMDSmiProcessor* core = new AMDSmiProcessor(AMDSMI_PROCESSOR_TYPE_AMD_CPU_CORE, k);
|
||||
socket->add_processor(core);
|
||||
processors_.insert(core);
|
||||
}
|
||||
@@ -322,7 +322,7 @@ amdsmi_status_t AMDSmiSystem::gpu_index_to_handle(uint32_t gpu_index,
|
||||
auto iter = processors_.begin();
|
||||
for (; iter != processors_.end(); iter++) {
|
||||
auto cur_device = (*iter);
|
||||
if (cur_device->get_processor_type() != AMD_GPU)
|
||||
if (cur_device->get_processor_type() != AMDSMI_PROCESSOR_TYPE_AMD_GPU)
|
||||
continue;
|
||||
amd::smi::AMDSmiGPUDevice* gpu_device =
|
||||
static_cast<amd::smi::AMDSmiGPUDevice*>(cur_device);
|
||||
|
||||
@@ -256,22 +256,22 @@ amdsmi_status_t smi_amdgpu_get_ranges(amd::smi::AMDSmiGPUDevice* device, amdsmi_
|
||||
std::string fullpath = "/sys/class/drm/" + device->get_gpu_path() + "/device";
|
||||
|
||||
switch (domain) {
|
||||
case CLK_TYPE_GFX:
|
||||
case AMDSMI_CLK_TYPE_GFX:
|
||||
fullpath += "/pp_dpm_sclk";
|
||||
break;
|
||||
case CLK_TYPE_MEM:
|
||||
case AMDSMI_CLK_TYPE_MEM:
|
||||
fullpath += "/pp_dpm_mclk";
|
||||
break;
|
||||
case CLK_TYPE_VCLK0:
|
||||
case AMDSMI_CLK_TYPE_VCLK0:
|
||||
fullpath += "/pp_dpm_vclk";
|
||||
break;
|
||||
case CLK_TYPE_VCLK1:
|
||||
case AMDSMI_CLK_TYPE_VCLK1:
|
||||
fullpath += "/pp_dpm_vclk1";
|
||||
break;
|
||||
case CLK_TYPE_DCLK0:
|
||||
case AMDSMI_CLK_TYPE_DCLK0:
|
||||
fullpath += "/pp_dpm_dclk";
|
||||
break;
|
||||
case CLK_TYPE_DCLK1:
|
||||
case AMDSMI_CLK_TYPE_DCLK1:
|
||||
fullpath += "/pp_dpm_dclk1";
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
extern "C" {
|
||||
|
||||
static const char *container_type_name[AMDSMI_MAX_CONTAINER_TYPE] = {
|
||||
[CONTAINER_LXC] = "lxc",
|
||||
[CONTAINER_DOCKER] = "docker",
|
||||
[AMDSMI_CONTAINER_LXC] = "lxc",
|
||||
[AMDSMI_CONTAINER_DOCKER] = "docker",
|
||||
};
|
||||
|
||||
amdsmi_status_t gpuvsmi_pid_is_gpu(const std::string &path, const char *bdf)
|
||||
@@ -74,10 +74,10 @@ amdsmi_status_t gpuvsmi_get_pids(const amdsmi_bdf_t &bdf, std::vector<long int>
|
||||
|
||||
/* 0000:00:00.0 */
|
||||
snprintf(bdf_str, 13, "%04x:%02x:%02x.%d",
|
||||
bdf.fields.domain_number & 0xffff,
|
||||
bdf.fields.bus_number & 0xff,
|
||||
bdf.fields.device_number & 0x1f,
|
||||
bdf.fields.function_number & 0x7);
|
||||
bdf.domain_number & 0xffff,
|
||||
bdf.bus_number & 0xff,
|
||||
bdf.device_number & 0x1f,
|
||||
bdf.function_number & 0x7);
|
||||
|
||||
d = opendir("/proc");
|
||||
if (!d)
|
||||
@@ -123,10 +123,10 @@ amdsmi_status_t gpuvsmi_get_pid_info(const amdsmi_bdf_t &bdf, long int pid,
|
||||
|
||||
/* 0000:00:00.0 */
|
||||
snprintf(bdf_str, 13, "%04x:%02x:%02x.%d",
|
||||
bdf.fields.domain_number & 0xffff,
|
||||
bdf.fields.bus_number & 0xff,
|
||||
bdf.fields.device_number & 0x1f,
|
||||
bdf.fields.function_number & 0x7);
|
||||
bdf.domain_number & 0xffff,
|
||||
bdf.bus_number & 0xff,
|
||||
bdf.device_number & 0x1f,
|
||||
bdf.function_number & 0x7);
|
||||
|
||||
|
||||
std::string path = "/proc/" + std::to_string(pid) + "/fdinfo/";
|
||||
|
||||
Yeni konuda referans
Bir kullanıcı engelle