SYS_SUPPORTS_MULTITHREADING和CONFIG_MIPS_MT_SMTC

本文详细解释了MIPS处理器中多线程支持的配置选项,包括SYS_SUPPORTS_MULTITHREADING和CONFIG_MIPS_MT_SMTC的含义及其相互依赖关系。重点介绍了SMTC模型在多核环境中的应用。

没有定义 SYS_SUPPORTS_MULTITHREADING的话就不会定义CONFIG_MIPS_MT_SMTC

SYS_SUPPORTS_MULTITHREADING
config SYS_SUPPORTS_MULTITHREADING
 bool
config MIPS_MALTA
config MIPS_SIM
config MIPS_MT_SMP
config MIPS_MT_SMTC
config MIPS_VPE_LOADER
 select SYS_SUPPORTS_MULTITHREADING

CONFIG_MIPS_MT_SMTC
config MIPS_MT_SMTC
 bool "SMTC: Use all TCs on all VPEs for SMP"
 depends on CPU_MIPS32_R2
 #depends on CPU_MIPS64_R2  # once there is hardware ...
 depends on SYS_SUPPORTS_MULTITHREADING
 select CPU_MIPSR2_IRQ_VI
 select CPU_MIPSR2_IRQ_EI
 select MIPS_MT
 select NR_CPUS_DEFAULT_8
 select SMP
 select SYS_SUPPORTS_SMP
 select SMP_UP
 help
   This is a kernel model which is known a SMTC or lately has been
   marketesed into SMVP.
config ARCH_SUPPORTS_OPROFILE
 bool
 default y if !MIPS_MT_SMTC

 

你已经确认在 `kernel.config` 中启用了: ``` CONFIG_SYS_SUPPORTS_HUGETLBFS=y ``` 这表示你的 **内核支持 HugeTLBFS(大页内存文件系统)**,但需要注意以下几点: --- ### ✅ 说明与补充 1. **`CONFIG_SYS_SUPPORTS_HUGETLBFS=y` 的含义** - 表示当前平台(ARM)在架构上支持大页内存; - 但这并不意味着默认启用了大页功能,还需要启用其他相关配置项。 2. **还需要检查的配置项** 要让 `MAP_HUGE_2MB` 可用,还需确保以下内核配置项启用: ```ini CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE_SIZE_2MB=y CONFIG_HUGETLB_PAGE=y ``` - `CONFIG_HUGETLBFS=y`:启用大页文件系统; - `CONFIG_HUGETLB_PAGE_SIZE_2MB=y`:启用 2MB 大页支持; - `CONFIG_HUGETLB_PAGE=y`:启用大页内存核心支持。 3. **确认头文件是否包含正确定义** 即使内核配置启用了这些选项,交叉编译环境中的用户空间头文件(如 `/usr/include/linux/mman.h` 或 OpenWrt 提供的头文件)可能仍不包含 `MAP_HUGE_2MB` 定义。 - 你可以查看 `staging_dir` 下的 `mman.h` 文件,搜索 `MAP_HUGE_2MB` 是否存在; - 如果没有,说明头文件版本不匹配或未启用相关宏定义。 --- ### ✅ 建议操作步骤 1. **检查 OpenWrt 内核配置中是否启用完整的大页支持** 在 OpenWrt 源码目录中运行: ```bash make kernel_menuconfig ``` 然后进入: ``` Processor type and features ---> [*] HugeTLB support File systems ---> [*] Miscellaneous filesystems ---> <*> HugeTLB filesystem support ``` 2. **确认 OpenWrt 提供的头文件中定义了 `MAP_HUGE_2MB`** 查看 OpenWrt staging_dir 中的头文件: ```bash grep -r MAP_HUGE_2MB /home/bba/projects/nvr/repo_reconstruct/torchlight/staging_dir/ ``` 3. **手动定义宏(临时解决)** 如果无法更新头文件,可以在编译时添加宏定义: ```bash CFLAGS += -DMAP_HUGE_2MB="(21 << MAP_HUGE_SHIFT)" ``` 或在代码顶部添加: ```c #ifndef MAP_HUGE_2MB #define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT) #endif ``` 4. **考虑禁用测试代码** 如果你只是想编译 liburing 的库文件,而不是运行测试,可以: ```bash make LIBURING_ONLY_LIB=1 ``` --- ### ✅ 总结 - `CONFIG_SYS_SUPPORTS_HUGETLBFS=y` 是基础,但不是唯一条件; - 需要启用 `CONFIG_HUGETLBFS=y` `CONFIG_HUGETLB_PAGE_SIZE_2MB=y`; - 确保交叉编译使用的头文件也定义了 `MAP_HUGE_2MB`; - 如果只是使用 liburing 而非测试,建议禁用测试代码。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值