summaryrefslogtreecommitdiff
path: root/nuttx/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/graphics')
-rw-r--r--nuttx/graphics/nxconsole/nxcon_kbdin.c16
-rw-r--r--nuttx/graphics/nxmu/nx_kbdin.c2
2 files changed, 14 insertions, 4 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);
}
diff --git a/nuttx/graphics/nxmu/nx_kbdin.c b/nuttx/graphics/nxmu/nx_kbdin.c
index ac044bec7..b4b91298b 100644
--- a/nuttx/graphics/nxmu/nx_kbdin.c
+++ b/nuttx/graphics/nxmu/nx_kbdin.c
@@ -113,7 +113,7 @@ int nx_kbdin(NXHANDLE handle, uint8_t nch, FAR const uint8_t *ch)
outmsg->ch[i] = ch[i];
}
- ret = nxmu_sendserver(conn, &outmsg, size);
+ ret = nxmu_sendserver(conn, outmsg, size);
free(outmsg);
return ret;