Linux小于ox3ff端口读取

读取bios接口原来需要这些东西,Linux下设置端口权限的系统调用有两个:ioperm和iopl。

一、ioperm和iopl介绍。

1.ioperm

功能描述:

为调用进程设置I/O端口访问权能。ioperm的使用需要具有超级用户的权限,只有低端的[0-0x3ff] I/O端口可被设置,要想指定更多端口的权能,可使用iopl函数。这一调用只可用于i386平台。

用法:

#include <unistd.h> /* for libc5 */
#include <sys/io.h> /* for glibc */

int ioperm(unsigned long from, unsigned long num, int turn_on);


参数:

from:起始端口地址。

num:需要修改权能的端口数。

turn_on:端口的新权能位。1为开启,0为关闭。


返回说明:

成功执行时,返回0。失败返回-1,errno被设为以下的某个值

EINVAL:参数无效
EIO:这一调用不被支持
EPERM:调用进程权能不足。

2. iopl

功能描述:该调用用于修改当前进程的操作端口的权限。可以用于所有65536个端口的权限。因此,ioperm相当于该调用的子集。和ioperm一样,这一调用仅适用于i386平台。

用法:

#include <sys/io.h>

int iopl(int level);

参数:

level: 端口的权限级别。为3时可以读写端口。默认权能级别为0,用户空间不可读写。

返回说明:成功执行时,返回0。失败返回-1,errno被设为以下的某个值

EINVAL:level值大于3
ENOSYS:未实现该调用

EPERM:调用进程权能不足。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/25506.html