我想在 proc 模块中读取显卡信息。我创建了一个 proc 模块并将其加载到内核。我想要的是当我从终端调用 proc 时显示显卡信息。例如“cat /proc/myprocname”我知道下面的代码是错误的。但它会帮助您理解我想要什么。
#include <linux/init.h>
#include <linux/module.h>
#include <linux/proc_fs.h> // proc filesystem
/*
read proc function
*/
int read_proc(char *buf, char **start, off_t offset,
int count, int *eof, void *data){
// !! **that's it.I want to read graphic card info in this function.**
// !! this is wrong.but I want to do like this
FILE *fd = popen("lspci | grep VGA", "r");
char buffer[16];
if (fread (buffer, 1, sizeof (buffer), fd) > 0) // if there is some result the module must be loaded
printk (KERN_INFO buffer);
else
printf ("module is not loaded\n");
return 1;
}
/*
Module loading...
*/
static int baslat(void){
// Registering..
create_proc_read_entry( "proc01", // file name
0, // (protection mode): default
NULL, // (parent dir): none
read_proc, // callback
NULL); //
return 0;
}
/*
Module removing..
* /
static void bitir(void){
// module register removing..
remove_proc_entry( "proc01", // file name
NULL); // (parent directory)
}
module_init(baslat);
module_exit(bitir);
答案1
你可以使用cat
任何 proc 文件:
➜ ~ cat /proc/dri/0/vm
slot offset size type flags address mtrr
➜ ~ cat /proc/dri/0/vma
vma use count: 0, high_memory = f79fe000, 0x379fe000
➜ ~ cat /proc/dri/0/gem_names
name size handles refcount
1 3145728 1 3
2 4096 2 3
3 3145728 2 3
4 3145728 1 3
5 3145728 2 3
6 3035136 2 3
7 1679360 2 3
8 3035136 2 3
9 1998848 2 3
你没有说你的显卡是什么,但这应该可以让你找到正确的方向。