/[rtmk]/rtmk/vm-pager.h
ViewVC logotype

Diff of /rtmk/vm-pager.h

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

revision 1.2 by jrydberg, Mon Feb 25 18:30:39 2002 UTC revision 1.3 by jrydberg, Wed Mar 6 00:55:01 2002 UTC
# Line 41  struct vm_object; Line 41  struct vm_object;
41    
42  struct vm_pager  struct vm_pager
43  {  {
44    /* Request a page from VM object COOKIE, controled by PAGER.  OFFSET    /* Request data from pager (with cookie COOKIE) to memory object
45       is postion in object.  DESIRED_ACCESS is the access that we want       OBJECT.  Data is located at OFFSET in pager.  DESIRED_ACCESS is
46       for the page.  Page is returned in *PAGEP.  If *PAGEP is NULL, and       the access that we want for the page.  PAGE is the absent/busy
47       the fn does not return an error, we allocate a new page.  */       page that we want filled.  */
48    kern_return_t (*page_request) (struct vm_pager *pager, void *cookie,    kern_return_t (*page_request) (void *cookie, struct vm_object *object,
49                                   vm_offset_t offset, vm_prot_t desired_access,                                   vm_offset_t offset, vm_prot_t desired_access,
50                                   struct vm_page **pagep);                                   struct vm_page *page);
51  #define PAGER_PAGE_REQUEST(OBJECT, OFFSET, ACCESS, PAGEP) \  #define PAGER_PAGE_REQUEST(OBJECT, OFFSET, ACCESS, PAGE) \
52    (*(OBJECT)->pager_object->page_request) \    (*(OBJECT)->pager->page_request) \
53          ((OBJECT)->pager_object, (OBJECT)->pager_cookie, OFFSET, ACCESS, PAGEP)          ((OBJECT)->pager_cookie, OBJECT, OFFSET, ACCESS, PAGE)
   
   /* Flush PAGE into backingstore controled by COOKIN in PAGER.  */  
   kern_return_t (*page_flush) (struct vm_pager *pager, void *cookie,  
                                vm_offset_t offset, struct vm_page *page);  
   
   /* Create OBJECT beling to PAGER.  Function may set OBJET->PAGER_COOKIE.  */  
   kern_return_t (*create_object) (struct vm_pager *pager,  
                                   struct vm_object *object);  
54    
55    /* Initialize OBJECT.  OBJECT just have been map into an address space.  */    /* Initialize OBJECT.  OBJECT just have been map into an address space.  */
56    kern_return_t (*init_object) (struct vm_pager *pager,    kern_return_t (*init_object) (void *cookie,
57                                  struct vm_object *object);                                  struct vm_object *object);
58    #define PAGER_INIT_OBJECT(OBJECT) \
59    /* Cookie for this object - pager may assign whatever value.  */    (*(OBJECT)->pager->init_object) \
60    void *cookie;          ((OBJECT)->pager_cookie, OBJECT)
61    
62      /* Write back data to the pager.  
63    
64         OBJECT contains the data that should be initialized in the
65         pager.  OFFSET is offset into pager backing storage object.
66         SIZE is number of bytes we're writing.  DIRTY_P is true if
67         the page was dirty.  KERNEL_COPY_P is false if we flush page.  */
68      kern_return_t (*write_data) (void *cookie, struct vm_object *old_object,
69                                   vm_offset_t offset, struct vm_object *object,
70                                   vm_size_t size, int dirty_p, int kernel_copy_p);
71    
72    #define PAGER_WRITE_DATA(OBJECT, OFFSET, NEW_OBJECT, SIZE, D_P, KC_P) \
73      (*(OBJECT)->pager->write_data) \
74            ((OBJECT)->pager_cookie, OBJECT, OFFSET, NEW_OBJECT, SIZE, D_P, KC_P)
75    
76    #if 0
77      /* Initialize data for object in default pager.
78    
79         OBJECT contains the data that should be initialized in the
80         pager.  OFFSET is offset into pager backing storage object.
81         SIZE is number of bytes we're writing.  */
82      kern_return_t (*initialize_data) (void *cookie, vm_offset_t offset,
83                                        struct vm_object *object, vm_size_t size);
84    #define PAGER_INITIALIZE_DATA(OBJECT, OFFSET, SIZE, NEW_OBJECT) \
85      (*(OBJECT)->pager->init_object) \
86            ((OBJECT)->pager_cookie, OFFSET, NEW_OBJECT, SIZE)
87    #endif
88  };  };
89    
90  /* Pagers that the kernel provides.  */  /* Pagers that the kernel provides.  */
91  extern struct vm_pager pager_default;  extern struct vm_pager pager_default;
92  extern struct vm_pager pager_host;  extern struct vm_pager pager_host;
93    extern struct vm_pager pager_extern;
94    
95  /* Default pager.  */  /* Default pager.  */
96  extern struct vm_pager *default_pager;  extern struct vm_pager *default_pager;
97    
 /* Initialize host pager on OBJECT.  PHYS_ADDR is the physical address  
    that the object should map into memory.  */  
 extern kern_return_t host_pager_init_object (struct vm_object *object,  
                                              vm_offset_t phys_addr);  
   
98  #endif /* vm-pager.h */  #endif /* vm-pager.h */

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

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