aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/arch/proc.h2
-rw-r--r--include/arch/vmem.h5
-rw-r--r--include/kmi/initrd.h2
-rw-r--r--include/kmi/mem.h6
-rw-r--r--include/kmi/pmem.h2
-rw-r--r--include/kmi/proc.h2
-rw-r--r--include/kmi/tcb.h3
-rw-r--r--include/kmi/vmem.h2
8 files changed, 19 insertions, 5 deletions
diff --git a/include/arch/proc.h b/include/arch/proc.h
index 345f812..429f688 100644
--- a/include/arch/proc.h
+++ b/include/arch/proc.h
@@ -114,7 +114,7 @@ void adjust_syscall(struct tcb *t);
* @param fdt Pointer to FDT that is passed to \c init.
* @param initrd Pointer to initrd that is passed to \c init.
*/
-__noreturn void run_init(struct tcb *t, void *fdt, void *initrd);
+__noreturn void run_init(struct tcb *t, vm_t fdt, vm_t initrd);
/**
* Return to userspace fast.
diff --git a/include/arch/vmem.h b/include/arch/vmem.h
index 118e6ff..238b12a 100644
--- a/include/arch/vmem.h
+++ b/include/arch/vmem.h
@@ -140,6 +140,8 @@ struct vmem *init_vmem(void *fdt);
vm_t setup_kernel_io(struct vmem *b, vm_t paddr);
#endif
+struct vmem *direct_mapping();
+
/**
* Create new virtual memory space.
*
@@ -171,4 +173,7 @@ stat_t destroy_vmem(struct vmem *b);
*/
void clone_uvmem(struct vmem * restrict r, struct vmem * restrict b);
+__noreturn void to_kernelspace(void *fdt, uintptr_t load_addr,
+ struct vmem *direct_mapping, pm_t ram_base,
+ pm_t dmap);
#endif /* KMI_ARCH_PAGES_H */
diff --git a/include/kmi/initrd.h b/include/kmi/initrd.h
index 06bbaac..58fafd5 100644
--- a/include/kmi/initrd.h
+++ b/include/kmi/initrd.h
@@ -45,6 +45,8 @@ pm_t get_initrdtop(const void *fdt);
*/
pm_t get_initrdbase(const void *fdt);
+size_t get_initrdsize(const void *fdt);
+
/**
* Move \c init program to some other region in memory.
*
diff --git a/include/kmi/mem.h b/include/kmi/mem.h
index f43ee08..ec8d2ea 100644
--- a/include/kmi/mem.h
+++ b/include/kmi/mem.h
@@ -211,7 +211,7 @@ enum mm_order nearest_order(size_t size);
* @param page_shift Width in bits of base page size.
* \todo Should likely also be stat_t?
*/
-void init_mem(size_t max_order, size_t shifts[10], size_t page_shift);
+void init_mem(void *mem);
/**
* Set RAM base address for global access.
@@ -221,6 +221,8 @@ void init_mem(size_t max_order, size_t shifts[10], size_t page_shift);
*/
void set_ram_base(pm_t base);
+void set_ram_size(size_t size);
+
/**
* Get RAM base address.
* Very much assumes set_ram_base() has been called beforehand.
@@ -229,6 +231,8 @@ void set_ram_base(pm_t base);
*/
pm_t get_ram_base();
+size_t get_ram_size();
+
/** Base page size. */
#define BASE_PAGE_SIZE (order_size(BASE_PAGE))
diff --git a/include/kmi/pmem.h b/include/kmi/pmem.h
index 1917174..96a4447 100644
--- a/include/kmi/pmem.h
+++ b/include/kmi/pmem.h
@@ -68,6 +68,6 @@ size_t probe_pmap(pm_t ram_base, size_t ram_size, pm_t cont);
*
* @param fdt Global FDT pointer.
*/
-void init_pmem(void *fdt);
+void init_pmem(void *fdt, uintptr_t load_addr);
#endif /* KMI_PMEM_H */
diff --git a/include/kmi/proc.h b/include/kmi/proc.h
index c49be78..4b8807f 100644
--- a/include/kmi/proc.h
+++ b/include/kmi/proc.h
@@ -32,6 +32,6 @@ stat_t prepare_proc(struct tcb *t, vm_t bin, vm_t interp);
* @return \ref ERR_OOMEM when out of memory, \ref ERR_INVAL if loading \c init
* failed, \ref OK otherwise.
*/
-stat_t init_proc(void *fdt);
+stat_t init_proc(void *fdt, vm_t *proc_fdt, vm_t *proc_initrd);
#endif /* KMI_PROC_H */
diff --git a/include/kmi/tcb.h b/include/kmi/tcb.h
index df161b3..54f6e82 100644
--- a/include/kmi/tcb.h
+++ b/include/kmi/tcb.h
@@ -13,6 +13,7 @@
struct tcb;
#include <kmi/mem_regions.h>
+#include <kmi/orphanage.h>
#include <kmi/syscalls.h>
#include <kmi/atomic.h>
#include <kmi/queue.h>
@@ -26,7 +27,7 @@ struct tcb;
* @param t Thread to check.
* @return \c true if thread is process thread, \c false otherwise.
*/
-#define is_proc(t) (t->rid == t->tid)
+#define is_proc(t) ((t->rid == t->tid) && !orphan(t))
/**
* Check if thread is in RPC.
diff --git a/include/kmi/vmem.h b/include/kmi/vmem.h
index 63b931b..3205e00 100644
--- a/include/kmi/vmem.h
+++ b/include/kmi/vmem.h
@@ -131,6 +131,8 @@ stat_t init_uvmem(struct tcb *r, vm_t base, vm_t top);
*/
stat_t destroy_uvmem(struct tcb *r);
+vm_t map_fixed_mem(struct tcb *r, pm_t base, size_t size, vmflags_t flags);
+
/**
* Clone process memory.
*