summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NxWidgets/ReleaseNotes.txt2
-rw-r--r--nuttx/Documentation/NuttX.html8
-rw-r--r--nuttx/ReleaseNotes8
-rw-r--r--nuttx/drivers/serial/serial.c51
4 files changed, 42 insertions, 27 deletions
diff --git a/NxWidgets/ReleaseNotes.txt b/NxWidgets/ReleaseNotes.txt
index 431d2796c..3b3a8531d 100644
--- a/NxWidgets/ReleaseNotes.txt
+++ b/NxWidgets/ReleaseNotes.txt
@@ -150,7 +150,7 @@ NxWidgets-1.5
The 6th release of the NxWidgets package was made on February 1, 2013. This
release depends on NuttX-6.25 or above and should not be used with older
-NuttX releases. This release corresponds to SVN revision r5594.
+NuttX releases. This release corresponds to SVN revision r5595.
Note: Nearly all of the changes between 1.4 and 1.5 were the result of the
efforts of Petteri Aimonen.
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index b4015bab7..b04150e1b 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -1075,17 +1075,17 @@
These unreleased changes are also listed <a href="#pendingchanges">here</a>.
</p>
<p>
- This release corresponds with SVN release number: r5594,
+ This release corresponds with SVN release number: r5595,
Note that all SVN information has been stripped from the tarballs.
If you need the SVN configuration, you should check out directly from SVN.
- Revision r5594 should equivalent to release 6.25 of NuttX:
+ Revision r5595 should equivalent to release 6.25 of NuttX:
</p>
<ul><pre>
-svn checkout -r5594 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
+svn checkout -r5595 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
</pre></ul>
<p>Or (HTTP):</p>
<ul><pre>
-svn checkout -r5594 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
+svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
</pre></ul>
<p>
diff --git a/nuttx/ReleaseNotes b/nuttx/ReleaseNotes
index 9d146e90a..4e8768b96 100644
--- a/nuttx/ReleaseNotes
+++ b/nuttx/ReleaseNotes
@@ -3450,17 +3450,17 @@ that release consists of two tarballs: nuttx-6.25.tar.gz and
apps-6.25.tar.gz. Both may be needed (see the top-level nuttx/README.txt
file for build information).
-This release corresponds with SVN release number: r5594
+This release corresponds with SVN release number: r5595
Note that all SVN information has been stripped from the tarballs. If you
need the SVN configuration information, you should check out directly from
-SVN. Revision r5594 should equivalent to release 6.25 of NuttX:
+SVN. Revision r5595 should equivalent to release 6.25 of NuttX:
- svn checkout -r5594 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
+ svn checkout -r5595 svn://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
Or (HTTP):
- svn checkout -r5594 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
+ svn checkout -r5595 http://svn.code.sf.net/p/nuttx/code/trunk nuttx-code
Additional new features and extended functionality:
diff --git a/nuttx/drivers/serial/serial.c b/nuttx/drivers/serial/serial.c
index 9c6acf2ee..cc1c697c0 100644
--- a/nuttx/drivers/serial/serial.c
+++ b/nuttx/drivers/serial/serial.c
@@ -292,15 +292,6 @@ static ssize_t uart_write(FAR struct file *filep, FAR const char *buffer, size_t
ssize_t nread = buflen;
int ret;
-#ifdef CONFIG_SERIAL_REMOVABLE
- /* If the removable device is no longer connected, refuse to write to the device */
-
- if (dev->disconnected)
- {
- return -ENOTCONN;
- }
-#endif
-
/* We may receive console writes through this path from interrupt handlers and
* from debug output in the IDLE task! In these cases, we will need to do things
* a little differently.
@@ -308,6 +299,17 @@ static ssize_t uart_write(FAR struct file *filep, FAR const char *buffer, size_t
if (up_interrupt_context() || getpid() == 0)
{
+#ifdef CONFIG_SERIAL_REMOVABLE
+ /* If the removable device is no longer connected, refuse to write to
+ * the device.
+ */
+
+ if (dev->disconnected)
+ {
+ return -ENOTCONN;
+ }
+#endif
+
/* up_putc() will be used to generate the output in a busy-wait loop.
* up_putc() is only available for the console device.
*/
@@ -338,6 +340,18 @@ static ssize_t uart_write(FAR struct file *filep, FAR const char *buffer, size_t
return ret;
}
+#ifdef CONFIG_SERIAL_REMOVABLE
+ /* If the removable device is no longer connected, refuse to write to the
+ * device.
+ */
+
+ if (dev->disconnected)
+ {
+ uart_givesem(&dev->xmit.sem);
+ return -ENOTCONN;
+ }
+#endif
+
/* Loop while we still have data to copy to the transmit buffer.
* we add data to the head of the buffer; uart_xmitchars takes the
* data from the end of the buffer.
@@ -417,15 +431,6 @@ static ssize_t uart_read(FAR struct file *filep, FAR char *buffer, size_t buflen
int16_t tail;
int ret;
-#ifdef CONFIG_SERIAL_REMOVABLE
- /* If the removable device is no longer connected, refuse to read from the device */
-
- if (dev->disconnected)
- {
- return -ENOTCONN;
- }
-#endif
-
/* Only one user can access dev->recv.tail at a time */
ret = uart_takesem(&dev->recv.sem, true);
@@ -439,6 +444,16 @@ static ssize_t uart_read(FAR struct file *filep, FAR char *buffer, size_t buflen
return ret;
}
+#ifdef CONFIG_SERIAL_REMOVABLE
+ /* If the removable device is no longer connected, refuse to read from the device */
+
+ if (dev->disconnected)
+ {
+ uart_givesem(&dev->recv.sem);
+ return -ENOTCONN;
+ }
+#endif
+
/* Loop while we still have data to copy to the receive buffer.
* we add data to the head of the buffer; uart_xmitchars takes the
* data from the end of the buffer.