1

因此,我一直在阅读 Linux API(系统调用和 libc)以及设备 ioctls,通过和create(dev_name)文件系统调用 ioctls。所以这是我的问题:ioctl(device_file_handle)sysfs

  1. sysfs 是否“应该”是只读的,其中各种内核参数都被公开以供读取?还是它们“应该”也是可写的?

  2. 将来是否需要所有驱动程序来公开接口sysfs

  3. 如果上面的答案是正确的,那么我们真的会不再需要 IOCTL 调用吗?因为要让驱动程序做某事,我们需要做的就是更改 sysfs 中某些文件中的值,例如,要在驱动程序 D1 上调用一个名为 DO_SOMETHING 的 ioctl,我们将这样做:

    echo 1> /sysfs/D1/IOCTLS/DO_SOMETHING  ( or something like that ... :) )   
    
  4. 是否有任何计划将内核 API(即 syscalls 和 libc )公开为 sysfs 文件,例如,

    echo 1> /sysfs/libc/get_system_time 
    cat /sysfs/libc/results/system_time     
    

    这样做是个好主意吗?

  5. Windows中是否有类似系统的sysfs?或者任何正在进行的项目?

  6. 通过 http 公开核心系统调用、libc 和任何新库怎么样?(只是想就这个想法进行坦率的讨论)

4

3 回答 3

1
  1. a) 没有。 b) 视情况而定。
  2. 我没有听说过这样的要求。
  3. 您必须提供一个协议来在调用者和内核之间进行交换。您可以检查它是如何在 Plan9 中完成的。我们将需要 IOCTL,请在SO answer上阅读有关此内容的更多信息
  4. 你考虑过安全吗?我认为这将是操作系统中的一个大漏洞。
  5. 据我所知。
  6. 不会讨论。
于 2015-01-07T21:38:19.693 回答
1

1-> 也不能为写入实现 sysfs。用户可以像这样使用它。回声“你好”> /sys/devices/***/sysfs_entry

2 -> 不,我认为大多数平台相关的驱动程序都开放了 sysfs 接口

3 -> 在 No 中回答上述问题。我们仍然需要 ioctls 。

4 -> 我相信只有涉及某些功能的有用 API 才会作为 sysfs 条目公开。例如,驱动程序后面的设备有 100 个寄存器。每个寄存器都不会作为 sysfs 条目公开。但是,如果有 3-4 个特性涉及这些寄存器,那么这些特性将作为 sysfs 条目公开。这些条目不应导致错误数据出现任何错误/恐慌。这个责任在开发商身上。

5 -> 不知道。

6 -> 不知道。

于 2017-04-04T17:34:06.507 回答
0

Please find my inline reply of your questions:

1) We can perform both the read and write operation through sysfs; again it depends upon your requirements.

2) I don't think so; both sysfs and ioctl have there own advantages so you can not compare both in the same ways.

3) Its not true.

4)Sysfs APIs (show and store APIs)are already exposed to user space. you can call these APIs from user space.

5) It may be; but I am not sure.

于 2017-01-23T16:44:46.590 回答