/[rtmk]/rtmk/vm-page.c
ViewVC logotype

Diff of /rtmk/vm-page.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.1.1 by jrydberg, Fri Dec 7 02:05:46 2001 UTC revision 1.2 by jrydberg, Fri Dec 7 21:32:10 2001 UTC
# Line 104  vm_page_resident_pages_init (vm_offset_t Line 104  vm_page_resident_pages_init (vm_offset_t
104    
105        for (pa = ps->avail_start; pa < ps->avail_end; )        for (pa = ps->avail_start; pa < ps->avail_end; )
106          {          {
107              assert (pa != 0);
108    
109            pages [resident_pages++].phys_addr = pa;            pages [resident_pages++].phys_addr = pa;
110            pa += VM_PAGE_SIZE;            pa += VM_PAGE_SIZE;
111          }          }
# Line 184  vm_page_release (struct vm_page *page) Line 186  vm_page_release (struct vm_page *page)
186  {  {
187    /* ??? is this the correct macro?  */    /* ??? is this the correct macro?  */
188    page_free_count++;    page_free_count++;
189    enqueue_tail (&page_free_list, &page->pageq);    queue_enter (&page_free_list, page, struct vm_page *, listq);
190  }  }
191    
192  /* Allocate a new page from the free list.  This may start the  /* Allocate a new page from the free list.  This may start the
# Line 193  vm_page_release (struct vm_page *page) Line 195  vm_page_release (struct vm_page *page)
195  struct vm_page *  struct vm_page *
196  vm_page_allocate (void)  vm_page_allocate (void)
197  {  {
198    if (queue_empty (&page_free_list))    struct vm_page *page;
199    
200      if (queue_empty (& page_free_list))
201      return 0;      return 0;
202    
203      queue_remove_last (& page_free_list, page, struct vm_page *, listq);
204    page_free_count--;    page_free_count--;
   return (struct vm_page *) dequeue_head (&page_free_list);  
 }  
205    
206      return page;
207    }
208    
209  /* Grab a physical page.  The physical page address is returned.  */  /* Grab a physical page.  The physical page address is returned.  */
210    
211  void *  void *
212  vm_page_grab_physical (void)  vm_page_grab_physical (void)
213  {  {
214      struct vm_page *page;
215    
216    if (queue_empty (&page_free_list))    if (queue_empty (&page_free_list))
217      return 0;      return 0;
218    return (void *) ((struct vm_page *) dequeue (&page_free_list))->phys_addr;  
219      queue_remove_last (& page_free_list, page, struct vm_page *, listq);
220      page_free_count--;
221    
222      return (void *) page->phys_addr;
223  }  }
224    
225  /* Copy page SRC_PAGE to DST_PAGE.  */  /* Copy page SRC_PAGE to DST_PAGE.  */

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26