From patchwork Wed Jun 29 15:03:41 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiyoung Yun X-Patchwork-Id: 13489 Received: (qmail 45084 invoked by alias); 29 Jun 2016 15:04:03 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 44998 invoked by uid 89); 29 Jun 2016 15:04:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-pa0-f65.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=8plMUcoF3Io44k8VzzEOlKfdDEv1EvMd1hWjldQuk9U=; b=aeDj3nC3WqLP1aHZPv8bN7crsdrigwa/7vWSpzOUSkz7QPeIiyd9vIMszUjpM+Inay FS0TMnHcDyEGJz60CvKgna7v5iECIxdsvWRqvPif6aEJi7Xc4T4fa2cy1avpOtGb8Zpm vB3sugj462c6gMUx9paJjVNax2tz5LioQ4u2dLzI095hQWtaItYsXPAa8DgRlONy1fg/ wkw5M9DfvnCu5v6kAHB+YM21DbthPh2XcvbGonp9A5P5kDnQOUz0vUfvLGsI2kzeXF70 OU3IHF2yRjjuqLiMg+oPJoIPvG8dRGeRRHPZ9cK/RGknobwpymC9QX2IS/BhQND+jt3m Y5UQ== X-Gm-Message-State: ALyK8tLYolyjxOUiQ6+MjkPHaaqWbHv44vuFZQHGUErxDsaNEDtSaGFqKL/mMDwBsSy+zw== X-Received: by 10.66.255.7 with SMTP id am7mr12501574pad.75.1467212630591; Wed, 29 Jun 2016 08:03:50 -0700 (PDT) From: Jiyoung Yun To: libc-alpha@sourceware.org Cc: jy910.yun@samsung.com, Andreas Schwab Subject: [PATCH v2 2/2] Add tst-robust10.c tests Date: Thu, 30 Jun 2016 00:03:41 +0900 Message-Id: <1467212621-5522-3-git-send-email-t2wish@gmail.com> In-Reply-To: <1467212621-5522-1-git-send-email-t2wish@gmail.com> References: <1467212621-5522-1-git-send-email-t2wish@gmail.com> From: Andreas Schwab [BZ #20263] * nptl/Makefile: Added new tests. * nptl/tst-robust10.c: New. --- ChangeLog | 6 +++ nptl/Makefile | 2 +- nptl/tst-robust10.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 nptl/tst-robust10.c diff --git a/ChangeLog b/ChangeLog index 97461f6..84cda4e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2016-06-28 Andreas Schwab + + [BZ #20263] + * nptl/Makefile: Added new tests. + * nptl/tst-robust10.c: New. + 2016-06-28 Jiyoung Yun [BZ #20263] diff --git a/nptl/Makefile b/nptl/Makefile index e0bc1b7..28f6d5a 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -290,7 +290,7 @@ tests = tst-typesizes \ tst-initializers1 $(addprefix tst-initializers1-,\ c89 gnu89 c99 gnu99 c11 gnu11) \ tst-bad-schedattr \ - tst-thread_local1 tst-mutex-errorcheck + tst-thread_local1 tst-mutex-errorcheck tst-robust10 xtests = tst-setuid1 tst-setuid1-static tst-setuid2 \ tst-mutexpp1 tst-mutexpp6 tst-mutexpp10 test-srcs = tst-oddstacklimit diff --git a/nptl/tst-robust10.c b/nptl/tst-robust10.c new file mode 100644 index 0000000..d510ee1 --- /dev/null +++ b/nptl/tst-robust10.c @@ -0,0 +1,110 @@ +/* Test that pthread_mutex_timedlock properly times out. + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 + . */ + +#include +#include +#include +#include +#include + +pthread_mutex_t mutex; + +static void * +thr (void *arg) +{ + struct timespec abstime; + clock_gettime (CLOCK_REALTIME, &abstime); + abstime.tv_sec = 1; + int ret = pthread_mutex_timedlock (&mutex, &abstime); + if (ret == 0) + { + puts ("mutex_timedlock didn't fail"); + exit (1); + } + if (ret != ETIMEDOUT) + { + printf ("mutex_timedlock failed: %s\n", strerror (ret)); + exit (1); + } + + return 0; +} + +static int +do_test (void) +{ + pthread_t pt; + pthread_mutexattr_t ma; + + if (pthread_mutexattr_init (&ma) != 0) + { + puts ("mutexattr_init failed"); + return 0; + } + if (pthread_mutexattr_setrobust_np (&ma, PTHREAD_MUTEX_ROBUST_NP) != 0) + { + puts ("mutexattr_setrobust failed"); + return 1; + } + if (pthread_mutex_init (&mutex, &ma)) + { + puts ("mutex_init failed"); + return 1; + } + + if (pthread_mutexattr_destroy (&ma)) + { + puts ("mutexattr_destroy failed"); + return 1; + } + + if (pthread_mutex_lock (&mutex)) + { + puts ("mutex_lock failed"); + return 1; + } + + if (pthread_create (&pt, NULL, thr, NULL)) + { + puts ("pthread_create failed"); + return 1; + } + + if (pthread_join (pt, NULL)) + { + puts ("pthread_join failed"); + return 1; + } + + if (pthread_mutex_unlock (&mutex)) + { + puts ("mutex_unlock failed"); + return 1; + } + + if (pthread_mutex_destroy (&mutex)) + { + puts ("mutex_destroy failed"); + return 1; + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c"