From ff08b8087887bc1ae8d9f22f3a21c62e46477312 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 14 Aug 2003 21:01:30 +0000 Subject: 2003-08-14 Joel Sherrill * Makefile.am, include/rtems/score/object.h, include/rtems/score/objectmp.h, src/objectmp.c, src/objectnametoid.c: Added ID to name lookup service and changed name of id/name translation status code. This propagated to multiple functions. The user API service added was rtems_object_id_to_name() * src/objectidtoname.c: New file. --- cpukit/score/ChangeLog | 9 ++++ cpukit/score/Makefile.am | 3 +- cpukit/score/include/rtems/score/object.h | 29 +++++++++++-- cpukit/score/include/rtems/score/objectmp.h | 2 +- cpukit/score/src/objectidtoname.c | 66 +++++++++++++++++++++++++++++ cpukit/score/src/objectmp.c | 4 +- cpukit/score/src/objectnametoid.c | 10 ++--- 7 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 cpukit/score/src/objectidtoname.c (limited to 'cpukit') diff --git a/cpukit/score/ChangeLog b/cpukit/score/ChangeLog index 8fb864cf74..781cfd5266 100644 --- a/cpukit/score/ChangeLog +++ b/cpukit/score/ChangeLog @@ -1,3 +1,12 @@ +2003-08-14 Joel Sherrill + + * Makefile.am, include/rtems/score/object.h, + include/rtems/score/objectmp.h, src/objectmp.c, src/objectnametoid.c: + Added ID to name lookup service and changed name of id/name + translation status code. This propagated to multiple functions. The + user API service added was rtems_object_id_to_name() + * src/objectidtoname.c: New file. + 2003-08-14 Joel Sherrill PR 408/filesystem diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am index 40efdf999c..31b3c68453 100644 --- a/cpukit/score/Makefile.am +++ b/cpukit/score/Makefile.am @@ -132,7 +132,8 @@ OBJECT_C_FILES = src/object.c src/objectallocate.c src/objectallocatebyindex.c \ src/objectcopynameraw.c src/objectcopynamestring.c src/objectextendinformation.c \ src/objectfree.c src/objectget.c src/objectgetisr.c src/objectgetbyindex.c \ src/objectgetnext.c src/objectinitializeinformation.c src/objectnametoid.c \ - src/objectshrinkinformation.c src/objectgetnoprotection.c + src/objectshrinkinformation.c src/objectgetnoprotection.c \ + src/objectidtoname.c THREAD_C_FILES = src/thread.c src/threadchangepriority.c src/threadclearstate.c \ src/threadclose.c src/threadcreateidle.c src/threaddelayended.c src/threaddispatch.c \ diff --git a/cpukit/score/include/rtems/score/object.h b/cpukit/score/include/rtems/score/object.h index 7ccba96e83..8c98e9f7f9 100644 --- a/cpukit/score/include/rtems/score/object.h +++ b/cpukit/score/include/rtems/score/object.h @@ -437,6 +437,7 @@ boolean _Objects_Compare_name_raw( void *name_2, unsigned32 length ); + /* * _Objects_Name_to_id * @@ -454,21 +455,41 @@ boolean _Objects_Compare_name_raw( */ typedef enum { - OBJECTS_SUCCESSFUL, + OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL, OBJECTS_INVALID_NAME, + OBJECTS_INVALID_ID, OBJECTS_INVALID_NODE -} Objects_Name_to_id_errors; +} Objects_Name_or_id_lookup_errors; -#define OBJECTS_NAME_ERRORS_FIRST OBJECTS_SUCCESSFUL +#define OBJECTS_NAME_ERRORS_FIRST OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL #define OBJECTS_NAME_ERRORS_LAST OBJECTS_INVALID_NODE -Objects_Name_to_id_errors _Objects_Name_to_id( +Objects_Name_or_id_lookup_errors _Objects_Name_to_id( Objects_Information *information, Objects_Name name, unsigned32 node, Objects_Id *id ); +/* + * _Objects_Id_to_Name + * + * DESCRIPTION: + * + * This function implements the common portion of the object Id + * to name directives. This function returns the name + * associated with object id. + * + * NOTE: + * + * This function currently does not support string names. + */ + +Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( + Objects_Id id, + Objects_Name *name +); + /* * _Objects_Get * diff --git a/cpukit/score/include/rtems/score/objectmp.h b/cpukit/score/include/rtems/score/objectmp.h index de227a128b..1bb247ad23 100644 --- a/cpukit/score/include/rtems/score/objectmp.h +++ b/cpukit/score/include/rtems/score/objectmp.h @@ -105,7 +105,7 @@ void _Objects_MP_Close ( * object with that name if one is found. */ -Objects_Name_to_id_errors _Objects_MP_Global_name_search ( +Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search ( Objects_Information *information, Objects_Name the_name, unsigned32 nodes_to_search, diff --git a/cpukit/score/src/objectidtoname.c b/cpukit/score/src/objectidtoname.c new file mode 100644 index 0000000000..302c666a69 --- /dev/null +++ b/cpukit/score/src/objectidtoname.c @@ -0,0 +1,66 @@ +/* + * Obtain Object Name Given ID + * + * + * COPYRIGHT (c) 1989-2003. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include +#include + +/*PAGE + * + * _Objects_Id_to_name + * + * DESCRIPTION: + * + * This routine returns the name associated with the given ID. + * + * INPUT: + * + * id - id of object to lookup name + * name - pointer to location in which to store name + * + */ + + +Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( + Objects_Id id, + Objects_Name *name +) +{ + unsigned32 the_api; + unsigned32 the_class; + Objects_Information *information; + Objects_Control *the_object = (Objects_Control *) 0; + + if ( !name ) + return OBJECTS_INVALID_NAME; + + the_api = _Objects_Get_API( id ); + if ( the_api && the_api > OBJECTS_APIS_LAST ) + return OBJECTS_INVALID_ID; + + the_class = _Objects_Get_class( id ); + + information = _Objects_Information_table[ the_api ][ the_class ]; + if ( !information ) + return OBJECTS_INVALID_ID; + + if ( information->is_string ) + return OBJECTS_INVALID_ID; + + the_object = _Objects_Get( information, id, OBJECTS_SEARCH_LOCAL_NODE ); + if (!the_object) + return OBJECTS_INVALID_ID; + + *name = the_object->name; + return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; +} diff --git a/cpukit/score/src/objectmp.c b/cpukit/score/src/objectmp.c index abcc1dd72f..9250434428 100644 --- a/cpukit/score/src/objectmp.c +++ b/cpukit/score/src/objectmp.c @@ -150,7 +150,7 @@ void _Objects_MP_Close ( * */ -Objects_Name_to_id_errors _Objects_MP_Global_name_search ( +Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search ( Objects_Information *information, Objects_Name the_name, unsigned32 nodes_to_search, @@ -203,7 +203,7 @@ Objects_Name_to_id_errors _Objects_MP_Global_name_search ( if ( the_object->name == name_to_use ) { *the_id = the_object->Object.id; _Thread_Enable_dispatch(); - return OBJECTS_SUCCESSFUL; + return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } } } diff --git a/cpukit/score/src/objectnametoid.c b/cpukit/score/src/objectnametoid.c index 3bbf20900c..03be609656 100644 --- a/cpukit/score/src/objectnametoid.c +++ b/cpukit/score/src/objectnametoid.c @@ -38,12 +38,12 @@ * id - address of return ID * * Output parameters: - * id - object id - * OBJECTS_SUCCESSFUL - if successful - * error code - if unsuccessful + * id - object id + * OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL - if successful + * error code - if unsuccessful */ -Objects_Name_to_id_errors _Objects_Name_to_id( +Objects_Name_or_id_lookup_errors _Objects_Name_to_id( Objects_Information *information, Objects_Name name, unsigned32 node, @@ -79,7 +79,7 @@ Objects_Name_to_id_errors _Objects_Name_to_id( if ( (*compare_them)( name, the_object->name, name_length ) ) { *id = the_object->id; - return OBJECTS_SUCCESSFUL; + return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL; } } } -- cgit v1.2.3