view paper/src/fileread.c @ 49:d3ed28a7964f

update
author mir3636
date Mon, 11 Feb 2019 19:04:56 +0900
parents 675cd2c69450
children
line wrap: on
line source

int fileread (struct file *f, char *addr, int n)
{
    int r;

    if (f->readable == 0) {
        return -1;
    }

    if (f->type == FD_PIPE) {
        return piperead(f->pipe, addr, n);
    }

    if (f->type == FD_INODE) {
        ilock(f->ip);

        if ((r = readi(f->ip, addr, f->off, n)) > 0) {
            f->off += r;
        }

        iunlock(f->ip);

        return r;
    }

    panic("fileread");
}