summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/objectsetname.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-29 21:52:21 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-29 21:52:21 +0000
commit6c06288f6452da96fa630f1482aeaaba5d217531 (patch)
treeb12309ae199663c23f0ba74a71fdba4f32fb1036 /cpukit/score/src/objectsetname.c
parent2008-01-29 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-6c06288f6452da96fa630f1482aeaaba5d217531.tar.bz2
2008-01-29 Joel Sherrill <joel.sherrill@oarcorp.com>
* itron/src/exd_tsk.c, itron/src/task.c, libmisc/capture/capture.c, libmisc/monitor/mon-config.c, libmisc/monitor/mon-driver.c, libmisc/monitor/mon-itask.c, libmisc/monitor/mon-monitor.c, libmisc/monitor/mon-mpci.c, libmisc/monitor/mon-object.c, libmisc/monitor/mon-symbols.c, posix/src/cancelrun.c, posix/src/pthreadexit.c, rtems/Makefile.am, rtems/preinstall.am, rtems/include/rtems.h, rtems/include/rtems/rtems/support.h, rtems/inline/rtems/rtems/tasks.inl, rtems/src/eventmp.c, rtems/src/msgmp.c, rtems/src/partmp.c, rtems/src/regionmp.c, rtems/src/rtemsobjectgetname.c, rtems/src/semmp.c, rtems/src/signalmp.c, rtems/src/taskdelete.c, rtems/src/taskmp.c, rtems/src/timerserver.c, score/Makefile.am, score/include/rtems/score/object.h, score/inline/rtems/score/object.inl, score/src/Unlimited.txt, score/src/objectgetnameasstring.c, score/src/threadqextractwithproxy.c: Add new Object Services collection. This changed the name of a few previously public but undocumented services and added a some new services. * rtems/include/rtems/rtems/object.h, rtems/src/rtemsbuildid.c, rtems/src/rtemsbuildname.c, rtems/src/rtemsobjectapimaximumclass.c, rtems/src/rtemsobjectapiminimumclass.c, rtems/src/rtemsobjectgetapiclassname.c, rtems/src/rtemsobjectgetapiname.c, rtems/src/rtemsobjectgetclassicname.c, rtems/src/rtemsobjectgetclassinfo.c, rtems/src/rtemsobjectidapimaximum.c, rtems/src/rtemsobjectidapiminimum.c, rtems/src/rtemsobjectidgetapi.c, rtems/src/rtemsobjectidgetclass.c, rtems/src/rtemsobjectidgetindex.c, rtems/src/rtemsobjectidgetnode.c, rtems/src/rtemsobjectsetname.c, score/src/objectapimaximumclass.c, score/src/objectgetinfo.c, score/src/objectgetinfoid.c, score/src/objectsetname.c: New files. * rtems/src/rtemsidtoname.c: Removed.
Diffstat (limited to 'cpukit/score/src/objectsetname.c')
-rw-r--r--cpukit/score/src/objectsetname.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/cpukit/score/src/objectsetname.c b/cpukit/score/src/objectsetname.c
new file mode 100644
index 0000000000..455b4b51c3
--- /dev/null
+++ b/cpukit/score/src/objectsetname.c
@@ -0,0 +1,73 @@
+/*
+ * COPYRIGHT (c) 1989-2008.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/system.h>
+#include <rtems/score/object.h>
+#include <rtems/score/thread.h>
+#include <rtems/score/wkspace.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <inttypes.h>
+#include <string.h>
+
+
+/*
+ * This method sets the name of an object based upon a C string.
+ */
+
+boolean _Objects_Set_name(
+ Objects_Information *information,
+ Objects_Control *the_object,
+ const char *name
+)
+{
+ size_t length;
+ const char *s;
+
+ s = name;
+ length = strnlen( name, information->name_length ) + 1;
+
+ if ( information->is_string ) {
+ char *d;
+
+ d = _Workspace_Allocate( length );
+ if ( !d )
+ return FALSE;
+
+ if ( the_object->name.name_p )
+ _Workspace_Free( (void *)the_object->name.name_p );
+
+ the_object->name.name_p = NULL;
+
+ strncpy( d, name, length );
+ the_object->name.name_p = d;
+ } else {
+ uint32_t name_u32 = 0;
+ char lname[5] = " ";
+ int i;
+
+ for ( i=0 ; i<4 && i<length ; i++ )
+ lname[ i ] = s[ i ];
+
+ name_u32 |= ((uint32_t)lname[ 0 ] << 24);
+ name_u32 |= ((uint32_t)lname[ 1 ] << 16);
+ name_u32 |= ((uint32_t)lname[ 2 ] << 8);
+ name_u32 |= (uint32_t)lname[ 3 ];
+ the_object->name.name_u32 = name_u32;
+ }
+
+ return TRUE;
+}