标签: sysfs

用户空间如何写入sysfs

最近我在kobjects和sysfs上查看内核.

我知道/了解以下内容..

  • 所有内核对象都使用地址> 0x80000000
  • kobjects 这个规则应该也不例外
  • sysfs只是一个层次结构kobjects(可能包括ksets和其他k*东西......不确定)

鉴于这些信息,我不确定我究竟在运行时会发生什么 echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

我可以看到cpufreq模块有一个函数调用store_scaling_governor它来处理对这个'文件'的写入..但是usermode如何通过这个简单的echo超越内核模式?

linux-kernel sysfs

3
推荐指数
1
解决办法
4600
查看次数

如何读取sysfs设备路径?

我的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意味着什么.怎么看?路径中的数字是多少?

linux usb sysfs

2
推荐指数
1
解决办法
4611
查看次数

在 Linux 中确定扇区大小的便携式方法

我想用C编写一个小程序,它可以确定硬盘的扇区大小。我想读取位于 中的文件/sys/block/sd[X]/queue/hw_sector_size,它在 CentOS 6/7 中工作。

然而,当我在CentOS的5.11测试,文件hw_sector_size丢失,我只找到max_hw_sectors_kbmax_sectors_kb

因此,我想知道如何确定(API)CentOS 5 中的扇区大小,或者是否有其他更好的方法可以做到这一点。谢谢。

c linux hard-drive sysfs

2
推荐指数
1
解决办法
5918
查看次数

使用转义字符从 Sysfs 路径读取长值

我正在使用C文件 IOsysfslinux. 寄存器的路径和样本值如下:

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. 这是由于我如何考虑转义序列吗?

谢谢。

c linux file-io sysfs

1
推荐指数
1
解决办法
2327
查看次数

如何为 sysfs 属性创建大量类似的函数?

我的 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)

c linux linux-device-driver linux-kernel sysfs

1
推荐指数
1
解决办法
1172
查看次数

linux内核如何处理写入/ sys/power/state

我想找出处理写入/ sys/power/state的Linux内核(x86,2.6.18或类似)的源文件.我用Google搜索并尝试sysfs_create_file在源代码中搜索(和dir).但到目前为止我没有找到任何有用的东西.谁知道呢?谢谢!

linux kernel acpi sysfs

0
推荐指数
1
解决办法
2756
查看次数

标签 统计

sysfs ×6

linux ×5

c ×3

linux-kernel ×2

acpi ×1

file-io ×1

hard-drive ×1

kernel ×1

linux-device-driver ×1

usb ×1