Changeset 38d8849 in mainline for uspace/app


Ignore:
Timestamp:
2018-07-16T15:58:51Z (7 years ago)
Author:
Jiří Zárevúcky <jiri.zarevucky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
db51219f
Parents:
c124c985
git-author:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-07-14 16:53:46)
git-committer:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-07-16 15:58:51)
Message:

Privatize <thread.h>.

Location:
uspace/app
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/rcubench/rcubench.c

    rc124c985 r38d8849  
    4040#include <mem.h>
    4141#include <errno.h>
    42 #include <thread.h>
    4342#include <assert.h>
    4443#include <async.h>
     
    105104}
    106105
    107 static void thread_func(void *arg)
     106static errno_t thread_func(void *arg)
    108107{
    109108        bench_t *bench = (bench_t *)arg;
     
    113112        /* Signal another thread completed. */
    114113        futex_up(&bench->done_threads);
     114        return EOK;
    115115}
    116116
     
    123123        }
    124124
     125        fibril_test_spawn_runners(bench->nthreads - 1);
     126
    125127        /* Create and run the first nthreads - 1 threads.*/
    126128        for (size_t k = 1; k < bench->nthreads; ++k) {
    127                 thread_id_t tid;
    128                 /* Also sets up a fibril for the thread. */
    129                 errno_t ret = thread_create(thread_func, bench, "rcubench-t", &tid);
    130                 if (ret != EOK) {
     129                fid_t f = fibril_create(thread_func, bench);
     130                if (!f) {
    131131                        printf("Error: Failed to create benchmark thread.\n");
    132132                        abort();
    133133                }
    134                 thread_detach(tid);
     134                fibril_detach(f);
     135                fibril_add_ready(f);
    135136        }
    136137
  • uspace/app/rcutest/rcutest.c

    rc124c985 r38d8849  
    4141#include <mem.h>
    4242#include <errno.h>
    43 #include <thread.h>
    4443#include <assert.h>
    4544#include <async.h>
     
    759758/*--------------------------------------------------------------------*/
    760759
    761 static FIBRIL_MUTEX_INITIALIZE(blocking_mtx);
    762 
    763 static void dummy_fibril(void *arg)
    764 {
    765         /* Block on an already locked mutex - enters the fibril manager. */
    766         fibril_mutex_lock(&blocking_mtx);
    767         assert(false);
    768 }
    769 
    770760static bool create_threads(size_t cnt)
    771761{
    772762        /* Sanity check. */
    773763        assert(cnt < 1024);
    774 
    775         /* Keep this mutex locked so that dummy fibrils never exit. */
    776         bool success = fibril_mutex_trylock(&blocking_mtx);
    777         assert(success);
    778 
    779         for (size_t k = 0; k < cnt; ++k) {
    780                 thread_id_t tid;
    781 
    782                 errno_t ret = thread_create(dummy_fibril, NULL, "urcu-test-worker", &tid);
    783                 if (EOK != ret) {
    784                         printf("Failed to create thread '%zu' (error: %s)\n", k + 1, str_error_name(ret));
    785                         return false;
    786                 }
    787         }
    788 
     764        fibril_test_spawn_runners(cnt);
    789765        return true;
    790766}
  • uspace/app/tester/float/float1.c

    rc124c985 r38d8849  
    3333#include <stddef.h>
    3434#include <atomic.h>
    35 #include <thread.h>
     35#include <fibril.h>
     36#include <fibril_synch.h>
    3637#include <inttypes.h>
    3738#include "../tester.h"
     
    4344#define PRECISION  100000000
    4445
    45 static atomic_t threads_finished;
     46static FIBRIL_SEMAPHORE_INITIALIZE(threads_finished, 0);
    4647static atomic_t threads_fault;
    4748
    48 static void e(void *data)
     49static errno_t e(void *data)
    4950{
    5051        for (unsigned int i = 0; i < ATTEMPTS; i++) {
     
    6465        }
    6566
    66         atomic_inc(&threads_finished);
     67        fibril_semaphore_up(&threads_finished);
     68        return EOK;
    6769}
    6870
     
    7173        atomic_count_t total = 0;
    7274
    73         atomic_set(&threads_finished, 0);
    7475        atomic_set(&threads_fault, 0);
     76        fibril_test_spawn_runners(THREADS);
    7577
    7678        TPRINTF("Creating threads");
    7779        for (unsigned int i = 0; i < THREADS; i++) {
    78                 if (thread_create(e, NULL, "e", NULL) != EOK) {
     80                fid_t f = fibril_create(e, NULL);
     81                if (!f) {
    7982                        TPRINTF("\nCould not create thread %u\n", i);
    8083                        break;
    8184                }
     85                fibril_detach(f);
     86                fibril_add_ready(f);
    8287
    8388                TPRINTF(".");
     
    8792        TPRINTF("\n");
    8893
    89         while (atomic_get(&threads_finished) < total) {
    90                 TPRINTF("Threads left: %" PRIua "\n",
    91                     total - atomic_get(&threads_finished));
    92                 thread_sleep(1);
     94        for (unsigned int i = 0; i < total; i++) {
     95                TPRINTF("Threads left: %" PRIua "\n", total - i);
     96                fibril_semaphore_down(&threads_finished);
    9397        }
    9498
  • uspace/app/tester/thread/thread1.c

    rc124c985 r38d8849  
    3333#include <atomic.h>
    3434#include <errno.h>
    35 #include <thread.h>
     35#include <fibril.h>
     36#include <fibril_synch.h>
    3637#include <stdio.h>
    3738#include <stddef.h>
     
    4041
    4142static atomic_t finish;
    42 static atomic_t threads_finished;
    4343
    44 static void threadtest(void *data)
     44static FIBRIL_SEMAPHORE_INITIALIZE(threads_finished, 0);
     45
     46static errno_t threadtest(void *data)
    4547{
    46         thread_detach(thread_get_id());
     48        fibril_detach(fibril_get_id());
    4749
    4850        while (atomic_get(&finish))
    49                 thread_usleep(100000);
     51                fibril_usleep(100000);
    5052
    51         atomic_inc(&threads_finished);
     53        fibril_semaphore_up(&threads_finished);
     54        return EOK;
    5255}
    5356
     
    5861
    5962        atomic_set(&finish, 1);
    60         atomic_set(&threads_finished, 0);
     63
     64        fibril_test_spawn_runners(THREADS);
    6165
    6266        TPRINTF("Creating threads");
    6367        for (i = 0; i < THREADS; i++) {
    64                 if (thread_create(threadtest, NULL, "threadtest", NULL) != EOK) {
     68                fid_t f = fibril_create(threadtest, NULL);
     69                if (!f) {
    6570                        TPRINTF("\nCould not create thread %u\n", i);
    6671                        break;
    6772                }
     73                fibril_add_ready(f);
    6874                TPRINTF(".");
    6975                total++;
     
    7177
    7278        TPRINTF("\nRunning threads for %u seconds...", DELAY);
    73         thread_sleep(DELAY);
     79        fibril_sleep(DELAY);
    7480        TPRINTF("\n");
    7581
    7682        atomic_set(&finish, 0);
    77         while (atomic_get(&threads_finished) < total) {
     83        for (i = 0; i < total; i++) {
    7884                TPRINTF("Threads left: %" PRIua "\n",
    79                     total - atomic_get(&threads_finished));
    80                 thread_sleep(1);
     85                    total - i);
     86                fibril_semaphore_down(&threads_finished);
    8187        }
    8288
Note: See TracChangeset for help on using the changeset viewer.