Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-8]: src/tests/lib/libpthread Pull up following revision(s) (reque...



details:   https://anonhg.NetBSD.org/src/rev/1acc51aed707
branches:  netbsd-8
changeset: 434680:1acc51aed707
user:      snj <snj%NetBSD.org@localhost>
date:      Mon Feb 26 01:24:54 2018 +0000

description:
Pull up following revision(s) (requested by maya in ticket #585):
        tests/lib/libpthread/t_mutex.c: 1.19
Since there has been no objection (or even comment) in response
to my message on tech-userlevel ...
    Subject: tests/lib/libpthread/t_mutex:mutex6
    Date: Thu, 23 Nov 2017 17:34:54 +0700
    Message-ID: <28385.1511433294%andromeda.noi.kre.to@localhost>
which can be found at:
        http://mail-index.netbsd.org/tech-userlevel/2017/11/23/msg011010.html
which analysed the mutex6 test case of this test, and concluded
that it was useless, nonsense, and broken (the whole test is just a
race - not even really using or testing mutexes), let it be henceforth
forever gone.

diffstat:

 tests/lib/libpthread/t_mutex.c |  130 +----------------------------------------
 1 files changed, 2 insertions(+), 128 deletions(-)

diffs (158 lines):

diff -r 01a1e5d89ddc -r 1acc51aed707 tests/lib/libpthread/t_mutex.c
--- a/tests/lib/libpthread/t_mutex.c    Mon Feb 26 01:23:42 2018 +0000
+++ b/tests/lib/libpthread/t_mutex.c    Mon Feb 26 01:24:54 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: t_mutex.c,v 1.18 2017/04/01 17:19:40 martin Exp $ */
+/* $NetBSD: t_mutex.c,v 1.18.4.1 2018/02/26 01:24:54 snj Exp $ */
 
 /*
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: t_mutex.c,v 1.18 2017/04/01 17:19:40 martin Exp $");
+__RCSID("$NetBSD: t_mutex.c,v 1.18.4.1 2018/02/26 01:24:54 snj Exp $");
 
 #include <sys/time.h> /* For timespecadd */
 #include <inttypes.h> /* For UINT16_MAX */
@@ -371,131 +371,6 @@
        PTHREAD_REQUIRE(pthread_join(child, NULL));
 }
 
-static int start = 0;
-static uintmax_t high_cnt = 0, low_cnt = 0, MAX_LOOP = 100000000;
-
-static void *
-high_prio(void* arg)
-{
-       struct sched_param param;
-       int policy;
-       param.sched_priority = min_fifo_prio + 10;
-       pthread_t childid = pthread_self();
-
-       PTHREAD_REQUIRE(pthread_setschedparam(childid, 1, &param));
-       PTHREAD_REQUIRE(pthread_getschedparam(childid, &policy, &param));
-       printf("high protect = %d, prio = %d\n",
-           _sched_protect(-2), param.sched_priority);
-       ATF_REQUIRE_EQ(policy, 1);
-       printf("high prio = %d\n", param.sched_priority);
-       sleep(1);
-       long tmp = 0;
-       for (int i = 0; i < 20; i++) {
-               while (high_cnt < MAX_LOOP) {
-                       tmp += (123456789 % 1234) * (987654321 % 54321);
-                       high_cnt += 1;
-               }
-               high_cnt = 0;
-               sleep(1);
-       }
-       PTHREAD_REQUIRE(mutex_lock(&mutex, &ts_lengthy));
-       if (start == 0) start = 2;
-       PTHREAD_REQUIRE(pthread_mutex_unlock(&mutex));
-
-       return 0;
-}
-
-static void *
-low_prio(void* arg)
-{
-       struct sched_param param;
-       int policy;
-       param.sched_priority = min_fifo_prio;
-       pthread_t childid = pthread_self();
-       int res = _sched_protect(max_fifo_prio);
-       ATF_REQUIRE_EQ(res, 0);
-       PTHREAD_REQUIRE(pthread_setschedparam(childid, 1, &param));
-       PTHREAD_REQUIRE(pthread_getschedparam(childid, &policy, &param));
-       printf("low protect = %d, prio = %d\n", _sched_protect(-2),
-           param.sched_priority);
-       ATF_REQUIRE_EQ(policy, 1);
-       printf("low prio = %d\n", param.sched_priority);
-       sleep(1);
-       long tmp = 0;
-       for (int i = 0; i < 20; i++) {
-               while (low_cnt < MAX_LOOP) {
-                       tmp += (123456789 % 1234) * (987654321 % 54321);
-                       low_cnt += 1;
-               }
-               low_cnt = 0;
-               sleep(1);
-       }
-       PTHREAD_REQUIRE(mutex_lock(&mutex, &ts_lengthy));
-       if (start == 0)
-               start = 1;
-       PTHREAD_REQUIRE(pthread_mutex_unlock(&mutex));
-
-       return 0;
-}
-
-ATF_TC(mutex6);
-ATF_TC_HEAD(mutex6, tc)
-{
-       atf_tc_set_md_var(tc, "descr",
-           "Checks scheduling for priority ceiling");
-       atf_tc_set_md_var(tc, "require.user", "root");
-}
-
-/*
- * 1. main thread sets itself to be a realtime task and launched two tasks,
- *    one has higher priority and the other has lower priority.
- * 2. each child thread(low and high priority thread) sets its scheduler and
- *    priority.
- * 3. each child thread did several rounds of computation, after each round it
- *    sleep 1 second.
- * 4. the child thread with low priority will call _sched_protect to increase
- *    its protect priority.
- * 5. We verify the thread with low priority runs first.
- *
- * Why does it work? From the main thread, we launched the high
- * priority thread first. This gives this thread the benefit of
- * starting first. The low priority thread did not call _sched_protect(2).
- * The high priority thread should finish the task first. After each
- * round of computation, we call sleep, to put the task into the
- * sleep queue, and wake up again after the timer expires. This
- * gives the scheduler the chance to decide which task to run. So,
- * the thread with real high priority will always block the thread
- * with real low priority.
- * 
- */
-ATF_TC_BODY(mutex6, tc)
-{
-       struct sched_param param;
-       int res;
-       pthread_t high, low;
-
-       min_fifo_prio = sched_get_priority_min(SCHED_FIFO);
-       max_fifo_prio = sched_get_priority_max(SCHED_FIFO);
-       PTHREAD_REQUIRE(pthread_mutex_init(&mutex, NULL));
-       printf("min_fifo_prio = %d, max_fifo_info = %d\n", min_fifo_prio,
-           max_fifo_prio);
-
-       param.sched_priority = min_fifo_prio;
-       res = sched_setscheduler(getpid(), SCHED_FIFO, &param);
-       printf("previous policy used = %d\n", res);
-
-       res = sched_getscheduler(getpid());
-       ATF_REQUIRE_EQ(res, 1);
-       PTHREAD_REQUIRE(pthread_create(&high, NULL, high_prio, NULL));
-       PTHREAD_REQUIRE(pthread_create(&low, NULL, low_prio, NULL));
-       sleep(5);
-       PTHREAD_REQUIRE(pthread_join(low, NULL));
-       PTHREAD_REQUIRE(pthread_join(high, NULL));
-       
-       ATF_REQUIRE_EQ_MSG(start, 1, "start = %d, low_cnt =%ju, "
-           "high_cnt = %ju\n", start, high_cnt, low_cnt);
-}
-
 ATF_TC(mutexattr1);
 ATF_TC_HEAD(mutexattr1, tc)
 {
@@ -680,7 +555,6 @@
        ATF_TP_ADD_TC(tp, mutex3);
        ATF_TP_ADD_TC(tp, mutex4);
        ATF_TP_ADD_TC(tp, mutex5);
-       ATF_TP_ADD_TC(tp, mutex6);
        ATF_TP_ADD_TC(tp, mutexattr1);
        ATF_TP_ADD_TC(tp, mutexattr2);
 



Home | Main Index | Thread Index | Old Index