⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 044_fs_file_table_c.html

📁 重读linux 2.4.2o所写的笔记
💻 HTML
字号:
  <html lang="zh-CN" xmlns:gdoc="">  <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <style type="text/css">/* default css */table {  font-size: 1em;  line-height: inherit;}div, address, ol, ul, li, option, select {   margin-top: 0px;  margin-bottom: 0px;}p {  margin: 0px;}body {        margin: 0px;          padding: 0px;    font-family: Verdana, sans-serif;  font-size: 10pt;  background-color: #ffffff;}h6 { font-size: 10pt }h5 { font-size: 11pt }h4 { font-size: 12pt }h3 { font-size: 13pt }h2 { font-size: 14pt }h1 { font-size: 16pt }blockquote {padding: 10px; border: 1px #DDD dashed }a img {border: 0}div.google_header, div.google_footer {  position: relative;  margin-top: 1em;  margin-bottom: 1em;}/* end default css */  /* default print css */    @media print {    body {       padding: 0;       margin: 0;     }    div.google_header, div.google_footer {      display: block;      min-height: 0;      border: none;    }    div.google_header {      flow: static(header);    }    /* used to insert page numbers */    div.google_header::before, div.google_footer::before {      position: absolute;      top: 0;    }    div.google_footer {      flow: static(footer);    }    /* always consider this element at the start of the doc */    div#google_footer {      flow: static(footer, start);    }    span.google_pagenumber {      content: counter(page);    }    span.google_pagecount {      content: counter(pages);    }  }  @page {    @top {      content: flow(header);    }    @bottom {      content: flow(footer);    }  }  /* end default print css */ /* custom css *//* end custom css */  /* ui edited css */    body {    font-family: Verdana;        font-size: 10.0pt;    line-height: normal;    background-color: #ffffff;  }    .documentBG {    background-color: #ffffff;  }  /* end ui edited css */</style>   </head>  <body  revision="dcbsxfpf_32c4w6dddt:33">      <table align=center cellpadding=0 cellspacing=0 height=5716 width=802>
  <tbody>
  <tr>
    <td height=5716 valign=top width=802>
      <pre>2007-12-19<br><br>这个模块提供管理file的一些接口函数.<br>struct <font color=#000099><b>file </b></font>{<br>	struct list_head	f_list;<font color=#000099>  <font color=#3333ff>/*组织: annon_list 或者 free_list ( 在使用中|不在使用中)*/</font></font><br>	struct dentry		*f_dentry;/<font color=#000099><font color=#3333ff>*组织</font></font>*/ <br>	struct vfsmount         *f_vfsmnt;/<font color=#000099><font color=#3333ff>*组织</font></font>*/<br>       &nbsp;struct file_operations	*f_op;    /*feature*/<br>	atoic_t		f_count;  /*feature*/	<br>        unsigned int 		f_flags;<br>	mode_t			f_mode;<br>	loff_t			f_pos;<br>	unsigned long 		f_reada, f_ramax, f_raend, f_ralen, f_rawin;<br>	struct fown_struct	f_owner;<br>	unsigned int		f_uid, f_gid;<br>	int			f_error;<br><br>	unsigned long		f_version;<br><br>	/* needed for tty driver, and maybe others */<br>	void			*private_data;<br>};<br><br><font color=#3333ff>两个链表:</font><br>/* Here the new files go */<br>static LIST_HEAD(<b>anon_list</b>);  <font color=#3333ff>/*匿名的....为啥叫匿名,看看dentry_open就知道了,正常的file会链接进<br>                                  inode-&gt;i_sb-&gt;s_files*/</font><br>/* And here the free ones sit */<br>static LIST_HEAD(<b>free_list</b>);<br>/* public *and* exported. Not pretty! */<br>spinlock_t files_lock = SPIN_LOCK_UNLOCKED;<br><font color=#3333ff><br><br>有个分配和释放的几个接口函数:</font><br>struct file * get_empty_filp(void)<br>void fput(struct file * file)<br>struct file * fget(unsigned int fd)<br>void put_filp(struct file *file) <font color=#3333ff>/*不调用file-&gt;f_op-&gt;release(inode, file);*/</font><br><br>分配策略:<br>  预留10个(NR_RESERVED_FILES)file结构(即free_list中总有至少10个备用),然后总的数量不超过一个最大值(可配).说他简单是<br>因为,一旦分配就不再释放了,也不提供shrink操作....嘿嘿,有点像dquota.<br><br><br>void file_move(struct file *file, struct list_head *list) <br>void file_moveto(struct file *new, struct file *old)<br>int <font color=#000099><b>fs_may_remount_ro</b></font>(struct super_block *sb) <font color=#3333ff>/*如果要吧文件系统重新安装成read only,<br>                                                    就需要看看有没有写操作在执行*/</font><br><br><br>如果还需要什么分析的话,..... 我晕倒....<br></pre>
    </td>
  </tr>
  </tbody>
</table></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -