GCC的一些内置函数处理浮点值:http://gcc.gnu.org/onlinedocs/gcc-4.2.4/gcc/Other-Builtins.html
由于Linux内核默认不支持浮点运算,这是否意味着我不能在Linux内核模块中使用这些内置的GCC函数?
如果我做了一些这样的事情(假设我在x86系统上),我是否能够使用它们:
kernel_fpu_begin();
float x = 3.14;
x = __builtin_ceil(x);
kernel_fpu_end();
答案 0 :(得分:3)
Linux内核不允许在内部使用浮点,因为x86上的浮点使用特殊的寄存器堆栈,这对于保存/恢复来说很昂贵。 (极少数)需要非整数的地方,使用固定点(即带有假设的十进制或二进制点的整数运算)。