Updae more comments

This commit is contained in:
Gregory Nutt 2016-07-27 08:03:09 -06:00
parent 59e0c4411f
commit 79c8bb7ddf

View File

@ -34,9 +34,10 @@
****************************************************************************/ ****************************************************************************/
/* TODO: O_NONBLOCK is not yet supported. Currently, the source and sink /* TODO: O_NONBLOCK is not yet supported. Currently, the source and sink
* pipes are opened nonblocking so only blocking behavior is supported. * pipes are opened in blocking mode on both the slave and master so only
* This driver must be able to support multiple clients that have have a PTY * blocking behavior is supported. This driver must be able to support
* device opened in blocking and non-blocking modes simultaneously. * multiple slave as well as master clients that may have the PTY device
* opened in blocking and non-blocking modes simultaneously.
* *
* There are two different possible implementations under consideration: * There are two different possible implementations under consideration:
* *
@ -60,18 +61,20 @@
* 2. An alternative that appeals to me is to modify the contained source * 2. An alternative that appeals to me is to modify the contained source
* or sink pipe file structures before each file_read() or file_write() * or sink pipe file structures before each file_read() or file_write()
* operation to assure that the O_NONBLOCK is set correctly when the * operation to assure that the O_NONBLOCK is set correctly when the
* pipe read or write operation is performed. * pipe read or write operation is performed. This might be done with
* file_vfcntl() (there is no file_fcntl(), yet) or directly into the
* source/sink file structure oflags mode settings.
* *
* This would require (1) the ability to lock each pipe individually, * This would require (1) the ability to lock each pipe individually,
* setting the blocking mode for the source or sing pipe to match the * setting the blocking mode for the source or sink pipe to match the
* mode in the open flags of the PTY device, and (2) logic to restore * mode in the open flags of the PTY device file structure, and (2)
* the default pipe mode after the file_read/write() operation and * logic to restore the default pipe mode after the file_read/write()
* before the pipe is unlocked. * operation and before the pipe is unlocked.
* *
* There are existing locks to support (1) destruction of the driver * There are existing locks to support (1) destruction of the driver
* (pp_exclsem) and (2) slave PTY locking (pp_slavesem). Care must be * (pp_exclsem) and (2) slave PTY locking (pp_slavesem), as well as (3)
* taken with any new source/sink pipe locking to assure that deadlocks * locks within the pipe implementation. Care must be taken with any new
* are not possible. * source/sink pipe locking to assure that deadlocks are not possible.
*/ */
/**************************************************************************** /****************************************************************************
@ -533,7 +536,7 @@ static ssize_t pty_read(FAR struct file *filep, FAR char *buffer, size_t len)
* *
* REVISIT: Should not block if the oflags include O_NONBLOCK. * REVISIT: Should not block if the oflags include O_NONBLOCK.
* How would we ripple the O_NONBLOCK characteristic to the * How would we ripple the O_NONBLOCK characteristic to the
* contained soruce pipe? file_fcntl()? Or FIONREAD? See the * contained soruce pipe? file_vfcntl()? Or FIONREAD? See the
* TODO comment at the top of this file. * TODO comment at the top of this file.
*/ */
@ -586,7 +589,7 @@ static ssize_t pty_read(FAR struct file *filep, FAR char *buffer, size_t len)
* *
* REVISIT: Should not block if the oflags include O_NONBLOCK. * REVISIT: Should not block if the oflags include O_NONBLOCK.
* How would we ripple the O_NONBLOCK characteristic to the * How would we ripple the O_NONBLOCK characteristic to the
* contained source pipe? file_fcntl()? Or FIONREAD? See the * contained source pipe? file_vfcntl()? Or FIONREAD? See the
* TODO comment at the top of this file. * TODO comment at the top of this file.
*/ */
@ -653,7 +656,7 @@ static ssize_t pty_write(FAR struct file *filep, FAR const char *buffer, size_t
* *
* REVISIT: Should not block if the oflags include O_NONBLOCK. * REVISIT: Should not block if the oflags include O_NONBLOCK.
* How would we ripple the O_NONBLOCK characteristic to the * How would we ripple the O_NONBLOCK characteristic to the
* contained sink pipe? file_fcntl()? Or FIONSPACE? See the * contained sink pipe? file_vfcntl()? Or FIONSPACE? See the
* TODO comment at the top of this file. * TODO comment at the top of this file.
*/ */
@ -674,7 +677,7 @@ static ssize_t pty_write(FAR struct file *filep, FAR const char *buffer, size_t
* *
* REVISIT: Should not block if the oflags include O_NONBLOCK. * REVISIT: Should not block if the oflags include O_NONBLOCK.
* How would we ripple the O_NONBLOCK characteristic to the * How would we ripple the O_NONBLOCK characteristic to the
* contained sink pipe? file_fcntl()? Or FIONSPACe? See the * contained sink pipe? file_vfcntl()? Or FIONSPACe? See the
* TODO comment at the top of this file. * TODO comment at the top of this file.
*/ */
@ -698,7 +701,7 @@ static ssize_t pty_write(FAR struct file *filep, FAR const char *buffer, size_t
* *
* REVISIT: Should not block if the oflags include O_NONBLOCK. * REVISIT: Should not block if the oflags include O_NONBLOCK.
* How would we ripple the O_NONBLOCK characteristic to the * How would we ripple the O_NONBLOCK characteristic to the
* contained sink pipe? file_fcntl()? Or FIONSPACE? See the * contained sink pipe? file_vfcntl()? Or FIONSPACE? See the
* TODO comment at the top of this file. * TODO comment at the top of this file.
*/ */