2011-09-08 4 views
3

커널 모듈에서 정수 나누기가 필요하고 do_div()를 사용하고 있습니다. 그것은 내 컴퓨터에서 작동하는 것 같습니다 (나는 i686 프로세서가 있습니다), 그러나 모든 곳에서 작동하는지 확신하지 못합니다. 누구든지 do_div()이 32 비트 및 64 비트 아키텍처에서 올바르게 작동해야하는지 또는 알려진 제한이 있는지 여부를 확인할 수 있습니까?Linux에서 do_div()는 32 비트 및 64 비트 아키텍처에서 작동합니까?

커널 2.6.38과 함께 Ubuntu 10.04를 사용하므로 커널 2.6.38 이상에 대한 지원에 관심이 있습니다.

누가 커널에서 정수 나누기를 수행하는 더 좋은 방법을 알고 있다면 do_div()보다 흥미가 있습니다.

안부

다니엘

답변

0

do_div() 않는 64 비트 아치에 작동하지만 당신이 정말로 나머지를 필요로하고 비트 대신 이동, 당신은 아마 일을해야 do_div()를 사용하는 효과를 충분히 인식하지 않는 한.

+1

안녕하세요. 의견을 보내 주셔서 감사합니다. 그렇다면 do_div()가 아키텍처에 관계없이 항상 작동해야한다는 것을 이해합니다. 맞습니까? 비트 이동을 할 때, 그것은 2의 거듭 제곱으로 나누기를 원한다면 가능했을 것입니다. 정수로 나눌 필요가 있기 때문에 이것은 내 경우가 아닙니다. –