1 Star 0 Fork 7

k18700474961/OS kernel test

forked from laokz/OS kernel test 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
kfifo_w.litmus 510 Bytes
一键复制 编辑 原始数据 按行查看 历史
laokz 提交于 2019-11-16 21:29 . kfifo reorder test
C kfifo_put(in)+kfifo_get(out)+writer_first
(* P0: writer, P1: reader
in: __kfifo.in
out: __kfifo.out
d: __kfifo.data[0]
b: reader buffer
*)
{
in = 0;
out = 0;
d = 0;
b = -1;
}
P0(int *in, int *out, int *d)
{
if (*in == *out) {
*d = 1;
smp_wmb();
*in = *in + 1;
}
}
P1(int *in, int *out, int *d, int *b)
{
int r;
if (*in != *out) {
// smp_rmb(); // kfifo missed a read barrier between read index and data
r = *d;
*b = r;
smp_wmb();
*out = *out + 1;
}
}
exists (b=0)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/k18700474961/OS-kernel-test.git
git@gitee.com:k18700474961/OS-kernel-test.git
k18700474961
OS-kernel-test
OS kernel test
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385