精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在Linux中添加新的系統調用

運維 系統運維
系統調用是應用程序和操作系統內核之間的功能接口。其主要目的是使得用戶可以使用操作系統提供的有關設備管理、輸入/輸入系統、文件系統和進程控制、通信以及存儲管理等方面的功能,而不必了解系統程序的內部結構和有關硬件細節,從而起到減輕用戶負擔和保護系統以及提高資源利用率的作用。

系統調用是應用程序和操作系統內核之間的功能接口。其主要目的是使得用戶可以使用操作系統提供的有關設備管理、輸入/輸入系統、文件系統和進程控制、通信以及存儲管理等方面的功能,而不必了解系統程序的內部結構和有關硬件細節,從而起到減輕用戶負擔和保護系統以及提高資源利用率的作用。

Linux操作系統作為自由軟件的代表,它優良的性能使得它的應用日益廣泛,不僅得到專業人士的肯定,而且商業化的應用也是如火如荼。在Linux中,大部分的系統調用包含在Linux的libc庫中,通過標準的C函數調用方法可以調用這些系統調用。那么,對Linux的發燒友來說,如何在Linux中增加新的系統調用呢?

1 Linux系統調用機制

在Linux系統中,系統調用是作為一種異常類型實現的。它將執行相應的機器代碼指令來產生異常信號。產生中斷或異常的重要效果是系統自動將用戶態切換為核心態來對它進行處理。這就是說,執行系統調用異常指令時,自動地將系統切換為核心態,并安排異常處理程序的執行。

Linux用來實現系統調用異常的實際指令是:

Int ?$0x80

這一指令使用中斷/異常向量號128(即16進制的80)將控制權轉移給內核。為達到在使用系統調用時不必用機器指令編程,在標準的C語言庫中為每一系統調用提供了一段短的子程序,完成機器代碼的編程工作。事實上,機器代碼段非常簡短。它所要做的工作只是將送給系統調用的參數加載到CPU寄存器中,接著執行int ?$0x80指令。然后運行系統調用,系統調用的返回值將送入CPU的一個寄存器中,標準的庫子程序取得這一返回值,并將它送回用戶程序。

為使系統調用的執行成為一項簡單的任務,Linux提供了一組預處理宏指令。

它們可以用在程序中。這些宏指令取一定的參數,然后擴展為調用指定的系統調用的函數。

這些宏指令具有類似下面的名稱格式:

_syscallN(parameters)

其中N是系統調用所需的參數數目,而parameters則用一組參數代替。這些參數使宏指令完成適合于特定的系統調用的擴展。例如,為了建立調用setuid()系統調用的函數,應該使用:

_syscall1( int, setuid, uid_t, uid )

syscallN( )宏指令的第1個參數int說明產生的函數的返回值的類型是整型,第2個參數setuid說明產生的函數的名稱。后面是系統調用所需要的每個參數。這一宏指令后面還有兩個參數uid_t和uid分別用來指定參數的類型和名稱。

另外,用作系統調用的參數的數據類型有一個限制,它們的容量不能超過四個字節。這是因為執行int ?$0x80指令進行系統調用時,所有的參數值都存在32位的CPU寄存器中。使用CPU寄存器傳遞參數帶來的另一個限制是可以傳送給系統調用的參數的數目。這個限制是最多可以傳遞5個參數。所以Linux一共定義了6個不同的_syscallN()宏指令,從_syscall0()、_syscall1()直到_syscall5()。

一旦_syscallN()宏指令用特定系統調用的相應參數進行了擴展,得到的結果是一個與系統調用同名的函數,它可以在用戶程序中執行這一系統調用。

2 添加新的系統調用

如果用戶在Linux中添加新的系統調用,應該遵循幾個步驟才能添加成功,下面幾個步驟詳細說明了添加系統調用的相關內容。

(1) 添加源代碼

第一個任務是編寫加到內核中的源程序,即將要加到一個內核文件中去的一個函數,該函數的名稱應該是新的系統調用名稱前面加上sys_標志。假設新加的系統調用為mycall(int number),在/usr/src/linux/kernel/sys.c文件中添加源代碼,如下所示:

asmlinkage int sys_mycall(int number)

{

return number;

}

作為一個最簡單的例子,我們新加的系統調用僅僅返回一個整型值。

(2) 連接新的系統調用

