TacOS
0.2
|
Gestion des pages mémoires physiques. Plus de détails...
#include <types.h>
Aller au code source de ce fichier.
Structures de données | |
struct | physical_page_descr |
Descripteur de page physique. Plus de détails... | |
Macros | |
#define | PAGE_SIZE 4096 |
#define | BIOS_RESERVED_BASE 0xa0000 |
#define | BIOS_RESERVED_TOP 0x100000 |
Fonctions | |
void | memory_print () |
Affiche la mémoire physique. Plus de détails... | |
void | memory_print_used_pages () |
Affiche la liste des cadres utilisés. Plus de détails... | |
void | memory_print_free_pages () |
Affiche la liste des cadres libres. Plus de détails... | |
void | memory_setup (size_t ram_size) |
Découpage de la mémoire physique en cadres de page. Plus de détails... | |
paddr_t | memory_reserve_page_frame () |
Réserve un cadre de page. Plus de détails... | |
int | memory_free_page_frame (paddr_t addr) |
Libère un cadre de page. Plus de détails... | |
struct physical_page_descr * | memory_get_first_used_page () |
Donne une copie du pointeur du premier descripteur de cadre de page utilisés. Plus de détails... | |
struct physical_page_descr * | memory_get_first_free_page () |
Donne une copie du pointeur du premier descripteur de cadre de page libres. Plus de détails... | |
bool | memory_has_next_page (struct physical_page_descr *iterator) |
Retourne vrai s'il y a encore un cadre de page qui suit. Plus de détails... | |
paddr_t | memory_next_page (struct physical_page_descr **iterator) |
Retourne le prochain cadre de page. Plus de détails... | |
paddr_t | memory_align_page_inf (paddr_t value) |
Adresse du cadre de page en arrondissant à l'inférieur. Plus de détails... | |
paddr_t | memory_align_page_sup (paddr_t value) |
Adresse du cadre de page en arrondissant au supérieur. Plus de détails... | |
paddr_t | memory_get_kernel_top () |
int | memory_get_used () |
int | memory_get_free () |
int | memory_get_total () |
Copyright (C) 2010, 2011, 2012 - 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.
Prend en argument une adresse physique et donne l'adresse du cadre correspondant en arrondissant à l'inférieur.
value | l'adresse physique à arrondir. |
Prend en argument une adresse physique et donne l'adresse du cadre correspondant en arrondissant au supérieur.
value | l'adresse physique à arrondir. |
int memory_free_page_frame | ( | paddr_t | addr | ) |
Libère un cadre de page occupé, le place dans la listes des cadres libres et retourne 0 en cas de succès.
addr | l'adresse physique du cadre à libérer. |
struct physical_page_descr* memory_get_first_free_page | ( | ) |
Donne une copie du pointeur du haut de la pile des descripteurs de cadre de page libres.
struct physical_page_descr* memory_get_first_used_page | ( | ) |
Donne une copie du pointeur du haut de la pile des descripteurs de cadre de page utilisés.
paddr_t memory_get_kernel_top | ( | ) |
@ Premier cadre de page libre au dessus du kernel
Premier cadre de page libre au dessus du kernel
bool memory_has_next_page | ( | struct physical_page_descr * | iterator | ) |
Retourne vrai s'il y a encore un cadre de page qui suit.
iterator | pointeur de descripteur de page. |
paddr_t memory_next_page | ( | struct physical_page_descr ** | iterator | ) |
Cette fonction sert à autoriser une itération sur les listes de cadres de page sans manipuler directement les pointeurs next et prev.
iterator | adresse d'un pointeur de descripteur de page. Sera modifiée pour pointer sur l'élément suivant. |
void memory_print | ( | ) |
Affiche la mémoire physique à l'aide de caractères F (libre) ou U (utilisée) pour chaque cadre de page.
void memory_print_free_pages | ( | ) |
Affiche la liste des cadres libres en donnant simplement la liste des adresses.
void memory_print_used_pages | ( | ) |
Affiche la liste des cadres utilisés en donnant simplement la liste des adresses.
paddr_t memory_reserve_page_frame | ( | ) |
Réserve un cadre de page libre, le place dans la liste des cadres utilisés et retourne l'adresse physique du cadre.
void memory_setup | ( | size_t | ram_size | ) |
Découpage de la mémoire physique en taille fixe. Pour l'instant il n'y a pas de mémoire virtuelle, c'est donc juste une association linéaire avec autant de pages que de cadres.
ram_size taille de la mémoire physique en octets.