Changeset 04803bf in mainline for uspace/lib/c/include/fibril_synch.h


Ignore:
Timestamp:
2011-03-21T22:00:17Z (14 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
143932e3
Parents:
b50b5af2 (diff), 7308e84 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes (needs fixes).

File:
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/fibril_synch.h

    rb50b5af2 r04803bf  
    3333 */
    3434
    35 #ifndef LIBC_FIBRIL_SYNC_H_
    36 #define LIBC_FIBRIL_SYNC_H_
     35#ifndef LIBC_FIBRIL_SYNCH_H_
     36#define LIBC_FIBRIL_SYNCH_H_
    3737
    3838#include <async.h>
     
    4040#include <adt/list.h>
    4141#include <libarch/tls.h>
     42#include <sys/time.h>
    4243
    4344typedef struct {
     45        fibril_owner_info_t oi;         /* Keep this the first thing. */
    4446        int counter;
    4547        link_t waiters;
    4648} fibril_mutex_t;
    4749
    48 #define FIBRIL_MUTEX_INITIALIZE(name) \
    49         fibril_mutex_t name = { \
     50#define FIBRIL_MUTEX_INITIALIZER(name) \
     51        { \
     52                .oi = { \
     53                        .owned_by = NULL \
     54                }, \
    5055                .counter = 1, \
    5156                .waiters = { \
     
    5459                } \
    5560        }
     61       
     62#define FIBRIL_MUTEX_INITIALIZE(name) \
     63        fibril_mutex_t name = FIBRIL_MUTEX_INITIALIZER(name)
    5664
    5765typedef struct {
     66        fibril_owner_info_t oi; /* Keep this the first thing. */
    5867        unsigned writers;
    5968        unsigned readers;
     
    6170} fibril_rwlock_t;
    6271
    63 #define FIBRIL_RWLOCK_INITIALIZE(name) \
    64         fibril_rwlock_t name = { \
     72#define FIBRIL_RWLOCK_INITIALIZER(name) \
     73        { \
     74                .oi = { \
     75                        .owned_by = NULL \
     76                }, \
    6577                .readers = 0, \
    6678                .writers = 0, \
     
    7183        }
    7284
     85#define FIBRIL_RWLOCK_INITIALIZE(name) \
     86        fibril_rwlock_t name = FIBRIL_RWLOCK_INITIALIZER(name)
     87
    7388typedef struct {
    7489        link_t waiters;
    7590} fibril_condvar_t;
    7691
    77 #define FIBRIL_CONDVAR_INITIALIZE(name) \
    78         fibril_condvar_t name = { \
     92#define FIBRIL_CONDVAR_INITIALIZER(name) \
     93        { \
    7994                .waiters = { \
    8095                        .next = &name.waiters, \
     
    8398        }
    8499
     100#define FIBRIL_CONDVAR_INITIALIZE(name) \
     101        fibril_condvar_t name = FIBRIL_CONDVAR_INITIALIZER(name)
     102
    85103extern void fibril_mutex_initialize(fibril_mutex_t *);
    86104extern void fibril_mutex_lock(fibril_mutex_t *);
    87105extern bool fibril_mutex_trylock(fibril_mutex_t *);
    88106extern void fibril_mutex_unlock(fibril_mutex_t *);
     107extern bool fibril_mutex_is_locked(fibril_mutex_t *);
    89108
    90109extern void fibril_rwlock_initialize(fibril_rwlock_t *);
     
    93112extern void fibril_rwlock_read_unlock(fibril_rwlock_t *);
    94113extern void fibril_rwlock_write_unlock(fibril_rwlock_t *);
     114extern bool fibril_rwlock_is_read_locked(fibril_rwlock_t *);
     115extern bool fibril_rwlock_is_write_locked(fibril_rwlock_t *);
     116extern bool fibril_rwlock_is_locked(fibril_rwlock_t *);
    95117
    96118extern void fibril_condvar_initialize(fibril_condvar_t *);
     119extern int fibril_condvar_wait_timeout(fibril_condvar_t *, fibril_mutex_t *,
     120    suseconds_t);
    97121extern void fibril_condvar_wait(fibril_condvar_t *, fibril_mutex_t *);
    98122extern void fibril_condvar_signal(fibril_condvar_t *);
Note: See TracChangeset for help on using the changeset viewer.