sys_write возвращает -1 нбайт несмотря на запись полной строки - PullRequest
0 голосов
/ 29 марта 2020

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