我可以在Linux内核中调用任何GCC内置函数吗?

时间:2013-04-05 15:31:09

标签: c linux gcc linux-kernel x86

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();

1 个答案:

答案 0 :(得分:3)

Linux内核不允许在内部使用浮点,因为x86上的浮点使用特殊的寄存器堆栈,这对于保存/恢复来说很昂贵。 (极少数)需要非整数的地方,使用固定点(即带有假设的十进制或二进制点的整数运算)。