mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
- Compiles and Codezero runs as normal without touching mutex implementation - Mutex implementation needs testing. The mutex control syscall allows userspace programs to declare any virtual address as a mutex lock and ask for help from the kernel syscall for resolving locking contentions.
39 lines
693 B
C
39 lines
693 B
C
|
|
/*
|
|
* User space locking
|
|
*
|
|
* Copyright (C) 2009 Bahadir Bilgehan Balban
|
|
*/
|
|
|
|
#ifndef __L4_MUTEX_H__
|
|
#define __L4_MUTEX_H__
|
|
|
|
|
|
#if !defined(__ASSEMBLY__)
|
|
|
|
#include <l4/api/mutex.h>
|
|
|
|
struct l4_mutex {
|
|
unsigned int lock;
|
|
} __attribute__((aligned(sizeof(int))));
|
|
|
|
|
|
void l4_mutex_init(struct l4_mutex *m);
|
|
int l4_mutex_lock(struct l4_mutex *m);
|
|
int l4_mutex_unlock(struct l4_mutex *m);
|
|
|
|
#endif
|
|
|
|
/* Mutex return value - don't mix up with mutes state */
|
|
#define L4_MUTEX_CONTENDED -1
|
|
#define L4_MUTEX_SUCCESS 0
|
|
|
|
/* Mutex states - Any valid tid value is a locked state */
|
|
#define L4_MUTEX_UNLOCKED -1
|
|
#define L4_MUTEX(m) \
|
|
struct l4_mutex m = { L4_MUTEX_UNLOCKED }
|
|
|
|
|
|
|
|
#endif /* __L4_MUTEX_H__ */
|