V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
ffits
V2EX  ›  Linux

求教一个问题:内核空间和用户空间如何交换结构体变量的数据?

  •  
  •   ffits · 2014-03-16 17:17:05 +08:00 · 2838 次点击
    这是一个创建于 3909 天前的主题,其中的信息可能已经有所发展或是发生改变。
    内核模块中定义了一个结构体变量,希望在用户空间编程修改其属性,通过sysfs 、procfs 和 ctl_table是不是一次只能修改一个属性?或者还有没有其他的方法? 感谢
    2 条回复    1970-01-01 08:00:00 +08:00
    ffits
        1
    ffits  
    OP
       2014-03-16 19:18:00 +08:00
    已解决:

    在模块中注册一个字符设备,实现其write函数。write的原形是ssize_t write(struct file *filp, const void __user *buff, size_t len, loff_t *off), 其中buff可以强制转换为struct类型。在write函数中使用copy_from_user函数,就可以将buff变量赋给内核中的某个变量。
    heiher
        2
    heiher  
       2014-04-24 17:15:53 +08:00
    要注意一些位宽可能变化的类型,如 long 等,32-bit 4-byte, 64-bit 8-byte.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:19 · PVG 20:19 · LAX 04:19 · JFK 07:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.