sys_write возвращает -1 нбайт, несмотря на запись 45-байтовой строки. Я получаю эту ошибку , когда вызывается sys_write. Я включил флаг для n_bytes, и он никогда не печатал '-1'.
Вот вся функция sys_write.
ssize_t sys_write(int fd, const void *buf, size_t nbytes) {
ssize_t n_bytes = 0;
int err = 0;
struct iovec iov;
struct uio usrio;
if (fd < 0 || fd >= OPEN_MAX) {
return EBADF;
}
if (curthread->filetable[fd] == NULL) {
return EBADF;
}
struct openfile* o_file;
o_file = curthread->filetable[fd];
if (o_file->flag == O_RDONLY) { // Check file is open for writing
return EBADF;
}
uio_kinit(&iov, &usrio, (userptr_t)buf, nbytes, o_file->offset, UIO_WRITE);
err = VOP_WRITE(o_file->vn_ptr, &usrio);
n_bytes = nbytes - usrio.uio_resid;
if (err != 0) {
return err;
}
o_file->offset = usrio.uio_offset;
kprintf("\n\n n_bytes: %d\n\n", n_bytes);
return n_bytes;
}