# @name Watchdog Timer getsupport,settimeout,getstatus,keepalive ioctl and write test
# @desc Watchdog Timer getsupport,settimeout,getstatus,keepalive ioctl and write test
# @requires watchdog
WDT_S_FUNC_GETSUPORT source 'common.sh'; do_cmd install_modules.sh 'wdt' ; DEV_NODE=`get_devnode.sh "wdt"` || die "error getting devnode for wdt"; do_cmd wdt_tests -device $DEV_NODE -ioctl getsupport
# @desc Watchdog Timer getsupport,settimeout,getstatus,keepalive ioctl and write test
# @requires watchdog
WDT_S_FUNC_GETSUPORT source 'common.sh'; do_cmd install_modules.sh 'wdt' ; DEV_NODE=`get_devnode.sh "wdt"` || die "error getting devnode for wdt"; do_cmd wdt_tests -device $DEV_NODE -ioctl getsupport
wdt_tests -device /dev/watchdog -ioctl getsupport
wdt_tests是c代码
SOURCES :=
../utils/user/st_fileapi.c
src/interface/common/st_wdt_common.c
src/parser/st_wdt_parser.c
src/testcases/st_wdt_ioctl.c
src/testcases/st_wdt_open_close.c
src/testcases/st_wdt_write.c
MAKE_TARGETS := wdt_tests
wdt_tests:
$(CC) $(CFLAGS) $(LDFLAGS) -o wdt_tests ${INCLUDES} ${SOURCES}
../utils/user/st_fileapi.c
src/interface/common/st_wdt_common.c
src/parser/st_wdt_parser.c
src/testcases/st_wdt_ioctl.c
src/testcases/st_wdt_open_close.c
src/testcases/st_wdt_write.c
MAKE_TARGETS := wdt_tests
wdt_tests:
$(CC) $(CFLAGS) $(LDFLAGS) -o wdt_tests ${INCLUDES} ${SOURCES}
main函数位于:
st_wdt_parser.c
/****************************************************************************
* Function - Main function
* Functionality - This is where the execution begins
* Input Params - argc,argv
* Return Value - None
* Note - None
****************************************************************************/
int main(int argc, char *argv[])
{
int retval;
/* Initialize options with default vales */
st_init_wdt_test_params();
/* Invoke the parser function to process the command line options */
retval = st_process_wdt_test_options(argc, argv);
return retval;
}
* Function - Main function
* Functionality - This is where the execution begins
* Input Params - argc,argv
* Return Value - None
* Note - None
****************************************************************************/
int main(int argc, char *argv[])
{
int retval;
/* Initialize options with default vales */
st_init_wdt_test_params();
/* Invoke the parser function to process the command line options */
retval = st_process_wdt_test_options(argc, argv);
return retval;
}
1.
st_init_wdt_test_params(); //初始化 in st_wdt_common.c
void st_init_wdt_test_params(void)
{
strcpy(testoptions.device , DEFAULT_DEVICE);
testoptions.ioctl = DEFAULT_IOCTL;
testoptions.loop = DEFAULT_LOOP_COUNT;
testoptions.ioctl_arg = DEFAULT_IOCTL_ARG;
testoptions.iomode = DEFAULT_IOMODE;
}
{
strcpy(testoptions.device , DEFAULT_DEVICE);
testoptions.ioctl = DEFAULT_IOCTL;
testoptions.loop = DEFAULT_LOOP_COUNT;
testoptions.ioctl_arg = DEFAULT_IOCTL_ARG;
testoptions.iomode = DEFAULT_IOMODE;
}
#define DEFAULT_IOMODE ST_WDT_IOMODE_NONE
#define DEFAULT_DEVICE "/dev/watchdog"
#define DEFAULT_IOCTL ST_WDT_IOCTL_NONE
#define DEFAULT_LOOP_COUNT 1
#define DEFAULT_IOCTL_ARG 0
#define DEFAULT_DEVICE "/dev/watchdog"
#define DEFAULT_IOCTL ST_WDT_IOCTL_NONE
#define DEFAULT_LOOP_COUNT 1
#define DEFAULT_IOCTL_ARG 0
2.
retval = st_process_wdt_test_options(argc, argv); //in st_wdt_parser.c
int c = getopt_long_only(argc, argv, "vh", long_options,
&option_index); //获取参数
&option_index); //获取参数
TEST_PRINT_TST_START(testcaseid); //打印start
st_print_wdt_test_params(&testoptions, testcaseid); //打印参数
fileDesc = st_wdt_open(&testoptions); //open wdt
ret_val2 = st_wdt_ioctl_test(&testoptions, testcaseid, fileDesc); //
TEST_PRINT_TST_RESULT(result, testcaseid); //打印result
TEST_PRINT_TST_END(testcaseid); //打印end
TEST_PRINT_TST_END(testcaseid); //打印end
ioctl(fileDesc, WDIOC_GETTIMEOUT, &timeout); //取超时时间
一旦/dev/watchdog被打开,则watchdog激活,并且除非喂狗,否则将在一段时间之后重启。