Added mutex_control syscall for userspace mutexes.

- 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.
This commit is contained in:
Bahadir Balban
2009-05-29 15:34:04 +03:00
parent ab9e036cb7
commit b11d4c4607
16 changed files with 433 additions and 14 deletions

View File

@@ -62,11 +62,11 @@ struct kip {
u32 thread_switch;
u32 schedule;
u32 getid;
u32 mutex_control;
u32 arch_syscall0;
u32 arch_syscall1;
u32 arch_syscall2;
u32 arch_syscall3;
u32 utcb;

14
include/l4/api/mutex.h Normal file
View File

@@ -0,0 +1,14 @@
#ifndef __MUTEX_CONTROL_H__
#define __MUTEX_CONTROL_H__
/* Request ids for mutex_control syscall */
#if defined (__KERNEL__)
#define MUTEX_CONTROL_LOCK L4_MUTEX_LOCK
#define MUTEX_CONTROL_UNLOCK L4_MUTEX_UNLOCK
#endif
#define L4_MUTEX_LOCK 0
#define L4_MUTEX_UNLOCK 1
#endif /* __MUTEX_CONTROL_H__*/

View File

@@ -23,7 +23,8 @@
#define sys_kread_offset 0x28
#define sys_kmem_control_offset 0x2C
#define sys_time_offset 0x30
#define syscalls_end_offset sys_time_offset
#define sys_mutex_control_offset 0x34
#define syscalls_end_offset sys_mutex_control_offset
#define SYSCALLS_TOTAL ((syscalls_end_offset >> 2) + 1)
void print_syscall_context(struct ktcb *t);
@@ -41,5 +42,6 @@ int sys_getid(struct syscall_context *);
int sys_kread(struct syscall_context *);
int sys_kmem_control(struct syscall_context *);
int sys_time(struct syscall_context *);
int sys_mutex_control(struct syscall_context *);
#endif /* __SYSCALL_H__ */