Update #2785. --- cpukit/libcsupport/include/rtems/termiostypes.h | 15 +++++++++++++++ cpukit/libcsupport/src/termios.c | 7 +++++-- 2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/cpukit/libcsupport/include/rtems/termiostypes.h b/cpukit/libcsupport/include/rtems/termiostypes.h index 80251a2..a852c1d 100644 --- a/cpukit/libcsupport/include/rtems/termiostypes.h +++ b/cpukit/libcsupport/include/rtems/termiostypes.h @@ -184,6 +184,21 @@ typedef struct { ); /** + * @brief IO control handler. + * + * Invoked in case the Termios layer cannot deal with the IO request. + * + * @param[in] context The Termios device context. + * @param[in] request The IO control request. + * @param[in] buffer The IO control buffer. + */ + int (*ioctl)( + rtems_termios_device_context *context, + ioctl_command_t request, + void *buffer + ); + + /** * @brief Termios device mode. */ rtems_termios_device_mode mode; diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c index 3a6a389..b972b4f 100644 --- a/cpukit/libcsupport/src/termios.c +++ b/cpukit/libcsupport/src/termios.c @@ -781,8 +781,11 @@ rtems_termios_ioctl (void *arg) default: if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) { sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args); - } - else { + } else if (tty->handler.ioctl) { + args->ioctl_return = (*tty->handler.ioctl) (tty->device_context, + args->command, args->buffer); + sc = RTEMS_SUCCESSFUL; + } else { sc = RTEMS_INVALID_NUMBER; } break; -- 1.8.4.5 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel