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


Ignore:
Timestamp:
2012-12-04T16:54:39Z (12 years ago)
Author:
Adam Hraska <adam.hraska+hos@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
87179ca
Parents:
b188002
Message:

Turned fibril futex semaphore into a futex lock/mutex.

File:
1 edited

Legend:

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

    rb188002 rdf7cbc6  
    5151#include <futex.h>
    5252
    53 #ifdef FUTEX_UPGRADABLE
     53#ifdef futex_unlockGRADABLE
    5454#include <rcu.h>
    5555#endif
     
    8888        fibril_t *fibril = __tcb_get()->fibril_data;
    8989
    90 #ifdef FUTEX_UPGRADABLE
     90#ifdef futex_unlockGRADABLE
    9191        rcu_register_fibril();
    9292#endif
     
    152152        int retval = 0;
    153153       
    154         futex_down(&fibril_futex);
     154        futex_lock(&fibril_futex);
    155155       
    156156        if (stype == FIBRIL_PREEMPT && list_empty(&ready_list))
     
    174174        if ((stype == FIBRIL_TO_MANAGER) || (stype == FIBRIL_FROM_DEAD)) {
    175175                while (list_empty(&manager_list)) {
    176                         futex_up(&fibril_futex);
     176                        futex_unlock(&fibril_futex);
    177177                        async_create_manager();
    178                         futex_down(&fibril_futex);
     178                        futex_lock(&fibril_futex);
    179179                }
    180180        }
     
    209209                        }
    210210                       
    211                         return 1;       /* futex_up already done here */
     211                        return 1;       /* futex_unlock already done here */
    212212                }
    213213               
     
    252252        list_remove(&dstf->link);
    253253       
    254         futex_up(&fibril_futex);
    255        
    256 #ifdef FUTEX_UPGRADABLE
     254        futex_unlock(&fibril_futex);
     255       
     256#ifdef futex_unlockGRADABLE
    257257        if (stype == FIBRIL_FROM_DEAD) {
    258258                rcu_deregister_fibril();
     
    264264       
    265265ret_0:
    266         futex_up(&fibril_futex);
     266        futex_unlock(&fibril_futex);
    267267        return retval;
    268268}
     
    329329        fibril_t *fibril = (fibril_t *) fid;
    330330       
    331         futex_down(&fibril_futex);
     331        futex_lock(&fibril_futex);
    332332       
    333333        if ((fibril->flags & FIBRIL_SERIALIZED))
     
    336336                list_append(&fibril->link, &ready_list);
    337337       
    338         futex_up(&fibril_futex);
     338        futex_unlock(&fibril_futex);
    339339}
    340340
     
    349349        fibril_t *fibril = (fibril_t *) fid;
    350350       
    351         futex_down(&fibril_futex);
     351        futex_lock(&fibril_futex);
    352352        list_append(&fibril->link, &manager_list);
    353         futex_up(&fibril_futex);
     353        futex_unlock(&fibril_futex);
    354354}
    355355
     
    357357void fibril_remove_manager(void)
    358358{
    359         futex_down(&fibril_futex);
     359        futex_lock(&fibril_futex);
    360360       
    361361        if (!list_empty(&manager_list))
    362362                list_remove(list_first(&manager_list));
    363363       
    364         futex_up(&fibril_futex);
     364        futex_unlock(&fibril_futex);
    365365}
    366366
Note: See TracChangeset for help on using the changeset viewer.