| 1 |
2 |
drasko |
/*
|
| 2 |
|
|
* System call prototypes.
|
| 3 |
|
|
*
|
| 4 |
|
|
* Copyright (C) 2007 Bahadir Balban
|
| 5 |
|
|
*/
|
| 6 |
|
|
#ifndef __ARM_SYSCALLS_H__
|
| 7 |
|
|
#define __ARM_SYSCALLS_H__
|
| 8 |
|
|
|
| 9 |
|
|
|
| 10 |
|
|
#include L4LIB_INC_ARCH(types.h)
|
| 11 |
|
|
#include L4LIB_INC_ARCH(utcb.h)
|
| 12 |
|
|
#include <l4/generic/space.h>
|
| 13 |
|
|
#include <l4/api/space.h>
|
| 14 |
|
|
#include <l4/api/kip.h>
|
| 15 |
|
|
#include <l4/api/ipc.h>
|
| 16 |
|
|
#include <l4/api/thread.h>
|
| 17 |
|
|
|
| 18 |
|
|
struct task_ids {
|
| 19 |
|
|
l4id_t tid;
|
| 20 |
|
|
l4id_t spid;
|
| 21 |
|
|
l4id_t tgid;
|
| 22 |
|
|
};
|
| 23 |
|
|
|
| 24 |
|
|
static inline void *
|
| 25 |
|
|
l4_kernel_interface(unsigned int *api_version, unsigned int *api_flags,
|
| 26 |
|
|
unsigned int *kernel_id)
|
| 27 |
|
|
{
|
| 28 |
|
|
return (void *)L4_KIP_ADDRESS;
|
| 29 |
|
|
}
|
| 30 |
|
|
|
| 31 |
|
|
typedef unsigned int (*__l4_thread_switch_t)(u32);
|
| 32 |
|
|
extern __l4_thread_switch_t __l4_thread_switch;
|
| 33 |
|
|
unsigned int l4_thread_switch (u32 dest);
|
| 34 |
|
|
|
| 35 |
|
|
typedef int (*__l4_getid_t)(struct task_ids *ids);
|
| 36 |
|
|
extern __l4_getid_t __l4_getid;
|
| 37 |
|
|
int l4_getid(struct task_ids *ids);
|
| 38 |
|
|
|
| 39 |
|
|
typedef int (*__l4_ipc_t)(l4id_t to, l4id_t from, u32 flags);
|
| 40 |
|
|
extern __l4_ipc_t __l4_ipc;
|
| 41 |
|
|
int l4_ipc(l4id_t to, l4id_t from, u32 flags);
|
| 42 |
|
|
|
| 43 |
|
|
typedef int (*__l4_capability_control_t)(unsigned int req, unsigned int flags, void *buf);
|
| 44 |
|
|
extern __l4_capability_control_t __l4_capability_control;
|
| 45 |
|
|
int l4_capability_control(unsigned int req, unsigned int flags, void *buf);
|
| 46 |
|
|
|
| 47 |
|
|
typedef int (*__l4_map_t)(void *phys, void *virt,
|
| 48 |
|
|
u32 npages, u32 flags, l4id_t tid);
|
| 49 |
|
|
extern __l4_map_t __l4_map;
|
| 50 |
|
|
int l4_map(void *p, void *v, u32 npages, u32 flags, l4id_t tid);
|
| 51 |
|
|
|
| 52 |
|
|
typedef int (*__l4_unmap_t)(void *virt, unsigned long npages, l4id_t tid);
|
| 53 |
|
|
extern __l4_unmap_t __l4_unmap;
|
| 54 |
|
|
int l4_unmap(void *virtual, unsigned long numpages, l4id_t tid);
|
| 55 |
|
|
|
| 56 |
|
|
typedef int (*__l4_thread_control_t)(unsigned int action, struct task_ids *ids);
|
| 57 |
|
|
extern __l4_thread_control_t __l4_thread_control;
|
| 58 |
|
|
int l4_thread_control(unsigned int action, struct task_ids *ids);
|
| 59 |
|
|
|
| 60 |
|
|
typedef int (*__l4_irq_control_t)(unsigned int req, unsigned int flags, l4id_t id);
|
| 61 |
|
|
extern __l4_irq_control_t __l4_irq_control;
|
| 62 |
|
|
int l4_irq_control(unsigned int req, unsigned int flags, l4id_t id);
|
| 63 |
|
|
|
| 64 |
|
|
typedef int (*__l4_ipc_control_t)(unsigned int action, l4id_t blocked_sender,
|
| 65 |
|
|
u32 blocked_tag);
|
| 66 |
|
|
extern __l4_ipc_control_t __l4_ipc_control;
|
| 67 |
|
|
int l4_ipc_control(unsigned int, l4id_t blocked_sender, u32 blocked_tag);
|
| 68 |
|
|
|
| 69 |
|
|
typedef int (*__l4_exchange_registers_t)(void *exregs_struct, l4id_t tid);
|
| 70 |
|
|
extern __l4_exchange_registers_t __l4_exchange_registers;
|
| 71 |
|
|
int l4_exchange_registers(void *exregs_struct, l4id_t tid);
|
| 72 |
|
|
|
| 73 |
|
|
typedef int (*__l4_container_control_t)(unsigned int req, unsigned int flags, void *buf);
|
| 74 |
|
|
extern __l4_container_control_t __l4_container_control;
|
| 75 |
|
|
int l4_container_control(unsigned int req, unsigned int flags, void *buf);
|
| 76 |
|
|
|
| 77 |
|
|
typedef int (*__l4_time_t)(void *timeval, int set);
|
| 78 |
|
|
extern __l4_time_t __l4_time;
|
| 79 |
|
|
int l4_time(void *timeval, int set);
|
| 80 |
|
|
|
| 81 |
|
|
typedef int (*__l4_mutex_control_t)(void *mutex_word, int op);
|
| 82 |
|
|
extern __l4_mutex_control_t __l4_mutex_control;
|
| 83 |
|
|
int l4_mutex_control(void *mutex_word, int op);
|
| 84 |
|
|
|
| 85 |
|
|
typedef int (*__l4_cache_control_t)(void *start, void *end, unsigned int flags);
|
| 86 |
|
|
extern __l4_cache_control_t __l4_cache_control;
|
| 87 |
|
|
int l4_cache_control(void *start, void *end, unsigned int flags);
|
| 88 |
|
|
|
| 89 |
|
|
/* To be supplied by server tasks. */
|
| 90 |
|
|
void *virt_to_phys(void *);
|
| 91 |
|
|
void *phys_to_virt(void *);
|
| 92 |
|
|
|
| 93 |
|
|
|
| 94 |
|
|
#endif /* __ARM_SYSCALLS_H__ */
|
| 95 |
|
|
|