云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 模拟Unix文件系统实验报告

模拟Unix文件系统实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 6:05:09

#include\#include\#include\#include\#include

void getfid(struct list ls) {

int il=0,ki=0,lfb=-1,lfc=-1; f_inode[lfd].f_offest=0; while(il<50){

if(f_inode[il].mi!=NULL){

if(((short)f_inode[il].mi->iid)==ls.ib) {

lfb=il; break; }

}else if(ki==0){ lfc=il; ki=1; } il++; }

if(lfc>=0&&lfb<0){

f_inode[lfc].mi=i_get(ls.ib); f_inode[lfc].f_flag=06; f_inode[lfc].f_offest=0; f_inode[lfc].f_count=1; lff=lfd; lfd=lfc;

}else if(lfb>=0){

f_inode[lfb].f_count=1;

if((f_inode[lfb].mi->in.fmode&01000)>0){ f_inode[lfb].f_offest=0; }

lff=lfd; lfd=lfb; }else { lfb=-1; } }

int l_readf( int fd,void *buf, int count)

{

unsigned short seek=(unsigned short)f_inode[fd].f_offest%B_size; int b=0;

if(f_inode[fd].f_offestin.fsize&&f_inode[fd].mi->in.fsize!=0){

b=getblock(f_inode[fd].f_offest/B_size,f_inode[fd].mi->in); unsigned short m=(unsigned short)count; int bd=bread(b,seek, m,buf ); return bd; } return 0; }

int readf(int fd, char *buf, int count) {

if((f_inode[fd].f_flag&04)>0){ int fi=f_inode[fd].f_offest;

if(f_inode[fd].f_offest+count>f_inode[fd].mi->in.fsize) {

count=f_inode[fd].mi->in.fsize - f_inode[fd].f_offest; }

int t=B_size-f_inode[fd].f_offest%B_size; if(t>=count){

f_inode[fd].f_offest=f_inode[fd].f_offest+l_readf(fd,buf,count); }else{

int i=0;

if(t

f_inode[fd].f_offest=f_inode[fd].f_offest+l_readf(fd,buf,t); count=count-t; i=t; }

while(count>0) {

if(count>B_size){

f_inode[fd].f_offest=f_inode[fd].f_offest+l_readf(fd,(buf+i),B_size); count=count-B_size; i=i+B_size; } else{

f_inode[fd].f_offest=f_inode[fd].f_offest+l_readf(fd,(buf+i),count); i=i+count; count=0;

} } }

fi=f_inode[fd].f_offest-fi; return fi; }

return 0; }

int l_writef(int fd,const void *buf, int count) {

unsigned short seek=(unsigned short)f_inode[fd].f_offest%B_size; int b=0; int bd=0;

b=getblock(f_inode[fd].f_offest/B_size,f_inode[fd].mi->in); unsigned short m=(unsigned short)count; bd=bwrite(b,seek, m,buf ); return bd; }

int writef(int fd, const char *buf, int count) {

if((f_inode[fd].f_flag&02)>0) {

int fi=f_inode[fd].f_offest;

if(f_inode[fd].f_offest+count>f_inode[fd].mi->in.fsize) {

ifadd(f_inode[fd].f_offest+count-f_inode[fd].mi->in.fsize,f_inode[fd].mi); f_inode[fd].f_offest=fi; }

int t=B_size-f_inode[fd].f_offest%B_size; if(t

if(t

f_inode[fd].f_offest=f_inode[fd].f_offest+l_writef(fd,buf,t); count=count-t; i=t; }

while(count>0) {

if(count>B_size){

f_inode[fd].f_offest=f_inode[fd].f_offest+l_writef(fd,(buf+i),B_size);

count=count-B_size; i=i+B_size; } else{

f_inode[fd].f_offest=f_inode[fd].f_offest+l_writef(fd,(buf+i),count); i=i+count; count=0; } } } else{

f_inode[fd].f_offest=f_inode[fd].f_offest+l_writef(fd,buf,count); }

fi= f_inode[fd].f_offest-fi; return fi; }

return 0; }

int search(char *fname,int si) {

int j=0;

if(f_inode[lfd].mi!=NULL){ struct list ls;

if((f_inode[lfd].mi->in.fmode&01000)>0){ f_inode[lfd].f_offest=0;

while(jin.fsize) {

readf(lfd,&ls,16);

if(strcmp(ls.ls_name,fname)==0) {

getfid(ls); return FOUND; }

j=j+si; } } }

return NOFOUND; }

int iname(char *route)

搜索更多关于: 模拟Unix文件系统实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

#include\#include\#include\#include\#include void getfid(struct list ls) { int il=0,ki=0,lfb=-1,lfc=-1; f_inode[lfd].f_offest=0; while(il<50){ if(f_inode[il].mi!=NULL){ if(((short)f_inode[il].mi->iid)==ls.ib) { lfb=il; break; } }else if(ki==0){ lfc=il; ki=1; } il++; } if(lfc>=0&&lfb<0

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com