操作系统的完整代码——文件管理代码ycfs.cpp

#define YCORG -1          //该设置使编译器生成头部为YCEXE结构的可执行文件
#include "ycio.cpp"

ycfsCLASS YCFS;
void main(void **pObj)
{
    for(int ii=0; ii<sizeof fd/sizeof fd[0]; ii++)
                                fd[ii].len = strlen(fd[ii].file);
    *pObj = &YCFS;
}

char yctty[sizeof<yctty.sys>] = <yctty.sys>;
char ycshell[sizeof<ycshell.exp>] = <ycshell.exp>;
char wina[sizeof<wina.js>] = <wina.js>;
char http_cpp[sizeof<http.cpp>] = <http.cpp>;
char pro0[sizeof<pro0.exp>] = <pro0.exp>;
char pro1[sizeof<pro1.exp>] = <pro1.exp>;
char pro2[sizeof<pro2.exp>] = <pro2.exp>;
char pi2_cpp[sizeof<pi2.cpp>] = <pi2.cpp>;
char pi2[sizeof<pi2.exp>] = <pi2.exp>;
char exp0[sizeof<exp0.exp>] = <exp0.exp>;
char drv[sizeof<drv.sys>] = <drv.sys>;
char dra[sizeof<dra.exp>] = <dra.exp>;
char drb[sizeof<drb.exp>] = <drb.exp>;
char ex0[sizeof<ex0.exp>] = <ex0.exp>;

struct
{
   char *file;
   int  size;
   char *buf;
   int len;
} fd[] = {
           { "yctty.sys", sizeof yctty, yctty},
           { "ycshell.sys", sizeof ycshell, ycshell},
           { "wina.js",   sizeof wina,  wina},
           { "http.cpp",  sizeof http_cpp,  http_cpp},
           { "pro0.exe",  sizeof pro0, pro0},
           { "pro1.exe",  sizeof pro1, pro1},
           { "pro2.exe",  sizeof pro2, pro2},
           { "pi2.cpp",  sizeof pi2_cpp,  pi2_cpp},
           { "pi2.exe",   sizeof pi2, pi2},
           { "exp0.exe",  sizeof exp0, exp0},
           { "drv.sys",  sizeof drv, drv},
           { "dra.exe",  sizeof dra, dra},
           { "drb.exe",  sizeof drb, drb},
           { "ex0.exe",  sizeof ex0, ex0},
         };

char *ycfsCLASS::get_file_name(int pos,int &size)
{
    if(pos<0 || pos>=sizeof fd/sizeof fd[0])   return nullptr;
    size = fd[pos].size;
    return fd[pos].file;
}

byte *ycfsCLASS::get_file_code(char *fptr,int flen,int *pSize)
{
    if(!flen)  flen = strlen(fptr);
    for(int ii=0; ii<sizeof fd/sizeof fd[0]; ii++)
      {
        if(flen != fd[ii].len || memcmp(fd[ii].file,fptr,flen))  continue;
        if(pSize)  *pSize = fd[ii].size;
        return (byte*)fd[ii].buf;
      }
    return nullptr;
}

                    C/C++代码文件: ycfs.cpp

    真正的文件系统比较复杂,ycfs.cpp只是模拟读几个固定的文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值