svn commit: r214901 - in user/davidxu/libthr: include
lib/libc/include lib/libthr lib/libthr/thread
David Xu
davidxu at FreeBSD.org
Sun Nov 7 02:16:08 UTC 2010
Author: davidxu
Date: Sun Nov 7 02:16:07 2010
New Revision: 214901
URL: http://svn.freebsd.org/changeset/base/214901
Log:
Add POSIX functions pthread_mutexattr_setrobust and
pthread_mutexattr_getrobust, these functions are required to support
POSIX robust mutex.
Modified:
user/davidxu/libthr/include/pthread.h
user/davidxu/libthr/lib/libc/include/namespace.h
user/davidxu/libthr/lib/libc/include/un-namespace.h
user/davidxu/libthr/lib/libthr/pthread.map
user/davidxu/libthr/lib/libthr/thread/thr_init.c
user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c
user/davidxu/libthr/lib/libthr/thread/thr_private.h
Modified: user/davidxu/libthr/include/pthread.h
==============================================================================
--- user/davidxu/libthr/include/pthread.h Sun Nov 7 01:19:40 2010 (r214900)
+++ user/davidxu/libthr/include/pthread.h Sun Nov 7 02:16:07 2010 (r214901)
@@ -135,6 +135,9 @@ enum pthread_mutextype {
#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_ERRORCHECK
+#define PTHREAD_MUTEX_STALLED 0
+#define PTHREAD_MUTEX_ROBUST 1
+
enum pthread_rwlocktype_np
{
PTHREAD_RWLOCK_PREFER_READER_NP,
@@ -214,13 +217,17 @@ int pthread_join(pthread_t, void **);
int pthread_key_create(pthread_key_t *,
void (*) (void *));
int pthread_key_delete(pthread_key_t);
-int pthread_mutexattr_init(pthread_mutexattr_t *);
int pthread_mutexattr_destroy(pthread_mutexattr_t *);
+int pthread_mutexattr_getrobust(const pthread_mutexattr_t *__restrict,
+ int *__restrict);
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *,
int *);
int pthread_mutexattr_gettype(pthread_mutexattr_t *, int *);
+int pthread_mutexattr_init(pthread_mutexattr_t *);
int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
+int pthread_mutexattr_setrobust(pthread_mutexattr_t *,
+ int);
int pthread_mutex_destroy(pthread_mutex_t *);
int pthread_mutex_init(pthread_mutex_t *,
const pthread_mutexattr_t *);
Modified: user/davidxu/libthr/lib/libc/include/namespace.h
==============================================================================
--- user/davidxu/libthr/lib/libc/include/namespace.h Sun Nov 7 01:19:40 2010 (r214900)
+++ user/davidxu/libthr/lib/libc/include/namespace.h Sun Nov 7 02:16:07 2010 (r214901)
@@ -157,12 +157,14 @@
#define pthread_mutexattr_getprioceiling _pthread_mutexattr_getprioceiling
#define pthread_mutexattr_getprotocol _pthread_mutexattr_getprotocol
#define pthread_mutexattr_getpshared _pthread_mutexattr_getpshared
+#define pthread_mutexattr_getrobust _pthread_mutexattr_getrobust
#define pthread_mutexattr_gettype _pthread_mutexattr_gettype
#define pthread_mutexattr_init _pthread_mutexattr_init
#define pthread_mutexattr_setkind_np _pthread_mutexattr_setkind_np
#define pthread_mutexattr_setprioceiling _pthread_mutexattr_setprioceiling
#define pthread_mutexattr_setprotocol _pthread_mutexattr_setprotocol
#define pthread_mutexattr_setpshared _pthread_mutexattr_setpshared
+#define pthread_mutexattr_setrobust _pthread_mutexattr_setrobust
#define pthread_mutexattr_settype _pthread_mutexattr_settype
#define pthread_once _pthread_once
#define pthread_resume_all_np _pthread_resume_all_np
Modified: user/davidxu/libthr/lib/libc/include/un-namespace.h
==============================================================================
--- user/davidxu/libthr/lib/libc/include/un-namespace.h Sun Nov 7 01:19:40 2010 (r214900)
+++ user/davidxu/libthr/lib/libc/include/un-namespace.h Sun Nov 7 02:16:07 2010 (r214901)
@@ -138,12 +138,14 @@
#undef pthread_mutexattr_getprioceiling
#undef pthread_mutexattr_getprotocol
#undef pthread_mutexattr_getpshared
+#undef pthread_mutexattr_getrobust
#undef pthread_mutexattr_gettype
#undef pthread_mutexattr_init
#undef pthread_mutexattr_setkind_np
#undef pthread_mutexattr_setprioceiling
#undef pthread_mutexattr_setprotocol
#undef pthread_mutexattr_setpshared
+#undef pthread_mutexattr_setrobust
#undef pthread_mutexattr_settype
#undef pthread_once
#undef pthread_resume_all_np
Modified: user/davidxu/libthr/lib/libthr/pthread.map
==============================================================================
--- user/davidxu/libthr/lib/libthr/pthread.map Sun Nov 7 01:19:40 2010 (r214900)
+++ user/davidxu/libthr/lib/libthr/pthread.map Sun Nov 7 02:16:07 2010 (r214901)
@@ -297,12 +297,14 @@ FBSDprivate_1.0 {
_pthread_mutexattr_getprioceiling;
_pthread_mutexattr_getprotocol;
_pthread_mutexattr_getpshared;
+ _pthread_mutexattr_getrobust;
_pthread_mutexattr_gettype;
_pthread_mutexattr_init;
_pthread_mutexattr_setkind_np;
_pthread_mutexattr_setprioceiling;
_pthread_mutexattr_setprotocol;
_pthread_mutexattr_setpshared;
+ _pthread_mutexattr_setrobust;
_pthread_mutexattr_settype;
_pthread_once;
_pthread_resume_all_np;
@@ -403,4 +405,6 @@ FBSD_1.2 {
openat;
setcontext;
swapcontext;
+ pthread_mutexattr_getrobust;
+ pthread_mutexattr_setrobust;
};
Modified: user/davidxu/libthr/lib/libthr/thread/thr_init.c
==============================================================================
--- user/davidxu/libthr/lib/libthr/thread/thr_init.c Sun Nov 7 01:19:40 2010 (r214900)
+++ user/davidxu/libthr/lib/libthr/thread/thr_init.c Sun Nov 7 02:16:07 2010 (r214901)
@@ -90,7 +90,8 @@ struct pthread_mutex_attr _pthread_mutex
.m_type = PTHREAD_MUTEX_DEFAULT,
.m_protocol = PTHREAD_PRIO_NONE,
.m_ceiling = 0,
- .m_pshared = 0
+ .m_pshared = 0,
+ .m_robust = PTHREAD_MUTEX_STALLED
};
struct pthread_mutex_attr _pthread_mutexattr_adaptive_default = {
Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c
==============================================================================
--- user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c Sun Nov 7 01:19:40 2010 (r214900)
+++ user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c Sun Nov 7 02:16:07 2010 (r214901)
@@ -81,6 +81,8 @@ __weak_reference(_pthread_mutexattr_getp
__weak_reference(_pthread_mutexattr_setprotocol, pthread_mutexattr_setprotocol);
__weak_reference(_pthread_mutexattr_getprioceiling, pthread_mutexattr_getprioceiling);
__weak_reference(_pthread_mutexattr_setprioceiling, pthread_mutexattr_setprioceiling);
+__weak_reference(_pthread_mutexattr_getrobust, pthread_mutexattr_getrobust);
+__weak_reference(_pthread_mutexattr_setrobust, pthread_mutexattr_setrobust);
int
_pthread_mutexattr_init(pthread_mutexattr_t *attr)
@@ -253,3 +255,35 @@ _pthread_mutexattr_setprioceiling(pthrea
return(ret);
}
+int
+_pthread_mutexattr_getrobust(const pthread_mutexattr_t *mattr,
+ int *robust)
+{
+ int error;
+
+ if ((mattr == NULL) || (*mattr == NULL))
+ error = EINVAL;
+ else {
+ *robust =(*mattr)->m_robust;
+ error = 0;
+ }
+ return (error);
+}
+
+int
+_pthread_mutexattr_setrobust(pthread_mutexattr_t *mattr,
+ int robust)
+{
+ int error;
+
+ if ((mattr == NULL) || (*mattr == NULL))
+ error = EINVAL;
+ else if (robust == PTHREAD_MUTEX_STALLED ||
+ robust == PTHREAD_MUTEX_ROBUST) {
+ (*mattr)->m_robust = robust;
+ error = 0;
+ } else{
+ error = EINVAL;
+ }
+ return (error);
+}
Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h
==============================================================================
--- user/davidxu/libthr/lib/libthr/thread/thr_private.h Sun Nov 7 01:19:40 2010 (r214900)
+++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Sun Nov 7 02:16:07 2010 (r214901)
@@ -156,6 +156,7 @@ struct pthread_mutex_attr {
int m_protocol;
int m_ceiling;
int m_pshared;
+ int m_robust;
};
struct pthread_cond {
More information about the svn-src-user
mailing list