[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