问题标签 [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.
linux - 从 rcu 列表中添加和查找 rcu 节点
我正在尝试通过调用函数来添加rcu
节点, , 具有自己的锁和.rcu_list
hlist_add_head_rcu
rcu_list
spin_lock
之后,我需要在调用回收函数回调之前检查rcu
节点是否处于待分配状态。rcu_list
有没有办法检查rcu
节点是否处于挂起状态?
实际上,我试图rcu_list
通过调用函数 ,并使用自己的锁hlist_for_each_entry_safe
迭代列表来spin_lock
进行检查。rcu_list
当然,我认为这不是好办法,是违法的rcu
。
我希望知道如何以有效的方式解决这个问题。
c - 为什么`synchronize_rcu()`在读锁块中被调用时不会死锁?
synchronize_rcu()
用于仅等待正在进行的 RCU 读取端关键部分完成。如果是这样,当在读取块内调用时,它应该被永远阻塞。但是,以下代码在我的 linux 内核上运行良好,为什么?
linux - rcu_read_lock 和 x86-64 内存排序
在抢占式 SMP 内核上,rcu_read_lock
编译以下内容:
作为barrier
一个编译器指令,编译为空。
所以,根据英特尔的 X86-64 内存订购白皮书:
负载可能会与旧商店一起重新排序到不同的位置
为什么实施实际上没问题?
考虑以下情况:
是什么防止read_non_atomic_stuff
“泄漏”向前rcu_read_lock
,导致它与在另一个线程中运行的回收代码同时运行?
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()
。
c - rcu_read_lock() 实际做了什么(Linux 内核)
我试图了解 rcu_read_lock() 同步机制。据我了解,使用了rcu_read_lock(),其中有几个读线程和一个写线程,读/写相同的数据,读取是在rcu_read_lock()下进行的,数据是为每个线程复制的。我编写了一个简单的驱动程序来测试它(read() 和 write() 函数是核心):
但是当我在读取过程中调用 write 函数时,数据也在 rcu_read_lock() 下发生变化。我的错误在哪里?
PS 驱动程序本身很糟糕,但我的目标只是测试 rcu_read_lock()。
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 锁吗?
c - 当 synchronize_rcu() 等待时,RCU 如何处理读者开始阅读临界区的情况
根据 RCU 文档(我相信内核和用户空间 RCU 框架相似),synchronize_rcu()
等待所有读者(在synchronize_rcu
被调用之前开始)完成。在宽限期等待
之后启动的读者会发生什么?返回后开始阅读器和等待时开始
阅读器有什么区别?RCU 框架如何处理这个问题?synchronize_rcu()
synchronize_rcu()
synchronize_rcu()
oracle - 我们可以将新的 RCU 与旧的 weblogic 域链接吗
我们可以将新的 RCU 与旧的 weblogic 域链接起来吗?想象一个场景,我从数据库中删除了一个 RCU,但域已经存在。创建新 RCU 后,如何将其与旧域同步/重新配置?
oracle - 获取 Oracle 12c 中所有可用 rcus 的列表?
在我们的开发环境中,开发人员为 Weblogic Domain 创建了太多的 RCU 模式。这些开发人员中的许多人现在已经离开了组织,我们需要分发 DBA 将要删除的 RCU 列表,以便人们可以提前通知我们他们是否正在使用特定的 RCU 模式。那么有没有什么简单的方法可以在 Oracle 12c 或 Weblogic RCU 工具中找到所有的 RCU?
batch-file - 'c:\Program' 不是内部或外部命令、可操作命令或批处理文件
成功安装 Oracle SOA Suite 12c 后,我正在尝试安装 RCU。
当我尝试从命令提示符执行 RCU 批处理文件时,我收到此错误:
批处理文件位于以下路径:
这是我的 PATH 环境变量值:
这在我的 PATHTEXT 环境变量值中:
我试图运行的批处理文件:
rcu.bat
rcu_internal.bat