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

linux 0.11 内核学习 block_dev.c


/*
 * 该文件的两个函数是为了向open和write函数提供接口,实现内核数据
 * 和用户数据的交互
 */
/*
 *  linux/fs/block_dev.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <asm/segment.h>
#include <asm/system.h>
/*
 *    |   block1   |block 2|block 3|
 * ---|-----|------|-------|-------|-------|-------|----
 * ---|-----|------|-------|-------|-------|-------|----
 *    |<--->|<---->|------>|------>|
 *    offset  chars  chars1  chars2
 * --pos--->|<--------count------->|
 */
/* 向指定设备从给定偏移处写入指定长度字节数据,count - 要传送的字节数 */
/* dev - 设备号;pos - 设备文件中偏移量指针;buf - 用户地址空间中缓冲区地址 */
int block_write(int dev, long * pos, char * buf, int count)
{
// 对于内核来说,写操作是向高速缓冲区中写入数据,什么时候数据最终写入设备是由高速缓冲管理
// 程序决定并处理的。另外,因为设备是以块为单位进行读写的,因此对于写开始位置不处于块起始
// 处时,需要先将开始字节所在的整个块读出,然后将需要写的数据从写开始处填写满该块,再将完
// 整的一块数据写盘(即交由高速缓冲程序去处理)
// 由pos 地址换算成开始读写块的块序号block。并求出需读第1 字节在该块中的偏移位置offset
int block = *pos >> BLOCK_SIZE_BITS;
int offset = *pos & (BLOCK_SIZE-1);
int chars;
int written = 0;
struct buffer_head * bh;
register char * p;
while (count>0) {
chars = BLOCK_SIZE - offset; // 计算在该块中可写入的字节数
// 如果需要写入的字节数填不满一块,则只需写count 字节
if (chars > count)
chars=count;
// 如果正好要写1 块数据,则直接申请1 块高速缓冲块
if (chars == BLOCK_SIZE)
bh = getblk(dev,block);
// 否则需要读入将被修改的数据块,并预读
// 下两块数据,然后将块号递增1
else
bh = breada(dev,block,block+1,block+2,-1);
block++;


相关文档:

linux和unix下常用解压和压缩命令


linux和unix下常用解压和压缩命令
.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.ta ......

实战Linux Bluetooth编程(三) HCI层编程

http://www.ej38.com/showinfo/linux-111338.html
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host
Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC,
Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth D ......

zz GDB概述(LINUX下的跟踪调试)


GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形 
界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个 
调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这 
个道理。 
 
一 ......

linux 0.11 内核学习 bitmap.c


/*
 *  linux/fs/bitmap.c
 *
 *  (C) 1991  Linus Torvalds
 */
/* bitmap.c contains the code that handles the inode and block bitmaps */
#include <string.h>
#include <linux/sched.h>
#include <linux/kernel.h> // 一些内核常用函数的原形定义
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号