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); }