64位内核和32位用户空间之间的指针转换

时间:2017-09-19 20:41:57

标签: linux-kernel arm 64-bit

我有一个32位用户空间软件和一个64位内核。美国部分通过netlink和ioctls与内核部分进行通信。我有一个问题,将指针从64位转换为32位,然后在netlink中转换回64位。

在我的假设中我是否正确我必须保持指针大小和相关的演员表相同?还有更多吗?我可以使用内核或OSS源中的任何内容作为示例吗?

在你提出建议之前 - 不,我不能用64位工具链重新编译US部分,涉及二进制文件。

1 个答案:

答案 0 :(得分:0)

所以最后我将内核指针交换为数字(转换为uint64_t),然后在内核空间中将它们转换回指针。 这是一个非常(!)糟糕的解决方案,因为最初的设计很糟糕。