最近我在kobjects和sysfs上查看内核.
我知道/了解以下内容..
kobjects 这个规则应该也不例外kobjects(可能包括ksets和其他k*东西......不确定)鉴于这些信息,我不确定我究竟在运行时会发生什么 echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
我可以看到cpufreq模块有一个函数调用store_scaling_governor它来处理对这个'文件'的写入..但是usermode如何通过这个简单的echo超越内核模式?
我的USB触摸屏连接到我的硬件设置.当我使用时,cat /proc/bus/input/devices我得到有关我的设备的以下详细信息:
I: Bus=0003 Vendor=2965 Product=5023 Version=0110
N: Name="Kortek Kortek Touch"
P: Phys=usb-0000:00:14.0-3.4/input2
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.4/3-3.4:1.2/0003:2965:5023.0006/input/input7
U: Uniq=S20131028
H: Handlers=mouse1 event7 js0
B: PROP=0
B: EV=1b
B: KEY=30000 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10
Run Code Online (Sandbox Code Playgroud)
我想知道这条线S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.4/3-3.4:1.2/0003:2965:5023.0006/input/input7意味着什么.怎么看?路径中的数字是多少?
我想用C编写一个小程序,它可以确定硬盘的扇区大小。我想读取位于 中的文件/sys/block/sd[X]/queue/hw_sector_size,它在 CentOS 6/7 中工作。
然而,当我在CentOS的5.11测试,文件hw_sector_size丢失,我只找到max_hw_sectors_kb和max_sectors_kb。
因此,我想知道如何确定(API)CentOS 5 中的扇区大小,或者是否有其他更好的方法可以做到这一点。谢谢。
我正在使用C文件 IOsysfs从linux. 寄存器的路径和样本值如下:
cat /sys/class/powercap/intel-rapl/intel-rapl\:0/energy_uj
56039694184
Run Code Online (Sandbox Code Playgroud)
代码:添加\后intel-rapl\考虑unknown escape sequence
#define FILE_SIZE 512
static FILE *fp;
char filename[FILE_SIZE];
char TEMP[FILE_SIZE];
int FILE, READ;
long int POWER;
FILE = open("/sys/class/powercap/intel-rapl/intel-rapl\\:0/energy_uj", O_RDONLY);
READ = read(FILE, TEMP, sizeof(TEMP));
POWER= strtod(TEMP,NULL);
close(FILE);
sprintf(filename,"test.csv");
fp = fopen(filename,"a+");
fprintf(fp,"\n");
fprintf(fp, "%ld", POWER);
Run Code Online (Sandbox Code Playgroud)
代码编译时没有任何错误,但在输出文件中我得到的值为0. 这是由于我如何考虑转义序列吗?
谢谢。
我的 FPGA 中有一个通用 AXI 从设备,带有多个 I/O 寄存器。我想使用 sysfs 接口访问我的寄存器。对于我想要访问的每个寄存器,我创建一个_show和 一个_store函数,但这会需要很多代码。
static ssize_t writereg0_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) {
struct axi_register_driver *drv = dev_get_drvdata(dev);
u32 val;
if (kstrtou32(buf, 10, &val) != 0)
return -EINVAL;
iowrite32(val, drv->reg_base + WRITE_OFFSET + 0);
return count;
}
static ssize_t writereg0_show(struct device *dev, struct device_attribute *attr, char *buf) {
struct axi_register_driver *drv = dev_get_drvdata(dev);
u32 reg;
reg = ioread32(drv->reg_base + WRITE_OFFSET + 0);
return sprintf(buf, "0x%x\n", …Run Code Online (Sandbox Code Playgroud) 我想找出处理写入/ sys/power/state的Linux内核(x86,2.6.18或类似)的源文件.我用Google搜索并尝试sysfs_create_file在源代码中搜索(和dir).但到目前为止我没有找到任何有用的东西.谁知道呢?谢谢!