日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核编程4部曲之二:增加linux内核系统调用

發布時間:2023/12/10 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核编程4部曲之二:增加linux内核系统调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux內核編程4部曲之一:linux內核編譯(2.6.12版本)圖文解說

linux內核編程4部曲之二:增加linux內核系統調用

linux內核編程4部曲之三:修改O(1)調度算法

linux內核編程4部曲之四:模塊編程

?

?

本文,承接上面一篇linux內核編譯,增加系統調用后,需要重新編譯內核。

一、實驗目的 增加加減乘除系統調用,并測試系統調用和用戶調用的性能差異。 二、增加系統調用 增加系統調用主要分為3步: 1)、增加系統調用函數。修改/usr/src/linux-2.6.12/kernel/sys.c文件,在文件末尾增加4個系統響應函數(+、-、*、/)。函數實現如下: 2)、在系統調用表中注冊。 在/usr/src/linux-2.6.12/arch/i386/kernel/syscall_table_32.S中添加我們的系統調用。 3)、添加系統調用入口參數 在/usr/src/linux-2.6.12/include/asm-i386/unistd.h中添加系統調用入口參數(注意:其中會順序定義入口參數的序號,添加的序號是在原有最大值的基礎上+1)。 三、編譯內核,引導新內核啟動 四、測試 測試需要在添加了系統調用的新系統中進行。 1)功能測試 首先測試,系統調用是否能正常執行,測試程序為testsyscall.c
  • #include<asm/unistd.h>
  • #include<errno.h>
  • #include<stdio.h>

  • #define __NR_add 289
  • #define __NR_sub 290
  • _syscall2(int ,add,int ,x,int,y)
  • _syscall2(int ,sub,int ,x,int ,y)
  • int main()
  • {
  • ???printf("%d\n",add(10,10));
  • ???printf("%d\n",sub(15,10));
  • ???return 0;
  • }
  • ? ? ?編譯運行,查看結果,成功調用。這里要注意的是,在testsyscall.c中聲明__NR_add 289. 2)、性能測試 要對比系統調用和用戶調用的性能差異,我們先編寫用戶調用的測試程序testusercall.c
  • #include<stdio.h>
  • int add(int x,int y)
  • {
  • ???return x+y;
  • }
  • int main()
  • {
  • ???int i=0;
  • ???for(i=0;i<100000000;i++)
  • ???{
  • ??????add(10,20);
  • ???}
  • ???return 0;
  • }
  • ? ? ?再編寫系統調用的測試程序testsyscall.c
  • #include<asm/unistd.h>
  • #include<stdio.h>

  • #define __NR_add 289
  • _syscall2(int ,add,int ,x,int,y)
  • int main()
  • {
  • ???int i=0;
  • ???for(i=0;i<100000000;i++)
  • ???{
  • ??????add(10,20);
  • ???}
  • ???return 0;
  • }
  • ? 兩個程序均是運行10000000次,然后分別統計他們的時間。 可以發現,兩個測試程序在系統sys運行時間差別很大,testusercall僅在sys運行了0m0.003s,而testsyscall卻在sys運行了0m4.028s,說明,系統調用的sys時間遠遠大于用戶層調用的時間。

    總結

    以上是生活随笔為你收集整理的linux内核编程4部曲之二:增加linux内核系统调用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。