Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 64位内核和32位用户空间之间的指针转换_Linux Kernel_Arm_64 Bit - Fatal编程技术网

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

Linux kernel 64位内核和32位用户空间之间的指针转换,linux-kernel,arm,64-bit,Linux Kernel,Arm,64 Bit,我有一个32位用户空间软件和一个64位内核。US部分通过netlink和ioctls与内核部分通信。我在netlink中将指针从64位转换为32位,再转换回64位时遇到问题 我的假设是正确的,我只需要保持指针大小和相关类型转换相同吗?还有别的吗?内核或OSS源代码中有什么可以作为示例的吗 在您提出建议之前-不,我不能用64位工具链重新编译我们的部分,其中涉及到二进制文件。因此,最后我将内核指针交换为数字(转换为uint64_t),并在返回内核空间时将其转换回指针。 这是一个非常(!)糟糕的解决方

我有一个32位用户空间软件和一个64位内核。US部分通过netlink和ioctls与内核部分通信。我在netlink中将指针从64位转换为32位,再转换回64位时遇到问题

我的假设是正确的,我只需要保持指针大小和相关类型转换相同吗?还有别的吗?内核或OSS源代码中有什么可以作为示例的吗


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

因此,最后我将内核指针交换为数字(转换为uint64_t),并在返回内核空间时将其转换回指针。
这是一个非常(!)糟糕的解决方案,因为最初的设计很糟糕。

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

内核无论如何都不能信任用户空间提供的指针,因此它必须使用一些(选中的)映射。内核无论如何都不能信任用户空间提供的指针,因此它必须使用一些(选中的)映射。