From c904df573396d95957dc79b242b3a76911063089 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 18 Mar 2016 07:25:23 +0100 Subject: score: Add _Objects_Get_by_name() Replace _Objects_Name_to_id_string() with _Objects_Get_by_name() since all users of this function are interested in the object itself and not the identifier. Use the object allocator lock to protect the search. Update #2555. --- testsuites/psxtests/psxmsgq01/init.c | 6 ++-- testsuites/psxtests/psxmsgq01/psxmsgq01.scn | 45 +++++++++++++-------------- testsuites/psxtests/psxobj01/init.c | 48 ++++++++++++++--------------- testsuites/psxtests/psxobj01/psxobj01.scn | 11 +++---- testsuites/psxtests/psxsem01/init.c | 4 +-- testsuites/psxtests/psxsem01/psxsem01.scn | 15 +++++---- 6 files changed, 62 insertions(+), 67 deletions(-) (limited to 'testsuites/psxtests') diff --git a/testsuites/psxtests/psxmsgq01/init.c b/testsuites/psxtests/psxmsgq01/init.c index de2965a715..41cb1243aa 100644 --- a/testsuites/psxtests/psxmsgq01/init.c +++ b/testsuites/psxtests/psxmsgq01/init.c @@ -378,13 +378,13 @@ void validate_mq_unlink_error_codes(void) fatal_posix_service_status( errno, EINVAL, "mq_unlink errno value"); /* - * EINVAL - Unlink a queue with a null name + * ENOENT - Unlink a queue with a zero length name */ - puts( "Init: mq_unlink (\"\") - EINVAL" ); + puts( "Init: mq_unlink (\"\") - ENOENT" ); status = mq_unlink( "" ); fatal_posix_service_status( status, -1, "mq_unlink error return status"); - fatal_posix_service_status( errno, EINVAL, "mq_unlink errno value"); + fatal_posix_service_status( errno, ENOENT, "mq_unlink errno value"); } void validate_mq_close_error_codes(void) diff --git a/testsuites/psxtests/psxmsgq01/psxmsgq01.scn b/testsuites/psxtests/psxmsgq01/psxmsgq01.scn index 3eb29efb43..e68ce6d698 100644 --- a/testsuites/psxtests/psxmsgq01/psxmsgq01.scn +++ b/testsuites/psxtests/psxmsgq01/psxmsgq01.scn @@ -1,11 +1,11 @@ -*** POSIX MESSAGE QUEUE TEST *** +*** BEGIN OF TEST PSXMSGQ 1 *** _______________mq_open errors Init: mq_open - Create with maxmsg (-1) (EINVAL) Init: mq_open - Create with msgsize (-1) (EINVAL) Init: mq_open - Open new mq without create flag (ENOENT) Init: mq_open - Open with too long of a name (ENAMETOOLONG) Init: mq_open - Create an Existing mq (EEXIST) -Init: mq_open - SUCCESSFUL +Init: mq_open - SUCCESSFUL Init: mq_open - system is out of resources (ENFILE) Init: mq_close and mq_unlink (mq3...mqn) - SUCCESSFUL Init: Open Test Queues @@ -13,7 +13,7 @@ _______________mq_unlink errors Init: mq_unlink - mq_unlink with too long of a name (ENAMETOOLONG) Init: mq_unlink - A Queue not opened (ENOENT) Init: mq_unlink (NULL) - EINVAL -Init: mq_unlink ("") - EINVAL +Init: mq_unlink ("") - ENOENT _______________mq_close errors Init: mq_close - unopened queue (EBADF) _______________mq_unlink functionality @@ -21,9 +21,9 @@ Init: Unlink and Open without closing SUCCESSFUL Task1:mq_setattr - unopened queue (EBADF) Task1:mq_setattr - NULL attributes (EINVAL) Init: set_attr all queues to blocking -Init: Init: mq_timedreceive - on queue Qnoblock Init: 1 sec -12131 us -Init: Init: mq_timedreceive - on queue Qblock Init: 1 sec -11843 us -Init: Init: mq_timedreceive - on queue Qdefault Init: 0 sec 988133 us +Init: Init: mq_timedreceive - on queue Qnoblock Init: 1 sec -8622 us +Init: Init: mq_timedreceive - on queue Qblock Init: 1 sec -1872 us +Init: Init: mq_timedreceive - on queue Qdefault Init: 1 sec -1881 us _______________mq_send errors Init: mq_send - Closed message queue (EBADF) Init: mq_send - Read only message queue (EBADF) @@ -37,9 +37,9 @@ _______________mq_getattr errors Init: mq_getattr - unopened queue (EBADF) Init: mq_getattr - NULL attributes (EINVAL) _______________mq_timedsend -Init: mq_timedsend - on queue Qnoblock Init: 0 sec 77 us -Init: mq_timedsend - on queue Qblock Init: 0 sec 988482 us -Init: mq_timedsend - on queue Qdefault Init: 0 sec 101 us +Init: mq_timedsend - on queue Qnoblock Init: 0 sec 127 us +Init: mq_timedsend - on queue Qblock Init: 1 sec -9245 us +Init: mq_timedsend - on queue Qdefault Init: 0 sec 130 us _______________mq_receive errors Init: mq_receive - Unopened message queue (EBADF) Init: mq_receive - Write only queue (EBADF) @@ -48,9 +48,9 @@ Init: Verify Queues are full Init: Empty all Queues Init: mq_receive - Queue is empty (EAGAIN) _______________mq_timedreceive -Init: Init: mq_timedreceive - on queue Qnoblock Init: 0 sec 83 us -Init: Init: mq_timedreceive - on queue Qblock Init: 0 sec 986568 us -Init: Init: mq_timedreceive - on queue Qdefault Init: 1 sec -11823 us +Init: Init: mq_timedreceive - on queue Qnoblock Init: 0 sec 128 us +Init: Init: mq_timedreceive - on queue Qblock Init: 1 sec -715 us +Init: Init: mq_timedreceive - on queue Qdefault Init: 1 sec -1836 us _______________mq_open functionality _______________mq_notify Init: mq_notify - Unopened message queue (EBADF) @@ -70,19 +70,19 @@ Init: Verify No Signal when send Init: mq_send - to Qnoblock msg: 12345678 priority 31 waiting on any signal for 3 seconds. _______________multi-thread Task 1 Test -Task_1: Fri Jan 1 00:00:17 1988 +Task_1: Fri Jan 1 00:00:18 1988 Task_1: mq_send - to Qblock msg: 12345678 priority 31 Task_1: pthread_exit -Init: Fri Jan 1 00:00:17 1988 +Init: Fri Jan 1 00:00:18 1988 _______________multi-thread Task 2 Test Init: Verify Queues are empty Init: Fill Queues with messages Init: Verify Queues are full Init: mq_send - to Qblock msg: Last priority 32 -Task_2: Fri Jan 1 00:00:17 1988 +Task_2: Fri Jan 1 00:00:18 1988 Task_2: Verify Queues are full Task_2: pthread_exit -Init: Fri Jan 1 00:00:17 1988 +Init: Fri Jan 1 00:00:18 1988 Init: Verify Queues are full Init: Empty all Queues _______________multi-thread Task 3 Test @@ -90,14 +90,13 @@ Init: Verify Queues are empty Init: Fill Queues with messages Init: Verify Queues are full Init: mq_send - Block while thread deletes queue (EBADF) -Task_3: Fri Jan 1 00:00:18 1988 +Task_3: Fri Jan 1 00:00:18 1988 _______________Unlink and Close All Files Task_3: pthread_exit _______________mq_timedout_receive -Init: Init: verify_timedout_mq_timedreceive - on queue Qnoblock Init: 0 sec 54 us +Init: Init: verify_timedout_mq_timedreceive - on queue Qnoblock Init: 0 sec 81 us _______________verify_timedout_mq_timedsend -Init: verify_timedout_mq_timedsend - on queue Qnoblock Init: 0 sec 54 us -Init: verify_timedout_mq_timedsend - on queue Qblock Init: 0 sec 55 us -Init: verify_timedout_mq_timedsend - on queue Qdefault Init: 0 sec 78 us -*** END OF POSIX MESSAGE QUEUE TEST *** - +Init: verify_timedout_mq_timedsend - on queue Qnoblock Init: 0 sec 84 us +Init: verify_timedout_mq_timedsend - on queue Qblock Init: 0 sec 86 us +Init: verify_timedout_mq_timedsend - on queue Qdefault Init: 0 sec 104 us +*** END OF TEST PSXMSGQ 1 *** diff --git a/testsuites/psxtests/psxobj01/init.c b/testsuites/psxtests/psxobj01/init.c index 27d32b340e..16b703ba52 100644 --- a/testsuites/psxtests/psxobj01/init.c +++ b/testsuites/psxtests/psxobj01/init.c @@ -29,11 +29,12 @@ rtems_task Init( rtems_task_argument ignored ) { - Objects_Name_or_id_lookup_errors namerc; - Objects_Information TestClass; - Objects_Id id; - char name[64]; - bool bc; + Objects_Get_by_name_error error; + Objects_Information TestClass; + Objects_Control *the_object; + char name[64]; + size_t name_len; + bool bc; TEST_BEGIN(); @@ -53,27 +54,24 @@ rtems_task Init( #endif ); - puts( "INIT - _Objects_Name_to_id_string - NULL name" ); - namerc = _Objects_Name_to_id_string( &TestClass, NULL, &id ); - if ( namerc != OBJECTS_INVALID_NAME ) { - printf( "ERROR - Status = %d\n", namerc ); - rtems_test_exit(0); - } - - puts( "INIT - _Objects_Name_to_id_string - NULL ID" ); - namerc = _Objects_Name_to_id_string( &TestClass, name, NULL ); - if ( namerc != OBJECTS_INVALID_ADDRESS ) { - printf( "ERROR - Status = %d\n", namerc ); - rtems_test_exit(0); - } - - puts( "INIT - _Objects_Name_to_id_string - name of non-existent object" ); + puts( "INIT - _Objects_Get_by_name - NULL name" ); + the_object = _Objects_Get_by_name( &TestClass, NULL, NULL, &error ); + rtems_test_assert( the_object == NULL ); + rtems_test_assert( error == OBJECTS_GET_BY_NAME_INVALID_NAME ); + + puts( "INIT - _Objects_Get_by_name - name too long" ); + strcpy( name, "TOOOOOOOOOOOOOOOOOO LONG" ); + the_object = _Objects_Get_by_name( &TestClass, name, NULL, &error ); + rtems_test_assert( the_object == NULL ); + rtems_test_assert( error == OBJECTS_GET_BY_NAME_NAME_TOO_LONG ); + + puts( "INIT - _Objects_Get_by_name - name of non-existent object" ); strcpy( name, "NOT FOUND" ); - namerc = _Objects_Name_to_id_string( &TestClass, name, &id ); - if ( namerc != OBJECTS_INVALID_NAME ) { - printf( "ERROR - Status = %d\n", namerc ); - rtems_test_exit(0); - } + name_len = 123; + the_object = _Objects_Get_by_name( &TestClass, name, &name_len, &error ); + rtems_test_assert( the_object == NULL ); + rtems_test_assert( error == OBJECTS_GET_BY_NAME_NO_OBJECT ); + rtems_test_assert( name_len == 9 ); /* out of memory error ONLY when POSIX is enabled */ puts( "INIT - _Objects_Set_name fails - out of memory" ); diff --git a/testsuites/psxtests/psxobj01/psxobj01.scn b/testsuites/psxtests/psxobj01/psxobj01.scn index 809d028eea..344820f75c 100644 --- a/testsuites/psxtests/psxobj01/psxobj01.scn +++ b/testsuites/psxtests/psxobj01/psxobj01.scn @@ -1,7 +1,6 @@ -*** POSIX OBJECT TEST 1 *** -INIT - _Objects_Name_to_id_string - NULL name -INIT - _Objects_Name_to_id_string - NULL ID -INIT - _Objects_Name_to_id_string - name of non-existent object +*** BEGIN OF TEST PSXOBJ 1 *** +INIT - _Objects_Get_by_name - NULL name +INIT - _Objects_Get_by_name - name too long +INIT - _Objects_Get_by_name - name of non-existent object INIT - _Objects_Set_name fails - out of memory -Allocate_majority_of_workspace: -*** END OF POSIX OBJECT TEST 1 *** +*** END OF TEST PSXOBJ 1 *** diff --git a/testsuites/psxtests/psxsem01/init.c b/testsuites/psxtests/psxsem01/init.c index f377a4e68b..c1752f3a35 100644 --- a/testsuites/psxtests/psxsem01/init.c +++ b/testsuites/psxtests/psxsem01/init.c @@ -279,10 +279,10 @@ void *POSIX_Init( fatal_posix_service_status( status, -1, "sem_unlink error return status"); fatal_posix_service_status( errno, EINVAL, "sem_unlink errno value"); - puts( "Init: sem_unlink (\"\") - EINVAL" ); + puts( "Init: sem_unlink (\"\") - ENOENT" ); status = sem_unlink( "" ); fatal_posix_service_status( status, -1, "sem_unlink error return status"); - fatal_posix_service_status( errno, EINVAL, "sem_unlink errno value"); + fatal_posix_service_status( errno, ENOENT, "sem_unlink errno value"); /* * XXX - Cant' create location OBJECTS_ERROR or OBJECTS_REMOTE. diff --git a/testsuites/psxtests/psxsem01/psxsem01.scn b/testsuites/psxtests/psxsem01/psxsem01.scn index 70e80baf75..ad2612f998 100644 --- a/testsuites/psxtests/psxsem01/psxsem01.scn +++ b/testsuites/psxtests/psxsem01/psxsem01.scn @@ -1,10 +1,10 @@ -*** POSIX SEMAPHORE MANAGER TEST 1 *** +*** BEGIN OF TEST PSXSEM 1 *** Init: sem_init - UNSUCCESSFUL (EINVAL) Init: sem_init - SUCCESSFUL Init: sem_init - UNSUCCESSFUL (ENOSPC) Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported) -Init: sem_getvalue - SUCCESSFUL -Init: sem_getvalue - UNSUCCESSFUL +Init: sem_getvalue - SUCCESSFUL +Init: sem_getvalue - UNSUCCESSFUL Init: sem_destroy - SUCCESSFUL Init: sem_destroy - UNSUCCESSFUL (EINVAL) Init: sem_wait - SUCCESSFUL @@ -13,10 +13,10 @@ Init: sem_post - SUCCESSFUL Init: sem_wait - SUCCESSFUL (after a sem_post) Init: sem_trywait - SUCCESSFUL Init: sem_trywait - UNSUCCESSFUL (EAGAIN) -Init: sem_trywait - UNSUCCESSFUL (EINVAL) -- skipping +Init: sem_trywait - UNSUCCESSFUL (EINVAL) Init: sem_timedwait - SUCCESSFUL Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT) -Init: sem_timedwait - UNSUCCESSFUL (EINVAL) +Init: sem_timedwait - UNSUCCESSFUL (EINVAL) -- skipping Init: sem_post - UNSUCCESSFUL (EINVAL) Init: sem_destroy - SUCCESSFUL Init: sem_open - UNSUCCESSFUL (ENAMETOOLONG) @@ -34,7 +34,6 @@ Init: sem_unlink - sem1 (2) SUCCESSFUL Init: sem_close - UNSUCCESSFUL (EINVAL) Init: sem_unlink - UNSUCCESSFUL (ENOENT) Init: sem_unlink (NULL) - EINVAL -Init: sem_unlink ("") - EINVAL +Init: sem_unlink ("") - ENOENT Init: sem_unlink - UNSUCCESSFUL (ENOENT) -*** END OF POSIX SEMAPHORE MANAGER TEST 1 *** - +*** END OF TEST PSXSEM 1 *** -- cgit v1.2.3