summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/rtems/status.h
diff options
context:
space:
mode:
authorJoel Sherrill <joel@rtems.org>2019-10-02 16:49:00 -0500
committerJoel Sherrill <joel@rtems.org>2019-10-08 14:25:41 -0500
commit667501a314ba75f80f1c13c6b43dd35d0a00efd1 (patch)
treeec786d34150d19f7aac04b2653fa356c6a696de2 /cpukit/include/rtems/rtems/status.h
parenttermios04/init.c: Remove dead copy of change_iflag() (diff)
downloadrtems-667501a314ba75f80f1c13c6b43dd35d0a00efd1.tar.bz2
termios: Add Capability to Generate SIGINTR and SIGQUIT
This patch adds the ability for termios to send SIGINTR on receipt of VINTR and SIGQUIT for VKILL and return -1/EINTR from read() on a termios channel. Importantly, this patch does not alter the default behavior or force POSIX signal code in just because termios is used. The application must explicitly enable the POSIX behavior of generating a signal upon receipt of these characters. This is discussed in the POSIX standard: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap11.html Closes #3800.
Diffstat (limited to 'cpukit/include/rtems/rtems/status.h')
-rw-r--r--cpukit/include/rtems/rtems/status.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/cpukit/include/rtems/rtems/status.h b/cpukit/include/rtems/rtems/status.h
index 88ae576eac..7310fe905b 100644
--- a/cpukit/include/rtems/rtems/status.h
+++ b/cpukit/include/rtems/rtems/status.h
@@ -167,6 +167,12 @@ typedef enum {
*/
RTEMS_IO_ERROR = 27,
/**
+ * This is the status used internally to indicate a blocking device
+ * driver call has been interrupted and should be reflected to the
+ * called as an INTERRUPTED.
+ */
+ RTEMS_INTERRUPTED = 28,
+ /**
* This is the status is used internally to RTEMS when performing
* operations on behalf of remote tasks. This is referred to as
* proxying operations and this status indicates that the operation
@@ -174,7 +180,7 @@ typedef enum {
*
* @note This status will @b NOT be returned to the user.
*/
- RTEMS_PROXY_BLOCKING = 28
+ RTEMS_PROXY_BLOCKING = 29
} rtems_status_code;
/**
@@ -235,6 +241,7 @@ RTEMS_INLINE_ROUTINE bool rtems_are_statuses_equal(
* @retval ENODEV RTEMS_UNSATISFIED
* @retval ENOSYS RTEMS_NOT_IMPLEMENTED, RTEMS_NOT_CONFIGURED
* @retval ENOMEM RTEMS_NO_MEMORY
+ * @retval EINTR RTEMS_INTERRUPTED
*/
int rtems_status_code_to_errno(rtems_status_code sc);