Ignore:
File:
1 edited

Legend:

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

    rd161715 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 <stdio.h>
    46 #include "private/async.h"
    4746
    4847static void optimize_execution_power(void)
     
    5655         */
    5756        if (atomic_get(&threads_in_ipc_wait) > 0)
    58                 async_poke();
     57                ipc_poke();
    5958}
    6059
     
    105104        fibril_t *f = (fibril_t *) fibril_get_id();
    106105
    107         if (fibril_get_sercount() != 0)
    108                 abort();
    109 
    110106        futex_down(&async_futex);
    111107        if (fm->counter-- <= 0) {
     
    143139static void _fibril_mutex_unlock_unsafe(fibril_mutex_t *fm)
    144140{
     141        assert(fm->counter <= 0);
    145142        if (fm->counter++ < 0) {
    146143                link_t *tmp;
     
    168165void fibril_mutex_unlock(fibril_mutex_t *fm)
    169166{
    170         assert(fibril_mutex_is_locked(fm));
    171167        futex_down(&async_futex);
    172168        _fibril_mutex_unlock_unsafe(fm);
    173169        futex_up(&async_futex);
    174 }
    175 
    176 bool fibril_mutex_is_locked(fibril_mutex_t *fm)
    177 {
    178         bool locked = false;
    179        
    180         futex_down(&async_futex);
    181         if (fm->counter <= 0)
    182                 locked = true;
    183         futex_up(&async_futex);
    184        
    185         return locked;
    186170}
    187171
     
    198182        fibril_t *f = (fibril_t *) fibril_get_id();
    199183       
    200         if (fibril_get_sercount() != 0)
    201                 abort();
    202 
    203184        futex_down(&async_futex);
    204185        if (frw->writers) {
     
    226207        fibril_t *f = (fibril_t *) fibril_get_id();
    227208       
    228         if (fibril_get_sercount() != 0)
    229                 abort();
    230 
    231209        futex_down(&async_futex);
    232210        if (frw->writers || frw->readers) {
     
    252230{
    253231        futex_down(&async_futex);
     232        assert(frw->readers || (frw->writers == 1));
    254233        if (frw->readers) {
    255234                if (--frw->readers) {
     
    317296void fibril_rwlock_read_unlock(fibril_rwlock_t *frw)
    318297{
    319         assert(fibril_rwlock_is_read_locked(frw));
    320298        _fibril_rwlock_common_unlock(frw);
    321299}
     
    323301void fibril_rwlock_write_unlock(fibril_rwlock_t *frw)
    324302{
    325         assert(fibril_rwlock_is_write_locked(frw));
    326303        _fibril_rwlock_common_unlock(frw);
    327 }
    328 
    329 bool fibril_rwlock_is_read_locked(fibril_rwlock_t *frw)
    330 {
    331         bool locked = false;
    332 
    333         futex_down(&async_futex);
    334         if (frw->readers)
    335                 locked = true;
    336         futex_up(&async_futex);
    337 
    338         return locked;
    339 }
    340 
    341 bool fibril_rwlock_is_write_locked(fibril_rwlock_t *frw)
    342 {
    343         bool locked = false;
    344 
    345         futex_down(&async_futex);
    346         if (frw->writers) {
    347                 assert(frw->writers == 1);
    348                 locked = true;
    349         }
    350         futex_up(&async_futex);
    351 
    352         return locked;
    353 }
    354 
    355 bool fibril_rwlock_is_locked(fibril_rwlock_t *frw)
    356 {
    357         return fibril_rwlock_is_read_locked(frw) ||
    358             fibril_rwlock_is_write_locked(frw);
    359304}
    360305
     
    369314{
    370315        awaiter_t wdata;
    371 
    372         assert(fibril_mutex_is_locked(fm));
    373316
    374317        if (timeout < 0)
Note: See TracChangeset for help on using the changeset viewer.