[PATCH 1/1] Confstr Patches

Gedare Bloom gedare at rtems.org
Wed Oct 21 15:18:22 UTC 2020


The whitespace/styling looks wrong in the added init.c. The confstr.c
should be added separately perhaps. The version checked out from
freebsd should be embedded in it.

On Mon, Oct 19, 2020 at 11:44 AM Joel Sherrill <joel at rtems.org> wrote:
>
> Does anyone have any comments other than adding support for waf?
>
> --joel
>
> On Fri, Oct 16, 2020 at 2:38 AM Eshan dhawan <eshandhawan51 at gmail.com> wrote:
>>
>> Signed-off-by: Eshan dhawan <eshandhawan51 at gmail.com>
>> ---
>>  cpukit/Makefile.am                            |   1 +
>>  cpukit/posix/src/confstr.c                    | 105 +++++++++++++
>>  testsuites/psxtests/Makefile.am               |   9 ++
>>  testsuites/psxtests/configure.ac              |   1 +
>>  testsuites/psxtests/psxconfstr/init.c         | 143 ++++++++++++++++++
>>  testsuites/psxtests/psxconfstr/psxconfstr.doc |  17 +++
>>  testsuites/psxtests/psxconfstr/psxconfstr.scn |   4 +
>>  7 files changed, 280 insertions(+)
>>  create mode 100644 cpukit/posix/src/confstr.c
>>  create mode 100644 testsuites/psxtests/psxconfstr/init.c
>>  create mode 100644 testsuites/psxtests/psxconfstr/psxconfstr.doc
>>  create mode 100644 testsuites/psxtests/psxconfstr/psxconfstr.scn
>>
>> diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
>> index bdd8ebef33..337e8f8df1 100644
>> --- a/cpukit/Makefile.am
>> +++ b/cpukit/Makefile.am
>> @@ -510,6 +510,7 @@ librtemscpu_a_SOURCES += posix/src/condsignalsupp.c
>>  librtemscpu_a_SOURCES += posix/src/condtimedwait.c
>>  librtemscpu_a_SOURCES += posix/src/condwait.c
>>  librtemscpu_a_SOURCES += posix/src/condwaitsupp.c
>> +librtemscpu_a_SOURCES += posix/src/confstr.c
>>  librtemscpu_a_SOURCES += posix/src/_execve.c
>>  librtemscpu_a_SOURCES += posix/src/fork.c
>>  librtemscpu_a_SOURCES += posix/src/key.c
>> diff --git a/cpukit/posix/src/confstr.c b/cpukit/posix/src/confstr.c
>> new file mode 100644
>> index 0000000000..828aa22a4e
>> --- /dev/null
>> +++ b/cpukit/posix/src/confstr.c
>> @@ -0,0 +1,105 @@
>> +/*-
>> + * SPDX-License-Identifier: BSD-3-Clause
>> + *
>> + * Copyright (c) 1993
>> + *     The Regents of the University of California.  All rights reserved.
>> + *
>> + * Redistribution and use in source and binary forms, with or without
>> + * modification, are permitted provided that the following conditions
>> + * are met:
>> + * 1. Redistributions of source code must retain the above copyright
>> + *    notice, this list of conditions and the following disclaimer.
>> + * 2. Redistributions in binary form must reproduce the above copyright
>> + *    notice, this list of conditions and the following disclaimer in the
>> + *    documentation and/or other materials provided with the distribution.
>> + * 3. Neither the name of the University nor the names of its contributors
>> + *    may be used to endorse or promote products derived from this software
>> + *    without specific prior written permission.
>> + *
>> + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
>> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
>> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
>> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
>> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
>> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
>> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
>> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
>> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>> + * SUCH DAMAGE.
>> + */
>> +
>> +#include <sys/cdefs.h>
>> +/* Reduced to make sense in RTEMS */
>> +__SCCSID("@(#)confstr.c        8.1 (Berkeley) 6/4/93");
>> +__FBSDID("$FreeBSD$");
>> +
>> +#include <sys/param.h>
>> +
>> +#include <errno.h>
>> +#include <limits.h>
>> +#include <unistd.h>
>> +
>> +
>> +size_t
>> +confstr(int name, char *buf, size_t len)
>> +{
>> +  const char *p;
>> +  const char UPE[] = "unsupported programming environment";
>> +
>> +  switch (name) {
>> +
>> +    case _CS_PATH:
>> +      errno = EINVAL;
>> +      return (0);
>> +
>> +/*
>> + * POSIX/SUS ``Programming Environments'' stuff
>> + *
>> + * We don't support more than one programming environment
>> + * on any platform (yet), so we just return the empty
>> + * string for the environment we are compiled for,
>> + * and the string "unsupported programming environment"
>> + * for anything else.  (The Standard says that if these
>> + * values are used on a system which does not support
>> + * this environment -- determined via sysconf() -- then
>> + * the value we return is unspecified.  So, we return
>> + * something which will cause obvious breakage.)
>> + */
>> +
>> +    case _CS_POSIX_V6_ILP32_OFF32_CFLAGS:
>> +    case _CS_POSIX_V6_ILP32_OFF32_LDFLAGS:
>> +    case _CS_POSIX_V6_ILP32_OFF32_LIBS:
>> +    case _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS:
>> +    case _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS:
>> +    case _CS_POSIX_V6_LPBIG_OFFBIG_LIBS:
>> +    case _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS:
>> +    case _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS:
>> +    case _CS_POSIX_V6_ILP32_OFFBIG_LIBS:
>> +    case _CS_POSIX_V6_LP64_OFF64_CFLAGS:
>> +    case _CS_POSIX_V6_LP64_OFF64_LDFLAGS:
>> +    case _CS_POSIX_V6_LP64_OFF64_LIBS:
>> +    case _CS_POSIX_V7_ILP32_OFF32_CFLAGS:
>> +    case _CS_POSIX_V7_ILP32_OFF32_LDFLAGS:
>> +    case _CS_POSIX_V7_ILP32_OFF32_LIBS:
>> +    case _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS:
>> +    case _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS:
>> +    case _CS_POSIX_V7_LPBIG_OFFBIG_LIBS:
>> +    case _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS:
>> +    case _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS:
>> +    case _CS_POSIX_V7_ILP32_OFFBIG_LIBS:
>> +    case _CS_POSIX_V7_LP64_OFF64_CFLAGS:
>> +    case _CS_POSIX_V7_LP64_OFF64_LDFLAGS:
>> +    case _CS_POSIX_V7_LP64_OFF64_LIBS:
>> +
>> +      p = UPE;
>> +      if (len != 0 && buf != NULL)
>> +        strlcpy(buf, p, len);
>> +        return (strlen(p) + 1);
>> +
>> +    default:
>> +      errno = EINVAL;
>> +      return (0);
>> +  }
>> +  /* NOTREACHED */
>> +}
>> diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am
>> index aae5fe764a..f0910330a9 100755
>> --- a/testsuites/psxtests/Makefile.am
>> +++ b/testsuites/psxtests/Makefile.am
>> @@ -358,6 +358,15 @@ psxconfig01_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxconfig01) \
>>         $(support_includes) -I$(top_srcdir)/include
>>  endif
>>
>> +if TEST_psxgetcpuclockid01
>> +psx_tests += psxconfstr
>> +psx_screens += psxconfstr/psxconfstr.scn
>> +psx_docs += psxconfstr/psxconfstr.doc
>> +psxconfstr_SOURCES = psxconfstr/init.c
>> +psxconfstr_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_psxgetcpuclockid01) \
>> +       $(support_includes)
>> +endif
>> +
>>  if TEST_psxdevctl01
>>  psx_tests += psxdevctl01
>>  psx_screens += psxdevctl01/psxdevctl01.scn
>> diff --git a/testsuites/psxtests/configure.ac b/testsuites/psxtests/configure.ac
>> index c509086abc..96c937cb4d 100644
>> --- a/testsuites/psxtests/configure.ac
>> +++ b/testsuites/psxtests/configure.ac
>> @@ -80,6 +80,7 @@ RTEMS_TEST_CHECK([psxconcurrency01])
>>  RTEMS_TEST_CHECK([psxcond01])
>>  RTEMS_TEST_CHECK([psxcond02])
>>  RTEMS_TEST_CHECK([psxconfig01])
>> +RTEMS_TEST_CHECK([psxconfstr])
>>  RTEMS_TEST_CHECK([psxdevctl01])
>>  RTEMS_TEST_CHECK([psxeintr_join])
>>  RTEMS_TEST_CHECK([psxenosys])
>> diff --git a/testsuites/psxtests/psxconfstr/init.c b/testsuites/psxtests/psxconfstr/init.c
>> new file mode 100644
>> index 0000000000..3be50d5f8b
>> --- /dev/null
>> +++ b/testsuites/psxtests/psxconfstr/init.c
>> @@ -0,0 +1,143 @@
>> +/*
>> + *  @file
>> + *  @brief Test suite for confstr method
>> + */
>> +
>> +/*
>> + * SPDX-License-Identifier: BSD-2-Clause
>> + *
>> + * Copyright (C) 2020 Eshan Dhawan, Sebastian Huber
>> + *
>> + * Redistribution and use in source and binary forms, with or without
>> + * modification, are permitted provided that the following conditions
>> + * are met:
>> + * 1. Redistributions of source code must retain the above copyright
>> + *    notice, this list of conditions and the following disclaimer.
>> + * 2. Redistributions in binary form must reproduce the above copyright
>> + *    notice, this list of conditions and the following disclaimer in the
>> + *    documentation and/or other materials provided with the distribution.
>> + *
>> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
>> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
>> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
>> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
>> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
>> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
>> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
>> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
>> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
>> + * POSSIBILITY OF SUCH DAMAGE.
>> + */
>> +
>> +#ifdef HAVE_CONFIG_H
>> +#include "config.h"
>> +#endif
>> +
>> +#include <errno.h>
>> +#include <stdio.h>
>> +#include <string.h>
>> +#include <rtems.h>
>> +#include <rtems/test.h>
>> +#include <unistd.h>
>> +#include <rtems/bspIo.h>
>> +
>> +#include "tmacros.h"
>> +#include "test_support.h"
>> +
>> +const char rtems_test_name[] = "PSXCONFSTR";
>> +
>> +/* Forward declaration to avoid warnings */
>> +rtems_task Init( rtems_task_argument ignored );
>> +
>> +static char buffer[512];
>> +
>> +static const T_action actions[] = {
>> +  T_report_hash_sha256,
>> +  T_check_task_context,
>> +  T_check_file_descriptors,
>> +  T_check_rtems_barriers,
>> +  T_check_rtems_extensions,
>> +  T_check_rtems_message_queues,
>> +  T_check_rtems_partitions,
>> +  T_check_rtems_periods,
>> +  T_check_rtems_regions,
>> +  T_check_rtems_semaphores,
>> +  T_check_rtems_tasks,
>> +  T_check_rtems_timers,
>> +  T_check_posix_keys
>> +};
>> +
>> +static const T_config config = {
>> +  .name = "psxconfstr",
>> +  .buf = buffer,
>> +  .putchar = rtems_put_char,
>> +  .buf_size = sizeof(buffer),
>> +  .verbosity = T_VERBOSE,
>> +  .now = T_now_clock,
>> +  .action_count = T_ARRAY_SIZE(actions),
>> +  .actions = actions
>> +};
>> +
>> +/* init test function begins */
>> +T_TEST_CASE(confstr)
>> +{
>> +
>> +int r;
>> +  char * buf ;
>> +  const char UPE[] = "unsupported programming environment";
>> +  size_t len1;
>> +  len1 = strlen(UPE) + 1;
>> +  r = confstr(_CS_PATH, buf, sizeof(buf));
>> +  T_quiet_psx_success(r);
>> +
>> +  r = confstr(_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, buf, sizeof(buf));
>> +  T_quiet_eq_int(r, len1);
>> +
>> +  r = confstr(_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, buf, sizeof(buf));
>> +  T_quiet_eq_int(r, len1);
>> +
>> +  r = confstr(_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, buf, sizeof(buf));
>> +  T_quiet_eq_int(r, len1);
>> +
>> +  r = confstr(_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, buf, sizeof(buf));
>> +  T_quiet_eq_int(r, len1);
>> +
>> +  r = confstr(_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, buf, sizeof(buf));
>> +  T_quiet_eq_int(r, len1);
>> +
>> +  r = confstr(_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, buf, sizeof(buf));
>> +  T_quiet_eq_int(r, len1);
>> +
>> +  r = confstr(_CS_PATH, buf, sizeof(buf));
>> +  T_quiet_psx_success(r);
>> +
>> +}
>> +
>> +rtems_task Init(rtems_task_argument ignored)
>> +{
>> +  int exit_code;
>> +
>> +  TEST_BEGIN();
>> +
>> +  T_register();
>> +  exit_code = T_main(&config);
>> +  if (exit_code == 0) {
>> +    TEST_END();
>> +  }
>> +
>> + rtems_test_exit(exit_code);
>> +
>> +}
>> +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
>> +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
>> +
>> +#define CONFIGURE_MAXIMUM_TASKS 1
>> +
>> +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
>> +
>> +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
>> +#define CONFIGURE_INIT
>> +
>> +#include <rtems/confdefs.h>
>> +/* end of file */
>> diff --git a/testsuites/psxtests/psxconfstr/psxconfstr.doc b/testsuites/psxtests/psxconfstr/psxconfstr.doc
>> new file mode 100644
>> index 0000000000..43501791b8
>> --- /dev/null
>> +++ b/testsuites/psxtests/psxconfstr/psxconfstr.doc
>> @@ -0,0 +1,17 @@
>> +#  COPYRIGHT (c) 2020
>> +#  On-Line Applications Research Corporation (OAR).
>> +#
>> +# SPDX-License-Identifier: BSD-2-Clause
>> +#
>> +
>> +This file describes the directives and concepts tested by this test set.
>> +
>> +test set name:  psxconfstr
>> +
>> +Directives:
>> +  Confstr()
>> +
>> +Concepts:
>> +
>> ++ This test exercises the confstr method
>> +
>> diff --git a/testsuites/psxtests/psxconfstr/psxconfstr.scn b/testsuites/psxtests/psxconfstr/psxconfstr.scn
>> new file mode 100644
>> index 0000000000..cb9e49dc72
>> --- /dev/null
>> +++ b/testsuites/psxtests/psxconfstr/psxconfstr.scn
>> @@ -0,0 +1,4 @@
>> +*** BEGIN OF TEST PSXCONFSTR ***
>> +
>> +*** END OF TEST PSXCONFSTR ***
>> +
>> --
>> 2.17.1
>>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list