📄 canpie_proc.c.svn-base
字号:
remove_proc_entry("baud", atsProcCanDevS[slCanIfV]); remove_proc_entry("mode", atsProcCanDevS[slCanIfV]); //----------------------------------------------------------------- // remove the sub-directory // remove_proc_entry(szPortNameT, ptsProcCanRootS); return(0);}//----------------------------------------------------------------------------//// can_proc_init() //// ////----------------------------------------------------------------------------//int can_proc_init(void){ struct proc_dir_entry * ptsProcCanEntryT; int slDevIndexT; //---------------------------------------------------------------- // create the proc filesystem for CAN // it is located in "/proc/net/" // slProcCan_InitializedS = 0; if(! proc_net) { PK_ERR("/proc/net/ does not exist"); can_proc_cleanup(); return -ENOENT; } ptsProcCanRootS = proc_mkdir("can", proc_net); if(!ptsProcCanRootS) { PK_ERR("Could not create /proc/net/can/"); return -ENOENT; } //----------------------------------------------------------------- // the 'info' file holds the CANpie version and information // about the core features (e.g. number of ports, etc.) // ptsProcCanEntryT = create_proc_entry("info", S_IFREG | S_IRUGO, ptsProcCanRootS); if(ptsProcCanEntryT) { ptsProcCanEntryT->read_proc = &proc_can_info_rd; ptsProcCanEntryT->write_proc = NULL; ptsProcCanEntryT->owner = THIS_MODULE; } //----------------------------------------------------------------- // the 'debug' file allows modification of the debug level // ptsProcCanEntryT = create_proc_entry("debug", S_IFREG | S_IRUGO | S_IWUSR, ptsProcCanRootS); if(ptsProcCanEntryT) { ptsProcCanEntryT->read_proc = &proc_can_debug_rd; ptsProcCanEntryT->write_proc = &proc_can_debug_wr; ptsProcCanEntryT->owner = THIS_MODULE; } //----------------------------------------------------------------- // clear the array 'atsProcCanDevS', since these entries // are not created yet // for(slDevIndexT = 0; slDevIndexT < CP_CHANNEL_MAX; slDevIndexT++) { atsProcCanDevS[slDevIndexT] = NULL; } slProcCan_InitializedS = 1; PK_INF("/proc/net/can initialized"); return 0;}//----------------------------------------------------------------------------//// can_proc_cleanup() //// ////----------------------------------------------------------------------------//int can_proc_cleanup(void){ if(slProcCan_InitializedS > 0) { remove_proc_entry("debug", ptsProcCanRootS); remove_proc_entry("info" , ptsProcCanRootS); remove_proc_entry("can" , proc_net); PK_INF("/proc/net/can removed"); slProcCan_InitializedS = 0; } return 0;}//----------------------------------------------------------------------------//// proc_can_debug_rd() //// ////----------------------------------------------------------------------------//int proc_can_debug_rd( char *page, char **start, off_t off, int count, int *eof , void *data ){ int size = 0; int slDebugLevel = 0; #ifdef CP_DEBUG slDebugLevel = uwCpDebugG; #endif size += sprintf(page + size, "%d\n", slDebugLevel); return(size);}//----------------------------------------------------------------------------//// proc_can_debug_wr() //// ////----------------------------------------------------------------------------//int proc_can_debug_wr( struct file *file, const char *buffer, unsigned long count, void *data ){ int slNewDebugLevelT = 0; //---------------------------------------------------------------- // brute force atoi operation // slNewDebugLevelT = (int)(*buffer - '0'); if(slNewDebugLevelT < 0) { slNewDebugLevelT = 0; } if(slNewDebugLevelT > eDBG_MAX) { slNewDebugLevelT = eDBG_MAX; } #ifdef CP_DEBUG uwCpDebugG = slNewDebugLevelT; #endif return(count);}//----------------------------------------------------------------------------//// proc_can_info_rd() //// ////----------------------------------------------------------------------------//int proc_can_info_rd(char *page, char **start, off_t off, int count, int *eof , void *data ){ int size = 0; char szMode[8]; size += sprintf(page + size, "CANpie version : %s \n" , CP_MODULE_VERSION); size += sprintf(page + size, "Logic port number range : 0..%d \n", CP_CHANNEL_MAX - 1); #if CP_CONFIG_DEV==1 sprintf(szMode, "Yes"); #else sprintf(szMode, "No"); #endif size += sprintf(page + size, "Support /dev/can filesystem: %s \n", szMode); return(size);}//----------------------------------------------------------------------------//// proc_dev_baud_rd() //// ////----------------------------------------------------------------------------//int proc_dev_baud_rd(char *page, char **start, off_t off, int count, int *eof , void *data ){ int size = 0; int slBaudSelT = 0; size += sprintf(page + size, "%d\n", slBaudSelT); return(size);}//----------------------------------------------------------------------------//// proc_dev_baud_wr() //// ////----------------------------------------------------------------------------//int proc_dev_baud_wr(struct file *file, const char *buffer, unsigned long count, void *data ){ _TsCpBitrate tsBitrateT; //---------------------------------------------------------------- // brute force atoi operation // tsBitrateT.ubBaudSel = (unsigned char)(*buffer - '0'); if(tsBitrateT.ubBaudSel >= CP_BAUD_BTR) { tsBitrateT.ubBaudSel = CP_BAUD_BTR - 1; } CpCoreBitrate(data,&tsBitrateT); return(count);}//----------------------------------------------------------------------------//// proc_dev_mode_rd() //// ////----------------------------------------------------------------------------//int proc_dev_mode_rd(char *page, char **start, off_t off, int count, int *eof , void *data ){ int size = 0; _U08 ubStatusT; CpCoreCanStatus(data, &ubStatusT); size += sprintf(page + size, "%d\n", ubStatusT); return(size);}//----------------------------------------------------------------------------//// proc_dev_baud_wr() //// ////----------------------------------------------------------------------------//int proc_dev_mode_wr(struct file *file, const char *buffer, unsigned long count, void *data ){ _U08 ubModeSelT = 0; //---------------------------------------------------------------- // brute force atoi operation // ubModeSelT = (unsigned char)(*buffer - '0'); if(ubModeSelT > CP_MODE_START) { ubModeSelT = CP_MODE_START; } CpCoreCanMode(data, ubModeSelT); return(count);}#endif // CONFIG_PROC_FS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -