首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用户空间中使用futex?

在用户空间中使用futex?
EN

Stack Overflow用户
提问于 2010-08-31 13:27:25
回答 2查看 3.2K关注 0票数 5

我需要在锁/解锁上下文之外的用户空间中调用do_futex()的功能。也就是说,我不需要互斥,而是内核调用do_futex的确切语义。

它似乎应该可以在用户空间中使用,因为它的目的是尽量减少系统调用的数量,但是我无法链接到它。

还是有个系统电话?

更新:

我目前正在使用syscall(__NR_futex,.)要运行do_futex(),请执行以下操作。但

  1. 我必须包括__NR_futex,这是很难看的
  2. ,我必须包括FUTEX_WAIT和FUTEX_WAKE,但是我仍然没有得到EWOULDBLOCK,或者WAKE

的最大线程数。

有连贯的包装吗?

EN

回答 2

Stack Overflow用户

发布于 2013-08-26 09:44:32

就像在http://locklessinc.com/articles/obscure_synch/上说的

最后,为了阻止内核等待列表,我们需要使用Futex系统调用,可惜linux/futex.h没有公开这个调用。

他们定义了自己的简单包装:

代码语言:javascript
复制
#include <linux/futex.h>
#include <sys/syscall.h>

static long sys_futex(void *addr1, int op, int val1, struct timespec *timeout,
                      void *addr2, int val3) {
    return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
}
票数 2
EN

Stack Overflow用户

发布于 2011-03-22 10:45:24

futex(2)系统调用可能是您要寻找的。

man 2 futex

此外,顺便提一下,给出了所有系统调用的列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3609447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档