From 5e7b3c6533aae1bedce65c1b2dfc28a34cfe8161 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 7 Oct 2019 10:48:23 -0500 Subject: posix_devctl - Add support for SOCKCLOSE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The FACE Technical Standard, Edition 3.0 and later require the definition of the subcommand SOCKCLOSE in . Reference: ​https://www.opengroup.org/face closes #3856. --- testsuites/psxtests/psxdevctl01/main.c | 2 ++ testsuites/psxtests/psxdevctl01/psxdevctl01.doc | 8 +++++++- testsuites/psxtests/psxdevctl01/psxdevctl01.scn | 4 +++- testsuites/psxtests/psxdevctl01/test.c | 26 +++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) (limited to 'testsuites/psxtests/psxdevctl01') diff --git a/testsuites/psxtests/psxdevctl01/main.c b/testsuites/psxtests/psxdevctl01/main.c index d74fb6b102..54776e2b24 100644 --- a/testsuites/psxtests/psxdevctl01/main.c +++ b/testsuites/psxtests/psxdevctl01/main.c @@ -39,6 +39,8 @@ rtems_task Init( #define CONFIGURE_MAXIMUM_TASKS 1 +#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 4 + #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION #define CONFIGURE_RTEMS_INIT_TASKS_TABLE diff --git a/testsuites/psxtests/psxdevctl01/psxdevctl01.doc b/testsuites/psxtests/psxdevctl01/psxdevctl01.doc index fee22d237d..51f295d2f1 100644 --- a/testsuites/psxtests/psxdevctl01/psxdevctl01.doc +++ b/testsuites/psxtests/psxdevctl01/psxdevctl01.doc @@ -19,5 +19,11 @@ concepts: + Ensure that proper error values result when passing different combinations of arguments to posix_devctl(). -+ Ensure that a requestn is passed through the underlying ioctl() operation ++ Ensure that a request is passed through the underlying ioctl() operation to the console device driver and flagged as an error. + ++ Ensure that the SOCKCLOSE subcommand is supported by posix_devctl() + and returns an error on invalid file descriptors. + ++ Ensure that the SOCKCLOSE subcommand is supported by posix_devctl() + and will close a file descriptor. diff --git a/testsuites/psxtests/psxdevctl01/psxdevctl01.scn b/testsuites/psxtests/psxdevctl01/psxdevctl01.scn index 1df1d7e6e8..440046300d 100644 --- a/testsuites/psxtests/psxdevctl01/psxdevctl01.scn +++ b/testsuites/psxtests/psxdevctl01/psxdevctl01.scn @@ -1,4 +1,6 @@ *** BEGIN OF TEST PSXDEVCTL 1 *** posix_devctl() FIONBIO on stdin return dev_info -- EBADF -posix_devctl() FIONBIO on stdin return dev_info -- EBADF +posix_devctl() FIONBIO on stdin NULL dev_info -- EBADF +posix_devctl() SOCKCLOSE on invalid file descriptor -- EBADF +posix_devctl() SOCKCLOSE on valid file descriptor -- OK *** END OF TEST PSXDEVCTL 1 *** diff --git a/testsuites/psxtests/psxdevctl01/test.c b/testsuites/psxtests/psxdevctl01/test.c index ed22ba8410..b45725cb58 100644 --- a/testsuites/psxtests/psxdevctl01/test.c +++ b/testsuites/psxtests/psxdevctl01/test.c @@ -76,6 +76,32 @@ int main( rtems_test_assert( status == -1 ); rtems_test_assert( errno == EBADF ); + puts( "posix_devctl() SOCKCLOSE on invalid file descriptor -- EBADF" ); + fd = 21; + dcmd = SOCKCLOSE; + dev_data_ptr = NULL; + nbyte = 0; + status = posix_devctl( fd, dcmd, dev_data_ptr, nbyte, NULL ); + rtems_test_assert( status == -1 ); + rtems_test_assert( errno == EBADF ); + + /* + * Create a file, open it, and close it via posix_devctl(). + * Then verify it is really closed. + */ + puts( "posix_devctl() SOCKCLOSE on valid file descriptor -- OK" ); + fd = open("tmp_for_close", O_CREAT | O_RDWR, S_IRWXU ); + rtems_test_assert( fd != -1 ); + + dcmd = SOCKCLOSE; + dev_data_ptr = NULL; + nbyte = 0; + status = posix_devctl( fd, dcmd, dev_data_ptr, nbyte, NULL ); + rtems_test_assert( status == 0 ); + + status = close( fd ); + rtems_test_assert( status == -1 ); + rtems_test_assert( errno == EBADF ); TEST_END(); exit(0); } -- cgit v1.2.3