Changeset d73d992 in mainline for uspace/lib/c/generic


Ignore:
Timestamp:
2018-06-25T20:10:06Z (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:
3679f51a
Parents:
0a0dff8
git-author:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-06-25 18:56:55)
git-committer:
Jiří Zárevúcky <jiri.zarevucky@…> (2018-06-25 20:10:06)
Message:

Hide libc-internal details of the fibril implementation.

Location:
uspace/lib/c/generic
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/async/client.c

    r0a0dff8 rd73d992  
    121121#include <abi/mm/as.h>
    122122#include "../private/libc.h"
     123#include "../private/fibril.h"
    123124
    124125/** Naming service session */
  • uspace/lib/c/generic/async/server.c

    r0a0dff8 rd73d992  
    120120#include <abi/mm/as.h>
    121121#include "../private/libc.h"
     122#include "../private/fibril.h"
    122123
    123124/** Async framework global futex */
     
    18841885}
    18851886
     1887_Noreturn void async_manager(void)
     1888{
     1889        futex_down(&async_futex);
     1890        fibril_switch(FIBRIL_FROM_DEAD);
     1891        __builtin_unreachable();
     1892}
     1893
    18861894/** @}
    18871895 */
  • uspace/lib/c/generic/fibril.c

    r0a0dff8 rd73d992  
    4949#include <async.h>
    5050
     51#include "private/fibril.h"
     52
    5153#ifdef FUTEX_UPGRADABLE
    5254#include <rcu.h>
     
    7577        futex_unlock(&fibril_futex);
    7678
    77         fibril_t *fibril = __tcb_get()->fibril_data;
     79        fibril_t *fibril = fibril_self();
    7880
    7981#ifdef FUTEX_UPGRADABLE
     
    98100                return NULL;
    99101
    100         fibril_t *fibril = malloc(sizeof(fibril_t));
     102        fibril_t *fibril = calloc(1, sizeof(fibril_t));
    101103        if (!fibril) {
    102104                tls_free(tcb);
     
    106108        tcb->fibril_data = fibril;
    107109        fibril->tcb = tcb;
    108 
    109         fibril->func = NULL;
    110         fibril->arg = NULL;
    111         fibril->stack = NULL;
    112         fibril->clean_after_me = NULL;
    113         fibril->retval = 0;
    114         fibril->flags = 0;
    115 
    116         fibril->waits_for = NULL;
    117110
    118111        /*
     
    156149        futex_lock(&fibril_futex);
    157150
    158         fibril_t *srcf = __tcb_get()->fibril_data;
     151        fibril_t *srcf = fibril_self();
    159152        fibril_t *dstf = NULL;
    160153
     
    345338}
    346339
     340fibril_t *fibril_self(void)
     341{
     342        return __tcb_get()->fibril_data;
     343}
     344
    347345/** Return fibril id of the currently running fibril.
    348346 *
     
    352350fid_t fibril_get_id(void)
    353351{
    354         return (fid_t) __tcb_get()->fibril_data;
     352        return (fid_t) fibril_self();
     353}
     354
     355void fibril_yield(void)
     356{
     357        fibril_switch(FIBRIL_PREEMPT);
    355358}
    356359
  • uspace/lib/c/generic/fibril_synch.c

    r0a0dff8 rd73d992  
    4545#include <stdio.h>
    4646#include "private/async.h"
     47#include "private/fibril.h"
    4748
    4849static void optimize_execution_power(void)
     
    201202                wdata.fid = (fid_t) f;
    202203                wdata.wu_event.inlist = true;
    203                 f->flags &= ~FIBRIL_WRITER;
     204                f->is_writer = false;
    204205                list_append(&wdata.wu_event.link, &frw->waiters);
    205206                check_for_deadlock(&frw->oi);
     
    225226                wdata.fid = (fid_t) f;
    226227                wdata.wu_event.inlist = true;
    227                 f->flags |= FIBRIL_WRITER;
     228                f->is_writer = true;
    228229                list_append(&wdata.wu_event.link, &frw->waiters);
    229230                check_for_deadlock(&frw->oi);
     
    276277                f->waits_for = NULL;
    277278
    278                 if (f->flags & FIBRIL_WRITER) {
     279                if (f->is_writer) {
    279280                        if (frw->readers)
    280281                                break;
  • uspace/lib/c/generic/inet/host.c

    r0a0dff8 rd73d992  
    3535 */
    3636
     37#include <assert.h>
    3738#include <errno.h>
    3839#include <inet/addr.h>
  • uspace/lib/c/generic/inet/hostport.c

    r0a0dff8 rd73d992  
    3636 */
    3737
     38#include <assert.h>
    3839#include <errno.h>
    3940#include <inet/addr.h>
  • uspace/lib/c/generic/libc.c

    r0a0dff8 rd73d992  
    5555#include "private/malloc.h"
    5656#include "private/io.h"
     57#include "private/fibril.h"
    5758
    5859#ifdef FUTEX_UPGRADABLE
  • uspace/lib/c/generic/rcu.c

    r0a0dff8 rd73d992  
    8282#include <thread.h>
    8383
     84#include "private/fibril.h"
     85
    8486
    8587/** RCU sleeps for RCU_SLEEP_MS before polling an active RCU reader again. */
  • uspace/lib/c/generic/thread.c

    r0a0dff8 rd73d992  
    4646#include <as.h>
    4747#include "private/thread.h"
     48#include "private/fibril.h"
    4849
    4950#ifdef FUTEX_UPGRADABLE
Note: See TracChangeset for help on using the changeset viewer.