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  )     __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