813d4cbe94
locks. * Added syscalls for a new kind of mutex. A mutex consists only of an int32 and doesn't require any kernel resources. So it's initialization cannot fail (it consists only of setting the mutex value to 0). An uncontended lock or unlock operation can basically consist of an atomic_*() in userland. The syscalls (when the mutex is contended) are a bit more expensive than semaphore operations, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36158 a95241bf-73f2-0310-859d-f6bbb57e9c96
30 lines
608 B
C
30 lines
608 B
C
/*
|
|
* Copyright 2010, Ingo Weinhold, ingo_weinhold@gmx.de.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _KERNEL_USER_MUTEX_H
|
|
#define _KERNEL_USER_MUTEX_H
|
|
|
|
|
|
#include <SupportDefs.h>
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void user_mutex_init();
|
|
|
|
status_t _user_mutex_lock(int32* mutex, const char* name, uint32 flags,
|
|
bigtime_t timeout);
|
|
status_t _user_mutex_unlock(int32* mutex, uint32 flags);
|
|
status_t _user_mutex_switch_lock(int32* fromMutex, int32* toMutex,
|
|
const char* name, uint32 flags, bigtime_t timeout);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif /* _KERNEL_USER_MUTEX_H */
|