易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux下设置端口权限的系统调用有两个:ioperm和iopl

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
:调用进程权能不足。

二、程序示例
1. ioperm.c
操作低于
0x3FF
的端口
该程序首先设置
0x3FF
端口的读写权限,然后读出原先的值,然后将原值的
LSB
翻转并写回端口,并在此读取端口值。
/*Godbach. Dec 18, 2008
Description:This function is used to test ioperm()*/
#include <stdio.h>
#include <unistd.h>
#include <sys/io.h>

#define PORT_ADDR 0x3FF

int main(void)
{
     
int ret;
     
char port_val;

     
/*set r/w permission of port_addr on, only one port*/
     
ret = ioperm(PORT_ADDR, 1, 1);
     
if(ret < 0){


相关文档:

Linux定时器 详解[转]


[转]Linux定时器

核主要需要两种类型的时间:


1.

在内核运行期间持续记录当前的时间与日期,以便内核对某些对象和事件作时间标记(

timestamp

,也称为



时间戳



),或供用



户通过时间

syscall ......

轻型Linux大放光彩






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
         
Linux
世界很精彩,令人眼花缭乱。近期以来,各种轻型
Linux
版本不断登台亮相,知名的
Puppy
(小狗之名)便是一例。何故?
 
     ......

Linux: S3C2410的RTC驱动

----------------------------------------------------------------------------------------------------------------------------------------
/**/
/*
********************************************************************************************************
*  @Description:s3c2410的rtc驱动的实 ......

宽字符支持(linux,MinGW,Qt)


1。要使用宽字符支持,使用w开头的一系列东西,如wstring,wofstream等。在使用wstring的时候,常量字符串前面要加上L,这样才能转换成wchar_t型的
else if(fileName.substr(fileName.rfind(L"."))==L".prj")
2。一个文件流(无论是ofstream还是wofstream),只支持const char*作为文件名,对于宽字符的wstring的文件名 ......

Interrupt in Linux(硬件篇)—— APIC2


1.2.2 LAPIC
收到来自IOAPIC的中断消息后,LAPIC会将该中断交由CPU处理。和IOAPIC比较,LAPIC具有更多的寄存器以及更复杂的机制。但对于处理来自IOAPIC的中断消息,最重要的寄存器还是IRR、ISR以及EOI。
图1-4显示了x86平台上,IRR和ISR的格式:
 
图1-4 IRR、ISR构成
与PIC中的IRR、ISR不同的是,LAPIC的ISR、 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号