Rename addrspace to process.
[pintos-anon] / src / threads / mmu.h
index 304053bfdaba9ccd5721e19f929d9380e9358beb..4d4aa6ac3ced70add98f368abdf0ce6a6c26e1b3 100644 (file)
 #define PDMASK          MASK(PDSHIFT, PDBITS)
 
 /* Offset within a page. */
-static inline unsigned pg_ofs (void *va) { return (uintptr_t) va & PGMASK; }
+static inline unsigned pg_ofs (const void *va) {
+  return (uintptr_t) va & PGMASK;
+}
 
 /* Virtual page number. */
-static inline uintptr_t pg_no (void *va) { return (uintptr_t) va >> PTSHIFT; }
+static inline uintptr_t pg_no (const void *va) {
+  return (uintptr_t) va >> PTSHIFT;
+}
 
 /* Round up to nearest page boundary. */
-static inline void *pg_round_up (void *va) {
+static inline void *pg_round_up (const void *va) {
   return (void *) (((uintptr_t) va + PGSIZE - 1) & ~PGMASK);
 }
 
 /* Round down to nearest page boundary. */
-static inline void *pg_round_down (void *va) {
+static inline void *pg_round_down (const void *va) {
   return (void *) ((uintptr_t) va & ~PGMASK);
 }
 
+/* Base address of the 1:1 physical-to-virtual mapping.  Physical
+   memory is mapped starting at this virtual address.  Thus,
+   physical address 0 is accessible at PHYS_BASE, physical
+   address address 0x1234 at (uint8_t *) PHYS_BASE + 0x1234, and
+   so on.
+
+   This address also marks the end of user programs' address
+   space.  Up to this point in memory, user programs are allowed
+   to map whatever they like.  At this point and above, the
+   virtual address space belongs to the kernel. */
 #define        PHYS_BASE ((void *) LOADER_PHYS_BASE)
 
 /* Returns kernel virtual address at which physical address PADDR
@@ -104,7 +118,7 @@ ptov (uintptr_t paddr)
 /* Returns physical address at which kernel virtual address VADDR
    is mapped. */
 static inline uintptr_t
-vtop (void *vaddr)
+vtop (const void *vaddr)
 {
   ASSERT (vaddr >= PHYS_BASE);
 
@@ -136,7 +150,9 @@ vtop (void *vaddr)
 #define PG_D 0x40              /* 1=dirty, 0=not dirty (PTEs only). */
 
 /* Obtains page directory index from a virtual address. */
-static inline uintptr_t pd_no (void *va) { return (uintptr_t) va >> PDSHIFT; }
+static inline uintptr_t pd_no (const void *va) {
+  return (uintptr_t) va >> PDSHIFT;
+}
 
 /* Returns a PDE that points to page table PT. */
 static inline uint32_t pde_create (uint32_t *pt) {