2011-09-08 124 views
3

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

我使用Ubuntu 10.04与内核2.6.38,所以我有兴趣支持内核> = 2.6.38。

我也会感兴趣,如果有人知道一个更好的方法来做一个整数除内核比do_div()

问候

丹尼尔

回答

0

do_div()确实在64位拱工作,但除非你真的需要的其余部分,是充分认识到使用do_div(),你应该做的位移位代替的作用。

+1

嗨,感谢您的评论。然后我明白do_div()应该始终工作,不管架构如何,对吗?关于做位移,只有当我想用2的幂来除时才是可能的,对吗?这不是我的情况,因为我需要除以任何整数。 –

相关问题