新增获取硬件信息,固件版本号,扇区数量,磁盘类型
This commit is contained in:
parent
e8802a7c99
commit
f8b106a50c
|
@ -141,28 +141,34 @@ static int get_disk_identifier(int fd, kdk_diskinfo *di)
|
||||||
klog_warning("ioctl 执行失败:%s\n", strerror(errno));
|
klog_warning("ioctl 执行失败:%s\n", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *model = strndup((char*)&hd[27], 40);
|
char *model = strndup((char*)&hd[27], 40);
|
||||||
// char *fwrev = strndup(&hd[23], 8); // 固件版本
|
char *fwrev = strndup(&hd[23], 8); // 固件版本
|
||||||
char *serno = strndup((char*)&hd[10], 20);
|
char *serno = strndup((char*)&hd[10], 20);
|
||||||
|
|
||||||
di->serial = malloc(strlen(serno) + 1);
|
di->serial = malloc(strlen(serno) + 1);
|
||||||
di->model = malloc(strlen(model) + 1);
|
di->model = malloc(strlen(model) + 1);
|
||||||
if (! di->serial || ! di->model)
|
di->fwrev = malloc(strlen(fwrev) + 1);
|
||||||
|
if (! di->serial || ! di->model || !di->fwrev)
|
||||||
{
|
{
|
||||||
klog_emerg("内存分配失败:%s\n", strerror(errno));
|
klog_emerg("内存分配失败:%s\n", strerror(errno));
|
||||||
SAFE_FREE(model);
|
SAFE_FREE(model);
|
||||||
SAFE_FREE(serno);
|
SAFE_FREE(serno);
|
||||||
|
SAFE_FREE(fwrev);
|
||||||
return KDK_ENOMEM;
|
return KDK_ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(di->serial, serno);
|
strcpy(di->serial, serno);
|
||||||
strcpy(di->model, model);
|
strcpy(di->model, model);
|
||||||
|
strcpy(di->fwrev, fwrev);
|
||||||
|
|
||||||
strstripspace(di->serial);
|
strstripspace(di->serial);
|
||||||
strstripspace(di->model);
|
strstripspace(di->model);
|
||||||
|
strstripspace(di->fwrev);
|
||||||
|
|
||||||
SAFE_FREE(model);
|
SAFE_FREE(model);
|
||||||
SAFE_FREE(serno);
|
SAFE_FREE(serno);
|
||||||
|
SAFE_FREE(fwrev);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,6 +276,8 @@ static int get_disk_type(kdk_diskinfo *di)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取转速信息(固态除外)
|
// 获取转速信息(固态除外)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -458,7 +466,20 @@ kdk_diskinfo *kdk_get_diskinfo(const char *diskname)
|
||||||
klog_err("No disk MODEL info matched :%s\n",diskname);
|
klog_err("No disk MODEL info matched :%s\n",diskname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *p_name = res->name;
|
||||||
|
res->fwrev = (char *)malloc(FWREV_SIZE * sizeof(char));
|
||||||
|
p_name += strlastof(p_name, '/');
|
||||||
|
char syspath[PATH_MAX];
|
||||||
|
sprintf(syspath, "/sys/block/%s/device/firmware_rev", p_name);
|
||||||
|
int tfd = open(syspath, O_RDONLY);
|
||||||
|
if (tfd <= 0)
|
||||||
|
{
|
||||||
|
strcpy(res->fwrev, "None");
|
||||||
|
}else{
|
||||||
|
char buf[10] = {0};
|
||||||
|
read(tfd, buf, FWREV_SIZE);
|
||||||
|
strcpy(res->fwrev, buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_disk_space(fd, res))
|
if (get_disk_space(fd, res))
|
||||||
|
@ -471,7 +492,10 @@ kdk_diskinfo *kdk_get_diskinfo(const char *diskname)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_disk_type)
|
if (get_disk_type(res))
|
||||||
|
{
|
||||||
|
goto err_out;
|
||||||
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
close(fd);
|
close(fd);
|
||||||
|
@ -491,5 +515,6 @@ void kdk_free_diskinfo(kdk_diskinfo *disk)
|
||||||
SAFE_FREE(disk->vendor);
|
SAFE_FREE(disk->vendor);
|
||||||
SAFE_FREE(disk->model);
|
SAFE_FREE(disk->model);
|
||||||
SAFE_FREE(disk->mount_path);
|
SAFE_FREE(disk->mount_path);
|
||||||
|
SAFE_FREE(disk->fwrev);
|
||||||
SAFE_FREE(disk);
|
SAFE_FREE(disk);
|
||||||
}
|
}
|
|
@ -5,6 +5,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define FWREV_SIZE 20
|
||||||
|
|
||||||
typedef enum _kdk_disk_type{
|
typedef enum _kdk_disk_type{
|
||||||
DISK_TYPE_HDD, // 机械
|
DISK_TYPE_HDD, // 机械
|
||||||
DISK_TYPE_SSD, // 固态
|
DISK_TYPE_SSD, // 固态
|
||||||
|
@ -66,6 +68,7 @@ typedef struct _kdk_diskinfo{
|
||||||
char *mount_path; // 挂载路径
|
char *mount_path; // 挂载路径
|
||||||
kdk_disk_format format; // 格式化类型
|
kdk_disk_format format; // 格式化类型
|
||||||
kdk_disk_partition_type part_type; // 分区类型
|
kdk_disk_partition_type part_type; // 分区类型
|
||||||
|
char *fwrev; //固件版本信息
|
||||||
|
|
||||||
}kdk_diskinfo;
|
}kdk_diskinfo;
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@ static void display_disk_info(kdk_diskinfo *di)
|
||||||
printf("Disk Model:\t%s\n", di->model ? di->model : "None");
|
printf("Disk Model:\t%s\n", di->model ? di->model : "None");
|
||||||
printf("Disk Serial:\t%s\n", di->serial ? di->serial : "None");
|
printf("Disk Serial:\t%s\n", di->serial ? di->serial : "None");
|
||||||
printf("Disk Partition Number:\t%u\n", di->partition_nums);
|
printf("Disk Partition Number:\t%u\n", di->partition_nums);
|
||||||
|
printf("Disk Type:\t%d\n", di->disk_type);
|
||||||
|
printf("Disk fwrev:\t%s\n", di->fwrev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void display_disk_list(char **disklist)
|
static void display_disk_list(char **disklist)
|
||||||
|
|
|
@ -4,24 +4,24 @@
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// printf("获取某一进程的CPU利用率:%0.1f\n", kdk_get_process_cpu_usage_percent(4849));
|
printf("获取某一进程的CPU利用率:%0.1f\n", kdk_get_process_cpu_usage_percent(3554));
|
||||||
// printf("获取某一进程的内存占用率:%0.1f\n", kdk_get_process_mem_usage_percent(4849));
|
printf("获取某一进程的内存占用率:%0.1f\n", kdk_get_process_mem_usage_percent(3554));
|
||||||
// printf("获取某一进程的进程状态:%s\n", kdk_get_process_status(4849));
|
printf("获取某一进程的进程状态:%s\n", kdk_get_process_status(3554));
|
||||||
// printf("获取某一进程的进程端口号:%d\n", kdk_get_process_port(4849));
|
printf("获取某一进程的进程端口号:%d\n", kdk_get_process_port(3554));
|
||||||
// printf("获取某一进程的启动时间:%s\n", kdk_get_process_start_time(4849));
|
printf("获取某一进程的启动时间:%s\n", kdk_get_process_start_time(3554));
|
||||||
// printf("获取某一进程的运行时间:%s\n", kdk_get_process_running_time(4849));
|
printf("获取某一进程的运行时间:%s\n", kdk_get_process_running_time(3554));
|
||||||
// printf("获取某一进程的CPU时间:%s\n", kdk_get_process_cpu_time(4849));
|
printf("获取某一进程的CPU时间:%s\n", kdk_get_process_cpu_time(3554));
|
||||||
// printf("获取某一进程的Command:%s\n", kdk_get_process_command(7391));
|
printf("获取某一进程的Command:%s\n", kdk_get_process_command(3554));
|
||||||
// printf("获取某一进程的属主:%s\n", kdk_get_process_user(1134));
|
printf("获取某一进程的属主:%s\n", kdk_get_process_user(3554));
|
||||||
|
|
||||||
// char** pid = kdk_procname_get_process_infomation("qaxbrowser");
|
char** pid = kdk_procname_get_process_infomation("qaxbrowser");
|
||||||
// size_t index = 0;
|
size_t index = 0;
|
||||||
// while (pid[index])
|
while (pid[index])
|
||||||
// {
|
{
|
||||||
// printf("pid %s\n", pid[index]);
|
printf("pid %s\n", pid[index]);
|
||||||
// index ++;
|
index ++;
|
||||||
// }
|
}
|
||||||
// kdk_proc_freeall(pid);
|
kdk_proc_freeall(pid);
|
||||||
|
|
||||||
char** info = kdk_get_process_all_information();
|
char** info = kdk_get_process_all_information();
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
|
|
Loading…
Reference in New Issue