TacOS  0.2
 Tout Structures de données Fichiers Fonctions Variables Définitions de type Énumérations Macros
Macros | Fonctions
Référence du fichier vmm.c
#include <memory.h>
#include <pagination.h>
#include <vmm.h>
#include <ksyscall.h>
#include <kstdio.h>
#include <scheduler.h>
Graphe des dépendances par inclusion de vmm.c:

Macros

#define PTE_MAGIC   0xFFC00000
 
#define PDE_MAGIC   0xFFFFF000
 

Fonctions

struct page_directory_entryget_pde (int dir)
 
struct page_table_entryget_pte (int dir, int table)
 
vaddr_t get_linear_address (int dir, int table, int offset)
 
int map (paddr_t phys_page_addr, vaddr_t virt_page_addr, int u_s)
 
void unmap (vaddr_t virt_page_addr)
 
void init_vmm (struct virtual_mem *kvm)
 
void init_process_vm (struct virtual_mem *vm, int init_nb_pages)
 
unsigned int allocate_new_page (struct virtual_mem *vm, void **alloc, int u_s)
 Allocation d'une nouvelle page. Plus de détails...
 
unsigned int allocate_new_pages (struct virtual_mem *vm, unsigned int nb_pages, void **alloc, int u_s)
 Alloue nb_pages pages qui sont placé en espace contigüe de la mémoire virtuelle. Plus de détails...
 
int unallocate_page (struct virtual_mem *vm, void *page)
 
void vmm_print_heap (struct virtual_mem *vm)
 
void sys_vmm (uint32_t min_size, void **alloc, size_t *real_alloc_size)
 
paddr_t vmm_get_page_paddr (vaddr_t vaddr)
 
unsigned int calculate_min_pages (size_t size)
 

Description détaillée

Auteur
TacOS developers

LICENSE

Copyright (C) 2010-2014 TacOS developers.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details at http://www.gnu.org/copyleft/gpl.html

You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/licenses.

DESCRIPTION

vmm est l'allocateur qui s'occupe de gérer les pages virtuelles du noyau. Il se base sur l'algorithme first fit (premier emplacement de taille suffisante)

Maintien la liste des espaces libres et des espaces occupés (slabs).

Documentation des fonctions

unsigned int allocate_new_page ( struct virtual_mem vm,
void **  alloc,
int  u_s 
)
Paramètres
vm
alloc
u_s1 si accessible en userspace, 0 sinon.
Renvoie

Voici le graphe d'appel pour cette fonction :

unsigned int allocate_new_pages ( struct virtual_mem vm,
unsigned int  nb_pages,
void **  alloc,
int  u_s 
)
Paramètres
vm
nb_pages
alloc
u_s1 si accessible en userspace, 0 sinon.
Renvoie

Voici le graphe des appelants de cette fonction :

void init_vmm ( struct virtual_mem kvm)

Initialisation de la VMM.

Paramètres
kvm

Voici le graphe d'appel pour cette fonction :

void sys_vmm ( uint32_t  min_size,
void **  alloc,
size_t real_alloc_size 
)

Syscall VMM pour allouer des pages.

Voici le graphe d'appel pour cette fonction :