Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00ee4800 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

implement Mutex and Condition with pthread instead of calling futex directly.

internally pthread uses futex. the implementation consists of simple inlines
there are no implementation files anymore.
parent aa371735
Loading
Loading
Loading
Loading
+0 −60
Original line number Diff line number Diff line
/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef _FUTEX_SYNCHRO_H
#define _FUTEX_SYNCHRO_H

#ifndef HAVE_FUTEX
#error "HAVE_FUTEX not defined"
#endif

#define FUTEX_WAIT_INFINITE (0)

typedef struct futex_mutex_t futex_mutex_t;

struct futex_mutex_t 
{
    volatile int value;
};

typedef struct futex_cond_t futex_cond_t;

struct futex_cond_t 
{
    volatile int value;
};


#if __cplusplus
extern "C" {
#endif

void futex_mutex_init(futex_mutex_t *m);
int futex_mutex_lock(futex_mutex_t *m, unsigned msec);
void futex_mutex_unlock(futex_mutex_t *m);
int futex_mutex_trylock(futex_mutex_t *m);

void futex_cond_init(futex_cond_t *c);
int futex_cond_wait(futex_cond_t *c, futex_mutex_t *m, unsigned msec);
void futex_cond_signal(futex_cond_t *c);
void futex_cond_broadcast(futex_cond_t *c);

#if __cplusplus
} // extern "C"
#endif

#endif // _FUTEX_SYNCHRO_H