gpt4 book ai didi

c - sched_setaffinity 和 glibc - 交叉编译

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:30 24 4
gpt4 key购买 nike

我正在使用带有 Alpha ISA 的完整系统模拟器 (GEM5)。我已成功交叉编译(使用 gcc-4.3.2、glibc-2.6.1)Linux 2.6.27 for Alpha。现在,我正在交叉编译我自己的调用 sched_setaffinity 函数的程序。该程序编译,但在运行时它返回 -1,errno 为“功能未实现”。该函数确实在我的交叉编译内核中实现(在 kernel/sched.c 中),但该实现从未被调用。

我认为问题可能在于 sched_setaffinity 未在 Alpha 磁盘镜像上的 glibc (libc-2.3.5.so) 中定义/实现。如果我简单地将 libc-2.3.5.so 替换为更新的交叉编译版本,它会使磁盘镜像上的其他程序无法运行。我相信 sched_setaffinity 应该已经默认存在于 libc-2.3.5.so 中。有没有办法强制我的程序使用内核中的实现?是什么导致了这个问题?

提前致谢!

最佳答案

要调用没有 libc 包装器的 perf_event_open 系统调用,我使用以下函数:

static long
perf_event_open(struct perf_event_attr *hw_event, pid_t pid,
int cpu, int group_fd, unsigned long flags)
{
int ret;

ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,
group_fd, flags);
return ret;
}

也许您应该能够执行类似的功能来直接调用 libc sched_set_affinity 函数使用的系统调用。查看我的 Linux 源代码树版本 3.11.0,我可以在 include/uapi/asm-generic/unistd.h

中看到以下行
#define __NR_sched_setaffinity 122

关于c - sched_setaffinity 和 glibc - 交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663906/

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