Linux中的_div()是否在32位和64位体系结构中工作?

Linux中的_div()是否在32位和64位体系结构中工作?,linux,module,linux-kernel,kernel,integer-division,Linux,Module,Linux Kernel,Kernel,Integer Division,我需要在内核模块中进行整数除法,并使用do_div()进行除法。它似乎在我的机器上工作(我有一个i686处理器),但是我不确定它是否在任何地方都能工作。是否有人可以确认do_div()是否应该在32位和64位体系结构中正常工作,或者是否存在已知的限制 我将Ubuntu 10.04与内核2.6.38一起使用,因此我对内核>=2.6.38的支持感兴趣 如果有人知道在内核中进行整数除法的更好方法,而不是do\u div(),我也会很感兴趣 致意 Danieldo_div()可以在64位arch上工作,

我需要在内核模块中进行整数除法,并使用do_div()进行除法。它似乎在我的机器上工作(我有一个i686处理器),但是我不确定它是否在任何地方都能工作。是否有人可以确认
do_div()
是否应该在32位和64位体系结构中正常工作,或者是否存在已知的限制

我将Ubuntu 10.04与内核2.6.38一起使用,因此我对内核>=2.6.38的支持感兴趣

如果有人知道在内核中进行整数除法的更好方法,而不是
do\u div()
,我也会很感兴趣

致意


Daniel

do_div()
可以在64位arch上工作,但是除非您真的需要剩余部分并且完全了解使用
do_div()
的效果,否则您可能应该改为进行位移位。

您好,谢谢您的评论。然后我明白了do_div()应该始终工作,而不管体系结构如何,对吗?关于进行位移位,只有当我想除以2的幂时才有可能,对吗?这不是我的情况,因为我需要除以任何整数。