Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/fibril_synch.c

    r47b7006 r9414abc  
    3636#include <fibril.h>
    3737#include <async.h>
     38#include <async_priv.h>
    3839#include <adt/list.h>
    3940#include <futex.h>
     
    4344#include <stacktrace.h>
    4445#include <stdlib.h>
    45 #include "private/async.h"
    4646
    4747static void optimize_execution_power(void)
     
    5555         */
    5656        if (atomic_get(&threads_in_ipc_wait) > 0)
    57                 async_poke();
     57                ipc_poke();
    5858}
    5959
     
    104104        fibril_t *f = (fibril_t *) fibril_get_id();
    105105
    106         if (fibril_get_sercount() != 0)
    107                 abort();
    108 
    109106        futex_down(&async_futex);
    110107        if (fm->counter-- <= 0) {
     
    142139static void _fibril_mutex_unlock_unsafe(fibril_mutex_t *fm)
    143140{
     141        assert(fm->counter <= 0);
    144142        if (fm->counter++ < 0) {
    145143                link_t *tmp;
     
    167165void fibril_mutex_unlock(fibril_mutex_t *fm)
    168166{
    169         assert(fibril_mutex_is_locked(fm));
    170167        futex_down(&async_futex);
    171168        _fibril_mutex_unlock_unsafe(fm);
    172169        futex_up(&async_futex);
    173 }
    174 
    175 bool fibril_mutex_is_locked(fibril_mutex_t *fm)
    176 {
    177         bool locked = false;
    178        
    179         futex_down(&async_futex);
    180         if (fm->counter <= 0)
    181                 locked = true;
    182         futex_up(&async_futex);
    183        
    184         return locked;
    185170}
    186171
     
    197182        fibril_t *f = (fibril_t *) fibril_get_id();
    198183       
    199         if (fibril_get_sercount() != 0)
    200                 abort();
    201 
    202184        futex_down(&async_futex);
    203185        if (frw->writers) {
     
    225207        fibril_t *f = (fibril_t *) fibril_get_id();
    226208       
    227         if (fibril_get_sercount() != 0)
    228                 abort();
    229 
    230209        futex_down(&async_futex);
    231210        if (frw->writers || frw->readers) {
     
    251230{
    252231        futex_down(&async_futex);
     232        assert(frw->readers || (frw->writers == 1));
    253233        if (frw->readers) {
    254234                if (--frw->readers) {
     
    316296void fibril_rwlock_read_unlock(fibril_rwlock_t *frw)
    317297{
    318         assert(fibril_rwlock_is_read_locked(frw));
    319298        _fibril_rwlock_common_unlock(frw);
    320299}
     
    322301void fibril_rwlock_write_unlock(fibril_rwlock_t *frw)
    323302{
    324         assert(fibril_rwlock_is_write_locked(frw));
    325303        _fibril_rwlock_common_unlock(frw);
    326 }
    327 
    328 bool fibril_rwlock_is_read_locked(fibril_rwlock_t *frw)
    329 {
    330         bool locked = false;
    331 
    332         futex_down(&async_futex);
    333         if (frw->readers)
    334                 locked = true;
    335         futex_up(&async_futex);
    336 
    337         return locked;
    338 }
    339 
    340 bool fibril_rwlock_is_write_locked(fibril_rwlock_t *frw)
    341 {
    342         bool locked = false;
    343 
    344         futex_down(&async_futex);
    345         if (frw->writers) {
    346                 assert(frw->writers == 1);
    347                 locked = true;
    348         }
    349         futex_up(&async_futex);
    350 
    351         return locked;
    352 }
    353 
    354 bool fibril_rwlock_is_locked(fibril_rwlock_t *frw)
    355 {
    356         return fibril_rwlock_is_read_locked(frw) ||
    357             fibril_rwlock_is_write_locked(frw);
    358304}
    359305
     
    368314{
    369315        awaiter_t wdata;
    370 
    371         assert(fibril_mutex_is_locked(fm));
    372316
    373317        if (timeout < 0)
Note: See TracChangeset for help on using the changeset viewer.