summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/qoriq/console/uart-bridge-slave.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/qoriq/console/uart-bridge-slave.c')
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/console/uart-bridge-slave.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/console/uart-bridge-slave.c b/c/src/lib/libbsp/powerpc/qoriq/console/uart-bridge-slave.c
index 86f5de87a8..5fc0b95de1 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/console/uart-bridge-slave.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/console/uart-bridge-slave.c
@@ -153,28 +153,30 @@ static int last_close(int major, int minor, void *arg)
static ssize_t write_with_interrupts(int minor, const char *buf, size_t len)
{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- console_tbl *ct = Console_Port_Tbl[minor];
- uart_bridge_slave_control *control = ct->pDeviceParams;
- intercom_packet *packet = qoriq_intercom_allocate_packet(
- control->type,
- INTERCOM_SIZE_64
- );
+ if (len > 0) {
+ rtems_status_code sc = RTEMS_SUCCESSFUL;
+ console_tbl *ct = Console_Port_Tbl[minor];
+ uart_bridge_slave_control *control = ct->pDeviceParams;
+ intercom_packet *packet = qoriq_intercom_allocate_packet(
+ control->type,
+ INTERCOM_SIZE_64
+ );
- packet->size = len;
- memcpy(packet->data, buf, len);
-
- /*
- * Due to the lovely Termios implementation we have to hand this over to
- * another context.
- */
- sc = rtems_chain_append_with_notification(
- &control->transmit_fifo,
- &packet->glue.node,
- control->transmit_task,
- TRANSMIT_EVENT
- );
- assert(sc == RTEMS_SUCCESSFUL);
+ packet->size = len;
+ memcpy(packet->data, buf, len);
+
+ /*
+ * Due to the lovely Termios implementation we have to hand this over to
+ * another context.
+ */
+ sc = rtems_chain_append_with_notification(
+ &control->transmit_fifo,
+ &packet->glue.node,
+ control->transmit_task,
+ TRANSMIT_EVENT
+ );
+ assert(sc == RTEMS_SUCCESSFUL);
+ }
return 0;
}