/[rtmk]/rtmk/pager-extern.c
ViewVC logotype

Diff of /rtmk/pager-extern.c

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

revision 1.1 by jrydberg, Wed Mar 6 00:55:01 2002 UTC revision 1.2 by jrydberg, Wed Mar 27 00:13:45 2002 UTC
# Line 25  Foundation, Inc., 59 Temple Place - Suit Line 25  Foundation, Inc., 59 Temple Place - Suit
25  #include "ipc-port.h"  #include "ipc-port.h"
26  #include "thread.h"  #include "thread.h"
27    
28  /* memory-pager-init: establish new mapping of PAGER */  #include "memory-object-proto.h"
 extern void memory_pager_init (struct ipc_port *pager,  
                                struct ipc_port *pager_req);  
   
 /* memory-pager-data-request: request data from PAGER */  
 extern void memory_pager_data_request (struct ipc_port *pager,  
                                        struct ipc_port *pager_req,  
                                        vm_offset_t offset, vm_size_t size,  
                                        vm_prot_t access);  
   
 /* memory-pager-data-request: request data from PAGER */  
 extern void memory_pager_write_data (struct ipc_port *pager,  
                                      struct ipc_port *pager_req,  
                                      vm_offset_t offset,  
                                      vm_offset_t data_ptr,  
                                      vm_size_t size,  
                                      int dirty_p, int kernel_copy_p);  
29    
30  /* Someone is requesting page at OFFSET in object COOKIE, from our PAGER. */  /* Someone is requesting page at OFFSET in object COOKIE, from our PAGER. */
31  static kern_return_t  static kern_return_t
# Line 51  extern_pager_request (void *cookie, stru Line 35  extern_pager_request (void *cookie, stru
35  {  {
36    struct ipc_port *pager = cookie;    struct ipc_port *pager = cookie;
37    
38    memory_pager_data_request (pager, object->pager_request, offset,    memory_object_data_request (pager, object->pager_request, offset,
39                               VM_PAGE_SIZE, desired_access);                                VM_PAGE_SIZE, desired_access);
40    return KERN_SUCCESS;    return KERN_SUCCESS;
41  }  }
42    
# Line 62  extern_pager_init_object (void *cookie, Line 46  extern_pager_init_object (void *cookie,
46  {  {
47    struct ipc_port *pager = cookie;    struct ipc_port *pager = cookie;
48    
49    memory_pager_init (pager, object->pager_request);    memory_object_init (pager, object->pager_request);
50    
51    return KERN_SUCCESS;    return KERN_SUCCESS;
52  }  }
# Line 79  extern_pager_write_data (void *cookie, s Line 63  extern_pager_write_data (void *cookie, s
63    if (! copy)    if (! copy)
64      return KERN_RESOURCE_SHORTAGE;      return KERN_RESOURCE_SHORTAGE;
65    
66    memory_pager_write_data (pager, old_object->pager_request, offset,    memory_object_write_data (pager, old_object->pager_request, offset,
67                             (vm_offset_t) copy, size, dirty_p,                              (void *) copy, size, dirty_p,
68                             kernel_copy_p);                              kernel_copy_p);
69    return KERN_SUCCESS;    return KERN_SUCCESS;
70  }  }
71    
# Line 138  memory_object_data_supply (struct ipc_po Line 122  memory_object_data_supply (struct ipc_po
122              {              {
123                /* Page was requested.  Free the busy page waiting                /* Page was requested.  Free the busy page waiting
124                   for it.  Insertion of new page happens below.  */                   for it.  Insertion of new page happens below.  */
125                vm_page_free (m);                /* vm_page_free (m); */
126                absent_p = 1;                absent_p = 1;
127              }              }
128            else            else
# Line 153  memory_object_data_supply (struct ipc_po Line 137  memory_object_data_supply (struct ipc_po
137                    vm_object_lock (object);                    vm_object_lock (object);
138                    goto retry_lookup;                    goto retry_lookup;
139                  }                  }
   
 #if 0  
               /* Page already present; error.  
                  This is an error if data is precious.  */  
               result = KERN_MEMORY_PRESENT;  
               error_offset = offset + object->paging_offset;  
   
               break;  
 #endif  
140              }              }
141          }          }
142        else        else
# Line 181  memory_object_data_supply (struct ipc_po Line 156  memory_object_data_supply (struct ipc_po
156    
157        /* pmap_clear_modify(data_m->phys_addr); */        /* pmap_clear_modify(data_m->phys_addr); */
158    
159  #if 0        if (m)
160        data_m->unlock_request = VM_PROT_NONE;          vm_page_remove (m);
 #endif  
   
161        vm_page_insert (data_m, object, offset);        vm_page_insert (data_m, object, offset);
162    
163        if (absent_p)        if (absent_p)
164          vm_page_activate (data_m);          vm_page_activate (data_m);
165        else        else
166          vm_page_deactivate (data_m);          vm_page_deactivate (data_m);
167          if (m)
168            vm_page_free (m);
169    
170        pagelist->pages [i] = 0;        pagelist->pages [i] = 0;
171      }      }

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

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