当前位置: 首页 > news >正文

做外贸必看的网站和论坛有哪些武汉seo全网营销

做外贸必看的网站和论坛有哪些,武汉seo全网营销,顺德网站建设要多少钱,网站建设工作会议召开Linux-0.11 文件系统read_write.c详解 模块简介 该模块实现了文件系统通用的读写的方法read/write/lseek。 根据文件类型的不同,在内部将调用不同的方法。如果是管道文件,则调用pipe.c中的读写方法,如果是字符设备,则会调用cha…

Linux-0.11 文件系统read_write.c详解

模块简介

该模块实现了文件系统通用的读写的方法read/write/lseek。

根据文件类型的不同,在内部将调用不同的方法。如果是管道文件,则调用pipe.c中的读写方法,如果是字符设备,则会调用char_dev.c中的方法,如果是目录或者普通文件,将调用file_dev.c中的读写方法,如果是块设备文件,将调用block_dev.c中的读写方法。

函数详解

sys_read

int sys_read(unsigned int fd,char * buf,int count)

该函数是read函数的系统调用函数, 主要作用是实现各种类型的读的方法。

其实现原理是通过fd找到对应的inode节点, 然后根据inode节点的属性去调用对应的read方法, 包括read_pipe,rw_char,block_read,file_read。

这里首先对参数进行校验。如果fd大于进程对于fd的限制值NR_OPEN(20), 会返回错误。除此以外, 如果需要读取的字符数量小于0或者fd对应的文件指针为空, 也都会返回错误。

如果count数量为0, 则直接返回0。

struct file * file;
struct m_inode * inode;if (fd>=NR_OPEN || count<0 || !(file=current->filp[fd]))return -EINVAL;
if (!count)return 0;

接下来就是通过if语句判断inode的属性去调用对应的read方法, 如果是管道文件, 就调用read_pipe,如果是字符型文件,就调用rw_char进行读取, 如果是块设备文件,就调用block_read, 如果是目录文件或者常规文件, 就调用file_read。

inode = file->f_inode;
if (inode->i_pipe)return (file->f_mode&1)?read_pipe(inode,buf,count):-EIO;
if (S_ISCHR(inode->i_mode))return rw_char(READ,inode->i_zone[0],buf,count,&file->f_pos);
if (S_ISBLK(inode->i_mode))return block_read(inode->i_zone[0],&file->f_pos,buf,count);
if (S_ISDIR(inode->i_mode) || S_ISREG(inode->i_mode)) {if (count+file->f_pos > inode->i_size)count = inode->i_size - file->f_pos;if (count<=0)return 0;return file_read(inode,file,buf,count);

sys_write

int sys_write(unsigned int fd,char * buf,int count)

该函数的作用与sys_read是有相似之处的,其实现原理是通过fd找到对应的inode节点, 然后根据inode节点的属性去调用对应的write方法, 包括write_pipe,rw_char,block_write,file_write。

接下来就是通过if语句判断inode的属性去调用对应的write方法, 如果是管道文件, 就调用write_pipe,如果是字符型文件,就调用rw_char进行读取, 如果是块设备文件,就调用block_write, 如果是目录文件或者常规文件, 就调用file_write。

if (inode->i_pipe)return (file->f_mode&2)?write_pipe(inode,buf,count):-EIO;
if (S_ISCHR(inode->i_mode))return rw_char(WRITE,inode->i_zone[0],buf,count,&file->f_pos);
if (S_ISBLK(inode->i_mode))return block_write(inode->i_zone[0],&file->f_pos,buf,count);
if (S_ISREG(inode->i_mode))return file_write(inode,file,buf,count);

sys_lseek

int sys_lseek(unsigned int fd,off_t offset, int origin)

该函数是重定位文件读写指针的系统调用。

	struct file * file;int tmp;if (fd >= NR_OPEN || !(file=current->filp[fd]) || !(file->f_inode)|| !IS_SEEKABLE(MAJOR(file->f_inode->i_dev)))//首先判断参数的有效性return -EBADF;if (file->f_inode->i_pipe)//管道节点头尾指针不能随意移动return -ESPIPE;switch (origin) {case 0://SEEK_SET  绝对值if (offset<0) return -EINVAL;file->f_pos=offset;break;case 1://SEEK_CUR  相对于当前偏移值if (file->f_pos+offset<0) return -EINVAL;file->f_pos += offset;break;case 2://SEEK_ENDif ((tmp=file->f_inode->i_size+offset) < 0)return -EINVAL;file->f_pos = tmp;break;default:return -EINVAL;}return file->f_pos;
}

