Changeset 7100108 in rtems-libbsd


Ignore:
Timestamp:
Apr 17, 2014, 7:45:42 AM (6 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, c1e05b9ea378b2971e3d7704779112b4bc4296da, freebsd-9.3, 4a77611a223ea883fb548679b516d326a020d447
Children:
b6d5758
Parents:
9219a29
git-author:
Sebastian Huber <sebastian.huber@…> (04/17/14 07:45:42)
git-committer:
Sebastian Huber <sebastian.huber@…> (05/14/14 07:11:37)
Message:

Update due to workspace allocation changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • testsuite/thread01/test_main.c

    r9219a29 r7100108  
    11/*
    2  * Copyright (c) 2013 embedded brains GmbH.  All rights reserved.
     2 * Copyright (c) 2013-2014 embedded brains GmbH.  All rights reserved.
    33 *
    44 *  embedded brains GmbH
     
    3131
    3232#include <machine/rtems-bsd-kernel-space.h>
     33#include <machine/rtems-bsd-thread.h>
    3334
    3435#include <stdlib.h>
     
    209210{
    210211        rtems_resource_snapshot snapshot;
    211         uintptr_t take_away;
    212212        void *greedy;
     213        uintptr_t take_away = 2 * BSD_MINIMUM_TASK_STACK_SIZE;
    213214
    214215        puts("test kthread_add()");
    215216
    216         greedy = rtems_workspace_greedy_allocate_all_except_largest(&take_away);
     217        greedy = rtems_workspace_greedy_allocate(&take_away, 1);
    217218
    218219        rtems_resource_snapshot_take(&snapshot);
     
    221222
    222223        while (take_away > 0) {
    223                 struct thread *td = NULL;
    224224                void *away;
    225                 int eno;
    226 
    227                 /*
    228                  * FIXME: This direct workspace access is a hack to get
    229                  * reasonable test run times with RTEMS_DEBUG enabled.
    230                  */
    231                 _Thread_Disable_dispatch();
    232                 away = _Workspace_Allocate(take_away);
    233                 _Thread_Enable_dispatch();
    234 
    235                 eno = kthread_add(
    236                         test_kthread_add_thread,
    237                         TEST_KTHREAD_ADD,
    238                         NULL,
    239                         &td,
    240                         0,
    241                         0,
    242                         "%s",
    243                         &test_kthread_name[0]
    244                 );
    245 
    246                 _Thread_Disable_dispatch();
    247                 _Workspace_Free(away);
    248                 _Thread_Enable_dispatch();
    249 
    250                 if (eno == 0) {
    251                         wait_for_worker_thread();
    252                         assert(td != NULL);
    253 
    254                         take_away = 0;
    255                 } else {
    256                         assert(eno == ENOMEM);
    257                         assert(rtems_resource_snapshot_check(&snapshot));
    258 
    259                         --take_away;
     225                bool ok;
     226
     227                ok = rtems_workspace_allocate(take_away, &away);
     228                if (ok) {
     229                        struct thread *td = NULL;
     230                        int eno;
     231
     232                        eno = kthread_add(
     233                                test_kthread_add_thread,
     234                                TEST_KTHREAD_ADD,
     235                                NULL,
     236                                &td,
     237                                0,
     238                                0,
     239                                "%s",
     240                                &test_kthread_name[0]
     241                        );
     242
     243                        ok = rtems_workspace_free(away);
     244                        assert(ok);
     245
     246                        if (eno == 0) {
     247                                wait_for_worker_thread();
     248                                assert(td != NULL);
     249
     250                                break;
     251                        } else {
     252                                assert(eno == ENOMEM);
     253                                assert(rtems_resource_snapshot_check(&snapshot));
     254                        }
    260255                }
     256
     257                --take_away;
    261258        }
     259
     260        assert(take_away > 0);
    262261
    263262        rtems_workspace_greedy_free(greedy);
Note: See TracChangeset for help on using the changeset viewer.