VFS - no CANCEL for async non-blocking operations
- if an operation (R, W, IOCTL) is non blocking, a flag is set and sent to the device. - nothing changes for sync devices - asyn devices should reply asap if an operation is non-blocking. We must trust the devices, but we had to trust them anyway to reply to CANCEL correctly - we safe sending CANCEL commands to asyn devices. This greatly simplifies the protocol. Asynchronous devices can always reply when a reply is ready and do not need to deal with other situations - currently, none of our drivers use the flags since they drive virtual devices which do not block
This commit is contained in:
+3
-2
@@ -25,7 +25,7 @@ PRIVATE int log_device = -1; /* current device */
|
||||
FORWARD _PROTOTYPE( struct device *log_prepare, (dev_t device) );
|
||||
FORWARD _PROTOTYPE( int log_transfer, (endpoint_t endpt, int opcode,
|
||||
u64_t position, iovec_t *iov, unsigned int nr_req,
|
||||
endpoint_t user_endpt) );
|
||||
endpoint_t user_endpt, unsigned int flags) );
|
||||
FORWARD _PROTOTYPE( int log_do_open, (message *m_ptr) );
|
||||
FORWARD _PROTOTYPE( int log_cancel, (message *m_ptr) );
|
||||
FORWARD _PROTOTYPE( int log_select, (message *m_ptr) );
|
||||
@@ -281,7 +281,8 @@ PRIVATE int log_transfer(
|
||||
u64_t UNUSED(position), /* offset on device to read or write */
|
||||
iovec_t *iov, /* pointer to read or write request vector */
|
||||
unsigned int nr_req, /* length of request vector */
|
||||
endpoint_t user_endpt /* endpoint of user process */
|
||||
endpoint_t user_endpt, /* endpoint of user process */
|
||||
unsigned int UNUSED(flags)
|
||||
)
|
||||
{
|
||||
/* Read or write one the driver's minor devices. */
|
||||
|
||||
Reference in New Issue
Block a user