diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-05-20 22:10:34 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-05-20 22:10:34 +0000 |
commit | 7b639cc17a46229cacb9eca78a451a66122c54d8 (patch) | |
tree | 33492e787345ddef26740d5a9c1282f59324c2b0 /nuttx/graphics/nxconsole | |
parent | 01bce341a9d065e8250f655c246c07a525779bc0 (diff) | |
download | px4-nuttx-7b639cc17a46229cacb9eca78a451a66122c54d8.tar.gz px4-nuttx-7b639cc17a46229cacb9eca78a451a66122c54d8.tar.bz2 px4-nuttx-7b639cc17a46229cacb9eca78a451a66122c54d8.zip |
Add an NxWM console/keyboard thread and eliminate all issues with NxConsole window serial input
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4755 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/graphics/nxconsole')
-rw-r--r-- | nuttx/graphics/nxconsole/nxcon_kbdin.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/nuttx/graphics/nxconsole/nxcon_kbdin.c b/nuttx/graphics/nxconsole/nxcon_kbdin.c index 5914d4069..f4b116c46 100644 --- a/nuttx/graphics/nxconsole/nxcon_kbdin.c +++ b/nuttx/graphics/nxconsole/nxcon_kbdin.c @@ -244,7 +244,7 @@ ssize_t nxcon_read(FAR struct file *filep, FAR char *buffer, size_t len) /* Relinquish the mutual exclusion semaphore */ - sem_post(&priv->exclsem); + nxcon_sempost(priv); /* Notify all poll/select waiters that they can write to the FIFO */ @@ -400,6 +400,7 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen) ssize_t nwritten; int nexthead; char ch; + int ret; gvdbg("buflen=%d\n"); DEBUGASSERT(handle); @@ -408,6 +409,15 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen) priv = (FAR struct nxcon_state_s *)handle; + /* Get exclusive access to the driver structure */ + + ret = nxcon_semwait(priv); + if (ret < 0) + { + gdbg("ERROR: nxcon_semwait failed\n"); + return; + } + /* Loop until all of the bytes have been written. This function may be * called from an interrupt handler! Semaphores cannot be used! * @@ -451,7 +461,6 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen) /* Was anything written? */ -#ifndef CONFIG_DISABLE_POLL if (nwritten > 0) { int i; @@ -468,10 +477,11 @@ void nxcon_kbdin(NXCONSOLE handle, FAR const uint8_t *buffer, uint8_t buflen) /* Notify all poll/select waiters that they can write to the FIFO */ +#ifndef CONFIG_DISABLE_POLL nxcon_pollnotify(priv, POLLIN); +#endif sched_unlock(); } -#endif nxcon_sempost(priv); } |