From 317a5b52b5060ef98ffe2b3bb3f980165fea8e81 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 2 Nov 1999 19:43:52 +0000 Subject: Split object.c into multiple files. --- cpukit/score/src/objectnametoid.c | 98 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 cpukit/score/src/objectnametoid.c (limited to 'cpukit/score/src/objectnametoid.c') diff --git a/cpukit/score/src/objectnametoid.c b/cpukit/score/src/objectnametoid.c new file mode 100644 index 0000000000..4f01ca17b1 --- /dev/null +++ b/cpukit/score/src/objectnametoid.c @@ -0,0 +1,98 @@ +/* + * Object Handler + * + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include +#include +#include +#include +#if defined(RTEMS_MULTIPROCESSING) +#include +#endif +#include +#include +#include +#include + +/*PAGE + * + * _Objects_Name_to_id + * + * These kernel routines search the object table(s) for the given + * object name and returns the associated object id. + * + * Input parameters: + * information - object information + * name - user defined object name + * node - node indentifier (0 indicates any node) + * id - address of return ID + * + * Output parameters: + * id - object id + * OBJECTS_SUCCESSFUL - if successful + * error code - if unsuccessful + */ + +Objects_Name_to_id_errors _Objects_Name_to_id( + Objects_Information *information, + Objects_Name name, + unsigned32 node, + Objects_Id *id +) +{ + boolean search_local_node; + Objects_Control *the_object; + unsigned32 index; + unsigned32 name_length; + Objects_Name_comparators compare_them; + + if ( name == 0 ) + return OBJECTS_INVALID_NAME; + + search_local_node = FALSE; + + if ( information->maximum != 0 && + (node == OBJECTS_SEARCH_ALL_NODES || node == OBJECTS_SEARCH_LOCAL_NODE || + _Objects_Is_local_node( node ) ) ) + search_local_node = TRUE; + + if ( search_local_node ) { + name_length = information->name_length; + + if ( information->is_string ) compare_them = _Objects_Compare_name_string; + else compare_them = _Objects_Compare_name_raw; + + for ( index = 1; index <= information->maximum; index++ ) { + + the_object = information->local_table[ index ]; + + if ( !the_object || !the_object->name ) + continue; + + if ( (*compare_them)( name, the_object->name, name_length ) ) { + *id = the_object->id; + return OBJECTS_SUCCESSFUL; + } + } + } + + if ( _Objects_Is_local_node( node ) || node == OBJECTS_SEARCH_LOCAL_NODE ) + return OBJECTS_INVALID_NAME; + +#if defined(RTEMS_MULTIPROCESSING) + return ( _Objects_MP_Global_name_search( information, name, node, id ) ); +#else + return OBJECTS_INVALID_NAME; +#endif +} -- cgit v1.2.3