diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-18 07:25:23 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-18 15:36:58 +0100 |
commit | c904df573396d95957dc79b242b3a76911063089 (patch) | |
tree | be6406676689018e8af8a929b6a4ef5284f94c70 /cpukit/posix/src/psxnametoid.c | |
parent | sptests/sptls02: Use GNU++11 (diff) | |
download | rtems-c904df573396d95957dc79b242b3a76911063089.tar.bz2 |
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.
Diffstat (limited to 'cpukit/posix/src/psxnametoid.c')
-rw-r--r-- | cpukit/posix/src/psxnametoid.c | 44 |
1 files changed, 5 insertions, 39 deletions
diff --git a/cpukit/posix/src/psxnametoid.c b/cpukit/posix/src/psxnametoid.c index 637de91212..eac8e84611 100644 --- a/cpukit/posix/src/psxnametoid.c +++ b/cpukit/posix/src/psxnametoid.c @@ -20,44 +20,10 @@ #include <rtems/posix/posixapi.h> -#include <string.h> -#include <limits.h> #include <errno.h> -/* pure ANSI mode does not have this prototype */ -size_t strnlen(const char *, size_t); - -int _POSIX_Name_to_id( - Objects_Information *information, - const char *name, - Objects_Id *id, - size_t *len -) -{ - int eno = EINVAL; - size_t n = 0; - - if ( name != NULL && name [0] != '\0' ) { - n = strnlen( name, NAME_MAX ); - - if ( n < NAME_MAX ) { - Objects_Name_or_id_lookup_errors status = _Objects_Name_to_id_string( - information, - name, - id - ); - - if ( status == OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL ) { - eno = 0; - } else { - eno = ENOENT; - } - } else { - eno = ENAMETOOLONG; - } - } - - *len = n; - - return eno; -} +const int _POSIX_Get_by_name_error_table[ 3 ] = { + EINVAL, + ENAMETOOLONG, + ENOENT +}; |