summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/include/rtems
diff options
context:
space:
mode:
authorAlexander Krutwig <alexander.krutwig@embedded-brains.de>2016-10-17 14:15:34 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-12-16 09:04:58 +0100
commite34fe384cb7ecdd2643e8bf528e08e1c988abc8a (patch)
treec1a1b26ac88b6f8161674b06ed67d736009e5ac4 /cpukit/libcsupport/include/rtems
parenttermios: Use mutex for task driven mode (diff)
downloadrtems-e34fe384cb7ecdd2643e8bf528e08e1c988abc8a.tar.bz2
termios: Add TERMIOS_IRQ_SERVER_DRIVEN
Add a new interrupt server driven Termios mode (TERMIOS_IRQ_DRIVEN). This mode is identical to the interrupt driven mode except that a mutex is used for device level locking. The intended use case for this mode are device drivers that use the interrupt server, e.g. SPI or I2C connected devices. Update #2839.
Diffstat (limited to 'cpukit/libcsupport/include/rtems')
-rw-r--r--cpukit/libcsupport/include/rtems/termiostypes.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/cpukit/libcsupport/include/rtems/termiostypes.h b/cpukit/libcsupport/include/rtems/termiostypes.h
index 81d28c283c..ffe172c439 100644
--- a/cpukit/libcsupport/include/rtems/termiostypes.h
+++ b/cpukit/libcsupport/include/rtems/termiostypes.h
@@ -57,7 +57,8 @@ struct rtems_termios_rawbuf {
typedef enum {
TERMIOS_POLLED,
TERMIOS_IRQ_DRIVEN,
- TERMIOS_TASK_DRIVEN
+ TERMIOS_TASK_DRIVEN,
+ TERMIOS_IRQ_SERVER_DRIVEN
} rtems_termios_device_mode;
struct rtems_termios_tty;
@@ -74,7 +75,7 @@ typedef struct rtems_termios_device_context {
/* Used for TERMIOS_POLLED and TERMIOS_IRQ_DRIVEN */
rtems_interrupt_lock interrupt;
- /* Used for TERMIOS_TASK_DRIVEN */
+ /* Used for TERMIOS_IRQ_SERVER_DRIVEN or TERMIOS_TASK_DRIVEN */
rtems_id mutex;
} lock;
@@ -161,8 +162,9 @@ typedef struct {
/**
* @brief Polled read.
*
- * In case mode is TERMIOS_IRQ_DRIVEN or TERMIOS_TASK_DRIVEN, then data is
- * received via rtems_termios_enqueue_raw_characters().
+ * In case mode is TERMIOS_IRQ_DRIVEN, TERMIOS_IRQ_SERVER_DRIVEN or
+ * TERMIOS_TASK_DRIVEN, then data is received via
+ * rtems_termios_enqueue_raw_characters().
*
* @param[in] context The Termios device context.
*