Changeset 7f1c620 in mainline for generic/src/mm/as.c
- Timestamp:
- 2006-07-04T17:17:56Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0ffa3ef5
- Parents:
- 991779c5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/src/mm/as.c
r991779c5 r7f1c620 98 98 99 99 static int area_flags_to_page_flags(int aflags); 100 static as_area_t *find_area_and_lock(as_t *as, __addressva);101 static bool check_area_conflicts(as_t *as, __addressva, size_t size, as_area_t *avoid_area);100 static as_area_t *find_area_and_lock(as_t *as, uintptr_t va); 101 static bool check_area_conflicts(as_t *as, uintptr_t va, size_t size, as_area_t *avoid_area); 102 102 static void sh_info_remove_reference(share_info_t *sh_info); 103 103 … … 200 200 * @return Address space area on success or NULL on failure. 201 201 */ 202 as_area_t *as_area_create(as_t *as, int flags, size_t size, __addressbase, int attrs,202 as_area_t *as_area_create(as_t *as, int flags, size_t size, uintptr_t base, int attrs, 203 203 mem_backend_t *backend, mem_backend_data_t *backend_data) 204 204 { … … 239 239 a->backend_data = *backend_data; 240 240 else 241 memsetb(( __address) &a->backend_data, sizeof(a->backend_data), 0);241 memsetb((uintptr_t) &a->backend_data, sizeof(a->backend_data), 0); 242 242 243 243 btree_create(&a->used_space); … … 260 260 * @return Zero on success or a value from @ref errno.h otherwise. 261 261 */ 262 int as_area_resize(as_t *as, __addressaddress, size_t size, int flags)262 int as_area_resize(as_t *as, uintptr_t address, size_t size, int flags) 263 263 { 264 264 as_area_t *area; … … 313 313 if (pages < area->pages) { 314 314 bool cond; 315 __addressstart_free = area->base + pages*PAGE_SIZE;315 uintptr_t start_free = area->base + pages*PAGE_SIZE; 316 316 317 317 /* … … 338 338 node = list_get_instance(area->used_space.leaf_head.prev, btree_node_t, leaf_link); 339 339 if ((cond = (bool) node->keys)) { 340 __addressb = node->key[node->keys - 1];340 uintptr_t b = node->key[node->keys - 1]; 341 341 count_t c = (count_t) node->value[node->keys - 1]; 342 342 int i = 0; … … 419 419 * @return Zero on success or a value from @ref errno.h on failure. 420 420 */ 421 int as_area_destroy(as_t *as, __addressaddress)421 int as_area_destroy(as_t *as, uintptr_t address) 422 422 { 423 423 as_area_t *area; 424 __addressbase;424 uintptr_t base; 425 425 link_t *cur; 426 426 ipl_t ipl; … … 452 452 node = list_get_instance(cur, btree_node_t, leaf_link); 453 453 for (i = 0; i < node->keys; i++) { 454 __addressb = node->key[i];454 uintptr_t b = node->key[i]; 455 455 count_t j; 456 456 pte_t *pte; … … 519 519 * to share non-anonymous address space area is detected. 520 520 */ 521 int as_area_share(as_t *src_as, __addresssrc_base, size_t acc_size,522 as_t *dst_as, __addressdst_base, int dst_flags_mask)521 int as_area_share(as_t *src_as, uintptr_t src_base, size_t acc_size, 522 as_t *dst_as, uintptr_t dst_base, int dst_flags_mask) 523 523 { 524 524 ipl_t ipl; … … 666 666 * fault was caused by copy_to_uspace() or copy_from_uspace(). 667 667 */ 668 int as_page_fault( __addresspage, pf_access_t access, istate_t *istate)668 int as_page_fault(uintptr_t page, pf_access_t access, istate_t *istate) 669 669 { 670 670 pte_t *pte; … … 745 745 if (THREAD->in_copy_from_uspace) { 746 746 THREAD->in_copy_from_uspace = false; 747 istate_set_retaddr(istate, ( __address) &memcpy_from_uspace_failover_address);747 istate_set_retaddr(istate, (uintptr_t) &memcpy_from_uspace_failover_address); 748 748 } else if (THREAD->in_copy_to_uspace) { 749 749 THREAD->in_copy_to_uspace = false; 750 istate_set_retaddr(istate, ( __address) &memcpy_to_uspace_failover_address);750 istate_set_retaddr(istate, (uintptr_t) &memcpy_to_uspace_failover_address); 751 751 } else { 752 752 return AS_PF_FAULT; … … 943 943 * @return Locked address space area containing va on success or NULL on failure. 944 944 */ 945 as_area_t *find_area_and_lock(as_t *as, __addressva)945 as_area_t *find_area_and_lock(as_t *as, uintptr_t va) 946 946 { 947 947 as_area_t *a; … … 999 999 * @return True if there is no conflict, false otherwise. 1000 1000 */ 1001 bool check_area_conflicts(as_t *as, __addressva, size_t size, as_area_t *avoid_area)1001 bool check_area_conflicts(as_t *as, uintptr_t va, size_t size, as_area_t *avoid_area) 1002 1002 { 1003 1003 as_area_t *a; … … 1072 1072 1073 1073 /** Return size of the address space area with given base. */ 1074 size_t as_get_size( __addressbase)1074 size_t as_get_size(uintptr_t base) 1075 1075 { 1076 1076 ipl_t ipl; … … 1100 1100 * @return 0 on failure and 1 on success. 1101 1101 */ 1102 int used_space_insert(as_area_t *a, __addresspage, count_t count)1102 int used_space_insert(as_area_t *a, uintptr_t page, count_t count) 1103 1103 { 1104 1104 btree_node_t *leaf, *node; … … 1124 1124 node = btree_leaf_node_left_neighbour(&a->used_space, leaf); 1125 1125 if (node) { 1126 __addressleft_pg = node->key[node->keys - 1], right_pg = leaf->key[0];1126 uintptr_t left_pg = node->key[node->keys - 1], right_pg = leaf->key[0]; 1127 1127 count_t left_cnt = (count_t) node->value[node->keys - 1], right_cnt = (count_t) leaf->value[0]; 1128 1128 … … 1167 1167 } 1168 1168 } else if (page < leaf->key[0]) { 1169 __addressright_pg = leaf->key[0];1169 uintptr_t right_pg = leaf->key[0]; 1170 1170 count_t right_cnt = (count_t) leaf->value[0]; 1171 1171 … … 1198 1198 node = btree_leaf_node_right_neighbour(&a->used_space, leaf); 1199 1199 if (node) { 1200 __addressleft_pg = leaf->key[leaf->keys - 1], right_pg = node->key[0];1200 uintptr_t left_pg = leaf->key[leaf->keys - 1], right_pg = node->key[0]; 1201 1201 count_t left_cnt = (count_t) leaf->value[leaf->keys - 1], right_cnt = (count_t) node->value[0]; 1202 1202 … … 1241 1241 } 1242 1242 } else if (page >= leaf->key[leaf->keys - 1]) { 1243 __addressleft_pg = leaf->key[leaf->keys - 1];1243 uintptr_t left_pg = leaf->key[leaf->keys - 1]; 1244 1244 count_t left_cnt = (count_t) leaf->value[leaf->keys - 1]; 1245 1245 … … 1273 1273 for (i = 1; i < leaf->keys; i++) { 1274 1274 if (page < leaf->key[i]) { 1275 __addressleft_pg = leaf->key[i - 1], right_pg = leaf->key[i];1275 uintptr_t left_pg = leaf->key[i - 1], right_pg = leaf->key[i]; 1276 1276 count_t left_cnt = (count_t) leaf->value[i - 1], right_cnt = (count_t) leaf->value[i]; 1277 1277 … … 1327 1327 * @return 0 on failure and 1 on success. 1328 1328 */ 1329 int used_space_remove(as_area_t *a, __addresspage, count_t count)1329 int used_space_remove(as_area_t *a, uintptr_t page, count_t count) 1330 1330 { 1331 1331 btree_node_t *leaf, *node; … … 1364 1364 node = btree_leaf_node_left_neighbour(&a->used_space, leaf); 1365 1365 if (node && page < leaf->key[0]) { 1366 __addressleft_pg = node->key[node->keys - 1];1366 uintptr_t left_pg = node->key[node->keys - 1]; 1367 1367 count_t left_cnt = (count_t) node->value[node->keys - 1]; 1368 1368 … … 1397 1397 1398 1398 if (page > leaf->key[leaf->keys - 1]) { 1399 __addressleft_pg = leaf->key[leaf->keys - 1];1399 uintptr_t left_pg = leaf->key[leaf->keys - 1]; 1400 1400 count_t left_cnt = (count_t) leaf->value[leaf->keys - 1]; 1401 1401 … … 1433 1433 for (i = 1; i < leaf->keys - 1; i++) { 1434 1434 if (page < leaf->key[i]) { 1435 __addressleft_pg = leaf->key[i - 1];1435 uintptr_t left_pg = leaf->key[i - 1]; 1436 1436 count_t left_cnt = (count_t) leaf->value[i - 1]; 1437 1437 … … 1497 1497 node = list_get_instance(cur, btree_node_t, leaf_link); 1498 1498 for (i = 0; i < node->keys; i++) 1499 frame_free(( __address) node->value[i]);1499 frame_free((uintptr_t) node->value[i]); 1500 1500 } 1501 1501 … … 1514 1514 1515 1515 /** Wrapper for as_area_create(). */ 1516 __native sys_as_area_create(__addressaddress, size_t size, int flags)1516 unative_t sys_as_area_create(uintptr_t address, size_t size, int flags) 1517 1517 { 1518 1518 if (as_area_create(AS, flags | AS_AREA_CACHEABLE, size, address, AS_AREA_ATTR_NONE, &anon_backend, NULL)) 1519 return ( __native) address;1519 return (unative_t) address; 1520 1520 else 1521 return ( __native) -1;1521 return (unative_t) -1; 1522 1522 } 1523 1523 1524 1524 /** Wrapper for as_area_resize. */ 1525 __native sys_as_area_resize(__addressaddress, size_t size, int flags)1526 { 1527 return ( __native) as_area_resize(AS, address, size, 0);1525 unative_t sys_as_area_resize(uintptr_t address, size_t size, int flags) 1526 { 1527 return (unative_t) as_area_resize(AS, address, size, 0); 1528 1528 } 1529 1529 1530 1530 /** Wrapper for as_area_destroy. */ 1531 __native sys_as_area_destroy(__addressaddress)1532 { 1533 return ( __native) as_area_destroy(AS, address);1531 unative_t sys_as_area_destroy(uintptr_t address) 1532 { 1533 return (unative_t) as_area_destroy(AS, address); 1534 1534 } 1535 1535
Note:
See TracChangeset
for help on using the changeset viewer.