syscall調用介面從2.6.19開始移到應用程式層

來源:互聯網
上載者:User

轉自:http://crquan.blogbus.com/logs/5618102.html


syscall調用介面從2.6.19開始移到應用程式層,原來核心中使用_syscallN宏的方式來聲明函數原型的方法不再有效:

如聲明:

_syscall1(int, sysinfo, struct sysinfo *, info);

不再需要,而是在程式中需要的時候直接調用:

int syscall(int number, ...);
  • 第一個number是後面要接的參數個數,不是該系統調用的參數個數;(註:關於這個number,man手冊上說的是: syscall()  performs the system call whose assembly language interface has the specified number with the specified arguments.  Symbolic constants for system
           calls can be found in the header file <sys/syscall.h>.
  • number後面順序接上該系統調用的所有參數即可

相應標頭檔包含也改變為

於是調用sysinfo就變為:

struct sysinfo s_info;
syscall(2, __NR_sysinfo, &s_info);

可見新的調用方式變得更為簡潔了。

References:

  • http://lxr.linux.no/source/include/asm-i386/unistd.h
  • http://lxr.linux.no/source/include/asm-i386/unistd.h?v=2.6.18
  • http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.19-git13.log
  • commit f5738ceed46782aea7663d62cb6398eb05fc4ce0 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.