Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 854ad23 in mainline


Ignore:
Timestamp:
2009-10-11T10:32:40Z (11 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
master
Children:
b69bec5
Parents:
cadfa8e
Message:

Make fibril mutexes use the awaiter_t type for sleeping.
Timeouts are not supported.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libc/generic/fibril_sync.c

    rcadfa8e r854ad23  
    6666        futex_down(&async_futex);
    6767        if (fm->counter-- <= 0) {
    68                 fibril_t *f = (fibril_t *) fibril_get_id();
    69                 list_append(&f->link, &fm->waiters);
     68                awaiter_t wdata;
     69
     70                wdata.fid = fibril_get_id();
     71                wdata.active = false;
     72                wdata.wu_event.inlist = true;
     73                link_initialize(&wdata.wu_event.link);
     74                list_append(&wdata.wu_event.link, &fm->waiters);
    7075                fibril_switch(FIBRIL_TO_MANAGER);
    7176        } else {
     
    9398        if (fm->counter++ < 0) {
    9499                link_t *tmp;
    95                 fibril_t *f;
     100                awaiter_t *wdp;
    96101       
    97102                assert(!list_empty(&fm->waiters));
    98103                tmp = fm->waiters.next;
    99                 f = list_get_instance(tmp, fibril_t, link);
    100                 list_remove(&f->link);
    101                 fibril_add_ready((fid_t) f);
     104                wdp = list_get_instance(tmp, awaiter_t, wu_event.link);
     105                wdp->wu_event.inlist = false;
     106                list_remove(&wdp->wu_event.link);
     107                fibril_add_ready(wdp->fid);
    102108                optimize_execution_power();
    103109        }
Note: See TracChangeset for help on using the changeset viewer.