内核死锁检测--lockdep(linux3.16)

news2024/11/27 16:40:43

之前看网上说linux内核自带了死锁检测工具。现在试试使用效果怎么样。感觉确实能够检测到,后面有时间在研究原理把。

死锁检测lockdep实现原理-CSDN博客//这个文章讲了一些检测原理

需要开启如下选项(选项应该是开多了,用最后三个就行)

测试代码 

DEFINE_SPINLOCK(lockdep_test);
static struct task_struct *test_task;
int test_thread(void* a)
{
	printk(KERN_EMERG "\r\n lock start\n");	
	spin_lock(&lockdep_test);
	return 0;
}
void timer_work(unsigned long data)
{
	int err;
	
	if (NULL != test_task)
	{
		wake_up_process(test_task);
	}
	return;
}
/* Initializing private device structures, only called from probe */
static int smsc911x_init(struct net_device *dev)
{
	.......................
	timer.expires=jiffies+msecs_to_jiffies(20000);/*定时时间*/
	timer.function=timer_work;/*定时器工作函数*/
	init_timer(&timer);/*初始化定时器*/
	add_timer(&timer);/*启动定时器*/
	printk(KERN_EMERG "\r\n create thread\n");
	spin_lock(&lockdep_test);
	test_task = kthread_create(test_thread, NULL, "test_task");
	kthread_bind(test_task, 1); 
............................
}

实际效果

经过实测是在内核线程被调用之前就检测到了

这个图我怀疑是 开启了其他的,导致出现了这个打印

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1357138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之IP地址、主机名、域名解析

一、IP地址 可以通过ifconfig命令查看本机的ip地址,如果无法使用ifconfig命令,可以安装 安装:yum -y install net-tools ens33:主网卡,里面的inet就是ip地址 lo:本地回环网卡,127.0.0.1&…

工具网站DefiLlama全攻略:从零学习链上数据使用与发现

DefiLlama 是一个 DeFi(去中心化金融)信息聚合器,其主要功能是提供各种 DeFi 平台的准确、全面数据。DefiLlama 致力于在不受广告或赞助内容影响的情况下为用户提供这些数据,以确保信息内容的透明度和公正性,该平台聚合来自多个区块链的数据,让用户能够全面了解 DeFi 格局…

【React系列】高阶组件

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 高阶组件 1.1. 认识高阶组件 什么是高阶组件呢?相信很多同学都听说过,也用过 高阶函数&…

windows 10 安装wsl ubuntu

1.首先管理员模式打卡powershell,执行 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 2.执行 wsl --update wsl --…

在k8s集群中部署多nginx-ingress

关于ingress的介绍,前面已经详细讲过了,参考ingress-nginx详解和部署方案。本案例ingress的部署使用deploymentLB的方式。 参考链接: 多个ingress部署 文章目录 1. 下载ingress的文件2. 文件资源分析3. 部署ingress3.1 部署第一套ingress3.1…

Centos7静态网络配置

在vmware中打开, 点击虚拟网络编辑器,修改以下配置 网关IP最后一位固定为2,这个160根据下图中vmnet8的ip地址来的 打开网络控制面板>打开vmnet8查看 接着打开linux,有桌面版的使用桌面版更加方便 箭头这么乱,但是你…

华为欧拉安装部署:Oracle11g

一、环境准备 1、下载安装低版本的libaio包;libaio版本太高,会造成编译错误 查看libaio1库版本不能大于0.3.109 [oracles3 install]$ rpm -qa libaio libaio-0.3.110-12.el8.x86_64# 查看欧拉操作系统版本 [oraclelocalhost bin]$ cat /etc/os-release…

Pytest自动化的坑

1、封装pytest的类型,名称的开头需要使用Test开头命名类,否则会出现运行pytest找不到类的情况 2、函数被pytest.fixtrue装饰之后,就不能再直接引用函数方法,需要把函数名称当作参数传到其他的函数中使用 3、conftest的全局变量名称…

