コード例 #1
0
ファイル: syscall.cpp プロジェクト: shaunren/sysint
ssize_t write(int fd, const user_ptr<void> _buf, size_t count)
{
    shared_ptr<file> f;
    int ret = get_fd(fd, f);
    if (unlikely(ret != 0))
        return ret;

    if (unlikely((f->oflags & O_ACCMODE) == O_RDONLY))
        return -EACCES;

    auto buf = (const char*) _buf.get();
    if (unlikely(!buf || !_buf.check_region(buf, buf + count)))
        return -EFAULT;

    return f->write(buf, count);
}