} mess_vfs_fs_utime;
_ASSERT_MSG_SIZE(mess_vfs_fs_utime);
+typedef struct {
+ endpoint_t id;
+ devminor_t minor;
+
+ uint8_t padding[48];
+} mess_vfs_lchardriver_cancel;
+_ASSERT_MSG_SIZE(mess_vfs_lchardriver_cancel);
+
typedef struct {
endpoint_t id;
endpoint_t user;
mess_vfs_lc_lseek m_vfs_lc_lseek;
+ mess_vfs_lchardriver_cancel m_vfs_lchardriver_cancel;
mess_vfs_lchardriver_openclose m_vfs_lchardriver_openclose;
mess_vfs_utimens m_vfs_utimens;
case CDEV_READ:
case CDEV_WRITE:
case CDEV_IOCTL:
- case CDEV_CANCEL: /* For cancel, this is a reply to the original request! */
reply_mess.m_type = CDEV_REPLY;
reply_mess.m_lchardriver_vfs_reply.status = r;
reply_mess.m_lchardriver_vfs_reply.id = mess->CDEV_ID;
break;
+ case CDEV_CANCEL: /* For cancel, this is a reply to the original request! */
+ reply_mess.m_type = CDEV_REPLY;
+ reply_mess.m_lchardriver_vfs_reply.status = r;
+ reply_mess.m_lchardriver_vfs_reply.id =
+ mess->m_vfs_lchardriver_cancel.id;
+ break;
+
case CDEV_SELECT:
reply_mess.m_type = CDEV_SEL1_REPLY;
reply_mess.m_lchardriver_vfs_sel1.minor = mess->CDEV_MINOR;
return EDONTREPLY;
/* Call the cancel hook. */
- minor = m_ptr->CDEV_MINOR;
+ minor = m_ptr->m_vfs_lchardriver_cancel.minor;
endpt = m_ptr->m_source;
- id = m_ptr->CDEV_ID;
+ id = m_ptr->m_vfs_lchardriver_cancel.id;
return cdp->cdr_cancel(minor, endpt, id);
}
case CDEV_CLOSE:
*minor = m->m_vfs_lchardriver_openclose.minor;
return OK;
+ case CDEV_CANCEL:
+ *minor = m->m_vfs_lchardriver_cancel.minor;
+ return OK;
case CDEV_READ:
case CDEV_WRITE:
case CDEV_IOCTL:
- case CDEV_CANCEL:
case CDEV_SELECT:
*minor = m->CDEV_MINOR;
return OK;
memset(&dev_mess, 0, sizeof(dev_mess));
dev_mess.m_type = CDEV_CANCEL;
- dev_mess.CDEV_MINOR = minor_dev;
- dev_mess.CDEV_ID = fp->fp_endpoint;
+ dev_mess.m_vfs_lchardriver_cancel.minor = minor_dev;
+ dev_mess.m_vfs_lchardriver_cancel.id = fp->fp_endpoint;
/* Send the request to the driver. */
if ((r = asynsend3(dp->dmap_driver, &dev_mess, AMF_NOREPLY)) != OK)