paging.h File Reference

#include "routix/system.h"

Go to the source code of this file.

Classes

Defines

Typedefs

Functions

Variables


Define Documentation

#define ALINEAR_4 (  dir   )     (((long) dir) & 0xfffffffc)
 

Alinea una dirección a 4 bytes (cuidado, alinea hacia abajo).

Definition at line 84 of file paging.h.

Referenced by sys_execve().

#define DIR_SIZE   4096
 

Definition at line 10 of file paging.h.

#define GET_OFFSET (  dir   )     (((long) dir) & 0xfff)
 

Obtiene el "offset" de una dirección dentro de una página.

Definition at line 86 of file paging.h.

Referenced by sys_exec(), and sys_execve().

#define load_cr3 (  x   )     __asm__ ("movl %0, %%cr3" : : "r" (x) )
 

Definition at line 62 of file paging.h.

Referenced by init_MM().

 
#define page_off (   )     __asm__ ("mov %cr0, %eax; and $0x7fffffff, %eax; mov %eax, %cr0")
 

Definition at line 65 of file paging.h.

Referenced by init_MM().

 
#define page_on (   )     __asm__ ("mov %cr0, %eax; or $0x80000000, %eax; mov %eax, %cr0")
 

Definition at line 66 of file paging.h.

Referenced by init_MM().

#define PAGE_PRES   0x01
 

Definition at line 28 of file paging.h.

Referenced by inicializarInterrupciones(), init_all_memory(), init_MM_base(), kmapmem(), levantar_fat(), sys_fork(), and umalloc_page().

#define PAGE_RW   0X02
 

Atributos de Pagina.

Definition at line 27 of file paging.h.

Referenced by inicializarInterrupciones(), init_all_memory(), init_MM_base(), kmapmem(), levantar_fat(), sys_fork(), and umalloc_page().

#define PAGE_SUPER   1<<2
 

Definition at line 29 of file paging.h.

Referenced by init_all_memory(), init_MM_base(), kmapmem(), and levantar_fat().

#define PAGE_USER   1<<2
 

Definition at line 30 of file paging.h.

Referenced by sys_fork(), and umalloc_page().

#define PAGINA_SIZE   4096
 

Definition at line 12 of file paging.h.

#define PAGINAS_POR_TABLA   1024
 

Definition at line 14 of file paging.h.

Referenced by init_all_memory(), init_MM_base(), kmapmem(), and kunmapmem().

#define POSICION_DIR_PAGINAS   ( KERNEL_FSTACK_TOP - KERNEL_STACK_SIZE - DIR_SIZE)
 

Definition at line 16 of file paging.h.

Referenced by inicializarTss(), init_all_memory(), init_MM(), and init_MM_base().

#define POSICION_TABLA_1   ( POSICION_DIR_PAGINAS - DIR_SIZE)
 

Definition at line 17 of file paging.h.

Referenced by init_MM_base().

#define POSICION_TABLA_GDT   ( POSICION_TABLA_KSTACK - PAGINA_SIZE )
 

Definition at line 23 of file paging.h.

Referenced by init_MM_base().

#define POSICION_TABLA_KCODE   ( POSICION_TABLA_1 - TABLA_SIZE )
 

Definition at line 18 of file paging.h.

Referenced by init_MM_base().

#define POSICION_TABLA_KDATA   ( POSICION_TABLA_KCODE - TABLA_SIZE )
 

Definition at line 19 of file paging.h.

Referenced by init_MM_base().

#define POSICION_TABLA_KSTACK   ( POSICION_TABLA_KDATA - TABLA_SIZE )
 

Definition at line 20 of file paging.h.

Referenced by init_MM_base().

#define TABLA_SIZE   DIR_SIZE
 

Definition at line 11 of file paging.h.

#define TABLAS_POR_DIR   1024
 

Definition at line 13 of file paging.h.

Referenced by get_page_index().


Typedef Documentation

typedef struct page_index_t page_index_t
 

Estructura utilizada para indicar en que directorio y en que tabla se mapea una dirección lógica.

typedef struct pd_t pd_t
 

typedef dword pde_t
 

Page Directory entry.

Definition at line 39 of file paging.h.

Referenced by kmapmem(), and make_pde().

typedef struct pt_t pt_t
 

typedef dword pte_t
 

Page Table entry.

Definition at line 37 of file paging.h.

Referenced by kmapmem(), and make_pte().


Function Documentation

void* convertir_direccion (  void *  dir_logica,
addr_t  cr3
) 
 

Convierte una direccion logica respecto a cierto CR3 a una direccion de memoria fisica.

Definition at line 27 of file paging.c.

Referenced by exec_sigpending(), sys_exec(), sys_execve(), sys_gets(), sys_getvar(), sys_perror(), sys_print(), sys_setvar(), sys_sigaction(), sys_signal_check(), sys_sigprocmask(), sys_void(), and sys_waitpid().

void* copy_page (  void *  dest,
const void *  src
) 
 

Copia una página entera (optimizado para velocidad).

Copia una pagina completa, moviendo de a 4 bytes (movsl) una cantidad de PAGINA_SIZE / sizeof(dword) (1024 veces si PAGINA_SIZE=4096 y el dword es de 4 bytes

Definition at line 200 of file paging.c.

Referenced by kmain(), make_pdt(), and sys_fork().

int kmapmem (  addr_t  fisica,
addr_t  logica,
addr_t  directorio,
word  atributo
) 
 

Mapea una dirección física en una lógica.

Parameters:
fisica dirección de la pagina física (debe estar alineada a 4KB)
logica dirección lógica donde quiero tener la página anteriormente citada
directorio directorio de páginas en el cuál se desea mapear la dirección
atributo atributos de página
Returns:
0 en caso de exito y -1 en caso contrario

Definition at line 89 of file paging.c.

Referenced by levantar_fat(), sys_fork(), and umalloc_page().

int kunmapmem (  addr_t  logica,
addr_t  directorio
) 
 

"Desmapea" una dirección lógica Esta función se encarga de liberar la tabla de página si no posee entradas

Parameters:
logica dirección lógica de la página
directorio directorio de páginas donde se encuentra mapeada
Returns:
0 en caso de éxito, -1 en caso contrario

Definition at line 144 of file paging.c.

Referenced by sys_exit_mm().

pde_t make_pde (  addr_t  direccion,
word  atributos
) 
 

Crea una entrada de directorio (tanto para directorio como para tabla, ya que son iguales en IA32).

Definition at line 50 of file paging.c.

Referenced by inicializarInterrupciones(), init_all_memory(), init_MM_base(), and kmapmem().

void* make_pdt (  void   ) 
 

Genera un directorio de páginas para un proceso. Copia todo el mapeo del sistema contenido en el directorio del Kernel.

Definition at line 187 of file paging.c.

Referenced by init_new_task().

pte_t make_pte (  addr_t  direccion,
word  atributos
) 
 

Crea una entrada de Pagina (tanto para directorio como para tabla, ya que son iguales en IA32).

Definition at line 60 of file paging.c.

Referenced by inicializarInterrupciones(), init_all_memory(), init_MM_base(), and kmapmem().


Variable Documentation

page_index_t get_page_index(addr_t )
 

Devuelve los indices del Directorio y tabla de paginas para una direccion lógica.


Generated on Sun May 30 18:38:36 2004 for Routix OS by doxygen 1.3.6