3 * \brief Arch-generic system calls implementation.
7 * Copyright (c) 2007, 2008, 2009, 2010, 2012, ETH Zurich.
10 * This file is distributed under the terms in the attached LICENSE file.
11 * If you do not find this file, copies can be found by writing to:
12 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
15 #ifndef KERNEL_SYSCALL_H
16 #define KERNEL_SYSCALL_H
19 #include <barrelfish_kpi/cpu.h>
20 #include <barrelfish_kpi/dispatcher_shared_target.h>
21 #include <barrelfish_kpi/types.h>
22 #include <capabilities.h>
24 errval_t sys_print(const char *str, size_t length);
25 struct sysret sys_yield(capaddr_t target);
26 struct sysret sys_suspend(bool halt);
28 sys_dispatcher_setup(struct capability *to, capaddr_t cptr, int depth,
29 capaddr_t vptr, capaddr_t dptr, bool run, capaddr_t odptr);
31 sys_dispatcher_properties(struct capability *to,
32 enum task_type type, unsigned long deadline,
33 unsigned long wcet, unsigned long period,
34 unsigned long release, unsigned short weight);
36 sys_retype(struct capability *root, capaddr_t source_cptr, enum objtype type,
37 uint8_t objbits, capaddr_t dest_cnode_cptr, cslot_t dest_slot,
38 uint8_t dest_vbits, bool from_monitor);
40 sys_retype2(struct capability *root, capaddr_t source_cptr, gensize_t offset,
41 enum objtype type, gensize_t objsize, size_t count,
42 capaddr_t dest_cnode_cptr, cslot_t dest_slot,
43 uint8_t dest_vbits, bool from_monitor);
44 struct sysret sys_create(struct capability *root, enum objtype type,
45 uint8_t objbits, capaddr_t dest_cnode_cptr,
46 cslot_t dest_slot, int dest_vbits);
48 sys_map(struct capability *ptable, cslot_t slot, capaddr_t source_cptr,
49 int source_vbits, uintptr_t flags, uintptr_t offset,
50 uintptr_t pte_count, capaddr_t mapping_cnptr, int mapping_cnvbits,
51 cslot_t mapping_slot);
53 sys_copy_or_mint(struct capability *root, capaddr_t destcn_cptr, cslot_t dest_slot,
54 capaddr_t source_cptr, int destcn_vbits, int source_vbits,
55 uintptr_t param1, uintptr_t param2, bool mint);
56 struct sysret sys_delete(struct capability *root, capaddr_t cptr, uint8_t bits);
57 struct sysret sys_revoke(struct capability *root, capaddr_t cptr, uint8_t bits);
58 struct sysret sys_get_state(struct capability *root, capaddr_t cptr, uint8_t bits);
60 sys_dispatcher_setup_guest (struct capability *to,
61 capaddr_t epp, capaddr_t vnodep,
62 capaddr_t vmcbp, capaddr_t ctrlp);
63 struct sysret sys_trace_setup(struct capability *cap, capaddr_t cptr);
64 struct sysret sys_idcap_identify(struct capability *cap, idcap_id_t *id);
65 struct sysret sys_monitor_spawn_core(coreid_t core_id, enum cpu_type cpu_type,
68 struct sysret sys_kernel_add_kcb(struct kcb* new_kcb);
69 struct sysret sys_kernel_remove_kcb(struct kcb* kcb_addr);
70 struct sysret sys_kernel_suspend_kcb_sched(bool toggle);
71 struct sysret sys_handle_kcb_identify(struct capability* to, struct frame_identity *fi);
72 struct sysret sys_get_absolute_time(void);
78 struct sysret sys_monitor_register(capaddr_t ep_caddr);
79 struct sysret sys_monitor_domain_id(capaddr_t cptr, domainid_t domain_id);
80 struct sysret sys_monitor_remote_relations(capaddr_t root_addr, uint8_t root_bits,
81 capaddr_t cptr, uint8_t bits,
82 uint8_t relations, uint8_t mask);
83 struct sysret sys_monitor_identify_cap(struct capability *root,
84 capaddr_t cptr, uint8_t bits,
85 struct capability *retbuf);
86 struct sysret sys_monitor_nullify_cap(capaddr_t cptr, uint8_t bits);
87 struct sysret sys_get_cap_owner(capaddr_t root_addr, uint8_t root_bits,
88 capaddr_t cptr, uint8_t bits);
89 struct sysret sys_set_cap_owner(capaddr_t root_addr, uint8_t root_bits,
90 capaddr_t cptr, uint8_t bits, coreid_t owner);
91 struct sysret sys_cap_has_relations(capaddr_t caddr, uint8_t vbits, uint8_t mask);
92 struct sysret sys_lock_cap(capaddr_t root_addr, uint8_t root_bits,
93 capaddr_t cptr, uint8_t bits);
94 struct sysret sys_unlock_cap(capaddr_t root_addr, uint8_t root_bits,
95 capaddr_t cptr, uint8_t bits);
96 struct sysret sys_monitor_copy_existing(struct capability *src,
102 * Monitor syscalls for delete & revoke
105 struct sysret sys_monitor_delete_last(capaddr_t root_addr, uint8_t root_bits,
106 capaddr_t target_addr, uint8_t target_bits,
107 capaddr_t ret_cn_addr, uint8_t ret_cn_bits,
109 struct sysret sys_monitor_delete_foreigns(capaddr_t cptr, uint8_t bits);
110 struct sysret sys_monitor_revoke_mark_tgt(capaddr_t root_addr,
112 capaddr_t target_addr,
113 uint8_t target_bits);
114 struct sysret sys_monitor_revoke_mark_rels(struct capability *base);
115 struct sysret sys_monitor_delete_step(capaddr_t ret_cn_addr,
118 struct sysret sys_monitor_clear_step(capaddr_t ret_cn_addr,