gpt4 book ai didi

c - 如何正确使用_syscall3

转载 作者:IT王子 更新时间:2023-10-29 00:32:01 27 4
gpt4 key购买 nike

我们的嵌入式 Linux 具有设置 CPU 亲和性的能力,但是 ucLibc 不支持 sched_{set/get}affinity 函数。

因此我们尝试使用系统调用接口(interface)来调用内核。我们写了:

#include <sys/syscall.h>
_syscall3 (int, sched_setaffinity, pid_t, pid, unsigned int, len, unsigned long *, user_mask_ptr)
_syscall3 (int, sched_getaffinity, pid_t, pid, unsigned int, len, unsigned long *, user_mask_ptr)

使用普通 gcc(x86、Fedora Linux、gcc 4.1.2 Redhat)编译它,我们得到:

bind.c:114: error: expected declaration specifiers or â...â before âsched_setaffinityâ
bind.c:114: error: expected declaration specifiers or â...â before âpid_tâ
bind.c:114: error: expected declaration specifiers or â...â before âpidâ
bind.c:114: error: expected declaration specifiers or â...â before âlenâ
bind.c:114: error: expected declaration specifiers or â...â before âuser_mask_ptrâ

如何正确使用 _syscall3 使其正常工作?

谢谢。

最佳答案

您应该使用系统调用包装器:

syscall(__NR_sched_setaffinity, pid, len, user_mask_ptr);

关于c - 如何正确使用_syscall3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7309367/

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