Re: GSoC: Hello World Patch

2022-03-29 Thread Joel Sherrill
On Tue, Mar 29, 2022 at 2:59 PM Kamlesh Bharodiya 
wrote:

> Hi Joel,
>
> I had tried to run the program using integrated simulator with gdb. That
> didn't work for me (need to figure out).
>

Hmm.. sis as integrated with gdb was disabled in favor of the more powerful
standalone newer versions of sis. This happened before COVID if I
remember correctly.

Where did you find the instructions? We had a lot of instructions built up
around using sis for the erc32 as built into gdb. You may have stumbled
across a place we have missed updating.


> However, I could run it with remote target SIS connected with GDB as well
> as with Emulator. I am attaching the screenshots.
>

That is what is intended. Looks great. Make sure you are in the table in
the wiki I cited.

And start looking at projects and asking questions.

--joel

>
> Regards,
> Kamlesh
>
>
> On Tue, Mar 29, 2022 at 12:21 AM Joel Sherrill  wrote:
>
>> Looks good. Email (or send it to me on Discord) a screenshot in gdb with
>> that program.
>>
>> Then add yourself  to https://devel.rtems.org/wiki/GSoC/2022
>>
>> Feel free to discuss any projects you are interested in here or Discord.
>>
>> On Mon, Mar 28, 2022 at 1:10 PM Kamlesh Bharodiya <
>> brkamleshg...@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I would like to participate in the GSoC 2022 Program. I have built and
>>> run
>>> the Hello World Program. Please find below: (also attaching the patch)
>>>
>>> commit bdd1ae76926135fbadc7920eefe6a303342e4a19 (HEAD -> master)
>>> Author: Kamlesh_Bharodiya 
>>> Date:   Sun Mar 27 22:22:47 2022 +0530
>>>
>>> [GSoC Entry] Modified Hello World Test
>>>
>>> diff --git a/testsuites/samples/hello/init.c
>>> b/testsuites/samples/hello/init.c
>>> index 34ded37c55..f4288833f9 100644
>>> --- a/testsuites/samples/hello/init.c
>>> +++ b/testsuites/samples/hello/init.c
>>> @@ -22,7 +22,7 @@ static rtems_task Init(
>>>  {
>>>rtems_print_printer_fprintf_putc(&rtems_test_printer);
>>>TEST_BEGIN();
>>> -  printf( "Hello World\n" );
>>> +  printf( "Hello to the World of RTEMS\n" );
>>>TEST_END();
>>>rtems_test_exit( 0 );
>>>  }
>>>
>>> Regards,
>>> Kamlesh
>>> ___
>>> devel mailing list
>>> devel@rtems.org
>>> http://lists.rtems.org/mailman/listinfo/devel
>>>
>>
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


[PATCH 1/2] validation: Use individual names for ident tests

2022-03-29 Thread Sebastian Huber
Make the task configuration reusable.

Update #3716.
---
 .../testsuites/validation/libvalidation.yml   |  1 +
 testsuites/validation/tc-barrier-ident.c  |  5 +-
 testsuites/validation/tc-message-ident.c  |  5 +-
 testsuites/validation/tc-part-ident.c |  5 +-
 testsuites/validation/tc-ratemon-ident.c  |  5 +-
 testsuites/validation/tc-sem-ident.c  |  5 +-
 testsuites/validation/tc-task-ident.c | 27 +---
 testsuites/validation/tc-timer-ident.c|  5 +-
 testsuites/validation/tc-userext-ident.c  |  5 +-
 testsuites/validation/tr-object-ident-local.c | 10 ++-
 testsuites/validation/tr-object-ident-local.h |  9 +--
 testsuites/validation/tr-object-ident.c   | 10 ++-
 testsuites/validation/tr-object-ident.h   |  9 +--
 .../validation/tx-default-task-config.c   | 61 +++
 testsuites/validation/tx-support.h|  9 +++
 15 files changed, 130 insertions(+), 41 deletions(-)
 create mode 100644 testsuites/validation/tx-default-task-config.c

diff --git a/spec/build/testsuites/validation/libvalidation.yml 
b/spec/build/testsuites/validation/libvalidation.yml
index 37603f143e..1ea1976e7a 100644
--- a/spec/build/testsuites/validation/libvalidation.yml
+++ b/spec/build/testsuites/validation/libvalidation.yml
@@ -12,6 +12,7 @@ install-path: null
 links: []
 source:
 - testsuites/validation/tx-call-within-isr.c
+- testsuites/validation/tx-default-task-config.c
 - testsuites/validation/tx-interrupt.c
 - testsuites/validation/tx-io-relax.c
 - testsuites/validation/tx-memory-alloc.c
diff --git a/testsuites/validation/tc-barrier-ident.c 
b/testsuites/validation/tc-barrier-ident.c
index 71e7051f66..dcb4a1c273 100644
--- a/testsuites/validation/tc-barrier-ident.c
+++ b/testsuites/validation/tc-barrier-ident.c
@@ -71,6 +71,8 @@
  * @{
  */
 
+#define NAME_LOCAL_OBJECT rtems_build_name( 'B', 'A', 'R', 'R' )
+
 static rtems_status_code ClassicBarrierIdentAction(
   rtems_name name,
   rtems_id  *id
@@ -89,7 +91,7 @@ static void RtemsBarrierValIdent_Action_0( void )
   rtems_id  id_local_object;
 
   sc = rtems_barrier_create(
-ClassicObjectLocalIdentName,
+NAME_LOCAL_OBJECT,
 RTEMS_DEFAULT_ATTRIBUTES,
 1,
 &id_local_object
@@ -98,6 +100,7 @@ static void RtemsBarrierValIdent_Action_0( void )
 
   RtemsReqIdentLocal_Run(
 id_local_object,
+NAME_LOCAL_OBJECT,
 ClassicBarrierIdentAction
   );
 
diff --git a/testsuites/validation/tc-message-ident.c 
b/testsuites/validation/tc-message-ident.c
index 74759b525e..70e7d53350 100644
--- a/testsuites/validation/tc-message-ident.c
+++ b/testsuites/validation/tc-message-ident.c
@@ -71,10 +71,12 @@
  * @{
  */
 
+#define NAME_LOCAL_OBJECT rtems_build_name( 'M', 'E', 'S', 'Q' )
+
 static RTEMS_MESSAGE_QUEUE_BUFFER( 1 ) ClassicMessageIdentBuffers[ 1 ];
 
 static rtems_message_queue_config ClassicObjectIdentConfig = {
-  .name = ClassicObjectIdentName,
+  .name = NAME_LOCAL_OBJECT,
   .maximum_pending_messages = RTEMS_ARRAY_SIZE( ClassicMessageIdentBuffers ),
   .maximum_message_size = 1,
   .storage_area = ClassicMessageIdentBuffers,
@@ -108,6 +110,7 @@ static void RtemsMessageValIdent_Action_0( void )
 
   RtemsReqIdent_Run(
 id_local_object,
+NAME_LOCAL_OBJECT,
 ClassicMessageIdentAction
   );
 
diff --git a/testsuites/validation/tc-part-ident.c 
b/testsuites/validation/tc-part-ident.c
index 926c205970..fccdf9671c 100644
--- a/testsuites/validation/tc-part-ident.c
+++ b/testsuites/validation/tc-part-ident.c
@@ -71,6 +71,8 @@
  * @{
  */
 
+#define NAME_LOCAL_OBJECT rtems_build_name( 'P', 'A', 'R', 'T' )
+
 static rtems_status_code ClassicPartIdentAction(
   rtems_name name,
   uint32_t   node,
@@ -91,7 +93,7 @@ static void RtemsPartValIdent_Action_0( void )
   rtems_id   id_local_object;
 
   sc = rtems_partition_create(
-ClassicObjectIdentName,
+NAME_LOCAL_OBJECT,
 area,
 sizeof( area ),
 sizeof( area ),
@@ -102,6 +104,7 @@ static void RtemsPartValIdent_Action_0( void )
 
   RtemsReqIdent_Run(
 id_local_object,
+NAME_LOCAL_OBJECT,
 ClassicPartIdentAction
   );
 
diff --git a/testsuites/validation/tc-ratemon-ident.c 
b/testsuites/validation/tc-ratemon-ident.c
index 1126fcacab..beeb0bfd14 100644
--- a/testsuites/validation/tc-ratemon-ident.c
+++ b/testsuites/validation/tc-ratemon-ident.c
@@ -71,6 +71,8 @@
  * @{
  */
 
+#define NAME_LOCAL_OBJECT rtems_build_name( 'R', 'A', 'T', 'E' )
+
 static rtems_status_code ClassicRatemonIdentAction(
   rtems_name name,
   rtems_id  *id
@@ -89,13 +91,14 @@ static void RtemsRatemonValIdent_Action_0( void )
   rtems_id  id_local_object;
 
   sc = rtems_rate_monotonic_create(
-ClassicObjectLocalIdentName,
+NAME_LOCAL_OBJECT,
 &id_local_object
   );
   T_assert_rsc_success( sc );
 
   RtemsReqIdentLocal_Run(
 id_local_object,
+NAME_LOCAL_OBJECT,
 ClassicRatemonIdentAction
   );
 
diff --git a/testsuites/validation/tc-sem-i

[PATCH 2/2] rtems: Clarify scheduler of created task

2022-03-29 Thread Sebastian Huber
---
 cpukit/include/rtems/rtems/tasks.h|   6 +-
 .../validation/validation-smp-only-0.yml  |   1 +
 testsuites/validation/tc-task-smp.c   | 146 ++
 testsuites/validation/tc-task.c   |  54 ++-
 testsuites/validation/tx-support.c|   5 +
 testsuites/validation/tx-support.h|   2 +
 6 files changed, 209 insertions(+), 5 deletions(-)
 create mode 100644 testsuites/validation/tc-task-smp.c

diff --git a/cpukit/include/rtems/rtems/tasks.h 
b/cpukit/include/rtems/rtems/tasks.h
index e4609f6e9f..81757db8c7 100644
--- a/cpukit/include/rtems/rtems/tasks.h
+++ b/cpukit/include/rtems/rtems/tasks.h
@@ -445,9 +445,9 @@ rtems_task_priority _RTEMS_Maximum_priority( void );
  * task with other task related directives.
  *
  * The **initial priority** of the task is specified in ``initial_priority``.
- * The scheduler of the created task is the scheduler of the calling task at
- * some point during the task creation.  The initial task priority specified in
- * ``initial_priority`` shall be valid for this scheduler.
+ * The home scheduler of the created task is the home scheduler of the calling
+ * task at some time point during the task creation. The initial task priority
+ * specified in ``initial_priority`` shall be valid for this scheduler.
  *
  * The **stack size** of the task is specified in ``stack_size``.  If the
  * requested stack size is less than the configured minimum stack size, then
diff --git a/spec/build/testsuites/validation/validation-smp-only-0.yml 
b/spec/build/testsuites/validation/validation-smp-only-0.yml
index bf2063fb44..fc4091b92e 100644
--- a/spec/build/testsuites/validation/validation-smp-only-0.yml
+++ b/spec/build/testsuites/validation/validation-smp-only-0.yml
@@ -25,6 +25,7 @@ source:
 - testsuites/validation/tc-score-tq-smp.c
 - testsuites/validation/tc-sem-smp.c
 - testsuites/validation/tc-sem-mrsp-obtain.c
+- testsuites/validation/tc-task-smp.c
 - testsuites/validation/ts-validation-smp-only-0.c
 stlib: []
 target: testsuites/validation/ts-validation-smp-only-0.exe
diff --git a/testsuites/validation/tc-task-smp.c 
b/testsuites/validation/tc-task-smp.c
new file mode 100644
index 00..51165153f5
--- /dev/null
+++ b/testsuites/validation/tc-task-smp.c
@@ -0,0 +1,146 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSTestCaseRtemsTaskValSmp
+ */
+
+/*
+ * Copyright (C) 2022 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ */
+
+/*
+ * This file is part of the RTEMS quality process and was automatically
+ * generated.  If you find something that needs to be fixed or
+ * worded better please post a report or patch to an RTEMS mailing list
+ * or raise a bug report:
+ *
+ * https://www.rtems.org/bugs.html
+ *
+ * For information on updating and regenerating please refer to the How-To
+ * section in the Software Requirements Engineering chapter of the
+ * RTEMS Software Engineering manual.  The manual is provided as a part of
+ * a release.  For development sources please refer to the online
+ * documentation at:
+ *
+ * https://docs.rtems.org
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include 
+
+#include "ts-config.h"
+#include "tx-support.h"
+
+#include 
+
+/**
+ * @defgroup RTEMSTestCaseRtemsTaskValSmp spec:/rtems/task/val/smp
+ *
+ * @ingroup RTEMSTestSuiteTestsuitesValidationSmpOnly0
+ *
+ * @brief This test case collection provides SMP-specific validation test cases
+ *   for requirements of the @ref RTEMSAPIClassicTasks.
+ *
+ * This test case performs the following actions:
+ *
+ * - Validate the home scheduler of tasks created by rtems_task_cre

Re: [PATCH v2 1/1] newlib01: Check exit procs for global FILE obj

2022-03-29 Thread Matthew Joyce

Hi Dr. Joel,

I just sent an update which addresses these issues.

Thanks!

Sincerely,

Matt

On 28.03.22 23:13, Joel Sherrill wrote:
I don't see anything obviously wrong but I don't have any idea what 
the test is actually trying to exercise.


How about some comments and is there a doc file in this test directory 
that needs updating?


--joel

On Mon, Mar 28, 2022 at 4:04 AM Matthew Joyce 
 wrote:


From: Matt Joyce 

---
 testsuites/libtests/newlib01/init.c | 110
++--
 1 file changed, 88 insertions(+), 22 deletions(-)

diff --git a/testsuites/libtests/newlib01/init.c
b/testsuites/libtests/newlib01/init.c
index c58154023b..bba187e8e2 100644
--- a/testsuites/libtests/newlib01/init.c
+++ b/testsuites/libtests/newlib01/init.c
@@ -28,6 +28,8 @@ const char rtems_test_name[] = "NEWLIB 1";

 static const char file_path[] = "/file";

+static const char file_path2[] = "/file2";
+
 typedef enum {
   INIT,
   OPEN,
@@ -39,6 +41,8 @@ typedef struct {
   rtems_id main_task_id;
   rtems_id worker_task_id;
   test_state current;
+  FILE *glob_file_stream;
+  int glob_fd;
 } test_context;

 static test_context test_instance;
@@ -59,7 +63,7 @@ static void wait(void)
   rtems_test_assert(sc == RTEMS_SUCCESSFUL);
 }

-static void worker_task(rtems_task_argument arg)
+static void thread_specific_worker(rtems_task_argument arg)
 {
   test_context *ctx = &test_instance;
   struct _reent *reent = _REENT;
@@ -90,6 +94,30 @@ static void worker_task(rtems_task_argument arg)
   rtems_test_assert(0);
 }

+static void global_file_object_worker(rtems_task_argument arg)
+{
+  test_context *ctx = &test_instance;
+  FILE *fp;
+  char buf[1] = { 'y' };
+  size_t n;
+  int fd;
+
+  fp = ctx->glob_file_stream = fopen(&file_path2[0], "w");
+  rtems_test_assert(fp != NULL);
+
+  /* Get file descriptor of new global file stream, store it in
text context */
+  fd = fileno(fp);
+  rtems_test_assert(fd != -1);
+  ctx->glob_fd = fd;
+
+  n = fwrite(&buf[0], sizeof(buf), 1, fp);
+  rtems_test_assert(n == 1);
+
+  wake_up_main(ctx);
+
+  rtems_test_assert(0);
+}
+
 static int handler_open(
   rtems_libio_t *iop,
   const char *path,
@@ -250,9 +278,34 @@ static const IMFS_node_control node_control =
IMFS_GENERIC_INITIALIZER(
   IMFS_node_destroy_default
 );

-static void test_thread_specific_close(test_context *ctx)
+static void task_create_and_delete_helper(
+  test_context *ctx,
+  rtems_task_entry entry
+)
 {
   rtems_status_code sc;
+
+  sc = rtems_task_create(
+  rtems_build_name('W', 'O', 'R', 'K'),
+  2,
+  RTEMS_MINIMUM_STACK_SIZE,
+  RTEMS_DEFAULT_MODES,
+  RTEMS_DEFAULT_ATTRIBUTES,
+  &ctx->worker_task_id
+  );
+  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+  sc = rtems_task_start(ctx->worker_task_id, entry, 0);
+  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+  wait();
+
+  sc = rtems_task_delete(ctx->worker_task_id);
+  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+}
+
+static void test_thread_specific_close(test_context *ctx)
+{
   int rv;
   rtems_resource_snapshot snapshot;

@@ -266,23 +319,7 @@ static void
test_thread_specific_close(test_context *ctx)
   );
   rtems_test_assert(rv == 0);

-  sc = rtems_task_create(
-    rtems_build_name('W', 'O', 'R', 'K'),
-    2,
-    RTEMS_MINIMUM_STACK_SIZE,
-    RTEMS_DEFAULT_MODES,
-    RTEMS_DEFAULT_ATTRIBUTES,
-    &ctx->worker_task_id
-  );
-  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
-
-  sc = rtems_task_start(ctx->worker_task_id, worker_task, 0);
-  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
-
-  wait();
-
-  sc = rtems_task_delete(ctx->worker_task_id);
-  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+  task_create_and_delete_helper(ctx, thread_specific_worker);

   rv = unlink(&file_path[0]);
   rtems_test_assert(rv == 0);
@@ -290,6 +327,11 @@ static void
test_thread_specific_close(test_context *ctx)
 rtems_test_assert(rtems_resource_snapshot_check(&snapshot));
 }

+static void test_global_file_object_close(test_context *ctx)
+{
+  task_create_and_delete_helper(ctx, global_file_object_worker);
+}
+
 /*
  * This exit handler will be called last among the functions
registered with
  * atexit(). Check that stdio file descriptors are closed. The
Newlib cleanup
@@ -298,6 +340,7 @@ static void
test_thread_specific_close(test_context *ctx)
  */
 static void check_after_libio_exit(void)
 {
+  test_context *ctx = &test_instance;
   struct stat unused;
   int rv;

@@ -319,6 +362,11 @@ static void chec

[PATCH v3 1/1] newlib01: Added tests for exit procedures

2022-03-29 Thread Matthew Joyce
From: Matt Joyce 

Added tests for exit procedures to ensure proper resource
cleanup. The test now checks cleanup for files assigned
to stdio streams and non-stdio streams.
---
 testsuites/libtests/newlib01/init.c   | 120 +-
 testsuites/libtests/newlib01/newlib01.doc |   5 +-
 2 files changed, 101 insertions(+), 24 deletions(-)

diff --git a/testsuites/libtests/newlib01/init.c 
b/testsuites/libtests/newlib01/init.c
index c58154023b..40d2f683b0 100644
--- a/testsuites/libtests/newlib01/init.c
+++ b/testsuites/libtests/newlib01/init.c
@@ -28,6 +28,8 @@ const char rtems_test_name[] = "NEWLIB 1";
 
 static const char file_path[] = "/file";
 
+static const char file_path2[] = "/file2";
+
 typedef enum {
   INIT,
   OPEN,
@@ -39,6 +41,8 @@ typedef struct {
   rtems_id main_task_id;
   rtems_id worker_task_id;
   test_state current;
+  FILE *glob_file_stream;
+  int glob_fd;
 } test_context;
 
 static test_context test_instance;
@@ -59,7 +63,7 @@ static void wait(void)
   rtems_test_assert(sc == RTEMS_SUCCESSFUL);
 }
 
-static void worker_task(rtems_task_argument arg)
+static void stdio_file_worker(rtems_task_argument arg)
 {
   test_context *ctx = &test_instance;
   struct _reent *reent = _REENT;
@@ -90,6 +94,30 @@ static void worker_task(rtems_task_argument arg)
   rtems_test_assert(0);
 }
 
+static void non_stdio_file_worker(rtems_task_argument arg)
+{
+  test_context *ctx = &test_instance;
+  FILE *fp;
+  char buf[1] = { 'y' };
+  size_t n;
+  int fd;
+
+  fp = ctx->glob_file_stream = fopen(&file_path2[0], "w");
+  rtems_test_assert(fp != NULL);
+
+  /* Get file descriptor of new global file stream, store it in text context */
+  fd = fileno(fp);
+  rtems_test_assert(fd != -1);
+  ctx->glob_fd = fd;
+
+  n = fwrite(&buf[0], sizeof(buf), 1, fp);
+  rtems_test_assert(n == 1);
+
+  wake_up_main(ctx);
+
+  rtems_test_assert(0);
+}
+
 static int handler_open(
   rtems_libio_t *iop,
   const char *path,
@@ -250,9 +278,38 @@ static const IMFS_node_control node_control = 
IMFS_GENERIC_INITIALIZER(
   IMFS_node_destroy_default
 );
 
-static void test_thread_specific_close(test_context *ctx)
+static void task_create_and_delete_helper(
+  test_context *ctx,
+  rtems_task_entry entry
+)
 {
   rtems_status_code sc;
+
+  sc = rtems_task_create(
+  rtems_build_name('W', 'O', 'R', 'K'),
+  2,
+  RTEMS_MINIMUM_STACK_SIZE,
+  RTEMS_DEFAULT_MODES,
+  RTEMS_DEFAULT_ATTRIBUTES,
+  &ctx->worker_task_id
+  );
+  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+  sc = rtems_task_start(ctx->worker_task_id, entry, 0);
+  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+  wait();
+
+  sc = rtems_task_delete(ctx->worker_task_id);
+  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+}
+
+/*
+ * Check that a FILE opened by a task and assigned to a stdio stream is closed
+ * during thread termination. Ensure that resources are returned to the system.
+ */
+static void test_stdio_file(test_context *ctx)
+{
   int rv;
   rtems_resource_snapshot snapshot;
 
@@ -266,23 +323,7 @@ static void test_thread_specific_close(test_context *ctx)
   );
   rtems_test_assert(rv == 0);
 
-  sc = rtems_task_create(
-rtems_build_name('W', 'O', 'R', 'K'),
-2,
-RTEMS_MINIMUM_STACK_SIZE,
-RTEMS_DEFAULT_MODES,
-RTEMS_DEFAULT_ATTRIBUTES,
-&ctx->worker_task_id
-  );
-  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
-
-  sc = rtems_task_start(ctx->worker_task_id, worker_task, 0);
-  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
-
-  wait();
-
-  sc = rtems_task_delete(ctx->worker_task_id);
-  rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+  task_create_and_delete_helper(ctx, stdio_file_worker);
 
   rv = unlink(&file_path[0]);
   rtems_test_assert(rv == 0);
@@ -290,6 +331,15 @@ static void test_thread_specific_close(test_context *ctx)
   rtems_test_assert(rtems_resource_snapshot_check(&snapshot));
 }
 
+/*
+ * Open a global FILE object from a task but do not assign it to a stdio
+ * stream. The FILE is not closed upon thread termination.
+ */
+static void test_non_stdio_file(test_context *ctx)
+{
+  task_create_and_delete_helper(ctx, non_stdio_file_worker);
+}
+
 /*
  * This exit handler will be called last among the functions registered with
  * atexit(). Check that stdio file descriptors are closed. The Newlib cleanup
@@ -298,6 +348,7 @@ static void test_thread_specific_close(test_context *ctx)
  */
 static void check_after_libio_exit(void)
 {
+  test_context *ctx = &test_instance;
   struct stat unused;
   int rv;
 
@@ -319,6 +370,11 @@ static void check_after_libio_exit(void)
   rtems_test_assert(stdin->_flags != 0);
   rtems_test_assert(stdout->_flags != 0);
   rtems_test_assert(stderr->_flags != 0);
+
+  /* Global file tests. Global fd still open at this point. */
+  rv = fstat(ctx->glob_fd, &unused);
+  rtems_test_assert(rv == 0);
+  rtems_test_assert(ctx->glob_file_stream->_flags != 0);
 }
 
 static void register_exit_handler_before_libio_exit(void)
@@ -342,7 +398,7 @@ RTEMS_SYSINIT_ITEM(register_exit_handler_before_libio_exit,
  * 

[PATCH v3 0/1] newlib01: Added tests for exit procedures

2022-03-29 Thread Matthew Joyce
From: Matt Joyce 

Version 3 adds comments for clarification and updates the doc file.

Matt Joyce (1):
  newlib01: Added tests for exit procedures

 testsuites/libtests/newlib01/init.c   | 120 +-
 testsuites/libtests/newlib01/newlib01.doc |   5 +-
 2 files changed, 101 insertions(+), 24 deletions(-)

-- 
2.31.1

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


[PATCH] c-user: Clarify scheduler of created task

2022-03-29 Thread Sebastian Huber
---
 c-user/task/directives.rst | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/c-user/task/directives.rst b/c-user/task/directives.rst
index ce2013c..708286f 100644
--- a/c-user/task/directives.rst
+++ b/c-user/task/directives.rst
@@ -86,9 +86,9 @@ identifier is returned in ``id``.  This identifier is used to 
access the task
 with other task related directives.
 
 The **initial priority** of the task is specified in ``initial_priority``. The
-scheduler of the created task is the scheduler of the calling task at some
-point during the task creation.  The initial task priority specified in
-``initial_priority`` shall be valid for this scheduler.
+scheduler of the created task is the :term:`home scheduler` of the calling task
+at some time point during the task creation.  The initial task priority
+specified in ``initial_priority`` shall be valid for this scheduler.
 
 The **stack size** of the task is specified in ``stack_size``.  If the
 requested stack size is less than the configured minimum stack size, then RTEMS
-- 
2.34.1

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


Re: RFC: Copyright vs COPYRIGHT

2022-03-29 Thread Sebastian Huber

On 26/03/2022 23:48, Joel Sherrill wrote:

The Software Engineering Guide example uses "Copyright" but a lot of places
in the code base use "COPYRIGHT". This is sometimes followed by (c) rather
than the (C) indicated in the guide.


The format in the Software Engineering Manual follows the GNU coding style:

https://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices

For the years we have a simplified ,  convention.

--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel