问题标签 [rcu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
102 浏览

linux - 从 rcu 列表中添加和查找 rcu 节点

我正在尝试通过调用函数来添加rcu节点, , 具有自己的锁和.rcu_listhlist_add_head_rcurcu_listspin_lock

之后,我需要在调用回收函数回调之前检查rcu节点是否处于待分配状态。rcu_list

有没有办法检查rcu节点是否处于挂起状态?

实际上,我试图rcu_list通过调用函数 ,并使用自己的锁hlist_for_each_entry_safe迭代列表来spin_lock进行检查。rcu_list

当然,我认为这不是好办法,是违法的rcu

我希望知道如何以有效的方式解决这个问题。

0 投票
0 回答
212 浏览

c - 为什么`synchronize_rcu()`在读锁块中被调用时不会死锁?

synchronize_rcu()用于仅等待正在进行的 RCU 读取端关键部分完成。如果是这样,当在读取块内调用时,它应该被永远阻塞。但是,以下代码在我的 linux 内核上运行良好,为什么?

0 投票
1 回答
157 浏览

linux - rcu_read_lock 和 x86-64 内存排序

在抢占式 SMP 内核上,rcu_read_lock编译以下内容:

作为barrier一个编译器指令,编译为空。

所以,根据英特尔的 X86-64 内存订购白皮书:

负载可能会与旧商店一起重新排序到不同的位置

为什么实施实际上没问题?

考虑以下情况:

是什么防止read_non_atomic_stuff“泄漏”向前rcu_read_lock,导致它与在另一个线程中运行的回收代码同时运行?

0 投票
1 回答
132 浏览

linux-kernel - 是否可以通过 RCU 保护 _____nf_conntrack_find() 返回值?

我想知道nf_conntrack_find_get()RCU 在 linux 内核中真正保护 ct 指针。

Read-Copy-Update(RCU) 可以在节点更新时保护访问(读取)节点 rcu_read_side 临界区。但是,这并不意味着保护节点。

nf_conntrack_find_get()打电话___nf_conntrack_find__nf_conntrack_find返回h(rcu 药水)。

但是另一个进程可以访问相同的 h 和free(h).

在这个时候,最终我认为 ct 不受保护。

h用于计算偏移并获取 ct 指针。

我们可以思考h还是ct安全?

下面是代码..

/net/netfilter/nf_conntrack_core.c

我认为如果要保护 node(h),必须使用call_rcu()而不是直接 free in destroy_conntrack()

0 投票
1 回答
2959 浏览

c - rcu_read_lock() 实际做了什么(Linux 内核)

我试图了解 rcu_read_lock() 同步机制。据我了解,使用了rcu_read_lock(),其中有几个读线程和一个写线程,读/写相同的数据,读取是在rcu_read_lock()下进行的,数据是为每个线程复制的。我编写了一个简单的驱动程序来测试它(read() 和 write() 函数是核心):

但是当我在读取过程中调用 write 函数时,数据也在 rcu_read_lock() 下发生变化。我的错误在哪里?
PS 驱动程序本身很糟糕,但我的目标只是测试 rcu_read_lock()。

0 投票
1 回答
226 浏览

c - rcu_read_locks 的嵌套

我将 RCU 保护的指针存储MyStruct *在 RCU 保护的哈希表MyHash中。通过哈希表读取/更新MyStruct时,我执行如下所示。

请注意,MyStruct它本身是另一个 RCU 保护列表的一部分(即,它是另一个列表的 RCU 保护节点),它存储在其中MyHash以便更快地查找。

据我了解,rcu_read_lock需要 ' 以确保在所有读取端关键部分完成之前,任何写入器更新都不会释放内存。那么,真的有必要嵌套rcu_read_lock's 还是仅仅拥有外部rcu_read_lock/rcu_read_unlock就足够了?

IOW,由于 RCU 锁不绑定到任何单个对象,当一起访问多个 RCU 受保护对象时,我们真的需要嵌套的 rcu 锁吗?

0 投票
1 回答
171 浏览

c - 当 synchronize_rcu() 等待时,RCU 如何处理读者开始阅读临界区的情况

根据 RCU 文档(我相信内核和用户空间 RCU 框架相似),synchronize_rcu()等待所有读者(在synchronize_rcu被调用之前开始)完成。在宽限期等待
之后启动的读者会发生什么?返回后开始阅读器和等待时开始 阅读器有什么区别?RCU 框架如何处理这个问题?synchronize_rcu()
synchronize_rcu()synchronize_rcu()

0 投票
0 回答
197 浏览

oracle - 我们可以将新的 RCU 与旧的 weblogic 域链接吗

我们可以将新的 RCU 与旧的 weblogic 域链接起来吗?想象一个场景,我从数据库中删除了一个 RCU,但域已经存在。创建新 RCU 后,如何将其与旧域同步/重新配置?

0 投票
1 回答
35 浏览

oracle - 获取 Oracle 12c 中所有可用 rcus 的列表?

在我们的开发环境中,开发人员为 Weblogic Domain 创建了太多的 RCU 模式。这些开发人员中的许多人现在已经离开了组织,我们需要分发 DBA 将要删除的 RCU 列表,以便人们可以提前通知我们他们是否正在使用特定的 RCU 模式。那么有没有什么简单的方法可以在 Oracle 12c 或 Weblogic RCU 工具中找到所有的 RCU?

0 投票
2 回答
3408 浏览

batch-file - 'c:\Program' 不是内部或外部命令、可操作命令或批处理文件

成功安装 Oracle SOA Suite 12c 后,我正在尝试安装 RCU。

当我尝试从命令提示符执行 RCU 批处理文件时,我收到此错误:

批处理文件位于以下路径:

我的 cmd 窗口的屏幕截图

这是我的 PATH 环境变量值:

这在我的 PATHTEXT 环境变量值中:

我试图运行的批处理文件:

rcu.bat

rcu_internal.bat