2011年8月22日 星期一

Linux user space下直接存取I/O的方法


iopl使用方式】
For Linux

功能描述:
改變當前I/O埠的權能級別,可存取所有 65536I/O埠。但因為使用較高的I/O權限,將
會使中斷禁能,這可能導致系統的crash,不推薦那樣做。一般I/O權限設定為0

用法:
#include <sys/io.h>
int iopl(int level);

參數:
level:新的I/O訪問級,範圍是[0~3](3->最大權限)
返回說明:
成功執行時,返回0。失敗返回-1errno被設為以下的某個值
EINVAL:參數無效,level大於3
ENOSYS:平臺不支援這個系統調用
EPERM:調用進程沒有許可權使用iopl,要求CAP_SYS_RAWIO權能

Example:
main()
{
  iopl(3);
  outb(0xcfc);
  inb(0xcfc);
 iopl(0);
}

1 則留言:

匿名 提到...

烏漆媽黑的給鬼看阿