Как сравнить две переменные s64 в ядре Linux - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть следующий код:

#define SIGN(a) ((a)<0?-1:1)

u = (dot11 * dot02 - dot01 * dot12);
v = (dot00 * dot12 - dot01 * dot02);

if(u==0) return 0;
if(SIGN(u)!=SIGN(denom)) return 0;

if(v==0) return 0;
if(SIGN(v)!=SIGN(denom)) return 0;

return (u + v) < denom;

Это прекрасно работает в пользовательском пространстве, но при компиляции в модуле ядра у меня возникает следующая проблема:

WARNING: "__fixdfsi"  undefined!

Это происходит каждый раз, когда u==0 или v==0, или (SIGN(u)!=SIGN(denom)) и (SIGN(v)!=SIGN(denom)).

Это, кажется, не имеет смысла, так как функция fixdfsi преобразует целое число в двойное. Почему это происходит?

Как мне решить эту проблему?

...