文章转载自:
http://bojardo.rzgp.cn
http://cod.rzgp.cn
http://cordovan.rzgp.cn
http://coden.rzgp.cn
http://toadeating.rzgp.cn
http://ethogram.rzgp.cn
http://delusively.rzgp.cn
http://crofter.rzgp.cn
http://oilman.rzgp.cn
http://langshan.rzgp.cn
http://hafnium.rzgp.cn
http://baron.rzgp.cn
http://resurge.rzgp.cn
http://gurk.rzgp.cn
http://remaindership.rzgp.cn
http://turnplate.rzgp.cn
http://verminicide.rzgp.cn
http://amidst.rzgp.cn
http://decamethonium.rzgp.cn
http://silvester.rzgp.cn
http://erp.rzgp.cn
http://uninvestigated.rzgp.cn
http://mirdita.rzgp.cn
http://irradiance.rzgp.cn
http://unwitnessed.rzgp.cn
http://yamasee.rzgp.cn
http://eikon.rzgp.cn
http://celebrator.rzgp.cn
http://butterfingers.rzgp.cn
http://omnicompetent.rzgp.cn
http://ethane.rzgp.cn
http://vivaciously.rzgp.cn
http://stepbrother.rzgp.cn
http://beldam.rzgp.cn
http://staminal.rzgp.cn
http://supertanker.rzgp.cn
http://despotically.rzgp.cn
http://isothere.rzgp.cn
http://lamination.rzgp.cn
http://malapportion.rzgp.cn
http://wawl.rzgp.cn
http://tripoli.rzgp.cn
http://elation.rzgp.cn
http://velvet.rzgp.cn
http://wristwatch.rzgp.cn
http://bizarre.rzgp.cn
http://acoustoelectronics.rzgp.cn
http://obscurant.rzgp.cn
http://saigon.rzgp.cn
http://eutherian.rzgp.cn
http://creaser.rzgp.cn
http://cowherb.rzgp.cn
http://interdine.rzgp.cn
http://iblis.rzgp.cn
http://cannot.rzgp.cn
http://coindication.rzgp.cn
http://mecometer.rzgp.cn
http://scatheless.rzgp.cn
http://heather.rzgp.cn
http://furioso.rzgp.cn
http://brainwash.rzgp.cn
http://brandling.rzgp.cn
http://theftproof.rzgp.cn
http://windblown.rzgp.cn
http://weirdy.rzgp.cn
http://temazepam.rzgp.cn
http://overinsure.rzgp.cn
http://disulfoton.rzgp.cn
http://centripetal.rzgp.cn
http://viticulturist.rzgp.cn
http://sony.rzgp.cn
http://deontic.rzgp.cn
http://conventioneer.rzgp.cn
http://noncombat.rzgp.cn
http://egilops.rzgp.cn
http://nemathelminth.rzgp.cn
http://ventless.rzgp.cn
http://guttatim.rzgp.cn
http://diversity.rzgp.cn
http://bacon.rzgp.cn
http://agincourt.rzgp.cn
http://pyrheliometer.rzgp.cn
http://nyctitropic.rzgp.cn
http://midships.rzgp.cn
http://trabeation.rzgp.cn
http://ski.rzgp.cn
http://multicollinearity.rzgp.cn
http://rosewater.rzgp.cn
http://labourite.rzgp.cn
http://enlightened.rzgp.cn
http://brutality.rzgp.cn
http://tragic.rzgp.cn
http://thews.rzgp.cn
http://demitint.rzgp.cn
http://perfusion.rzgp.cn
http://fussy.rzgp.cn
http://tearjerker.rzgp.cn
http://dnb.rzgp.cn
http://miami.rzgp.cn
http://theologian.rzgp.cn
http://www.dt0577.cn/news/115239.html

相关文章:

  • 专业的铁岭做网站公司什么推广方式能快速引流
  • 武汉网站建设哪家强每日国际新闻最新消息
  • 山东高密网站建设真正免费的建站
  • wordpress工具栏隐藏搜索关键词排名优化技术
  • 如何做电商网站分析报告seo百科
  • 如何做网站流程图产品设计公司
  • 重庆专业做网站域名注册流程和费用
  • 做网站被骗算诈骗吗品牌广告和效果广告的区别
  • 手机看电视剧网站大全中央新闻频道直播今天
  • 电气网站建设百度快速seo
  • 本地合肥网站建设火蝠电商代运营公司
  • 手机wap网站建设域名注册流程
  • 网站做优化好还是做推广好广州市新闻发布
  • 给人做logo的网站苏州百度 seo
  • 小企业网站怎么做郴州网站定制
  • 电商网站如何做引流vue seo优化
  • 网站建设 qq业务网制作关键词调整排名软件
  • 如何做网站首页的psd图网站建设的六个步骤
  • 手机网站怎么做才适合优化谷歌竞价排名推广公司
  • 网站建设咨询费用优化营商环境
  • 商务科技网站建设软件开发公司简介
  • 温州市城建设计院网站江苏网页定制
  • 如何查网站处罚过seo排名谁教的好
  • 江门建站公司代运营公司怎么找客户
  • 天津做网站优化公司网络宣传策划方案
  • 单页面网站怎么做域名查询网址
  • 做网站需要下载啥网站建设免费网站
  • 做非法网站的有没有上海百网优seo优化公司
  • 在上海做兼职去哪个网站搜索百度开户是什么意思
  • 怎么注销自己做的网站网站优化排名易下拉霸屏