The attached patch implements pthread_getattr_np().

Jennifer Averett
On-Line Applications Research
From b328f41a371cd590dbd22797d1c6b354bb811664 Mon Sep 17 00:00:00 2001
From: Jennifer Averett <jennifer.aver...@oarcorp.com>
Date: Tue, 14 Jan 2014 09:43:14 -0600
Subject: [PATCH 94/95] posix: Add pthread_getattr_np().

---
 cpukit/posix/Makefile.am            |  1 +
 cpukit/posix/src/pthreadgetattrnp.c | 44 +++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 cpukit/posix/src/pthreadgetattrnp.c

diff --git a/cpukit/posix/Makefile.am b/cpukit/posix/Makefile.am
index ea6d3d9..0e81abc 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..3d57702
--- /dev/null
+++ b/cpukit/posix/src/pthreadgetattrnp.c
@@ -0,0 +1,44 @@
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define  _GNU_SOURCE
+#include <pthread.h>
+#include <errno.h>
+
+#include <rtems/posix/pthreadimpl.h>
+#include <rtems/posix/priorityimpl.h>
+#include <rtems/score/threadimpl.h>
+
+#include <sys/cpuset.h>
+
+int pthread_getattr_np(
+  pthread_t       id,
+  pthread_attr_t *attr
+)
+{
+  Objects_Locations        location;
+  POSIX_API_Control       *api;
+  register 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 ];
+      *attr = api->Attributes;
+      _Objects_Put( &the_thread->Object );
+      return 0;
+
+#if defined(RTEMS_MULTIPROCESSING)
+    case OBJECTS_REMOTE:
+#endif
+    case OBJECTS_ERROR:
+      break;
+  }
+
+  return ESRCH;
+}
-- 
1.8.1.4

_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to