添加新的系統調用后,下一個任務是使Linux內核的其余部分知道該程序的存在。為了從已有的內核程序中增加到新的函數的連接,需要編輯兩個文件。

在我們所用的Linux內核版本(RedHat 6.0,內核為2.2.5-15)中,第一個要修改的文件是:

/usr/src/linux/include/asm-i386/unistd.h

該文件中包含了系統調用清單,用來給每個系統調用分配一個唯一的號碼。文件中每一行的格式如下:

#define __NR_name NNN

其中,name用系統調用名稱代替,而NNN則是該系統調用對應的號碼。應該將新的系統調用名稱加到清單的最后,并給它分配號碼序列中下一個可用的系統調用號。我們的系統調用如下:

#p#

#define __NR_mycall 191

系統調用號為191,之所以系統調用號是191,是因為Linux-2.2內核自身的系統調用號碼已經用到190。

第二個要修改的文件是:

/usr/src/linux/arch/i386/kernel/entry.S

該文件中有類似如下的清單:

.long SYMBOL_NAME()

該清單用來對sys_call_table[]數組進行初始化。該數組包含指向內核中每個系統調用的指針。這樣就在數組中增加了新的內核函數的指針。我們在清單最后添加一行:

.long SYMBOL_NAME(sys_mycall)

(3) 重建新的Linux內核

為使新的系統調用生效,需要重建Linux的內核。這需要以超級用戶身份登錄。

#pwd

/usr/src/linux

#

超級用戶在當前工作目錄(/usr/src/linux)下,才可以重建內核。

#make config

#make dep

#make clearn

#make bzImage

編譯完畢后,系統生成一可用于安裝的、壓縮的內核映象文件:

/usr/src/linux/arch/i386/boot/bzImage

(4) 用新的內核啟動系統

要使用新的系統調用,需要用重建的新內核重新引導系統。為此,需要修改/etc/lilo.conf文件,在我們的系統中,該文件內容如下:

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

image=/boot/vmlinuz-2.2.5-15

label=linux

root=/dev/hdb1

read-only

other=/dev/hda1

label=dos

table=/dev/had

首先編輯該文件,添加新的引導內核:

image=/boot/bzImage-new

label=linux-new

root=/dev/hdb1

read-only

添加完畢,該文件內容如下所示:

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

image=/boot/bzImage-new

label=linux-new

root=/dev/hdb1

read-only

image=/boot/vmlinuz-2.2.5-15

label=linux

root=/dev/hdb1

read-only

other=/dev/hda1

label=dos

table=/dev/hda

這樣,新的內核映象bzImage-new成為缺省的引導內核。

為了使用新的lilo.conf配置文件,還應執行下面的命令:

#cp /usr/src/linux/arch/i386/boot/zImage /boot/bzImage-new

其次配置lilo:

# /sbin/lilo

現在,當重新引導系統時,在boot:提示符后面有三種選擇:linux-new 、linux、dos,新內核成為缺省的引導內核。

至此,新的Linux內核已經建立,新添加的系統調用已成為操作系統的一部分,重新啟動Linux,用戶就可以在應用程序中使用該系統調用了。

(5)使用新的系統調用

在應用程序中使用新添加的系統調用mycall。同樣為實驗目的,我們寫了一個簡單的例子xtdy.c。

#include

_syscall1(int,mycall,int,ret)

main()

{

printf("%d n",mycall(100));

}

編譯該程序:

# cc -o xtdy xtdy.c

執行:

# xtdy

結果:

# 100

注意,由于使用了系統調用,編譯和執行程序時,用戶都應該是超級用戶身份。
 

【編輯推薦】

  1. Linux用戶空間獲取系統調用表地址
  2. 理解Linux的系統調用
  3. 預測Linux將主導2019年的操作系統大潮
責任編輯:趙寧寧 來源: chinaitlab
相關推薦

2019-03-28 09:25:51

Linux磁盤命令

2017-04-29 11:43:49

Linux磁盤fdisk

2020-03-10 10:45:06

GIMP新畫筆Linux

2017-04-20 14:15:01

Linux2TBparted

2019-12-23 09:42:19

Linux輸入emoji

2019-11-18 10:00:05

Linux桌面添加用戶

2015-12-01 13:09:54

Linux終端文件系統

2015-12-03 09:42:56

Linux終端文件系統

2022-12-19 10:04:54

LinuxUEFI

2009-07-10 17:54:15

Java中調用JythJython

