易截截图软件、单文件、免安装、纯绿色、仅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一句话问题解答之二

1101 linux中刻录iso的方法(hutuworm)
方法一:使用xcdroast,选择制作光碟,选择ISO文件,刻录!
参见[url]http://www.xcdroast.org/xcdr098/faq-a15.html#17[/url]
方法二:找刻录机的命令:
cdrecord --scanbus
输出结果为:
0,0,0 0) 'ATAPI ' 'CD-R/RW 8X4X32 ' '5.EZ' Removable CD-ROM
刻录的命令:
cdrecord ......

linux下vncserver配置与win下vnc客户端


linux下vncserver配置与win下vnc客户端


8 Nov, 2008
 
管理&服务

< type="text/javascript"><!--
google_ad_client = "pub-7056129240767270";
/* 300x250, 创建于 09-2-13 */
google_ad_slot = "270491 ......

linux与j2ee

J2ee程序员应该掌握的linux知识
开发者在线 Builder.com.cn 更新时间:2007-09-01作者:中国IT实验室 来源:中国IT实验室
本文关键词: Linux J2ee
 一般大型J2EE应用都在建构在linux环境下的。开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试。但是最后的发布还是要到linux环境, ......

linux使用技巧

我用到的Linux技巧 
1.linux上网:
使用root用户登陆使用 adsl-setup命令将配置ppp0
出现default就默认回车,采用默认设置
进入DNS information here:输入dns
最后使用 adsl-start 就可以用adsl方式上网了
2.uname -a - 看系统内核等信息
tar:把文件打包,不压缩:tar cvf *.tar dirName 解开:tar xvf *.tar ......

Linux下的一个作业程序

文档创建时间:2010-02-14
     1    // P120: 3.编程题 (3)
     2   
     3    // The begining of C program: test04-03.c.
     4   
     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号