我需要将整数传递给内核模块,在那里计算sin并返回结果。
首先,内核有内置的sin fixp_t fixp_sin(unsigned int degrees)
函数,它返回定点数(可以是负数)。
所以,我的问题是:如果我使用ioctl将整数传递给内核模块,计算sin,我怎样才能返回负结果?
ioctl将负返回值检测为错误。
答案 0 :(得分:2)
我需要将整数传递给内核模块,然后在那里计算sin 返回结果。
可以传递结构,而不是将整数值传递给ioctl()
。该结构可以具有输入和输出数据字段。没有必要弄乱ioctl()
返回值。
将结构传递给char驱动程序的样本ioctl()
https://github.com/jeyaramvrp/kernel-module-programming/tree/master/sample-char-dir
答案 1 :(得分:2)
ioctl()
永远不会返回浮点值。但是您可以将指针传递给可以填充的用户空间内存:
float f = 1.0;
ioctl(fd, SIOCCALCSIN, &f);
f这里是一个inout参数,取你计算窦的值并被结果覆盖。