亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kernel.c

?? be文件系統(tǒng)實(shí)現(xiàn)的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    sz = bufsize;    err = (*op)(vn->ns->data, vn->data, buf, &sz);    if (err)        goto error2;    dec_vnode(vn, FALSE);    return sz;error2:    dec_vnode(vn, FALSE);error1:    return err;}/* * sys_mkdir */intsys_mkdir(bool kernel, int fd, const char *path, int perms){    int             err;    char            filename[FILE_NAME_LENGTH];    vnode           *dvn;    op_mkdir        *op;    err = get_dir_fd(kernel, fd, path, filename, &dvn);    if (err)        goto error1;    op = dvn->ns->fs->ops.mkdir;    if (!op) {        err = EINVAL;        goto error2;    }    err = (*op)(dvn->ns->data, dvn->data, filename, perms);    if (err)        goto error2;    dec_vnode(dvn, FALSE);    return 0;error2:    dec_vnode(dvn, FALSE);error1:    return err;}/* * opendir. */intsys_opendir(bool kernel, int fd, const char *path, bool coe){    int             err;    op_opendir      *op;    op_free_cookie  *opf;    ofile           *f;    int             nfd;    vnode           *vn;    void            *cookie;    err = get_file_fd(kernel, fd, path, TRUE, &vn);    if (err)        goto error1;    op = vn->ns->fs->ops.opendir;    if (!op) {        err = EINVAL;        goto error2;    }    err = (*op)(vn->ns->data, vn->data, &cookie);    if (err)        goto error2;    /*    find a file descriptor    */    f = (ofile *) calloc(sizeof(ofile), 1);    if (!f) {        err = ENOMEM;        goto error3;    }    f->type = FD_DIR;    f->vn = vn;    f->cookie = cookie;    f->rcnt = 0;    f->ocnt = 0;    nfd = new_fd(kernel, -1, f, -1, coe);    if (nfd < 0) {        err = EMFILE;        goto error4;    }    return nfd;error4:    free(f);error3:    (*vn->ns->fs->ops.closedir)(vn->ns->data, vn->data, cookie);    opf = vn->ns->fs->ops.free_dircookie;    if (opf)        (*opf)(vn->ns->data, vn->data, cookie);error2:    dec_vnode(vn, FALSE);error1:    if (err > 0)        /* XXXdbg -- a hack for linux */        err = -err;    return err;}/* * closedir */intsys_closedir(bool kernel, int fd){    return remove_fd(kernel, fd, FD_DIR);}/* * readdir. */intsys_readdir(bool kernel, int fd, struct my_dirent *buf, size_t bufsize,        long count){    ofile            *f;    int               err;    vnode            *vn;    struct my_dirent *p;    struct my_stat    st;    long              i;    nspace_id         nsid;    vnode_id          vnid;    long              nm;    f = get_fd(kernel, fd, FD_DIR);    if (!f) {        err = EBADF;        goto error1;    }    vn = f->vn;    nm = count;    err = (*vn->ns->fs->ops.readdir)(vn->ns->data, vn->data, f->cookie,            &nm, buf, bufsize);    if (err)        goto error1;    /*    patch the mount points and the root.    */    LOCK(vnlock);    nsid = vn->ns->nsid;    p = buf;    for(i=0; i<nm; i++) {        if (is_mount_vnid(nsid, p->d_ino, &vnid))            p->d_ino = vnid;        if (vn->ns->mount && !strcmp(p->d_name, "..")) {            UNLOCK(vnlock);            err = sys_rstat(kernel, fd, "..", &st, FALSE);            if (err)                goto error2;            LOCK(vnlock);            p->d_ino = st.ino;        }        p = (struct my_dirent *) ((char *) p + p->d_reclen);    }    UNLOCK(vnlock);    put_fd(f);    return nm;error2:    put_fd(f);error1:    return err;}/* * rewinddir */intsys_rewinddir(bool kernel, int fd){    ofile       *f;    int         err;    vnode       *vn;    f = get_fd(kernel, fd, FD_DIR);    if (!f)        return EBADF;    vn = f->vn;    err = (*vn->ns->fs->ops.rewinddir)(vn->ns->data, vn->data, f->cookie);    put_fd(f);    return err;}/* * open/create files. */intsys_open(bool kernel, int fd, const char *path, int omode, int perms,        bool coe){    int             err;    char            filename[FILE_NAME_LENGTH];    vnode           *vn, *dvn;    vnode_id        vnid;    void            *cookie;    ofile           *f;    int             nfd;    fdarray         *fds;    op_create       *opc;    op_open         *opo;    op_free_cookie  *opf;    if (omode & O_CREAT) {        err = get_dir_fd(kernel, fd, path, filename, &dvn);        if (err)            goto errorA;        opc = dvn->ns->fs->ops.create;        if (!opc) {            err = EINVAL;            goto errorB;        }        err = (*opc)(dvn->ns->data, dvn->data, filename, omode, perms, &vnid,                        &cookie);        if (err)            goto errorB;        LOCK(vnlock);        vn = lookup_vnode(dvn->ns->nsid, vnid);        UNLOCK(vnlock);        dec_vnode(dvn, FALSE);    } else {        err = get_file_fd(kernel, fd, path, TRUE, &vn);        if (err)            goto error1;        opo = vn->ns->fs->ops.open;        if (!opo) {            err = EINVAL;            goto error2;        }        err = (*opo)(vn->ns->data, vn->data, omode, &cookie);        if (err)            goto error2;    }    /*    find a file descriptor    */    f = (ofile *) calloc(sizeof(ofile), 1);    if (!f) {        err = ENOMEM;        goto error3;    }    f->type = FD_FILE;    f->vn = vn;    f->cookie = cookie;    f->ocnt = 0;    f->rcnt = 0;    f->pos = 0;    f->omode = omode;    nfd = new_fd(kernel, -1, f, -1, coe);    if (nfd < 0) {        err = EMFILE;        goto error4;    }    return nfd;error4:    free(f);error3:    (*vn->ns->fs->ops.close)(vn->ns->data, vn->data, cookie);    opf = vn->ns->fs->ops.free_cookie;    if (opf)        (*opf)(vn->ns->data, vn->data, cookie);    if (omode & O_CREAT)        goto errorC;error2:    dec_vnode(vn, FALSE);error1:    return err;errorC:    (*vn->ns->fs->ops.unlink)(dvn->ns->data, dvn->data, filename);    dec_vnode(vn, FALSE);errorB:    dec_vnode(dvn, FALSE);errorA:    if (err > 0)        /* XXXdbg -- a hack for linux */        err = -err;    return err;}/* * sys_close */intsys_close(bool kernel, int fd){    return remove_fd(kernel, fd, FD_FILE);}/* * sys_lseek */fs_off_tsys_lseek(bool kernel, int fd, fs_off_t pos, int whence){    ofile           *f;    int              err;    struct my_stat   st;    vnode           *vn;    op_rstat        *op;        f = get_fd(kernel, fd, FD_FILE);    if (!f) {        err = EBADF;        goto error1;    }    switch(whence) {    case SEEK_SET:        f->pos = pos;        break;    case SEEK_CUR:        if ((f->omode & O_APPEND) == 0)            f->pos += pos;        else {               /* we're in append mode so ask where the EOF is */            vn = f->vn;            op = vn->ns->fs->ops.rstat;            if (!op) {                err = EINVAL;                goto error2;            }            err = (*op)(vn->ns->data, vn->data, &st);            if (err)                goto error2;            pos += st.size;            f->pos = pos;            break;        }        break;    case SEEK_END:        vn = f->vn;        op = vn->ns->fs->ops.rstat;        if (!op) {            err = EINVAL;            goto error2;        }        err = (*op)(vn->ns->data, vn->data, &st);        if (err)            goto error2;        pos += st.size;        f->pos = pos;        break;    default:        put_fd(f);        return EINVAL;    }    if (f->pos < 0) {        f->pos = 0;        err = EINVAL;        goto error2;    }    pos = f->pos;    put_fd(f);    return pos;error2:    put_fd(f);error1:    return err;}/* * sys_read */ssize_tsys_read(bool kernel, int fd, void *buf, size_t len){    ofile       *f;    int         err;    vnode       *vn;    size_t      sz;    f = get_fd(kernel, fd, FD_FILE);    if (!f) {        err = EBADF;        goto error1;    }    if ((f->omode & OMODE_MASK) == O_WRONLY) {        err = EBADF;        goto error2;    }    vn = f->vn;    sz = len;    err = (*vn->ns->fs->ops.read)(vn->ns->data, vn->data, f->cookie, f->pos,        buf, &sz);    if (err)        goto error2;    /*    the update of f->pos is not protected. does it matter?    simultaneous I/Os on the same file are unpredictable anyway.    */    f->pos += sz;    put_fd(f);    return sz;error2:    put_fd(f);  error1:    return err;}/* * sys_write */ssize_tsys_write(bool kernel, int fd, void *buf, size_t len){    ofile       *f;    int         err;    vnode       *vn;    size_t      sz;    f = get_fd(kernel, fd, FD_FILE);    if (!f) {        err = EBADF;        goto error1;    }    if ((f->omode & OMODE_MASK) == O_RDONLY) {        err = EBADF;        goto error2;    }    vn = f->vn;    sz = len;    err = (*vn->ns->fs->ops.write)(vn->ns->data, vn->data, f->cookie, f->pos,        buf, &sz);    if (err)        goto error2;    /*    the update of f->pos is not protected. does it matter?    simultaneous I/Os on the same file are unpredictable anyway.    */    f->pos += sz;    put_fd(f);    return sz;error2:    put_fd(f);  error1:    return err;}/* * sys_ioctl */intsys_ioctl(bool kernel, int fd, int cmd, void *arg, size_t sz){    ofile       *f;    int         err;    vnode       *vn;    op_ioctl    *op;    f = get_fd(kernel, fd, FD_FILE);    if (!f) {        err = EBADF;        goto error1;    }    vn = f->vn;    op = vn->ns->fs->ops.ioctl;    if (op)        err = (*op)(vn->ns->data, vn->data, f->cookie, cmd, arg, sz);    else        err = EINVAL;    if (err)        goto error2;    put_fd(f);    return 0;error2:    put_fd(f);error1:    return err;}/* * sys_link */intsys_link(bool kernel, int ofd, const char *oldpath, int nfd,    const char *newpath){    int             err;    vnode           *vn, *dvn;    char            filename[FILE_NAME_LENGTH];    op_link         *op;        err = get_file_fd(kernel, ofd, oldpath, TRUE, &vn);    if (err)        goto error1;    err = get_dir_fd(kernel, nfd, newpath, filename, &dvn);    if (err)        goto error2;    if (vn->ns != dvn->ns) {        err = EXDEV;        goto error3;    }    op = dvn->ns->fs->ops.link;    if (!op) {        err = EINVAL;        goto error3;    }    err = (*op)(dvn->ns->data, dvn->data, filename, vn->data);    if (err)        goto error3;    dec_vnode(dvn, FALSE);    dec_vnode(vn, FALSE);    return 0;error3:    dec_vnode(dvn, FALSE);error2:    dec_vnode(vn, FALSE);error1:    return err;}/* * sys_unlink */intsys_unlink(bool kernel, int fd, const char *path){    int             err;    vnode           *dvn;    char            filename[FILE_NAME_LENGTH];    op_unlink       *op;        err = get_dir_fd(kernel, fd, path, filename, &dvn);    if (err)        goto error1;    op = dvn->ns->fs->ops.unlink;    if (!op) {        err = EINVAL;        goto error2;    }    err = (*op)(dvn->ns->data, dvn->data, filename);    if (err)        goto error2;    dec_vnode(dvn, FALSE);    return 0;error2:    dec_vnode(dvn, FALSE);error1:    return err;}/* * sys_rmdir */intsys_rmdir(bool kernel, int fd, const char *path){    int             err;    vnode           *dvn;    char            filename[FILE_NAME_LENGTH];    op_unlink       *op;        err = get_dir_fd(kernel, fd, path, filename, &dvn);    if (err)        goto error1;    op = dvn->ns->fs->ops.rmdir;    if (!op) {        err = EINVAL;        goto error2;    }    err = (*op)(dvn->ns->data, dvn->data, filename);    if (err)        goto error2;    dec_vnode(dvn, FALSE);    return 0;error2:    dec_vnode(dvn, FALSE);error1:    return err;}/* * sys_rename */intsys_rename(bool kernel, int ofd, const char *oldpath,    int nfd, const char *newpath){    int             err;    char            newname[FILE_NAME_LENGTH], oldname[FILE_NAME_LENGTH];    vnode           *odvn, *ndvn;    op_rename       *op;    err = get_dir_fd(kernel, ofd, oldpath, oldname, &odvn);    if (err)        goto error1;    err = get_dir_fd(kernel, nfd, newpath, newname, &ndvn);    if (err)        goto error2;        if (odvn->ns != ndvn->ns) {        err = EXDEV;        goto error2;    }    op = odvn->ns->fs->ops.rename;    if (!op) {        err = EINVAL;        goto error3;    }    err = (*op)(odvn->ns->data, odvn->data, oldname, ndvn->data, newname);    if (err)        goto error3;    dec_vnode(odvn, FALSE);    dec_vnode(ndvn, FALSE);    return 0;error3:    dec_vnode(ndvn, FALSE);error2:    dec_vnode(odvn, FALSE);error1:    return err;}/* * sys_rstat */intsys_rstat(bool kernel, int fd, const char *path, struct my_stat *st,          bool eatlink){    int         err;    vnode       *vn;    op_rstat    *op;    err = get_file_fd(kernel, fd, path, eatlink, &vn);    if (err)        goto error1;    op = vn->ns->fs->ops.rstat;    if (!op) {        err = EINVAL;        goto error2;    }    err = (*op)(vn->ns->data, vn->data, st);    if (err)        goto error2;    dec_vnode(vn, FALSE);    return 0;error2:    dec_vnode(vn, FALSE);error1:    return err;}/* * sys_wstat */intsys_wstat(bool kernel, int fd, const char *path, struct my_stat *st, long mask,        bool eatlink){    int         err;    vnode       *vn;    op_wstat    *op;    err = get_file_fd(kernel, fd, path, eatlink, &vn);    if (err)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品在线观看播放| 久久综合九色综合97婷婷| 久久精品av麻豆的观看方式| 国产蜜臀97一区二区三区| 欧美日韩精品欧美日韩精品一| 久草精品在线观看| 亚洲小少妇裸体bbw| 中文字幕第一区| 欧美一区二区三区免费视频| 97久久人人超碰| 国产最新精品精品你懂的| 香蕉成人伊视频在线观看| 国产精品久久久久久久久久免费看| 欧美一区二区网站| 欧美性猛交一区二区三区精品| 国产电影一区二区三区| 美女mm1313爽爽久久久蜜臀| 亚洲精品免费看| 亚洲欧洲日韩一区二区三区| 久久在线观看免费| 欧美成人精品福利| 欧美一区二区在线免费观看| 在线精品亚洲一区二区不卡| 成人在线视频一区二区| 久久激情五月激情| 美女一区二区久久| 日韩av在线发布| 五月天亚洲婷婷| 亚洲一区二区三区四区五区中文| 国产精品成人免费精品自在线观看 | 九九视频精品免费| 日韩精品91亚洲二区在线观看| 一区二区三区波多野结衣在线观看 | av电影一区二区| 国产成人午夜高潮毛片| 国产精品自产自拍| 国产在线播放一区三区四| 国产综合色视频| 国产麻豆精品theporn| 国产麻豆午夜三级精品| 韩国成人在线视频| 国产一区二区日韩精品| 国内精品久久久久影院色| 精品一区二区三区在线播放视频 | 经典三级在线一区| 精品午夜久久福利影院| 国产一区二区视频在线| 国产激情91久久精品导航| 国产黄色精品网站| eeuss鲁片一区二区三区 | 国产乱妇无码大片在线观看| 精品一区二区三区在线观看国产| 精品一区二区国语对白| 国产综合一区二区| 高清成人在线观看| 9色porny自拍视频一区二区| 91久久免费观看| 91.麻豆视频| 日韩美女视频一区二区在线观看| 久久综合九色综合97婷婷女人| 国产欧美精品在线观看| 丁香激情综合五月| 91亚洲精华国产精华精华液| 欧美在线啊v一区| 欧美日本国产一区| 久久这里只有精品6| 中文字幕一区二区在线观看| 亚洲午夜电影在线观看| 久久99精品国产.久久久久久 | 亚洲.国产.中文慕字在线| 日韩精品乱码免费| 国产福利精品导航| 色婷婷狠狠综合| 欧美成人一区二区三区片免费 | 欧美人妇做爰xxxⅹ性高电影| 欧美喷潮久久久xxxxx| 久久中文娱乐网| 亚洲日本va午夜在线影院| 日韩精品色哟哟| 不卡一区二区三区四区| 欧美日韩亚洲高清一区二区| 69堂国产成人免费视频| 欧美国产1区2区| 午夜精品一区在线观看| 国产91精品一区二区麻豆网站| 欧美在线观看视频一区二区 | 亚洲男同1069视频| 免费在线观看日韩欧美| 高清av一区二区| 777午夜精品视频在线播放| 国产精品系列在线| 日韩国产欧美一区二区三区| 成人免费视频播放| 91精品在线观看入口| 国产精品免费av| 麻豆精品国产传媒mv男同| 色欧美日韩亚洲| 久久久久久久久久看片| 性做久久久久久久免费看| 成人午夜精品在线| 日韩视频一区二区在线观看| 亚洲欧美日韩国产手机在线| 国产资源精品在线观看| 欧美日本一区二区| 亚洲免费伊人电影| 国产v综合v亚洲欧| 日韩欧美中文字幕一区| 亚洲一区二区精品3399| 99久久精品免费精品国产| 久久天堂av综合合色蜜桃网| 日韩中文字幕亚洲一区二区va在线 | 国产成人综合亚洲网站| 777xxx欧美| 亚洲成人一二三| 91成人看片片| 亚洲婷婷在线视频| www.色综合.com| 国产欧美日韩视频在线观看| 黄页视频在线91| 91精品国产一区二区人妖| 亚洲成人动漫在线观看| 色欧美日韩亚洲| 亚洲乱码国产乱码精品精的特点| 国产成人精品免费| 久久久精品国产免大香伊| 久久精品99国产精品日本| 欧美一区二区在线免费播放| 三级欧美在线一区| 欧美日韩一区二区在线视频| 一区二区三区美女视频| 日本电影欧美片| 一区二区三区在线免费观看| 一本到三区不卡视频| 亚洲色图丝袜美腿| 色悠悠久久综合| 亚洲乱码中文字幕| 欧美在线小视频| 亚洲国产一区二区a毛片| 欧美三区免费完整视频在线观看| 一区二区三区高清| 欧美日韩在线精品一区二区三区激情| 尤物在线观看一区| 欧美人与禽zozo性伦| 日韩电影在线免费看| 欧美成人伊人久久综合网| 韩日av一区二区| 国产亚洲欧美中文| 99久久er热在这里只有精品66| 亚洲欧美乱综合| 欧美日韩一区中文字幕| 奇米影视一区二区三区小说| 日韩欧美国产三级电影视频| 国产一区二区三区国产| 国产精品私人影院| 在线看日本不卡| 免费在线观看日韩欧美| 久久综合色鬼综合色| 成人成人成人在线视频| 一区二区三区在线视频观看58| 欧美日本免费一区二区三区| 精品一区二区在线观看| 欧美激情一区二区三区蜜桃视频 | 欧美一区二区三区白人| 国内精品自线一区二区三区视频| 国产欧美精品一区二区色综合朱莉| 91香蕉国产在线观看软件| 亚洲成人午夜电影| 久久综合狠狠综合久久激情| 成人免费电影视频| 亚洲综合免费观看高清在线观看| 欧美精品 国产精品| 国产激情偷乱视频一区二区三区| 亚洲日韩欧美一区二区在线| 欧美精品日韩综合在线| 国产精品亚洲成人| 一级精品视频在线观看宜春院 | 欧美肥大bbwbbw高潮| 激情文学综合插| 一区二区三区在线影院| 精品国产伦一区二区三区观看方式 | 欧美性大战久久久久久久蜜臀 | 亚洲激情五月婷婷| 欧美电影免费观看高清完整版在| 成人精品电影在线观看| 午夜欧美视频在线观看| 日本一区二区综合亚洲| 欧美日韩国产高清一区二区| 丰满少妇久久久久久久| 日韩精品一级二级| 亚洲欧美在线高清| 欧美精品一区二区三区四区| 在线精品视频免费观看| 国产一区二区三区在线看麻豆| 亚洲国产日产av| 国产精品色哟哟| 精品久久久久久久一区二区蜜臀| 在线亚洲人成电影网站色www| 激情综合色丁香一区二区| 亚洲成av人**亚洲成av**| 国产精品美日韩|