Changes in kernel/generic/src/mm/backend_phys.c [59fb782:83b6ba9f] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/backend_phys.c
r59fb782 r83b6ba9f 55 55 static bool phys_is_shareable(as_area_t *); 56 56 57 static int phys_page_fault(as_area_t *, uintptr_t, pf_access_t); 57 58 58 static int phys_page_fault(as_area_t *, uintptr_t, pf_access_t); 59 static bool phys_create_shared_data(as_area_t *); 60 static void phys_destroy_shared_data(void *); 61 62 typedef struct { 63 uintptr_t base; 64 size_t frames; 65 } phys_shared_data_t; 59 66 60 67 mem_backend_t phys_backend = { … … 69 76 .page_fault = phys_page_fault, 70 77 .frame_free = NULL, 78 79 .create_shared_data = phys_create_shared_data, 80 .destroy_shared_data = phys_destroy_shared_data 71 81 }; 82 72 83 73 84 bool phys_create(as_area_t *area) … … 92 103 void phys_destroy(as_area_t *area) 93 104 { 94 /* Nothing to do. */ 105 /* 106 * Nothing to do. 107 * The anonymous frames, if any, are released in 108 * phys_destroy_shared_data(). 109 */ 95 110 } 96 111 … … 138 153 } 139 154 155 bool phys_create_shared_data(as_area_t *area) 156 { 157 /* 158 * For anonymous phys areas, create the shared data. 159 */ 160 if (area->backend_data.anonymous) { 161 phys_shared_data_t *data; 162 163 data = (phys_shared_data_t *) malloc(sizeof(*data), 0); 164 165 data->base = area->backend_data.base; 166 data->frames = area->backend_data.frames; 167 area->sh_info->backend_shared_data = data; 168 } 169 170 return true; 171 } 172 173 void phys_destroy_shared_data(void *opaque_data) 174 { 175 phys_shared_data_t *data = (phys_shared_data_t *) opaque_data; 176 177 if (data) { 178 frame_free(data->base, data->frames); 179 free(data); 180 } 181 } 182 140 183 /** @} 141 184 */
Note:
See TracChangeset
for help on using the changeset viewer.