/********************************************************************************************************* ** 函数名称: ls1xWatchDogDrv ** 功能描述: 安装 WATCH_DOG 驱动 ** 输 入 : NONE ** 输 出 : ERROR_CODE ** 全局变量: ** 调用模块: *********************************************************************************************************/ INT ls1xWatchDogDrv (VOID) { struct file_operations fileop; if (_G_ils1xWDTDrvNum) { return (ERROR_NONE); } lib_memset(&fileop, 0, sizeof(struct file_operations)); fileop.owner = THIS_MODULE; fileop.fo_create = ls1xWDTOpen; fileop.fo_open = ls1xWDTOpen; fileop.fo_close = ls1xWDTClose; fileop.fo_lstat = ls1xWDTLstat; fileop.fo_ioctl = ls1xWDTIoctl; _G_ils1xWDTDrvNum = iosDrvInstallEx2(&fileop, LW_DRV_TYPE_NEW_1); DRIVER_LICENSE(_G_ils1xWDTDrvNum, "Dual BSD/GPL->Ver 1.0"); DRIVER_AUTHOR(_G_ils1xWDTDrvNum, "Ryan.xin"); DRIVER_DESCRIPTION(_G_ils1xWDTDrvNum, "ls1x watchdog driver."); return (_G_ils1xWDTDrvNum > 0) ? (ERROR_NONE) : (PX_ERROR); }
/********************************************************************************************************* ** 函数名称: ls1xWatchDogDevAdd ** 功能描述: 创建 WATCH_DOG 设备 ** 输 入 : pcName 设备名 ** 输 出 : ERROR_CODE ** 全局变量: ** 调用模块: *********************************************************************************************************/ INT ls1xWatchDogDevAdd (CPCHAR cpcName) { PLS1X_WDT_DEV pwdt; pwdt = (PLS1X_WDT_DEV)__SHEAP_ALLOC(sizeof(LS1X_WDT_DEV)); if (!pwdt) { _DebugHandle(__ERRORMESSAGE_LEVEL, "system low memory.\r\n"); _ErrorHandle(ERROR_SYSTEM_LOW_MEMORY); return (PX_ERROR); } lib_memset(pwdt, 0, sizeof(LS1X_WDT_DEV)); pwdt->WDT_ulPhyAddrBase = BSP_CFG_WDT_BASE; pwdt->WDT_time = time(LW_NULL); if (API_IosDevAddEx(&pwdt->WDT_devhdr, cpcName, _G_ils1xWDTDrvNum, DT_CHR) != ERROR_NONE) { __SHEAP_FREE(pwdt); _DebugHandle(__ERRORMESSAGE_LEVEL, "system low memory.\r\n"); _ErrorHandle(ERROR_SYSTEM_LOW_MEMORY); return (PX_ERROR); } _ErrorHandle(ERROR_NONE); return (ERROR_NONE); }
/********************************************************************************************************* ** 函数名称: ls1xLedDevCreate ** 功能描述: 创建 LED 设备 ** 输 入 : NONE ** pcName 设备名 ** uiGpio GPIO Num ** bIsOutPutHigh 初始电平 ** 输 出 : 错误号 *********************************************************************************************************/ INT ls1xLedDevCreate (CPCHAR cpcName, UINT uiGpio, BOOL bIsOutPutHigh) { PLS1XLED_DEV pled; pled = (PLS1XLED_DEV)__SHEAP_ALLOC(sizeof(LS1X_LED_DEV)); if (!pled) { _DebugHandle(__ERRORMESSAGE_LEVEL, "system low memory.\r\n"); _ErrorHandle(ERROR_SYSTEM_LOW_MEMORY); return (PX_ERROR); } lib_memset(pled, 0, sizeof(LS1X_LED_DEV)); pled->LED_uiGpio = uiGpio; pled->LED_bIsOutPutHigh = bIsOutPutHigh; pled->LED_time = time(LW_NULL); if (API_IosDevAddEx(&pled->LED_devhdr, cpcName, _G_ils1xLedDrvNum, DT_CHR) != ERROR_NONE) { __SHEAP_FREE(pled); _DebugHandle(__ERRORMESSAGE_LEVEL, "system low memory.\r\n"); _ErrorHandle(ERROR_SYSTEM_LOW_MEMORY); return (PX_ERROR); } _ErrorHandle(ERROR_NONE); return (ERROR_NONE); }
/********************************************************************************************************* ** 函数名称: lib_xzalloc ** 功能描述: 内存分配(清零) ** 输 入 : s 大小 ** 输 出 : 开辟成功返回内存地址, 否则直接退出线程. ** 全局变量: ** 调用模块: *********************************************************************************************************/ void *lib_xzalloc (size_t s) { return lib_memset(lib_xmalloc(s), 0, s); }