Sourceware Bugzilla – Attachment 7239 Details for
Bug 11588
pthread condvars are not priority inheritance aware
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
[PATCH 2/3 V3] pi-condvars: add tst-condpi1.c, basic API test
0002-pi-condvars-add-tst-condpi1.c-basic-API-test.patch (text/plain), 4.58 KB, created by
Gratian Crisan
on 2013-10-17 21:22:33 UTC
(
hide
)
Description:
[PATCH 2/3 V3] pi-condvars: add tst-condpi1.c, basic API test
Filename:
MIME Type:
Creator:
Gratian Crisan
Created:
2013-10-17 21:22:33 UTC
Size:
4.58 KB
patch
obsolete
>From a900f8d1aa8162640eceec6053775de89585cbce Mon Sep 17 00:00:00 2001 >From: Gratian Crisan <gratian.crisan@ni.com> >Date: Wed, 16 Oct 2013 15:21:34 -0500 >Subject: [PATCH 2/3] pi-condvars: add tst-condpi1.c, basic API test > >A simple test that just confirms the new pthread_condattr_setprotocol_np() API >returns correctly. No priority inversion avoidance testing is done here. > >Signed-off-by: Darren Hart <dvhltc@us.ibm.com> ><Ported to glibc 2.19 by Gratian Crisan> >Signed-off-by: Gratian Crisan <gratian.crisan@ni.com> >--- > nptl/Makefile | 1 + > nptl/tst-condpi1.c | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 122 insertions(+) > create mode 100644 nptl/tst-condpi1.c > >diff --git a/nptl/Makefile b/nptl/Makefile >index 46f8e9e..4f475bc 100644 >--- a/nptl/Makefile >+++ b/nptl/Makefile >@@ -215,6 +215,7 @@ tests = tst-typesizes \ > tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 tst-cond19 \ > tst-cond20 tst-cond21 tst-cond22 tst-cond23 tst-cond24 tst-cond25 \ > tst-cond-except \ >+ tst-condpi1 \ > tst-robust1 tst-robust2 tst-robust3 tst-robust4 tst-robust5 \ > tst-robust6 tst-robust7 tst-robust8 tst-robust9 \ > tst-robustpi1 tst-robustpi2 tst-robustpi3 tst-robustpi4 tst-robustpi5 \ >diff --git a/nptl/tst-condpi1.c b/nptl/tst-condpi1.c >new file mode 100644 >index 0000000..078c80f >--- /dev/null >+++ b/nptl/tst-condpi1.c >@@ -0,0 +1,121 @@ >+/* Copyright (C) 2002, 2010, 2013 Free Software Foundation, Inc. >+ This file is part of the GNU C Library. >+ Contributed by Darren Hart <dvhltc@us.ibm.com> >+ Based on test-cond1.c by Ulrich Drepper <drepper@redhat.com> >+ >+ The GNU C Library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ The GNU C Library is distributed in the hope that it will be useful, >+ but WITHOUT ANY WARRANTY; without even the implied warranty of >+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ Lesser General Public License for more details. >+ >+ You should have received a copy of the GNU Lesser General Public >+ License along with the GNU C Library; if not, see >+ <http://www.gnu.org/licenses/>. */ >+ >+#include <error.h> >+#include <pthread.h> >+#include <stdio.h> >+#include <stdlib.h> >+ >+ >+static pthread_cond_t cond; >+static pthread_mutex_t mut; >+ >+ >+static void * >+tf (void *p) >+{ >+ int err; >+ >+ err = pthread_mutex_lock (&mut); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "child: cannot get mutex"); >+ >+ puts ("child: got mutex; signalling"); >+ >+ pthread_cond_signal (&cond); >+ >+ puts ("child: unlock"); >+ >+ err = pthread_mutex_unlock (&mut); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "child: cannot unlock"); >+ >+ puts ("child: done"); >+ >+ return NULL; >+} >+ >+ >+static int >+do_test (void) >+{ >+ pthread_t th; >+ int err; >+ >+ pthread_mutexattr_t ma; >+ pthread_condattr_t ca; >+ >+ printf ("&cond = %p\n&mut = %p\n", &cond, &mut); >+ >+ puts ("parent: setup condvar"); >+ >+ err = pthread_condattr_init(&ca); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: failed to init condattr"); >+ err = pthread_condattr_setprotocol_np(&ca, PTHREAD_PRIO_INHERIT); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: failed to set condattr protocol"); >+ err = pthread_cond_init(&cond, &ca); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: failed to init condvar"); >+ >+ puts ("parent: setup mutex"); >+ >+ err = pthread_mutexattr_init(&ma); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: failed to init mutexattr"); >+ err = pthread_mutexattr_setprotocol(&ma, PTHREAD_PRIO_INHERIT); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: failed to set mutexattr protocol"); >+ err = pthread_mutex_init(&mut, &ma); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: failed to init mutex"); >+ >+ puts ("parent: get mutex"); >+ >+ err = pthread_mutex_lock (&mut); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: cannot get mutex"); >+ >+ puts ("parent: create child"); >+ >+ err = pthread_create (&th, NULL, tf, NULL); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: cannot create thread"); >+ >+ puts ("parent: wait for condition"); >+ >+ err = pthread_cond_wait (&cond, &mut); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: cannot wait fir signal"); >+ >+ puts ("parent: got signal"); >+ >+ err = pthread_join (th, NULL); >+ if (err != 0) >+ error (EXIT_FAILURE, err, "parent: failed to join"); >+ >+ puts ("done"); >+ >+ return 0; >+} >+ >+ >+#define TEST_FUNCTION do_test () >+#include "../test-skeleton.c" >-- >1.8.1.2 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 11588
:
4779
|
4780
|
4781
|
4782
|
4785
|
4786
|
4787
|
4788
|
4789
|
4821
|
7238
|
7239
|
7240
|
7282
|
7442
|
7684
|
7685
|
7686
|
7687
|
7688
|
7689