色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 應用調試-----自制系統(tǒng)調用、編寫進程查看器

          應用調試-----自制系統(tǒng)調用、編寫進程查看器

          作者: 時間:2016-11-21 來源:網絡 收藏
          把29th_app_system_callkernel里的文件復制到內核目錄
          syscalls.h ==> include/linux
          read_write.c ==> fs/
          calls.S ==> arch/arm/kernel
          解析:當應用程序調用open、read、write函數(shù)時會執(zhí)行swi val指令,從而引發(fā)一個異常,就像中斷一樣,就會進入內核的異常處理函數(shù)里面,根據不同的val值來調用sys_open、sys_read、sys_write(虛擬文件系統(tǒng)VFS),并根據操作不同的文件屬性(C:字符型設備,主設備號)在chrdev數(shù)組中找到file_operations類型的結構體指針,通過file_operations結構體指針找到對應的open、read、write(first_drv_open,first_drv_write)驅動函數(shù)??梢岳抿寗映绦虿榭磻贸绦虍斨?strong>全局變量、局部變量的信息,并打印出來。
          故首先在calls.S 中:
          // 350
          CALL(sys_timerfd)
          CALL(sys_eventfd)
          CALL(sys_hello) //增加sys_hello的注冊
          再在read_write.c 中實現(xiàn)sys_hello函數(shù)體:
          asmlinkage void sys_hello(const char __user * buf, int count)
          {
          char ker_buf[100];
          if (buf)
          {
          copy_from_user(ker_buf, buf, (count < 100) ? count : 100);
          ker_buf[99] =