From 5bfeddc0c27b7cd896efd8c0b6ef2b5682ec4640 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 21 Feb 2017 09:01:49 +0100 Subject: termios: Add kqueue() and poll() support Real implementation is provided by libbsd. --- cpukit/libcsupport/include/rtems/termiostypes.h | 20 ++++++++++++++++++++ cpukit/libcsupport/src/termios.c | 4 ++-- cpukit/libfs/src/defaults/default_kqfilter.c | 12 +++++++----- cpukit/libfs/src/defaults/default_poll.c | 9 +++++++-- 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/cpukit/libcsupport/include/rtems/termiostypes.h b/cpukit/libcsupport/include/rtems/termiostypes.h index 3cf6bebe19..2dcaa16abd 100644 --- a/cpukit/libcsupport/include/rtems/termiostypes.h +++ b/cpukit/libcsupport/include/rtems/termiostypes.h @@ -555,6 +555,26 @@ int rtems_termios_set_initial_baud( rtems_termios_baud_t baud ); +/** + * @brief Termios kqueue() filter filesystem node handler + * + * Real implementation is provided by libbsd. + */ +int rtems_termios_kqfilter( + rtems_libio_t *iop, + struct knote *kn +); + +/** + * @brief Termios poll() filesystem node handler. + * + * Real implementation is provided by libbsd. + */ +int rtems_termios_poll( + rtems_libio_t *iop, + int events +); + #ifdef __cplusplus } #endif diff --git a/cpukit/libcsupport/src/termios.c b/cpukit/libcsupport/src/termios.c index c44abbe810..5067f6c465 100644 --- a/cpukit/libcsupport/src/termios.c +++ b/cpukit/libcsupport/src/termios.c @@ -2063,8 +2063,8 @@ static const rtems_filesystem_file_handlers_r rtems_termios_imfs_handler = { .fsync_h = rtems_filesystem_default_fsync_or_fdatasync, .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync, .fcntl_h = rtems_filesystem_default_fcntl, - .kqfilter_h = rtems_filesystem_default_kqfilter, - .poll_h = rtems_filesystem_default_poll, + .kqfilter_h = rtems_termios_kqfilter, + .poll_h = rtems_termios_poll, .readv_h = rtems_filesystem_default_readv, .writev_h = rtems_filesystem_default_writev }; diff --git a/cpukit/libfs/src/defaults/default_kqfilter.c b/cpukit/libfs/src/defaults/default_kqfilter.c index ef6fc1f9e4..df21a8969d 100644 --- a/cpukit/libfs/src/defaults/default_kqfilter.c +++ b/cpukit/libfs/src/defaults/default_kqfilter.c @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013, 2017 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -26,13 +26,15 @@ #include -#include -#include - int rtems_filesystem_default_kqfilter( rtems_libio_t *iop, - struct knote *kn + struct knote *kn ) { return EINVAL; } + +int rtems_termios_kqfilter( + rtems_libio_t *iop, + struct knote *kn +) RTEMS_WEAK_ALIAS( rtems_filesystem_default_kqfilter ); diff --git a/cpukit/libfs/src/defaults/default_poll.c b/cpukit/libfs/src/defaults/default_poll.c index aa895d6444..a7c9378a8a 100644 --- a/cpukit/libfs/src/defaults/default_poll.c +++ b/cpukit/libfs/src/defaults/default_poll.c @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013, 2017 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -30,8 +30,13 @@ int rtems_filesystem_default_poll( rtems_libio_t *iop, - int events + int events ) { return POLLERR; } + +int rtems_termios_poll( + rtems_libio_t *iop, + int events +) RTEMS_WEAK_ALIAS( rtems_filesystem_default_poll ); -- cgit v1.2.3