use*_*719 7 c linux linux-device-driver linux-kernel embedded-linux
我正在编写一个Linux内核驱动程序,对于每个将数据发送到用户空间或从用户空间读取数据的函数,我使用的是copy_to_user()和copy_from_user().我的问题是:如果我只是复制一个基本数据类型,如u32或int,我是否需要使用这些调用?
如果函数接收到指向用户空间数据的指针,则必须使用copy_from_user()
将指向的数据从用户空间复制到内核空间(反之亦然).
请注意,指针值本身是按值传递的(与所有C参数一样),因此您无需先执行a copy_from_user()
获取指针值,然后才能指向copy_from_user()
它所指向的数据.
数字参数与指针参数的工作方式相同; 用C语言来说,它们都是标量.您不必使用copy_from_user()
复制参数的值; 那已经被复制了.您只需使用它来复制传递指针指向的数据.
因此,如果您有类型的参数int
,则可以直接使用它.如果您的参数指向a int
,则该int
对象将位于用户空间中,您需要使用copy_to_user
该对象的值复制到内核空间.
归档时间: |
|
查看次数: |
2769 次 |
最近记录: |