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


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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.