From 35311456050b8a3db5395c99ed8af06c07ece0f5 Mon Sep 17 00:00:00 2001 From: ultraji Date: Sun, 3 Nov 2019 20:08:03 +0800 Subject: [PATCH] 2019.11.03 --- README.md | 6 +++--- linux-0.12/fs/bitmap.c | 8 ++++---- linux-0.12/fs/super.c | 4 ++-- linux-0.12/lib/close.c | 2 +- linux-0.12/lib/open.c | 15 +++------------ 5 files changed, 13 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index b732f09..f938dac 100755 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ #### 1.1 方式一 -可以选择已创建好的docker镜像作为实验环境(人生苦短,我用容器)。linux用户可以通过挂载将本地项目目录挂载到容器中,windows或mac用户可以在容器内重新git clone一份(因为不区分文件名大小写会导致挂载出错)。 +可以选择已创建好的docker镜像作为实验环境(人生苦短,我用容器)。linux用户可以通过挂载将本地项目目录挂载到容器中,windows或mac用户可以在容器内重新git clone一份(因为不区分文件名大小写会导致挂载出错)。->[Dockerfile](src/docker/Dockerfile) 1. docker方式 @@ -34,7 +34,7 @@ docker-compose up -d ``` -2. 通过浏览器输入```http://localhost:6080```访问容器内的桌面系统了。 +2. 通过浏览器输入```http://localhost:6080```就访问容器内的桌面系统了。 - vnc登陆密码: 123456 - 默认用户: ubuntu @@ -42,7 +42,7 @@ #### 1.2 方式二 -**ubuntu(64bit,>=14.04)** 的用户也可以使用`src/code`目录下的一键环境搭建脚本[setup.sh](src/code/setup.sh)。 +**ubuntu(64bit,>=14.04)** 的用户也可以使用`src/code`目录下的一键环境搭建脚本。->[setup.sh](src/code/setup.sh) ### 二、如何使用 diff --git a/linux-0.12/fs/bitmap.c b/linux-0.12/fs/bitmap.c index 71fb4fd..ef3e20f 100755 --- a/linux-0.12/fs/bitmap.c +++ b/linux-0.12/fs/bitmap.c @@ -89,7 +89,7 @@ int free_block(int dev, int block) if (block < sb->s_firstdatazone || block >= sb->s_nzones) { panic("trying to free block not in datazone"); } - /* 然后从hash表中寻找该块数据 */ + /* 从hash表中寻找该块数据 */ bh = get_hash_table(dev, block); if (bh) { if (bh->b_count > 1) { /* 引用次数大于1,该块还有人用,则调用brelse()后退出 */ @@ -104,11 +104,11 @@ int free_block(int dev, int block) } /* 接着复位block在逻辑块位图中的位(置0) */ block -= sb->s_firstdatazone - 1 ; - if (clear_bit(block & 8191, sb->s_zmap[block/8192]->b_data)) { /* 1个缓冲块有1024B,即8192bits */ + if (clear_bit(block & 8191, sb->s_zmap[block/8192]->b_data)) { printk("block (%04x:%d) ", dev, block + sb->s_firstdatazone - 1); printk("free_block: bit already cleared\n"); } - /* 最后置相应逻辑块位图所在缓冲区已修改标志 */ + /* 最后置相应逻辑块位图所在缓冲区的已修改标志 */ sb->s_zmap[block/8192]->b_dirt = 1; return 1; } @@ -216,7 +216,7 @@ void free_inode(struct m_inode * inode) } /** - * 为设备dev建立一个新i节点 + * 在设备dev上创建一个新i节点 * @param[in] dev 设备号 * @retval 成功返回新i节点的指针,失败返回NULL */ diff --git a/linux-0.12/fs/super.c b/linux-0.12/fs/super.c index 94064a0..ed2a52d 100755 --- a/linux-0.12/fs/super.c +++ b/linux-0.12/fs/super.c @@ -89,7 +89,7 @@ static void wait_on_super(struct super_block * sb) } /** - * 取指定设备的超级块 + * 取指定设备dev的超级块结构体指针 * 在超级块表(数组)中搜索指定设备dev的超级块结构信息。若找到则返回超级块的指针,否则返回空指针。 * @param[in] dev 设备号 * @retval 超级块指针 @@ -119,7 +119,7 @@ struct super_block * get_super(int dev) } /** - * 释放指定设备的超级块 + * 释放指定设备dev的超级块 * 释放设备所使用的超级块数组项(置s_dev = 0),并释放该设备i节点位图和逻辑块位图所占用的高速缓 * 冲块。如果超级块对应的文件系统是根文件系统,或者其某个i节点上已经安装了其他的文件系统,则不能 * 释放该超级块。 diff --git a/linux-0.12/lib/close.c b/linux-0.12/lib/close.c index 332036f..6f9429b 100755 --- a/linux-0.12/lib/close.c +++ b/linux-0.12/lib/close.c @@ -10,6 +10,6 @@ /** * 关闭文件 * @param[in] fd 要关闭的文件描述符 - * @retval + * @retval 成功返回0,失败返回-1。 */ _syscall1(int, close, int, fd) diff --git a/linux-0.12/lib/open.c b/linux-0.12/lib/open.c index 938af25..08346d9 100755 --- a/linux-0.12/lib/open.c +++ b/linux-0.12/lib/open.c @@ -12,7 +12,7 @@ * 打开(有可能创建)一个文件 * @param[in] filname 文件名 * @param[in] flag 文件打开标志 - * @param[in] ... + * @param[in] ... 文件属性 * @retval 成功返回文件描述符,出错返回-1并且设置出错号 */ int open(const char * filename, int flag, ...) @@ -20,24 +20,15 @@ int open(const char * filename, int flag, ...) register int res; va_list arg; - /* 利用va_start()宏函数,取得flag后面参数的指针,然后调用系统中断int 0x80, - 功能号__NR_open。文件打开操作。 - %0 - eax(返回的描述符或出错码) - %1 - eax(系统中断调用功能号__NR_open) - %2 - ebx(文件名filename) - %3 - ecx(打开文件标志flag) - %4 - edx(后随参数文件属性mode) */ va_start(arg, flag); __asm__( "int $0x80" :"=a" (res) - :"0" (__NR_open), "b" (filename), "c" (flag), - "d" (va_arg(arg, int))); - /* 系统中断调用返回值大于或等于0,表示是一个文件描述符,则直接返回之 */ + :"0" (__NR_open), "b" (filename), "c" (flag), "d" (va_arg(arg, int)) + ); if (res >= 0){ return res; } - /* 否则说明返回值小于0,则代表一个出错码,设置该出错码并返回-1 */ errno = -res; return -1; }