[rtems commit] posix: Add pthread_getattr_np().

Jennifer Averett jennifer at rtems.org
Fri Mar 7 15:08:50 UTC 2014


Module:    rtems
Branch:    master
Commit:    6e5f2493a97e4d441ade2eccc1f5c474e71c01f3
Changeset: http://git.rtems.org/rtems/commit/?id=6e5f2493a97e4d441ade2eccc1f5c474e71c01f3

Author:    Jennifer Averett <jennifer.averett at oarcorp.com>
Date:      Tue Jan 14 09:43:14 2014 -0600

posix: Add pthread_getattr_np().

This is a useful POSIX thread API helper which is found in
`GNU/Linux and *BSD.

---

 cpukit/posix/Makefile.am            |    1 +
 cpukit/posix/src/pthreadgetattrnp.c |   57 +++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 0 deletions(-)

diff --git a/cpukit/posix/Makefile.am b/cpukit/posix/Makefile.am
index 9dc8820..ccadd63 100644
--- a/cpukit/posix/Makefile.am
+++ b/cpukit/posix/Makefile.am
@@ -130,6 +130,7 @@ libposix_a_SOURCES += src/pthreadatfork.c src/pthreadattrdestroy.c \
     src/pthreadattrsetschedparam.c src/pthreadattrsetschedpolicy.c \
     src/pthreadattrsetscope.c src/pthreadattrsetstackaddr.c \
     src/pthreadattrsetstack.c src/pthreadattrsetstacksize.c \
+    src/pthreadgetattrnp.c \
     src/pthreadattrgetguardsize.c src/pthread.c \
     src/pthreadcreate.c src/pthreaddetach.c src/pthreadequal.c \
     src/pthreadexit.c src/pthreadgetcpuclockid.c \
diff --git a/cpukit/posix/src/pthreadgetattrnp.c b/cpukit/posix/src/pthreadgetattrnp.c
new file mode 100644
index 0000000..f71819f
--- /dev/null
+++ b/cpukit/posix/src/pthreadgetattrnp.c
@@ -0,0 +1,57 @@
+/**
+ * @file
+ *
+ * @brief Pthread Get Attribute
+ * @ingroup POSIXAPI
+ */
+
+/*
+ *  COPYRIGHT (c) 2014.
+ *  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.org/license/LICENSE.
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define  _GNU_SOURCE
+#include <pthread.h>
+#include <errno.h>
+
+#include <rtems/posix/pthreadimpl.h>
+#include <rtems/score/threadimpl.h>
+
+int pthread_getattr_np(
+  pthread_t       id,
+  pthread_attr_t *attr
+)
+{
+  Objects_Locations        location;
+  POSIX_API_Control       *api;
+  Thread_Control          *the_thread;
+
+  if ( !attr )
+    return EINVAL;
+
+  the_thread = _Thread_Get( id, &location );
+  switch ( location ) {
+
+    case OBJECTS_LOCAL:
+      api = the_thread->API_Extensions[ THREAD_API_POSIX ];
+      _POSIX_Threads_Copy_attributes( attr, &api->Attributes);
+      _Objects_Put( &the_thread->Object );
+      return 0;
+
+#if defined(RTEMS_MULTIPROCESSING)
+    case OBJECTS_REMOTE:
+#endif
+    case OBJECTS_ERROR:
+      break;
+  }
+
+  return ESRCH;
+}




More information about the vc mailing list