⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canpie_proc.c.svn-base

📁 canpie 一个can bus的协议栈 - CAN interface for embedded control - CAN interface for PC (without local
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
   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 + -