Linux0.11-缓冲区初始化.doc

上传人:白大夫 文档编号:3255225 上传时间:2019-08-06 格式:DOC 页数:3 大小:19KB
返回 下载 相关 举报
Linux0.11-缓冲区初始化.doc_第1页
第1页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Linux0.11-缓冲区初始化.doc》由会员分享,可在线阅读,更多相关《Linux0.11-缓冲区初始化.doc(3页珍藏版)》请在三一文库上搜索。

1、Linux0.11-缓冲区初始化init/main.c部分代码memory_end = (1 16*1024*1024)memory_end = 16*1024*1024;if (memory_end 12*1024*1024) /内存12M 设置高速缓冲区大小4Mbuffer_memory_end = 4*1024*1024;else if (memory_end 6*1024*1024) / 内存6M 设置高速缓冲区大小2Mbuffer_memory_end = 2*1024*1024;elsebuffer_memory_end = 1*1024*1024; /否则设置高速缓冲大小1Mma

2、in_memory_start = buffer_memory_end;ifdef RAMDISKmain_memory_start += rd_init(main_memory_start, RAMDISK*1024);endifmemory_end = (1 16*1024*1024)memory_end = 16*1024*1024;if (memory_end 12*1024*1024) /内存12M 设置高速缓冲区大小4Mbuffer_memory_end = 4*1024*1024;else if (memory_end 6*1024*1024)/ 内存6M 设置高速缓冲区大小2M

3、buffer_memory_end = 2*1024*1024;elsebuffer_memory_end = 1*1024*1024;/否则设置高速缓冲大小1Mmain_memory_start = buffer_memory_end;#ifdef RAMDISKmain_memory_start += rd_init(main_memory_start, RAMDISK*1024);#endif/fs/buffer.c中初始化函数buffer_init()struct buffer_head *h = start_buffer;void *b;int i;if (buffer_end =

4、1= h 缓冲头的末端,也即要=h+1。while (b -= BLOCK_SIZE) = (void *) (h + 1)h-b_dev = 0; / 使用该缓冲区的设备号。h-b_dirt = 0; / 脏标志,也即缓冲区修改标志。h-b_count = 0; / 该缓冲区引用计数。h-b_lock = 0; / 缓冲区锁定标志。h-b_uptodate = 0; / 缓冲区更新标志(或称数据有效标志)。h-b_wait = NULL; / 指向等待该缓冲区解锁的进程。h-b_next = NULL; / 指向具有相同hash 值的下一个缓冲头。h-b_prev = NULL; / 指向具

5、有相同hash 值的前一个缓冲头。h-b_data = (char *) b; / 指向对应缓冲区数据块(1024 字节)。h-b_prev_free = h - 1; / 指向链表中前一项。h-b_next_free = h + 1; / 指向链表中下一项。h+; / h 指向下一新缓冲头位置。NR_BUFFERS+; / 缓冲区块数累加。if (b = (void *) 0x100000) / 如果地址b 递减到等于1MB,则跳过384KB,b = (void *) 0xA0000; / 让b 指向地址0xA0000(640KB)处。h-; / 让h 指向最后一个有效缓冲头。free_li

6、st = start_buffer; / 让空闲链表头指向头一个缓冲区头。free_list-b_prev_free = h; / 链表头的b_prev_free 指向前一项(即最后一项)。h-b_next_free = free_list; / h 的下一项指针指向第一项,形成一个环链。/ 初始化hash 表(哈希表、散列表),置表中所有的指针为NULL。for (i = 0; i = h 缓冲头的末端,也即要=h+1。while (b -= BLOCK_SIZE) = (void *) (h + 1)h-b_dev = 0;/ 使用该缓冲区的设备号。h-b_dirt = 0;/ 脏标志,也

7、即缓冲区修改标志。h-b_count = 0;/ 该缓冲区引用计数。h-b_lock = 0;/ 缓冲区锁定标志。h-b_uptodate = 0;/ 缓冲区更新标志(或称数据有效标志)。h-b_wait = NULL;/ 指向等待该缓冲区解锁的进程。h-b_next = NULL;/ 指向具有相同hash 值的下一个缓冲头。h-b_prev = NULL;/ 指向具有相同hash 值的前一个缓冲头。h-b_data = (char *) b;/ 指向对应缓冲区数据块(1024 字节)。h-b_prev_free = h - 1;/ 指向链表中前一项。h-b_next_free = h + 1

8、;/ 指向链表中下一项。h+;/ h 指向下一新缓冲头位置。NR_BUFFERS+;/ 缓冲区块数累加。if (b = (void *) 0x100000)/ 如果地址b 递减到等于1MB,则跳过384KB,b = (void *) 0xA0000;/ 让b 指向地址0xA0000(640KB)处。h-;/ 让h 指向最后一个有效缓冲头。free_list = start_buffer;/ 让空闲链表头指向头一个缓冲区头。free_list-b_prev_free = h;/ 链表头的b_prev_free 指向前一项(即最后一项)。h-b_next_free = free_list;/ h 的下一项指针指向第一项,形成一个环链。/ 初始化hash 表(哈希表、散列表),置表中所有的指针为NULL。for (i = 0; i NR_HASH; i+)hash_tablei = NULL;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1