| UbixOS
    2.0
    | 
#include <vmm/vmm.h>#include <sys/types.h>#include <lib/kprintf.h>#include <sys/descrip.h>#include <ubixos/kpanic.h>#include <ubixos/spinlock.h>#include <ubixos/sched.h>
Go to the source code of this file.
| Macros | |
| #define | EINVAL 22 /* Invalid argument */ | 
| #define | MAP_ALIGNED(n) ((n) << MAP_ALIGNMENT_SHIFT) | 
| #define | MAP_ALIGNED_SUPER MAP_ALIGNED(1) /* align on a superpage */ | 
| #define | MAP_ALIGNMENT_MASK MAP_ALIGNED(0xff) | 
| #define | MAP_ALIGNMENT_SHIFT 24 | 
| #define | MAP_ANON 0x1000 /* allocated from memory, swap space */ | 
| #define | MAP_FILE 0x0000 /* map from file (default) */ | 
| #define | MAP_FIXED 0x0010 /* map addr must be exactly as requested */ | 
| #define | MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */ | 
| #define | MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */ | 
| #define | MAP_NOSYNC 0x0800 /* page to but do not sync underlying file */ | 
| #define | MAP_PRIVATE 0x0002 /* changes are private */ | 
| #define | MAP_RENAME 0x0020 /* Sun: rename private pages to file */ | 
| #define | MAP_RESERVED0080 0x0080 /* previously misimplemented MAP_INHERIT */ | 
| #define | MAP_RESERVED0100 0x0100 /* previously unimplemented MAP_NOEXTEND */ | 
| #define | MAP_SHARED 0x0001 /* share changes */ | 
| #define | MAP_STACK 0x0400 /* region grows down, like a stack */ | 
| #define | NBBY 8 /* number of bits in a byte */ | 
| #define | PROT_EXEC 0x04 /* pages can be executed */ | 
| #define | PROT_NONE 0x00 /* no permissions */ | 
| #define | PROT_READ 0x01 /* pages can be read */ | 
| #define | PROT_WRITE 0x02 /* pages can be written */ | 
| Typedefs | |
| typedef __uint32_t | __vm_size_t | 
| typedef __vm_size_t | vm_size_t | 
| Functions | |
| int | freebsd6_mmap (struct thread *td, struct freebsd6_mmap_args *uap) | 
| int | sys_mmap (struct thread *td, struct sys_mmap_args *uap) | 
| int | sys_munmap (struct thread *td, struct sys_munmap_args *uap) | 
| #define EINVAL 22 /* Invalid argument */ | 
Definition at line 40 of file vmm_mmap.c.
| #define MAP_ALIGNED | ( | n | ) | ((n) << MAP_ALIGNMENT_SHIFT) | 
Definition at line 41 of file vmm_mmap.c.
| #define MAP_ALIGNED_SUPER MAP_ALIGNED(1) /* align on a superpage */ | 
Definition at line 44 of file vmm_mmap.c.
| #define MAP_ALIGNMENT_MASK MAP_ALIGNED(0xff) | 
Definition at line 43 of file vmm_mmap.c.
| #define MAP_ALIGNMENT_SHIFT 24 | 
Definition at line 42 of file vmm_mmap.c.
| #define MAP_ANON 0x1000 /* allocated from memory, swap space */ | 
Definition at line 73 of file vmm_mmap.c.
| #define MAP_FILE 0x0000 /* map from file (default) */ | 
Definition at line 72 of file vmm_mmap.c.
| #define MAP_FIXED 0x0010 /* map addr must be exactly as requested */ | 
Definition at line 60 of file vmm_mmap.c.
| #define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */ | 
Definition at line 65 of file vmm_mmap.c.
| #define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */ | 
Definition at line 62 of file vmm_mmap.c.
| #define MAP_NOSYNC 0x0800 /* page to but do not sync underlying file */ | 
Definition at line 67 of file vmm_mmap.c.
| #define MAP_PRIVATE 0x0002 /* changes are private */ | 
Definition at line 59 of file vmm_mmap.c.
| #define MAP_RENAME 0x0020 /* Sun: rename private pages to file */ | 
Definition at line 61 of file vmm_mmap.c.
| #define MAP_RESERVED0080 0x0080 /* previously misimplemented MAP_INHERIT */ | 
Definition at line 63 of file vmm_mmap.c.
| #define MAP_RESERVED0100 0x0100 /* previously unimplemented MAP_NOEXTEND */ | 
Definition at line 64 of file vmm_mmap.c.
| #define MAP_SHARED 0x0001 /* share changes */ | 
Definition at line 58 of file vmm_mmap.c.
| #define MAP_STACK 0x0400 /* region grows down, like a stack */ | 
Definition at line 66 of file vmm_mmap.c.
| #define NBBY 8 /* number of bits in a byte */ | 
Definition at line 45 of file vmm_mmap.c.
| #define PROT_EXEC 0x04 /* pages can be executed */ | 
Definition at line 51 of file vmm_mmap.c.
| #define PROT_NONE 0x00 /* no permissions */ | 
Definition at line 48 of file vmm_mmap.c.
| #define PROT_READ 0x01 /* pages can be read */ | 
Definition at line 49 of file vmm_mmap.c.
| #define PROT_WRITE 0x02 /* pages can be written */ | 
Definition at line 50 of file vmm_mmap.c.
| typedef __uint32_t __vm_size_t | 
Definition at line 38 of file vmm_mmap.c.
| typedef __vm_size_t vm_size_t | 
Definition at line 39 of file vmm_mmap.c.
| int freebsd6_mmap | ( | struct thread * | td, | 
| struct freebsd6_mmap_args * | uap | ||
| ) | 
Definition at line 75 of file vmm_mmap.c.
References _current, freebsd6_mmap_args::addr, EINVAL, freebsd6_mmap_args::fd, freebsd6_mmap_args::flags, taskStruct::id, K_PANIC, kprintf(), freebsd6_mmap_args::len, MAP_ALIGNED_SUPER, MAP_ALIGNMENT_MASK, MAP_ALIGNMENT_SHIFT, MAP_ANON, MAP_FIXED, NBBY, freebsd6_mmap_args::pad, PAGE_DEFAULT, PAGE_MASK, PAGE_SHIFT, freebsd6_mmap_args::pos, freebsd6_mmap_args::prot, round_page, vmm_findFreePage(), and vmm_remapPage().

| int sys_mmap | ( | struct thread * | td, | 
| struct sys_mmap_args * | uap | ||
| ) | 
Definition at line 162 of file vmm_mmap.c.
References _current, sys_mmap_args::addr, bzero, file::fd, sys_mmap_args::fd, fread(), fseek(), getfd(), taskStruct::id, K_PANIC, kpanic(), sys_mmap_args::len, PAGE_DEFAULT, sys_mmap_args::pos, round_page, thread::td_retval, VM_TASK, vmm_findFreePage(), VMM_FREE, vmm_getFreeVirtualPage(), vmm_remapPage(), and vmm_unmapPage().

| int sys_munmap | ( | struct thread * | td, | 
| struct sys_munmap_args * | uap | ||
| ) | 
Definition at line 155 of file vmm_mmap.c.
References thread::td_retval.