关于自旋锁

发布于 2022-07-19 07:38:12 字数 709 浏览 67 评论 6

spinlock_t mr_lock = SPIN_LOCK_UNLOCKED; //leo
                   unsigned long flags;
                   spin_lock_irqsave(&mr_lock, flags);
                   g_dwTransactionIdToCancel = CancelData.TransactionId;
                   spin_unlock_irqrestore(&mr_lock, flags);

我的程序头文件也加上了#include <linux/spinlock.h>

为什么编译的时候提示说error: `spinlock_t' undeclared (first use in this function)

是什么回事啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

温折酒 2022-07-27 05:46:02

在程序开头加入:
#define _XOPEN_SOURCE 500

眼藏柔 2022-07-27 05:15:15

确定你的内核版本
uname -a

确定你使用的是LinuxThreads还是NPTL线程模型
getconf GNU_LIBPTHREAD_VERSION

如果是nptl,看你的/usr/include/pthread.h里面有没有定义pthread_spin_lock,或者是用
nm /usr/lib/libpthread.a | grep pthread_spin

pthread_spin_lock和pthread_spin_unlock应当是你要的.

至于

  1. spinlock_t mr_lock = SPIN_LOCK_UNLOCKED; //leo
  2.                    unsigned long flags;
  3.                    spin_lock_irqsave(&mr_lock, flags);
  4.                    g_dwTransactionIdToCancel = CancelData.TransactionId;
  5.                    spin_unlock_irqrestore(&mr_lock, flags);

复制代码
这纯粹是在恶搞,ring3级的代码怎么能直接访问ring0级的数据.

暮光沉寂 2022-07-27 04:46:19

${OBJS}:%.o:%.c
        gcc ${CFLAGS} -D_GNU_SOURCE -c -g $<

我这样加了,还是不行,郁闷

同展鸳鸯锦 2022-07-26 08:24:07

我也遇到过,应该是pthread的版本问题。估计你的系统是RH9,编译时加上-D_GNU_SOURCE

2022-07-25 18:19:09

应该是属于软件开发

不弃不离 2022-07-24 14:35:42

请问你是在内核开发还是软件开发

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文