diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index 207fcc1..bfaac99 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/sys/vmm/paging.c b/sys/vmm/paging.c
index a639704..e565c14 100644
--- a/sys/vmm/paging.c
+++ b/sys/vmm/paging.c
@@ -24,6 +24,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include
#include
#include
#include
@@ -518,54 +519,6 @@
return (0x0);
}
-int sys_mmap(struct thread *td, struct sys_mmap_args *uap) {
- vm_offset_t addr = 0x0;
- char *tmp = 0x0;
- struct file *fd = 0x0;
-
- addr = (vm_offset_t) uap->addr;
-
- /*
- #ifdef _VMM_DEBUG
- */
- if (uap->addr != 0x0) {
- kprintf("Address hints are not supported yet.\n");
- }
- kprintf("uap->flags: [0x%X]\n", uap->flags);
- kprintf("uap->addr: [0x%X]\n", uap->addr);
- kprintf("uap->len: [0x%X]\n", uap->len);
- kprintf("uap->prot: [0x%X]\n", uap->prot);
- kprintf("uap->fd: [%i]\n", uap->fd);
- kprintf("uap->pad: [0x%X]\n", uap->pad);
- kprintf("uap->pos: [0x%X]\n", uap->pos);
- /*
- #endif
- */
-
- if (uap->fd == -1) {
- //td->td_retval[0] = (int) vmm_getFreeVirtualPage( _current->id, uap->len / 0x1000, VM_TASK );
- //td->td_retval[0] = (int)
- td->td_retval[0] = vmm_getFreeVirtualPage(_current->id, round_page( uap->len ) / 0x1000, VM_THRD);
- return (0x0); //vmm_getFreeVirtualPage(_current->id, round_page( uap->len ) / 0x1000, VM_THRD));
- }
- else {
- kprintf("uap->flags: [0x%X]\n", uap->flags);
- kprintf("uap->addr: [0x%X]\n", uap->addr);
- kprintf("uap->len: [0x%X]\n", uap->len);
- kprintf("uap->prot: [0x%X]\n", uap->prot);
- kprintf("uap->fd: [%i]\n", uap->fd);
- kprintf("uap->pad: [0x%X]\n", uap->pad);
- kprintf("uap->pos: [0x%X]\n", uap->pos);
- //K_PANIC("NOT YET\n");
- getfd(td, &fd, uap->fd);
- tmp = (char *) vmm_getFreeVirtualPage(_current->id, uap->len / 0x1000, VM_TASK);
- fread(tmp, uap->len, 0x1, fd->fd);
-
- td->td_retval[0] = (int) tmp;
- }
- return (0x0);
-}
-
int obreak(struct thread *td, struct obreak_args *uap) {
uint32_t i = 0x0;
vm_offset_t old = 0x0;
diff --git a/sys/vmm/vmm_mmap.c b/sys/vmm/vmm_mmap.c
index 170c687..0f298c9 100644
--- a/sys/vmm/vmm_mmap.c
+++ b/sys/vmm/vmm_mmap.c
@@ -28,14 +28,15 @@
*****************************************************************************************/
#include
+#include
#include
#include
#include
#include
/* MrOlsen (2016-01-15) TEMP: Put These somewhere else */
-typedef __uint32_t __vm_size_t;
-typedef __vm_size_t vm_size_t;
+typedef __uint32_t __vm_size_t;
+typedef __vm_size_t vm_size_t;
#define EINVAL 22 /* Invalid argument */
#define MAP_ALIGNED(n) ((n) << MAP_ALIGNMENT_SHIFT)
#define MAP_ALIGNMENT_SHIFT 24
@@ -43,7 +44,6 @@
#define MAP_ALIGNED_SUPER MAP_ALIGNED(1) /* align on a superpage */
#define NBBY 8 /* number of bits in a byte */
-
/* PROTs */
#define PROT_NONE 0x00 /* no permissions */
#define PROT_READ 0x01 /* pages can be read */
@@ -72,7 +72,7 @@
#define MAP_FILE 0x0000 /* map from file (default) */
#define MAP_ANON 0x1000 /* allocated from memory, swap space */
-int freebsd6_mmap( struct thread *td, struct freebsd6_mmap_args *uap ) {
+int freebsd6_mmap(struct thread *td, struct freebsd6_mmap_args *uap) {
vm_size_t size, pageoff;
off_t pos;
int align, flags, error;
@@ -86,15 +86,15 @@
flags = uap->flags;
pos = uap->pos;
- kprintf( "uap->flags: [0x%X]\n", uap->flags );
- kprintf( "uap->addr: [0x%X]\n", uap->addr );
- kprintf( "uap->len: [0x%X]\n", uap->len );
- kprintf( "uap->prot: [0x%X]\n", uap->prot );
- kprintf( "uap->fd: [%i]\n", uap->fd );
- kprintf( "uap->pad: [0x%X]\n", uap->pad );
- kprintf( "uap->pos: [0x%X]\n", uap->pos );
+ kprintf("uap->flags: [0x%X]\n", uap->flags);
+ kprintf("uap->addr: [0x%X]\n", uap->addr);
+ kprintf("uap->len: [0x%X]\n", uap->len);
+ kprintf("uap->prot: [0x%X]\n", uap->prot);
+ kprintf("uap->fd: [%i]\n", uap->fd);
+ kprintf("uap->pad: [0x%X]\n", uap->pad);
+ kprintf("uap->pos: [0x%X]\n", uap->pos);
- if ( (uap->flags & MAP_ANON) != 0 )
+ if ((uap->flags & MAP_ANON) != 0)
pos = 0;
/*
@@ -107,26 +107,25 @@
/* Adjust size for rounding (on both ends). */
size += pageoff;
- size = (vm_size_t) round_page( size );
+ size = (vm_size_t) round_page(size);
/* Ensure alignment is at least a page and fits in a pointer. */
align = flags & MAP_ALIGNMENT_MASK;
- if ( align != 0 && align != MAP_ALIGNED_SUPER && (align >> MAP_ALIGNMENT_SHIFT >= sizeof(void *) * NBBY || align >> MAP_ALIGNMENT_SHIFT < PAGE_SHIFT) )
+ if (align != 0 && align != MAP_ALIGNED_SUPER && (align >> MAP_ALIGNMENT_SHIFT >= sizeof(void *) * NBBY || align >> MAP_ALIGNMENT_SHIFT < PAGE_SHIFT))
return (EINVAL);
- if ( flags & MAP_FIXED ) {
- kprintf( "FIXED NOT SUPPORTED YET" );
+ if (flags & MAP_FIXED) {
+ kprintf("FIXED NOT SUPPORTED YET");
return (EINVAL);
- }
- else {
+ } else {
/* At Some Point I Need To Proc Lock Incase It's Threaded */
-/* MrOlsen (2016-01-15) Temporary comment out
- if ( addr == 0 || (addr >= round_page( (vm_offset_t) vms->vm_taddr ) && addr < round_page( (vm_offset_t) vms->vm_daddr + lim_max( td->td_proc, RLIMIT_DATA ) )) )
- addr = round_page( (vm_offset_t) vms->vm_daddr + lim_max( td->td_proc, RLIMIT_DATA ) );
-*/
+ /* MrOlsen (2016-01-15) Temporary comment out
+ if ( addr == 0 || (addr >= round_page( (vm_offset_t) vms->vm_taddr ) && addr < round_page( (vm_offset_t) vms->vm_daddr + lim_max( td->td_proc, RLIMIT_DATA ) )) )
+ addr = round_page( (vm_offset_t) vms->vm_daddr + lim_max( td->td_proc, RLIMIT_DATA ) );
+ */
}
- if ( flags & MAP_ANON ) {
+ if (flags & MAP_ANON) {
/*
* Mapping blank space is trivial.
*/
@@ -137,21 +136,57 @@
maxprot = VM_PROT_ALL;
cap_maxprot = VM_PROT_ALL;
*/
- for ( i = addr; i < (addr + size); i += 0x1000 ) {
- if ( vmm_remapPage( vmm_findFreePage( _current->id ), i, PAGE_DEFAULT, _current->id ) == 0x0 )
- K_PANIC( "remap Failed" );
+ for (i = addr; i < (addr + size); i += 0x1000) {
+ if (vmm_remapPage(vmm_findFreePage(_current->id), i, PAGE_DEFAULT, _current->id) == 0x0)
+ K_PANIC("remap Failed");
}
- kprintf( "td->vm_dsize should be adjust but isn't" );
- }
- else {
+ kprintf("td->vm_dsize should be adjust but isn't");
+ } else {
/* Mapping File */
- kprintf( "File Mapping Not Supported Yet" );
+ kprintf("File Mapping Not Supported Yet");
return (EINVAL);
}
return (0x0);
}
+int sys_mmap(struct thread *td, struct sys_mmap_args *uap) {
+ vm_offset_t addr = 0x0;
+ char *tmp = 0x0;
+ struct file *fd = 0x0;
+
+ addr = (vm_offset_t) uap->addr;
+
+ if (uap->addr != 0x0) {
+ kprintf("Address hints are not supported yet.\n");
+ td->td_retval[0] = 0x0;
+ return(-1);
+ }
+
+ if (uap->fd == -1) {
+ //td->td_retval[0] = (int) vmm_getFreeVirtualPage( _current->id, uap->len / 0x1000, VM_TASK );
+ //td->td_retval[0] = (int)
+ td->td_retval[0] = vmm_getFreeVirtualPage(_current->id, round_page( uap->len ) / 0x1000, VM_THRD);
+ return (0x0); //vmm_getFreeVirtualPage(_current->id, round_page( uap->len ) / 0x1000, VM_THRD));
+ }
+ else {
+ kprintf("uap->flags: [0x%X]\n", uap->flags);
+ kprintf("uap->addr: [0x%X]\n", uap->addr);
+ kprintf("uap->len: [0x%X]\n", uap->len);
+ kprintf("uap->prot: [0x%X]\n", uap->prot);
+ kprintf("uap->fd: [%i]\n", uap->fd);
+ kprintf("uap->pad: [0x%X]\n", uap->pad);
+ kprintf("uap->pos: [0x%X]\n", uap->pos);
+ //K_PANIC("NOT YET\n");
+ getfd(td, &fd, uap->fd);
+ tmp = (char *) vmm_getFreeVirtualPage(_current->id, round_page(uap->len) / 0x1000, VM_TASK);
+ fread(tmp, uap->len, 0x1, fd->fd);
+
+ td->td_retval[0] = (int) tmp;
+ }
+ return (0x0);
+}
+
/***
END
***/