博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用户空间和内核空间传递数据:get_user;put_user;copy_to_user;copy_from_user
阅读量:2435 次
发布时间:2019-05-10

本文共 2380 字,大约阅读时间需要 7 分钟。

转自:http://hi.baidu.com/wjq_qust/blog/item/0f8d8cd6a6ca782d07088bdb.html

      http://hi.baidu.com/wjq_qust/blog/item/e14c2ba4e090eff59052eed9.html

1. put_user

Name

put_user --    Write a simple value into user space.

Synopsis

put_user ( x, ptr);

Arguments

x

Value to copy to user space.

ptr

Destination address, in user space.

Context

User context only. This function may sleep.

Description

This macro copies a single simple value from kernel space to user space. It supports simple types like char and int, but not larger data types like structures or arrays.

ptr must have pointer-to-simple-variable type, and x must be assignable to the result of dereferencing ptr .

Returns zero on success, or -EFAULT on error.

2. get_user

Name

get_user --    Get a simple variable from user space.

Synopsis

get_user ( x, ptr);

Arguments

x

Variable to store result.

ptr

Source address, in user space.

Context

User context only. This function may sleep.

Description

This macro copies a single simple variable from user space to kernel space. It supports simple types like char and int, but not larger data types like structures or arrays.

ptr must have pointer-to-simple-variable type, and the result of dereferencing ptr must be assignable to x without a cast.

Returns zero on success, or -EFAULT on error. On error, the variable x is set to zero.

1. copy_to_user

Name

copy_to_user --   Copy a block of data into user space.

Synopsis

unsigned long copy_to_user (void __user * to, const void * from, unsigned long n);

Arguments

to

Destination address, in user space.

from

Source address, in kernel space.

n

Number of bytes to copy.

Context

User context only. This function may sleep.

Description

Copy data from kernel space to user space.

Returns number of bytes that could not be copied. On success, this will be zero.

2. copy_from_user

Name

copy_from_user --   Copy a block of data from user space.

Synopsis

unsigned long copy_from_user (void * to, const void __user * from, unsigned long n);

Arguments

to

Destination address, in kernel space.

from

Source address, in user space.

n

Number of bytes to copy.

Context

User context only. This function may sleep.

Description

Copy data from user space to kernel space.

Returns number of bytes that could not be copied. On success, this will be zero.

If some data could not be copied, this function will pad the copied data to the requested size using zero bytes.

转载地址:http://zdemb.baihongyu.com/

你可能感兴趣的文章
Oracle SQL性能优化系列讲座之一(转)
查看>>
用Oracle并行查询发挥多CPU的威力(转)
查看>>
Oracle SQL性能优化系列讲座之二(转)
查看>>
多条件数据库查询的优化方法(转)
查看>>
一个过滤重复数据的sql语句(转)
查看>>
SQL语言快速入门(转)
查看>>
简单SQL语句小结(转)
查看>>
跟我学SQL(转)
查看>>
SQL语法参考手册(转)
查看>>
Oracle SQL性能优化系列讲座之三(转)
查看>>
全面接触SQL语法(转)
查看>>
Sql语句密码验证安全漏洞(转)
查看>>
数据库设计三大范式应用实例剖析(转)
查看>>
关系型数据库系统简介(转)
查看>>
数据挖掘技术简介(转)
查看>>
为数据库建立索引(转)
查看>>
合理选择数据挖掘工具(转)
查看>>
数据库设计范式深入浅出(转)
查看>>
数据库规范化三个范式应用实例(转)
查看>>
XML与面向Web的数据挖掘技术(转)
查看>>