linux中的outb、outw、inb、inw
在linux的驱动程序中,都会使用大量的outb、outw、inb、inw等等宏来访问硬件或寄存器。这些宏的定义都在相应处理器体系下的include\asm目录下的io.h中定义。追究下去,这些宏最终就是一个volatile变量的的赋值:
#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v))
#define __raw_writeb(v,a) __arch_putb(v,a)
#define outb(v,p) __raw_writeb(v,__io(p))
在(*(volatile unsigned char *)(a) = (v))中,a是一个物理地址(实地址,多数是特殊功能寄存器地址)。(volatile unsigned char *)对a进行类型转换,成为一个指向该地址指针,最后*(volatile unsigned char *)(a)引用该指针对该地址赋值v。这样就可以达到访问底层硬件的目的了。
相关文档:
创建linux服务,使得test client可以开机启动,步骤如下:
1.创建目录/usr/local/test/
2.复制testc到/usr/local/test/
3.编写文件/etc/init.d/testc.sh
testc.sh
--------------------begin(not included)-----------------------
#! /bin/sh
#
### BEGIN INIT INFO
# Provides: &nbs ......
yum update 更新系统之后,内核版本出现了两种,一种是PAE,另外一种并没有PAE。
何谓PAE呢?全称:Physical Address Extension
其实就是使32位系统支持超过4G内存,最大可达64G内存。
对于Linux来说,内核从2.6版本开始全面支持PAE[3]
,这使得在32位的机器上可以访问64GB的内存。启用了PAE的Linux内核还需要同样支持P ......
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
pthread_mutex_t wqy_mutex_pause = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t wqy_cond_pause = PTHREAD_COND_INITIALIZER;
bool wqy_pthread_pause = false;
void wqy_pthread_suspend(void)
{
if ......
1.文件的创建和读写
当我们需要打开一个文件进行读写操作的时候,我们可以使用系统调用函数open.使用完成以后我们调用另外一个close函数进行关闭操作.
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
int close(int fd);
......
一.安装
1.到网上下载rar for linux
2.tar zxvf rarlinux-3.7.b1.tar.gz
3.make
二.使用
1. rar e test.rar 解压RAR档
2. rar a 压缩后的文件名.rar 待压文件或目录
三.问题
若运行RAR提示如下:
rar: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by rar)
则用里面提供的 rar_stati ......