summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/include/rtems/score/status.h2
-rw-r--r--cpukit/score/include/rtems/score/thread.h8
-rw-r--r--cpukit/score/include/rtems/score/threadimpl.h5
-rw-r--r--cpukit/score/src/threadname.c20
4 files changed, 35 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/status.h b/cpukit/score/include/rtems/score/status.h
index 6b6f3c51d6..2695a03f1a 100644
--- a/cpukit/score/include/rtems/score/status.h
+++ b/cpukit/score/include/rtems/score/status.h
@@ -115,6 +115,8 @@ typedef enum {
STATUS_BUILD( STATUS_CLASSIC_OBJECT_WAS_DELETED, EINVAL ),
STATUS_RESOURCE_IN_USE =
STATUS_BUILD( STATUS_CLASSIC_RESOURCE_IN_USE, EBUSY ),
+ STATUS_RESULT_TOO_LARGE =
+ STATUS_BUILD( STATUS_CLASSIC_UNSATISFIED, ERANGE ),
STATUS_SUCCESSFUL =
STATUS_BUILD( STATUS_CLASSIC_SUCCESSFUL, 0 ),
STATUS_TIMEOUT =
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h
index 13765fc940..c114c91832 100644
--- a/cpukit/score/include/rtems/score/thread.h
+++ b/cpukit/score/include/rtems/score/thread.h
@@ -907,6 +907,14 @@ extern const size_t _Thread_Control_add_on_count;
*/
extern const size_t _Thread_Control_size;
+/**
+ * @brief Maximum size of a thread name in characters (including the
+ * terminating '\0' character).
+ *
+ * This value is provided via <rtems/confdefs.h>.
+ */
+extern const size_t _Thread_Maximum_name_size;
+
/**@}*/
#ifdef __cplusplus
diff --git a/cpukit/score/include/rtems/score/threadimpl.h b/cpukit/score/include/rtems/score/threadimpl.h
index cb9e8e6539..8ddf74e160 100644
--- a/cpukit/score/include/rtems/score/threadimpl.h
+++ b/cpukit/score/include/rtems/score/threadimpl.h
@@ -1951,6 +1951,11 @@ RTEMS_INLINE_ROUTINE void _Thread_Remove_timer_and_unblock(
#endif
}
+Status_Control _Thread_Set_name(
+ Thread_Control *the_thread,
+ const char *name
+);
+
size_t _Thread_Get_name(
const Thread_Control *the_thread,
char *buffer,
diff --git a/cpukit/score/src/threadname.c b/cpukit/score/src/threadname.c
index 6e4ffa4044..a4ee3ab5bd 100644
--- a/cpukit/score/src/threadname.c
+++ b/cpukit/score/src/threadname.c
@@ -14,6 +14,26 @@
#include <string.h>
+Status_Control _Thread_Set_name(
+ Thread_Control *the_thread,
+ const char *name
+)
+{
+ size_t length;
+
+ length = strlcpy(
+ the_thread->Join_queue.Queue.name,
+ name,
+ _Thread_Maximum_name_size
+ );
+
+ if ( length >= _Thread_Maximum_name_size ) {
+ return STATUS_RESULT_TOO_LARGE;
+ }
+
+ return STATUS_SUCCESSFUL;
+}
+
size_t _Thread_Get_name(
const Thread_Control *the_thread,
char *buffer,