手写一个加盐加密算法(java实现)

目录 前言 什么是MD5?? 加盐算法 那别的人会不会跟你得到相同的UUID? 如何使用盐加密? 代码实现 前言 对于我们常见的登录的时候需要用到的组件,加密是一个必不可少的东西,如果我们往数据库存放用户…

PHP 基础编程 2

文章目录 时间函数dategetdatetime 使用数组实现登录注册和修改密码简单数组增加元素方法修改元素方法删除元素方法 具体实现方法数组序列化数组写入文件判断元素是否在关联数组中(登录功能实现)实现注册功能实现修改admin用户密码功能 时间函数 时区&am…

大数据情况下如何保证企业数据交换安全

数据交换是指在网络或其他方式下,不同主体按照规定的规则和标准实现数据的共享、传输和处理的过程。大数据时代的到来使得数据交换的重要性更为凸显,大数据带来了海量、多样、高速、低价值密度等特点,也带来了更多的价值挖掘和应用场景。 保障…

Spring常用注解及模拟用户登录流程示例

注解 Resource注解实现自动注入 (反射)代码块xml配置文件 Autowired注解实现自动化注入代码块xml配置文件 扫描器-四个注解Dao层-RepositoryService层-ServiceController层-Controller测试任意类-Component 常用注解示例-模拟用户登录配置自动扫描的xml文件实体类Userdao层消息…

Java异常简单介绍

文章目录 1. 异常分类和关键字1.1 分类1.2 关键字 2. Error2.1 Error定义2.2 常见的Error2.2.1 VirtualMachineError2.2.2 ThreadDeath2.2.3 LinkageError2.2.4 AssertionError2.2.5 InternalError2.2.6 OutOfMemoryError2.2.6.1 OOM原因2.2.6.2 OutOfMemoryError会导致宕机吗 …

【React系列】Hook(一)基本使用

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识hook 1.1. 为什么需要hook Hook 是 React 16.8 的新增特性,它可以让我们在不编写class的情况下…

Java多线程技术10——线程池ThreadPoolExecutor之Executor接口

1 概述 在开发服务器软件项目时,经常需要处理执行时间很短并且数据巨大的请求,如果为每一个请求创建一个新的线程,则会导致性能上的瓶颈。因为JVM需要频繁地处理线程对象的创建和销毁,如果请求的执行时间很短,则有可能…

【linux】日志管理和分析

一、概述 在Linux系统的管理和运维中,日志文件起到至关重要的作用。它们记录了系统运行过程中的各种事件,包括系统故障、性能数据和安全事件。 二、 日志的作用和分类 日志的作用 日志文件记载了系统的生命线,利用它们可以: 1…

Linux第7步_设置虚拟机的电源

设置ubuntu代码下载源和关闭“自动检查更新”后,就要学习设置“虚拟机的电源”了。 用处不大,主要是了解”螺丝刀和扳手形状的图标“在哪里。 1、打开虚拟机,点击最右边的“下拉按钮”,弹出对话框,得到下图&#xff…

【算法】算法设计与分析 期末复习总结

第一章 算法概述 时间复杂度比大小,用代入法,代入2即可。求渐进表达式,就是求极限,以极限为O的括号;O是指上界,Ω是指下界,θ是指上下界相等,在这里,可以这样理解&#…

覆盖与交换-第四十二天

目录 内存空间的扩充 覆盖技术 实例 交换技术 思考 本节思维导图 内存空间的扩充 历史背景:早期计算机内存很小,内存大小不够的情况解决办法:后来人们引入了覆盖技术,用来解决“程序大小超过物理内存总合”的问题 覆盖技术…

Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (二)

这个是继上一篇文章 “Elasticsearch:Serarch tutorial - 使用 Python 进行搜索 (一)” 的续篇。在今天的文章中,我们接着来完成如何进行分页及过滤。 分页 - pagination 应用程序处理大量结果通常是不切实际的。 因此&#xff0…