summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/src/psxnametoid.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-03-18 07:25:23 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-03-18 15:36:58 +0100
commitc904df573396d95957dc79b242b3a76911063089 (patch)
treebe6406676689018e8af8a929b6a4ef5284f94c70 /cpukit/posix/src/psxnametoid.c
parentsptests/sptls02: Use GNU++11 (diff)
downloadrtems-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.c44
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
+};