Removed some unused page functions
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 23 Sep 2010 21:51:23 +0000 (14:51 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:54 +0000 (17:35 -0700)
Also gutted the unmaintained shared page syscall.  It will need a
rewrite given the latest kernel functions, whenever we get around to
needing it.

kern/include/page_alloc.h
kern/include/pmap.h
kern/src/page_alloc.c
kern/src/pmap.c
kern/src/syscall.c

index 74b1ee5..a947e88 100644 (file)
@@ -63,7 +63,6 @@ void free_cont_pages(void *buf, size_t order);
 
 void page_incref(page_t *SAFE page);
 void page_decref(page_t *SAFE page);
-size_t page_getref(page_t *SAFE page);
 void page_setref(page_t *SAFE page, size_t val);
 
 int page_is_free(size_t ppn);
index a36189c..3fa652b 100644 (file)
@@ -66,8 +66,6 @@ void  vm_init(void);
 void   page_init(void);
 void   page_check(void);
 int        page_insert(pde_t *pgdir, struct page *page, void *SNT va, int perm);
-void*COUNT(PGSIZE) page_insert_in_range(pde_t *COUNT(NPDENTRIES) pgdir, page_t *pp, 
-                             void *SNT vab, void *SNT vae, int perm);
 void   page_remove(pde_t *COUNT(NPDENTRIES) pgdir, void *SNT va);
 page_t*COUNT(1) page_lookup(pde_t SSOMELOCK*COUNT(NPDENTRIES) pgdir, void *SNT va, pte_t **pte_store);
 error_t        pagetable_remove(pde_t *COUNT(NPDENTRIES) pgdir, void *SNT va);
index 3f59e1a..68c1303 100644 (file)
@@ -328,14 +328,6 @@ void page_setref(page_t *page, size_t val)
        kref_init(&page->pg_kref, page_release, val); 
 }
 
-/*
- * Get the reference count on a page
- */
-size_t page_getref(page_t *page)
-{
-       return kref_refcnt(&page->pg_kref);
-}
-
 /* Attempts to get a lock on the page for IO operations.  If it is already
  * locked, it will block the thread until it is unlocked. */
 void lock_page(struct page *page)
index 139116b..fdebcc7 100644 (file)
@@ -120,52 +120,6 @@ int page_insert(pde_t *pgdir, struct page *page, void *va, int perm)
 }
 
 /**
- * DEPRECATED - this conflicts with VM regions.
- *
- * @brief Map the physical page 'pp' at the first virtual address that is free 
- * in the range 'vab' to 'vae' in page directory 'pgdir'.
- *
- * The permissions (the low 12 bits) of the page table entry get set to 
- * 'perm|PTE_P'.
- *
- * Details:
- *   - If there is no free entry in the range 'vab' to 'vae' this 
- *     function returns NULL.
- *   - If necessary, on demand, this function will allocate a page table 
- *     and inserts it into 'pgdir'.
- *   - page_incref() will be called if the insertion succeeds.
- * 
- * @param[in] pgdir the page directory to insert the page into
- * @param[in] pp    a pointr to the page struct representing the
- *                  physical page that should be inserted.
- * @param[in] vab   the first virtual address in the range in which the 
- *                  page can be inserted.
- * @param[in] vae   the last virtual address in the range in which the 
- *                  page can be inserted.
- * @param[in] perm  the permition bits with which to set up the 
- *                  virtual mapping.
- *
- * @return VA   the virtual address where pp has been mapped in the 
- *              range (vab, vae)
- * @return NULL no free va in the range (vab, vae) could be found
- */
-void* page_insert_in_range(pde_t *pgdir, page_t *pp, 
-                           void *vab, void *vae, int perm) 
-{
-       pte_t* pte = NULL;
-       void*SNT new_va;
-       
-       for(new_va = vab; new_va <= vae; new_va+= PGSIZE) {
-               pte = pgdir_walk(pgdir, new_va, 1);
-               if(pte != NULL && PAGE_UNMAPPED(*pte)) break;
-               else pte = NULL;
-       }
-       if (!pte) return NULL;
-       *pte = page2pa(pp) | PTE_P | perm;
-       return TC(new_va); // trusted because mapping a page is like allocation
-}
-
-/**
  * @brief Return the page mapped at virtual address 'va' in 
  * page directory 'pgdir'.
  *
index 28dbfb9..37ee3c8 100644 (file)
@@ -524,43 +524,8 @@ static ssize_t sys_shared_page_alloc(env_t* p1,
                                      int p1_flags, int p2_flags
                                     )
 {
-       /* When we remove/change this, also get rid of page_insert_in_range() */
-       printk("[kernel] the current shared page alloc is deprecated.\n");
-       //if (!VALID_USER_PERMS(p1_flags)) return -EPERM;
-       //if (!VALID_USER_PERMS(p2_flags)) return -EPERM;
-
-       void * COUNT(1) * COUNT(1) addr = user_mem_assert(p1, _addr, sizeof(void *),
-                                                      PTE_USER_RW);
-       struct proc *p2 = pid2proc(p2_id);
-       if (!p2)
-               return -EBADPROC;
-
-       page_t* page;
-       error_t e = upage_alloc(p1, &page,1);
-       if (e < 0) {
-               kref_put(&p2->kref);
-               return e;
-       }
-
-       void* p2_addr = page_insert_in_range(p2->env_pgdir, page,
-                       (void*SNT)UTEXT, (void*SNT)UTOP, p2_flags);
-       if (p2_addr == NULL) {
-               page_free(page);
-               kref_put(&p2->kref);
-               return -EFAIL;
-       }
-
-       void* p1_addr = page_insert_in_range(p1->env_pgdir, page,
-                       (void*SNT)UTEXT, (void*SNT)UTOP, p1_flags);
-       if(p1_addr == NULL) {
-               page_remove(p2->env_pgdir, p2_addr);
-               page_free(page);
-               kref_put(&p2->kref);
-               return -EFAIL;
-       }
-       *addr = p1_addr;
-       kref_put(&p2->kref);
-       return ESUCCESS;
+       printk("[kernel] shared page alloc is deprecated/unimplemented.\n");
+       return -1;
 }
 
 static int sys_shared_page_free(env_t* p1, void*DANGEROUS addr, pid_t p2)