Fixed most compiler errors. Need to do more.

This commit is contained in:
Bahadir Balban
2008-03-12 22:20:32 +00:00
parent 8447cd6ce3
commit cd79fa8f58
12 changed files with 615 additions and 569 deletions

View File

@@ -27,5 +27,8 @@ extern struct initdata initdata;
int request_initdata(struct initdata *i);
void initialise(void);
int init_devzero(void);
struct vm_file *get_devzero(void);
int init_boot_files(struct initdata *initdata);
#endif /* __MM_INIT_H__ */

View File

@@ -7,7 +7,7 @@
#define __MEMORY_H__
#include <vm_area.h>
#include <kdata.h>
#include <init.h>
struct membank {
unsigned long start;

View File

@@ -9,6 +9,17 @@
#include <task.h>
#include <vm_area.h>
/* POSIX-defined mmap flags */
#define PROT_READ 0x1
#define PROT_WRITE 0x2
#define PROT_EXEC 0x4
#define PROT_NONE 0x0
#define MAP_ANONYMOUS 0x20
#define MAP_FIXED 0x10
#define MAP_SHARED 0x01
#define MAP_PRIVATE 0x02
int do_munmap(void *vaddr, unsigned long size, struct tcb *task);
int do_mmap(struct vm_file *mapfile, unsigned long f_offset, struct tcb *t,

View File

@@ -19,8 +19,8 @@
#define TASK_FILES_MAX 32
/* POSIX minimum is 4Kb */
#define DEFAULT_ENV_SIZE SZ_16KB
#define DEFAULT_STACK_SIZE SZ_16KB
#define DEFAULT_ENV_SIZE SZ_16K
#define DEFAULT_STACK_SIZE SZ_16K
#define DEFAULT_UTCB_SIZE PAGE_SIZE

View File

@@ -31,15 +31,6 @@
#define VMA_COW (1 << 7)
#define VMA_FIXED (1 << 8)
/*
* A suggestion to how a non-page_array (i.e. a device)
* page could tell its physical address.
*/
struct devpage {
struct page page;
unsigned long phys;
};
struct page {
int refcnt; /* Refcount */
struct spinlock lock; /* Page lock. */
@@ -51,6 +42,15 @@ struct page {
};
extern struct page *page_array;
/*
* A suggestion to how a non-page_array (i.e. a device)
* page could tell its physical address.
*/
struct devpage {
struct page page;
unsigned long phys;
};
#define page_refcnt(x) ((x)->count + 1)
#define virtual(x) ((x)->virtual)
#define phys_to_page(x) (page_array + __pfn(x))
@@ -119,7 +119,6 @@ struct vm_object {
struct list_head list; /* List of all vm objects in memory */
struct vm_pager *pager; /* The pager for this object */
struct list_head page_cache;/* List of in-memory pages */
struct vm_object_ops ops; /* Operations on the object */
};
/* In memory representation of either a vfs file, a device. */
@@ -133,7 +132,7 @@ struct vm_file {
};
/* To create per-vma vm_object lists */
struct vma_obj_link {
struct vm_obj_link {
struct list_head list;
struct list_head shref; /* Ref to shadowers by original objects */
struct vm_object *obj;
@@ -176,18 +175,26 @@ static inline struct vm_area *find_vma(unsigned long addr,
/* Adds a page to its vm_objects's page cache in order of offset. */
int insert_page_olist(struct page *this, struct vm_object *vm_obj);
/* Find a page in page cache via page offset */
struct page *find_page(struct vm_object *obj, unsigned long pfn);
/* Pagers */
extern struct vm_pager file_pager;
extern struct vm_pager bootfile_pager;
extern struct vm_pager devzero_pager;
extern struct vm_pager swap_pager;
/* Pager initialisation, Special files */
/* vm object and vm file lists */
extern struct list_head vm_object_list;
extern struct list_head vm_file_list;
/* vm file and object initialisation */
struct vm_file *vm_file_alloc_init(void);
struct vm_object *vm_object_alloc_init(void);
struct vm_object *vm_object_create(void);
struct vm_file *vm_file_create(void);
int vm_object_delete(struct vm_object *vmo);
/* Main page fault entry point */
void page_fault_handler(l4id_t tid, fault_kdata_t *fkdata);