TacOS  0.2
 Tout Structures de données Fichiers Fonctions Variables Définitions de type Énumérations Macros
Structures de données | Macros | Fonctions
Référence du fichier memory.h

Gestion des pages mémoires physiques. Plus de détails...

#include <types.h>
Graphe des dépendances par inclusion de memory.h:
Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier :

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_descrmemory_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_descrmemory_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 ()
 

Description détaillée

Auteur
TacOS developers

LICENSE

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.

DESCRIPTION

Documentation des fonctions

paddr_t memory_align_page_inf ( paddr_t  value)

Prend en argument une adresse physique et donne l'adresse du cadre correspondant en arrondissant à l'inférieur.

Paramètres
valuel'adresse physique à arrondir.
Renvoie
l'adresse physique arrondie.

Voici le graphe des appelants de cette fonction :

paddr_t memory_align_page_sup ( paddr_t  value)

Prend en argument une adresse physique et donne l'adresse du cadre correspondant en arrondissant au supérieur.

Paramètres
valuel'adresse physique à arrondir.
Renvoie
l'adresse physique arrondie.

Voici le graphe des appelants de cette fonction :

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.

Paramètres
addrl'adresse physique du cadre à libérer.
Renvoie
0 en cas de succès. Une autre valeur sinon.
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.

Renvoie
pointeur sur le premier descripteur de cadre de page libre.
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.

Renvoie
pointeur sur le premier descripteur de cadre de page utilisé.

Voici le graphe des appelants de cette fonction :

paddr_t memory_get_kernel_top ( )

@ Premier cadre de page libre au dessus du kernel

Premier cadre de page libre au dessus du kernel

Renvoie
l'adresse de la page.

Voici le graphe des appelants de cette fonction :

bool memory_has_next_page ( struct physical_page_descr iterator)

Retourne vrai s'il y a encore un cadre de page qui suit.

Paramètres
iteratorpointeur de descripteur de page.
Renvoie
vrai s'il y a encore un cadre de page qui suit.

Voici le graphe des appelants de cette fonction :

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.

Paramètres
iteratoradresse d'un pointeur de descripteur de page. Sera modifiée pour pointer sur l'élément suivant.
Renvoie
l'adresse physique du cadre de page.

Voici le graphe des appelants de cette fonction :

void memory_print ( )

Affiche la mémoire physique à l'aide de caractères F (libre) ou U (utilisée) pour chaque cadre de page.

Voici le graphe d'appel pour cette fonction :

void memory_print_free_pages ( )

Affiche la liste des cadres libres en donnant simplement la liste des adresses.

Voici le graphe d'appel pour cette fonction :

void memory_print_used_pages ( )

Affiche la liste des cadres utilisés en donnant simplement la liste des adresses.

Voici le graphe d'appel pour cette fonction :

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.

Renvoie
l'adresse physique du cadre réservé. 0 en cas d'erreur.

Voici le graphe des appelants de cette fonction :

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.

Voici le graphe d'appel pour cette fonction :