package main
/*
#include <linux/watchdog.h>
*/
import "C"
import (
"fmt"
"os"
"syscall"
"time"
)
const watchdogDevice = "/dev/watchdog"
func main() {
// 打开 watchdog 设备
watchdog, err := os.OpenFile(watchdogDevice, os.O_WRONLY, 0)
if err != nil {
fmt.Printf("无法打开 watchdog 设备: %v\n", err)
os.Exit(1)
}
defer watchdog.Close()
// 启用看门狗定时器
// _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, watchdog.Fd(), uintptr(C.WDIOC_SETTIMEOUT), uintptr(10))
// if errno != 0 {
// fmt.Printf("设置看门狗定时器失败: %v\n", errno)
// os.Exit(1)
// }
// 循环喂狗
for {
_, _, errno := syscall.Syscall(syscall.SYS_IOCTL, watchdog.Fd(), uintptr(C.WDIOC_KEEPALIVE), 0)
if errno != 0 {
fmt.Printf("喂狗失败: %v\n", errno)
os.Exit(1)
}
fmt.Println("喂狗成功")
time.Sleep(5 * time.Second) // 休眠一段时间,确保不断喂狗
}
}
嵌入式Linux Go 看门狗测试程序
最新推荐文章于 2024-03-23 12:38:42 发布