是否有可能在linux内核中分割并使用double值? 当我尝试:
typedef struct{ ... long long int sbe; ... }connection; hook_func(){ connection* found ... uint32_t time_misec .. uint32_t bytes_diff .. ... double be = bytes_diff / time_misec; found->sbe = be / 2 + found->sbe / 2; ... }
WARNING: "__fixunsdfsi" [/home/kir/netfilter/hello.ko] undefined! WARNING: "__adddf3" [/home/kir/netfilter/hello.ko] undefined! WARNING: "__floatdidf" [/home/kir/netfilter/hello.ko] undefined! WARNING: "__muldf3" [/home/kir/netfilter/hello.ko] undefined! WARNING: "__floatunsidf" [/home/kir/netfilter/hello.ko] undefined!
Linux不能finddynamic链接的应用程序
Linux USB存储驱动程序用于传输数据的代码在哪里?
Linux内核如何知道在启动时加载哪些驱动程序?
Visual Studio中的Windows内核debugging程序如何工作?
O_APPEND标志和lseek
回声值到Linux控制台
RTNL是什么意思?
对于大多数cpu来说,Linux内核中没有浮点支持。 原因是为了避免保存FPU寄存器的高成本。
即使你的机器支持浮点,并且即使你懂得如何正确使用kernel_fpu_begin()...end() ,内核代码仍然不应该使用浮点代码,如果你这样做,你的代码可能会被拒绝。
看来你上面的代码只是测量一个简单的比例,就像字节随着时间的推移? 你当然不需要浮点的东西琐碎 – 只要选择一个合理的比例因子,并在固定点。
您只需要累积信息并使用整数除法在最后生成结果(测量)。
这样可以将错误降到最低。 您测量的时间越长,近似误差越小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。