err = do_not_aio(&req); reply = ((struct aio_thread_reply) { .data 	= req.aio, .err	= err }); err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply));
again: err = do_not_aio(aio);  if(update_aio(aio, err)) goto again;  reply = ((struct aio_thread_reply) { .data 	= aio, .err	= aio->len }); err = os_write_file(aio->reply_fd, &reply, sizeof(reply));
static int not_aio_thread(void *arg){        struct aio_thread_req req;        struct aio_thread_reply reply;        int err;        signal(SIGWINCH, SIG_IGN);        while(1){                err = os_read_file(aio_req_fd_r, &req, sizeof(req));                if(err != sizeof(req)){                        if(err < 0)                                printk("not_aio_thread - read failed, "                                       "fd = %d, err = %d\n", aio_req_fd_r,                                       -err);                        else {                                printk("not_aio_thread - short read, fd = %d, "                                       "length = %d\n", aio_req_fd_r, err);                        }                        continue;                }                err = do_not_aio(&req);                reply = ((struct aio_thread_reply) { .data 	= req.aio,                                                     .err	= err });                err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply));                if(err != sizeof(reply))                        printk("not_aio_thread - write failed, fd = %d, "                               "err = %d\n", aio_req_fd_r, -err);        }}