📄 31.html
字号:
<a name='L182'> <b>unsigned</b> <b>short</b> s_imap_blocks; <i><font color='green'>// i 节点位图所占用的数据块数。</font></i>
<a name='L183'> <b>unsigned</b> <b>short</b> s_zmap_blocks; <i><font color='green'>// 逻辑块位图所占用的数据块数。</font></i>
<a name='L184'> <b>unsigned</b> <b>short</b> s_firstdatazone; <i><font color='green'>// 第一个数据逻辑块。</font></i>
<a name='L185'> <b>unsigned</b> <b>short</b> s_log_zone_size; <i><font color='green'>// log(数据块数/逻辑块)。(以2 为底)。</font></i>
<a name='L186'> <b>unsigned</b> <b>long</b> s_max_size; <i><font color='green'>// 文件最大长度。</font></i>
<a name='L187'> <b>unsigned</b> <b>short</b> s_magic; <i><font color='green'>// 文件系统魔数。</font></i>
<a name='L188'><font color='red'>}</font>;
<a name='L189'>
<a name='L190'><i><font color='green'>// 文件目录项结构。</font></i>
<a name='L191'><b>struct</b> dir_entry
<a name='L192'><font color='red'>{</font>
<a name='L193'> <b>unsigned</b> <b>short</b> inode; <i><font color='green'>// i 节点。</font></i>
<a name='L194'> <b>char</b> name[<a href='../S/31.html#L52' title='Defined at 52 in include/linux/fs.h.'>NAME_LEN</a>]; <i><font color='green'>// 文件名。</font></i>
<a name='L195'><font color='red'>}</font>;
<a name='L196'>
<a name='L197'><b>extern</b> <b>struct</b> m_inode inode_table[<a href='../S/31.html#L60' title='Defined at 60 in include/linux/fs.h.'>NR_INODE</a>]; <i><font color='green'>// 定义i 节点表数组(32 项)。</font></i>
<a name='L198'><b>extern</b> <b>struct</b> file file_table[<a href='../S/31.html#L61' title='Defined at 61 in include/linux/fs.h.'>NR_FILE</a>]; <i><font color='green'>// 文件表数组(64 项)。</font></i>
<a name='L199'><b>extern</b> <b>struct</b> super_block super_block[<a href='../S/31.html#L62' title='Defined at 62 in include/linux/fs.h.'>NR_SUPER</a>]; <i><font color='green'>// 超级块数组(8 项)。</font></i>
<a name='L200'><b>extern</b> <b>struct</b> buffer_head *start_buffer; <i><font color='green'>// 缓冲区起始内存位置。</font></i>
<a name='L201'><b>extern</b> <b>int</b> nr_buffers; <i><font color='green'>// 缓冲块数。</font></i>
<a name='L202'>
<a name='L203'><i><font color='green'>//// 磁盘操作函数原型。</font></i>
<a name='L204'><i><font color='green'>// 检测驱动器中软盘是否改变。</font></i>
<a name='L205'><b>extern</b> <b>void</b> <a href='../S/6.html#L165' title='Defined at 165 in fs/buffer.c.'>check_disk_change</a> (<b>int</b> dev);
<a name='L206'><i><font color='green'>// 检测指定软驱中软盘更换情况。如果软盘更换了则返回1,否则返回0。</font></i>
<a name='L207'><b>extern</b> <b>int</b> <a href='../S/55.html#L223' title='Defined at 223 in kernel/blk_drv/floppy.c.'>floppy_change</a> (<b>unsigned</b> <b>int</b> nr);
<a name='L208'><i><font color='green'>// 设置启动指定驱动器所需等待的时间(设置等待定时器)。</font></i>
<a name='L209'><b>extern</b> <b>int</b> <a href='../S/74.html#L298' title='Defined at 298 in kernel/sched.c.'>ticks_to_floppy_on</a> (<b>unsigned</b> <b>int</b> dev);
<a name='L210'><i><font color='green'>// 启动指定驱动器。</font></i>
<a name='L211'><b>extern</b> <b>void</b> <a href='../S/74.html#L332' title='Defined at 332 in kernel/sched.c.'>floppy_on</a> (<b>unsigned</b> <b>int</b> dev);
<a name='L212'><i><font color='green'>// 关闭指定的软盘驱动器。</font></i>
<a name='L213'><b>extern</b> <b>void</b> <a href='../S/74.html#L342' title='Defined at 342 in kernel/sched.c.'>floppy_off</a> (<b>unsigned</b> <b>int</b> dev);
<a name='L214'><i><font color='green'>//// 以下是文件系统操作管理用的函数原型。</font></i>
<a name='L215'><i><font color='green'>// 将i 节点指定的文件截为0。</font></i>
<a name='L216'><b>extern</b> <b>void</b> <a href='../S/20.html#L81' title='Defined at 81 in fs/truncate.c.'>truncate</a> (<b>struct</b> m_inode *inode);
<a name='L217'><i><font color='green'>// 刷新i 节点信息。</font></i>
<a name='L218'><b>extern</b> <b>void</b> <a href='../S/12.html#L77' title='Defined at 77 in fs/inode.c.'>sync_inodes</a> (<b>void</b>);
<a name='L219'><i><font color='green'>// 等待指定的i 节点。</font></i>
<a name='L220'><b>extern</b> <b>void</b> wait_on (<b>struct</b> m_inode *inode);
<a name='L221'><i><font color='green'>// 逻辑块(区段,磁盘块)位图操作。取数据块block 在设备上对应的逻辑块号。</font></i>
<a name='L222'><b>extern</b> <b>int</b> <a href='../S/12.html#L207' title='Defined at 207 in fs/inode.c.'>bmap</a> (<b>struct</b> m_inode *inode, <b>int</b> block);
<a name='L223'><i><font color='green'>// 创建数据块block 在设备上对应的逻辑块,并返回在设备上的逻辑块号。</font></i>
<a name='L224'><b>extern</b> <b>int</b> <a href='../S/12.html#L214' title='Defined at 214 in fs/inode.c.'>create_block</a> (<b>struct</b> m_inode *inode, <b>int</b> block);
<a name='L225'><i><font color='green'>// 获取指定路径名的i 节点号。</font></i>
<a name='L226'><b>extern</b> <b>struct</b> m_inode *<a href='../S/14.html#L470' title='Defined at 470 in fs/namei.c.'>namei</a> (<b>const</b> <b>char</b> *pathname);
<a name='L227'><i><font color='green'>// 根据路径名为打开文件操作作准备。</font></i>
<a name='L228'><b>extern</b> <b>int</b> <a href='../S/14.html#L522' title='Defined at 522 in fs/namei.c.'>open_namei</a> (<b>const</b> <b>char</b> *pathname, <b>int</b> flag, <b>int</b> mode,
<a name='L229'> <b>struct</b> m_inode **res_inode);
<a name='L230'><i><font color='green'>// 释放一个i 节点(回写入设备)。</font></i>
<a name='L231'><b>extern</b> <b>void</b> <a href='../S/12.html#L221' title='Defined at 221 in fs/inode.c.'>iput</a> (<b>struct</b> m_inode *inode);
<a name='L232'><i><font color='green'>// 从设备读取指定节点号的一个i 节点。</font></i>
<a name='L233'><b>extern</b> <b>struct</b> m_inode *<a href='../S/12.html#L355' title='Defined at 355 in fs/inode.c.'>iget</a> (<b>int</b> dev, <b>int</b> nr);
<a name='L234'><i><font color='green'>// 从i 节点表(inode_table)中获取一个空闲i 节点项。</font></i>
<a name='L235'><b>extern</b> <b>struct</b> m_inode *<a href='../S/12.html#L283' title='Defined at 283 in fs/inode.c.'>get_empty_inode</a> (<b>void</b>);
<a name='L236'><i><font color='green'>// 获取(申请一)管道节点。返回为i 节点指针(如果是NULL 则失败)。</font></i>
<a name='L237'><b>extern</b> <b>struct</b> m_inode *<a href='../S/12.html#L335' title='Defined at 335 in fs/inode.c.'>get_pipe_inode</a> (<b>void</b>);
<a name='L238'><i><font color='green'>// 在哈希表中查找指定的数据块。返回找到块的缓冲头指针。</font></i>
<a name='L239'><b>extern</b> <b>struct</b> buffer_head *<a href='../S/6.html#L261' title='Defined at 261 in fs/buffer.c.'>get_hash_table</a> (<b>int</b> dev, <b>int</b> block);
<a name='L240'><i><font color='green'>// 从设备读取指定块(首先会在hash 表中查找)。</font></i>
<a name='L241'><b>extern</b> <b>struct</b> buffer_head *<a href='../S/6.html#L301' title='Defined at 301 in fs/buffer.c.'>getblk</a> (<b>int</b> dev, <b>int</b> block);
<a name='L242'><i><font color='green'>// 读/写数据块。</font></i>
<a name='L243'><b>extern</b> <b>void</b> <a href='../S/57.html#L204' title='Defined at 204 in kernel/blk_drv/ll_rw_blk.c.'>ll_rw_block</a> (<b>int</b> rw, <b>struct</b> buffer_head *bh);
<a name='L244'><i><font color='green'>// 释放指定缓冲块。</font></i>
<a name='L245'><b>extern</b> <b>void</b> <a href='../S/6.html#L377' title='Defined at 377 in fs/buffer.c.'>brelse</a> (<b>struct</b> buffer_head *buf);
<a name='L246'><i><font color='green'>// 读取指定的数据块。</font></i>
<a name='L247'><b>extern</b> <b>struct</b> buffer_head *<a href='../S/6.html#L397' title='Defined at 397 in fs/buffer.c.'>bread</a> (<b>int</b> dev, <b>int</b> block);
<a name='L248'><i><font color='green'>// 读4 块缓冲区到指定地址的内存中。</font></i>
<a name='L249'><b>extern</b> <b>void</b> <a href='../S/6.html#L439' title='Defined at 439 in fs/buffer.c.'>bread_page</a> (<b>unsigned</b> <b>long</b> addr, <b>int</b> dev, <b>int</b> b[4]);
<a name='L250'><i><font color='green'>// 读取头一个指定的数据块,并标记后续将要读的块。</font></i>
<a name='L251'><b>extern</b> <b>struct</b> buffer_head *<a href='../S/6.html#L478' title='Defined at 478 in fs/buffer.c.'>breada</a> (<b>int</b> dev, <b>int</b> block, ...);
<a name='L252'><i><font color='green'>// 向设备dev 申请一个磁盘块(区段,逻辑块)。返回逻辑块号</font></i>
<a name='L253'><b>extern</b> <b>int</b> <a href='../S/4.html#L99' title='Defined at 99 in fs/bitmap.c.'>new_block</a> (<b>int</b> dev);
<a name='L254'><i><font color='green'>// 释放设备数据区中的逻辑块(区段,磁盘块)block。复位指定逻辑块block 的逻辑块位图比特位。</font></i>
<a name='L255'><b>extern</b> <b>void</b> <a href='../S/4.html#L59' title='Defined at 59 in fs/bitmap.c.'>free_block</a> (<b>int</b> dev, <b>int</b> block);
<a name='L256'><i><font color='green'>// 为设备dev 建立一个新i 节点,返回i 节点号。</font></i>
<a name='L257'><b>extern</b> <b>struct</b> m_inode *<a href='../S/4.html#L185' title='Defined at 185 in fs/bitmap.c.'>new_inode</a> (<b>int</b> dev);
<a name='L258'><i><font color='green'>// 释放一个i 节点(删除文件时)。</font></i>
<a name='L259'><b>extern</b> <b>void</b> <a href='../S/4.html#L143' title='Defined at 143 in fs/bitmap.c.'>free_inode</a> (<b>struct</b> m_inode *inode);
<a name='L260'><i><font color='green'>// 刷新指定设备缓冲区。</font></i>
<a name='L261'><b>extern</b> <b>int</b> <a href='../S/6.html#L93' title='Defined at 93 in fs/buffer.c.'>sync_dev</a> (<b>int</b> dev);
<a name='L262'><i><font color='green'>// 读取指定设备的超级块。</font></i>
<a name='L263'><b>extern</b> <b>struct</b> super_block *<a href='../S/19.html#L76' title='Defined at 76 in fs/super.c.'>get_super</a> (<b>int</b> dev);
<a name='L264'><b>extern</b> <b>int</b> ROOT_DEV;
<a name='L265'>
<a name='L266'><i><font color='green'>// 安装根文件系统。</font></i>
<a name='L267'><b>extern</b> <b>void</b> <a href='../S/19.html#L354' title='Defined at 354 in fs/super.c.'>mount_root</a> (<b>void</b>);
<a name='L268'>
<a name='L269'><font color='darkred'>#endif</font>
</pre>
<hr>
<a name='BOTTOM'>
<i><font color='green'>/* [<][>][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -