linux内核模块中的浮点运算(再次)

Ant*_*cca 1 floating-point fpu linux-kernel

我在StackOverflow中搜索了很多其他问题,但没有一个真正解决了我的问题.

我正在编写一个linux内核模块,我需要通过将整数除以另一个整数来计算百分比值,以获得介于0和100之间的浮点值:

int v1 = 5;
int v2 = 25;
float perc = v1 / v2;
Run Code Online (Sandbox Code Playgroud)

由于我们已经知道的所有原因,当我尝试编译它时,我得到" SSE寄存器返回并禁用SSE "错误.

是否有解决方案来计算Linux内核模块中的这种划分?

非常感谢.安东尼奥

Pau*_*l R 6

你可以使用整数运算,例如

int perc = 100 * v1 / v2;
Run Code Online (Sandbox Code Playgroud)

这将给出整数百分比.如果您需要高于1%的分辨率,则使用大于100的比例因子并根据需要插入小数点以用于显示目的.

  • +1在内核中执行浮点的正确方法是不要这样做.OP:你有必要在浮点运行吗? (2认同)
  • 以防万一有人还没有通过谷歌搜索为什么内核空间中不允许浮点操作,这里有一个邮件列表线程试图解释它。http://www.spinics.net/lists/newbies/msg30262.html (2认同)