前言
编写 linux 驱动代码的时候,有时候可能无法靠人眼判断是否存在 bug。如:设备号是否释放,kmalloc 内存分配是否释放,等等的资源。
因此专门写了一个脚本,主要功能就是,通过脚本不断 insmod、rmmod 编写的驱动模块,将时间拉长测试,看是否会出现 insmod/rmmod 模块失败的情况。
一、脚本内容
#! /bin/bash
function action()
{
sleep 1
# 加载模块
insmod /usr/lib/modules/5.10.0-8-2-amd64/extra/psu_ym2651y.ko
echo "# insmod /usr/lib/modules/5.10.0-8-2-amd64/extra/psu_ym2651y.ko"
if [[ $? -ne 0 ]];then
echo "$0 error! quit...."
return 1
fi
# 注册设备, 触发 probe 函数
echo ym2651 0x5a > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/new_device
echo "# ym2651 0x5a > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/new_device"
if [[ $? -ne 0 ]];then
echo "$0 error! quit...."
return 1
fi
# 注册设备, 触发 probe 函数
echo ym2651 0x5b > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/new_device
echo "# ym2651 0x5b > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/new_device"
if [[ $? -ne 0 ]];then
echo "$0 error! quit...."
return 1
fi
# 注销设备, 触发 remove 函数
echo 0x5a > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/delete_device
echo "# 0x5a > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/delete_device"
if [[ $? -ne 0 ]];then
echo "$0 error! quit...."
return 1
fi
# 注销设备, 触发 remove 函数
echo 0x5b > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/delete_device
echo "# 0x5b > /sys/bus/i2c/devices/i2c-2/i2c-3/i2c-13/delete_device"
if [[ $? -ne 0 ]];then
echo "$0 error! quit...."
return 1
fi
# 移除模块
rmmod psu_ym2651y
echo "# rmmod psu_ym2651y "
if [[ $? -ne 0 ]];then
echo "$0 error! quit...."
return 1
fi
}
# 移除模块
rmmod psu_ym2651y
while true
do
action
if [[ $? -ne 0 ]];then
echo "$0 error! while break...."
break
fi
echo "-------------------------------------------"
done