gpt4 book ai didi

c - 在 arm64 linux 中混合 64/32 位用户空间(使用 CONFIG_COMPAT)

转载 作者:太空狗 更新时间:2023-10-29 11:18:46 26 4
gpt4 key购买 nike

我正在研究 ARM64 Linux 内核中的 32 位用户空间支持,看起来启用 CONFIG_COMPAT 可以让我做到这一点。

谁能插话启用 CONFIG_COMPAT 是否会禁用 64 位应用程序的运行?我问这个是出于以下原因:

  1. 文档没有说明这两个 64/32 位应用程序可以使用相同的内核运行
  2. 我查看了 fs/compat_binfmt_elf.c

    #ifdef   COMPAT_SET_PERSONALITY
    #undef SET_PERSONALITY
    #define SET_PERSONALITY COMPAT_SET_PERSONALITY
    #endif

    这似乎迫使线程个性

    set_thread_flag(TIF_32BIT)    
  3. 调用kernel/linux-3.14/fs/binfmt_elf.c中的load_elf_binary()时,会调用SET_PERSONALITY(loc->elf_ex);

  4. 如此无效,当启用 CONFIG_COMPAT 时,所有用户空间应用程序都被强制标记为 32 位?

谢谢

最佳答案

请注意,compat_binfmt_elf.c 在最后包含 binfmt_elf.c - 它在为全局可见的符号定义和设置一些重命名之后,将 binfmt_elf.c 代码重新编译到一个附加的目标文件中。

因此它强制所有在兼容层下运行的应用程序以 32 位运行,而所有 native 运行的应用程序以 64 位运行。

关于c - 在 arm64 linux 中混合 64/32 位用户空间(使用 CONFIG_COMPAT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28334715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com