2020-01-02 16:10:17

Windows 10照片應用文件夾

2021-04-27 07:00:08

UbuntuLinux指紋登錄

2022-10-14 13:33:35

2014-09-01 11:08:34

LinuxSSH

2009-06-17 13:19:50

Java調用DLL

2018-04-08 08:32:59

2018-06-05 08:51:04

Linux結束進程中止程序

2022-11-01 15:38:22

LinuxShell

2017-01-11 16:41:16

Linux設備文件文件系統

2021-04-30 13:19:20

Linux刪除分區
點贊
收藏

51CTO技術棧公眾號

在线观看一区欧美| 欧美在线视频在线播放完整版免费观看 | 日韩中文字幕网站| 香蕉视频色在线观看| 欧美videossex| 国产日韩av一区| 91精品国产综合久久久久久蜜臀| 久草成人在线视频| 香蕉久久夜色精品国产更新时间| 欧美日韩精品欧美日韩精品一综合| 欧洲金发美女大战黑人| 午夜视频福利在线| 精品写真视频在线观看| 午夜精品在线观看| 免费视频91蜜桃| 午夜视频在线观看精品中文 | 97在线国产视频| 国产视频福利在线| 粉嫩一区二区三区性色av| 日本一区二区在线免费播放| 婷婷在线精品视频| 精品国产乱码久久久久久蜜坠欲下 | 香蕉大人久久国产成人av| 欧美视频裸体精品| 成人短视频在线观看免费| 九色视频在线观看免费播放| 国产在线精品国自产拍免费| 日本人成精品视频在线| 男人操女人的视频网站| 欧美精选视频在线观看| 亚洲国产小视频在线观看| 欧美第一页浮力影院| 欧美男男tv网站在线播放| 亚洲同性gay激情无套| 欧美日韩国产综合在线| 国产香蕉在线观看| 国产中文字幕精品| 国产久一一精品| 五月天综合在线| 欧美伊人影院| 久久精品视频免费播放| 人妻少妇无码精品视频区| 精品国产导航| 日韩一区二区电影在线| 男人午夜视频在线观看| 激情久久一区二区| 欧美专区亚洲专区| 久久久久久久久久久免费视频| av人人综合网| 亚洲一区二区三区爽爽爽爽爽| 在线视频不卡国产| av电影在线网| 国产欧美日韩久久| 日本一区二区免费看| 欧美高清成人| 久久久夜色精品亚洲| 精品一区日韩成人| 视频二区在线| 久久久久久久久久久久久女国产乱| 精品国产一区二区三区四区vr | 国产一级18片视频| 亚洲综合好骚| 欧美专区国产专区| 久久亚洲精品石原莉奈| 日日噜噜夜夜狠狠视频欧美人| 国产91露脸中文字幕在线| 国产黄色免费观看| 日韩黄色免费电影| 国产精品网址在线| 亚洲网站免费观看| 黑人巨大精品欧美黑白配亚洲| 91深夜福利视频| 99精品视频在线播放免费| 国产乱妇无码大片在线观看| 成人av资源网| 天堂av一区二区三区| 99精品视频在线观看免费| 精品综合久久| 成人精品一区| 亚洲激情六月丁香| 精品这里只有精品| 成人1区2区| 欧美一级搡bbbb搡bbbb| 日韩少妇一区二区| 免费看成人吃奶视频在线| 伊人av综合网| 日韩女优一区二区| 99av国产精品欲麻豆| 国产精品久久久久久亚洲调教 | 亚洲精品国产一区| 宅男在线观看免费高清网站| 午夜av区久久| 9久久婷婷国产综合精品性色 | 欧美一区二区三区成人| 无码人妻一区二区三区在线| 台湾亚洲精品一区二区tv| 在线播放日韩专区| 九九视频在线观看| 久久久久久亚洲精品杨幂换脸| 国产日产欧美a一级在线| 超碰在线人人干| 久久久综合精品| 欧美性受xxxx黑人猛交88| 岛国av在线网站| 欧美日韩国产a| 欧产日产国产精品98| 欧美丝袜激情| 久久久久久97| 中文字幕一级片| 99视频一区二区| 中文网丁香综合网| 欧美自拍电影| 精品国产百合女同互慰| 成人小视频免费看| 99精品热6080yy久久| 国产欧美日韩高清| 婷婷五月综合激情| 亚洲视频在线一区| 亚洲人成色77777| 日韩在线观看中文字幕| 自拍偷拍亚洲区| www成人在线| 国产成a人无v码亚洲福利| 日本在线观看不卡| 九九色在线视频| 欧美情侣在线播放| 伊人网伊人影院| 影音先锋日韩资源| 亚洲一区制服诱惑| 91免费在线| 色综合视频在线观看| 午夜性福利视频| 999久久久91| 国产精品亚洲аv天堂网| 天堂а√在线8种子蜜桃视频| 亚洲人被黑人高潮完整版| 在线看的黄色网址| 国产精品一线天粉嫩av| 91av在线影院| 涩涩视频免费看| 亚洲国产一区二区三区| 国产精品91av| 欧美三区不卡| 古典武侠综合av第一页| 黄色免费在线观看| 欧美乱妇一区二区三区不卡视频| 99精品欧美一区二区| 美女日韩在线中文字幕| 久久久久久久久久码影片| 国产在线精彩视频| 日韩黄色高清视频| 国产一级淫片a视频免费观看| eeuss国产一区二区三区| 男女日批视频在线观看| 99精品国产一区二区三区2021| 久久国产精品免费视频| 99热这里只有精品9| 中文字幕一区二区在线播放| 欧美视频亚洲图片| 99久久夜色精品国产亚洲狼| 成人激情视频在线观看| 97超碰资源站在线观看| 日韩一卡二卡三卡国产欧美| 九九九免费视频| 风流少妇一区二区| 国产精品自拍片| 五月国产精品| 国产精品av电影| 337p日本欧洲亚洲大胆鲁鲁| 欧美一区二区三区免费视频| 欧美三级在线免费观看| 岛国av在线一区| 又粗又黑又大的吊av| 国产一区日韩| 国产在线精品一区免费香蕉| 午夜羞羞小视频在线观看| 日韩女优毛片在线| 国产又黄又爽又色| 国产精品视频一区二区三区不卡| www.午夜av| 悠悠资源网久久精品| 欧美日韩国产免费一区二区三区| 97欧美成人| 欧美乱妇高清无乱码| 四虎免费在线观看| 在线观看av不卡| 波多野结衣亚洲一区二区| 成人h版在线观看| 日韩手机在线观看视频| 91精品一区二区三区综合在线爱| 国产精品视频在线免费观看| 欧亚一区二区| 久久这里只有精品99| 天堂资源中文在线| 欧美美女视频在线观看| 国产成人亚洲欧洲在线| 国产欧美一区二区精品忘忧草| 奇米777在线视频| 亚洲激情在线| 一本一本a久久| 午夜欧洲一区| 成人动漫视频在线观看完整版| 中文字幕乱码在线播放| 欧美精品日韩www.p站| 国产在线免费观看| 精品国产一区二区三区不卡| 精品一区二区无码| 亚洲妇熟xx妇色黄| 亚洲欧美卡通动漫| 久久久久久久网| 任你躁av一区二区三区| 精品一二三四在线| 久久久久久久久久久久久国产精品| 亚洲精品2区| 日韩av影视| 色愁久久久久久| http;//www.99re视频| 欧美videos粗暴| 日韩美女在线看| h片在线观看视频免费| 久久国产精品久久久久久| 大片免费播放在线视频| 日韩av在线免费播放| 亚洲狼人综合网| 日韩一区二区电影在线| 国产农村妇女毛片精品| 欧美视频一区二区三区| 免费看毛片网站| 五月婷婷欧美视频| 久久久久久久极品内射| 亚洲欧美视频在线观看| 午夜精品一区二区三级视频| 91蝌蚪porny九色| 性猛交╳xxx乱大交| 精品一区二区影视| 久久精品一区二| 香蕉久久a毛片| 日本熟妇人妻xxxx| 婷婷六月综合| 午夜啪啪免费视频| 精品高清在线| 欧美极品色图| 国产不卡av一区二区| 国产综合动作在线观看| 清纯唯美激情亚洲| 亚洲xxx视频| 免费观看在线一区二区三区| 国产日本欧美一区二区三区在线| 精品九九久久| 国产精品扒开腿爽爽爽视频| 精品丝袜在线| 啊v视频在线一区二区三区| 成人18在线| 色妞欧美日韩在线| 久久免费看视频| 亚洲欧美在线一区二区| 99精品老司机免费视频| 在线看片第一页欧美| 久青草国产在线| 最近2019中文字幕大全第二页| 国产网站在线播放| 亚洲欧美在线看| av在线播放av| 久久精品国产亚洲7777| 黄网页免费在线观看| 欧美激情视频网址| 激情影院在线| 久久久在线观看| 日本不卡一二三| 日本一本a高清免费不卡| 中文字幕21页在线看| 午夜精品久久久久久久99热| 欧美粗大gay| 国产精品mp4| 日韩电影大全网站| 成人在线精品视频| 精品国产鲁一鲁****| 91视频99| 在线看成人短视频| 亚洲一区二区三区涩| 欧美午夜精品一区二区三区电影| 最新精品视频| 国产精品豆花视频| 两根大肉大捧一进一出好爽视频| 日本午夜精品一区二区三区电影| 天天干天天操天天玩| 国产伦精品一区二区三区在线观看| 欧美在线一级片| 久久久久国产精品麻豆| 黄大色黄女片18免费| 亚洲国产欧美日韩另类综合| 久久久久久久久久影院| 91福利视频在线| 亚洲不卡免费视频| 亚洲理论在线a中文字幕| av网站在线免费播放| 久久久亚洲国产天美传媒修理工| 亚洲天堂资源| 91网站在线免费观看| 一区二区三区韩国免费中文网站| 五码日韩精品一区二区三区视频| 亚洲成人tv| 国产精品免费成人| 国产一区二区三区不卡在线观看| 中国极品少妇videossexhd| 中文字幕成人网| 久久香蕉精品视频| 在线免费观看日本欧美| 日韩性xxxx| 中文字幕久久亚洲| av不卡高清| 成人免费在线视频网址| 欧美深夜视频| 亚洲欧美在线网| 99视频在线精品国自产拍免费观看| 五月婷婷激情久久| 97se亚洲国产综合在线| av成人免费网站| 色综合一个色综合亚洲| 高h调教冰块play男男双性文| 亚洲一区二区久久| av福利在线导航| av成人在线电影| 日韩综合一区| 久久久999视频| 99精品偷自拍| 青娱乐91视频| 在线亚洲+欧美+日本专区| 手机看片福利永久| 不卡中文字幕av| 亚洲色图综合| 日韩成人在线资源| 亚洲国产电影| 白嫩情侣偷拍呻吟刺激 | 日韩午夜激情免费电影| 成年网站在线| 全球成人中文在线| 亚洲日本三级| 欧美,日韩,国产在线| 国产精品1区2区| 午夜激情福利电影| 91福利在线免费观看| 久久久久久女乱国产| 97人人爽人人喊人人模波多| 日韩精品成人在线观看| 日本久久高清视频| 久久激情五月激情| 一区二区三区免费在线观看视频| 午夜精品视频一区| 丰满人妻妇伦又伦精品国产| 欧美激情中文字幕乱码免费| 久久av网站| 天堂v在线视频| 国产高清不卡二三区| 欧美丰满熟妇bbbbbb| 欧美精品自拍偷拍| 伊人222成人综合网| 成人亚洲欧美一区二区三区| 欧美视频二区| 亚洲欧洲日韩综合| 亚洲影视在线播放| 无码精品在线观看| 欧美孕妇性xx| 久久午夜影院| 男人的天堂日韩| 国产女同性恋一区二区| 一区二区三区黄| 日韩亚洲国产中文字幕| 24小时成人在线视频| 日本免费黄色小视频| 免费国产亚洲视频| 日韩在线观看免| 日韩一区二区精品葵司在线| 女子免费在线观看视频www| 久久99久久99精品蜜柚传媒| 99热精品在线观看| 欧美18—19性高清hd4k| 91麻豆精品91久久久久久清纯| 亚洲大胆人体大胆做受1| 国产精品三区www17con| 香蕉久久国产| 国产白丝一区二区三区| 日韩女优视频免费观看| 不卡视频观看| 精品视频一区在线| 久久97超碰国产精品超碰| 在线免费观看亚洲视频| 亚洲激情国产精品| 成人免费av电影| 这里只有精品66| 91女人视频在线观看| 成人黄色激情视频| 久久久久国产一区二区三区| 亚洲国产合集| 亚洲综合欧美激情| 亚洲成人777| 黄色片在线播放| aa成人免费视频| 日韩高清中文字幕一区| 国产一二三区精品|