Changeset fdaad75d in mainline
- Timestamp:
- 2010-06-22T02:18:35Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ee42e43
- Parents:
- 4ca26c9b
- Location:
- kernel
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/mm/as_pt.c
r4ca26c9b rfdaad75d 84 84 */ 85 85 86 ipl_t ipl = interrupts_disable();87 86 mutex_lock(&AS_KERNEL->lock); 88 87 … … 100 99 101 100 mutex_unlock(&AS_KERNEL->lock); 102 interrupts_restore(ipl);103 101 } 104 102 -
kernel/genarch/src/mm/page_ht.c
r4ca26c9b rfdaad75d 185 185 }; 186 186 187 ASSERT(interrupts_disabled());188 187 ASSERT(page_table_locked(as)); 189 188 … … 226 225 }; 227 226 228 ASSERT(interrupts_disabled());229 227 ASSERT(page_table_locked(as)); 230 228 … … 254 252 }; 255 253 256 ASSERT(interrupts_disabled());257 254 ASSERT(page_table_locked(as)); 258 255 -
kernel/genarch/src/mm/page_pt.c
r4ca26c9b rfdaad75d 72 72 pte_t *ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table); 73 73 74 ASSERT(interrupts_disabled());75 74 ASSERT(page_table_locked(as)); 76 75 … … 120 119 void pt_mapping_remove(as_t *as, uintptr_t page) 121 120 { 122 ASSERT(interrupts_disabled());123 121 ASSERT(page_table_locked(as)); 124 122 … … 251 249 pte_t *pt_mapping_find(as_t *as, uintptr_t page) 252 250 { 253 ASSERT(interrupts_disabled());254 251 ASSERT(page_table_locked(as)); 255 252 -
kernel/generic/src/mm/as.c
r4ca26c9b rfdaad75d 239 239 240 240 spinlock_unlock(&asidlock); 241 interrupts_restore(ipl); 242 241 243 242 244 /* … … 265 267 page_table_destroy(NULL); 266 268 #endif 267 268 interrupts_restore(ipl);269 269 270 270 slab_free(as_slab, as); … … 327 327 return NULL; 328 328 329 ipl_t ipl = interrupts_disable();330 329 mutex_lock(&as->lock); 331 330 332 331 if (!check_area_conflicts(as, base, size, NULL)) { 333 332 mutex_unlock(&as->lock); 334 interrupts_restore(ipl);335 333 return NULL; 336 334 } … … 357 355 358 356 mutex_unlock(&as->lock); 359 interrupts_restore(ipl);360 357 361 358 return area; … … 376 373 int as_area_resize(as_t *as, uintptr_t address, size_t size, unsigned int flags) 377 374 { 378 ipl_t ipl = interrupts_disable();379 375 mutex_lock(&as->lock); 380 376 … … 386 382 if (!area) { 387 383 mutex_unlock(&as->lock); 388 interrupts_restore(ipl);389 384 return ENOENT; 390 385 } … … 398 393 mutex_unlock(&area->lock); 399 394 mutex_unlock(&as->lock); 400 interrupts_restore(ipl);401 395 return ENOTSUP; 402 396 } … … 410 404 mutex_unlock(&area->lock); 411 405 mutex_unlock(&as->lock); 412 interrupts_restore(ipl);413 406 return ENOTSUP; 414 407 } … … 422 415 mutex_unlock(&area->lock); 423 416 mutex_unlock(&as->lock); 424 interrupts_restore(ipl);425 417 return EPERM; 426 418 } … … 549 541 mutex_unlock(&area->lock); 550 542 mutex_unlock(&as->lock); 551 interrupts_restore(ipl);552 543 return EADDRNOTAVAIL; 553 544 } … … 558 549 mutex_unlock(&area->lock); 559 550 mutex_unlock(&as->lock); 560 interrupts_restore(ipl);561 551 562 552 return 0; … … 573 563 int as_area_destroy(as_t *as, uintptr_t address) 574 564 { 575 ipl_t ipl = interrupts_disable();576 565 mutex_lock(&as->lock); 577 566 … … 579 568 if (!area) { 580 569 mutex_unlock(&as->lock); 581 interrupts_restore(ipl);582 570 return ENOENT; 583 571 } … … 659 647 660 648 mutex_unlock(&as->lock); 661 interrupts_restore(ipl);662 649 return 0; 663 650 } … … 690 677 as_t *dst_as, uintptr_t dst_base, unsigned int dst_flags_mask) 691 678 { 692 ipl_t ipl = interrupts_disable();693 679 mutex_lock(&src_as->lock); 694 680 as_area_t *src_area = find_area_and_lock(src_as, src_base); … … 699 685 */ 700 686 mutex_unlock(&src_as->lock); 701 interrupts_restore(ipl);702 687 return ENOENT; 703 688 } … … 711 696 mutex_unlock(&src_area->lock); 712 697 mutex_unlock(&src_as->lock); 713 interrupts_restore(ipl);714 698 return ENOTSUP; 715 699 } … … 728 712 mutex_unlock(&src_area->lock); 729 713 mutex_unlock(&src_as->lock); 730 interrupts_restore(ipl);731 714 return EPERM; 732 715 } … … 777 760 sh_info_remove_reference(sh_info); 778 761 779 interrupts_restore(ipl);780 762 return ENOMEM; 781 763 } … … 794 776 mutex_unlock(&dst_as->lock); 795 777 796 interrupts_restore(ipl);797 798 778 return 0; 799 779 } … … 816 796 }; 817 797 818 ASSERT(interrupts_disabled());819 798 ASSERT(mutex_locked(&area->lock)); 820 799 … … 844 823 unsigned int page_flags = area_flags_to_page_flags(flags); 845 824 846 ipl_t ipl = interrupts_disable();847 825 mutex_lock(&as->lock); 848 826 … … 850 828 if (!area) { 851 829 mutex_unlock(&as->lock); 852 interrupts_restore(ipl);853 830 return ENOENT; 854 831 } … … 859 836 mutex_unlock(&area->lock); 860 837 mutex_unlock(&as->lock); 861 interrupts_restore(ipl);862 838 return ENOTSUP; 863 839 } … … 978 954 mutex_unlock(&area->lock); 979 955 mutex_unlock(&as->lock); 980 interrupts_restore(ipl);981 956 982 957 return 0; … … 1219 1194 unsigned int as_area_get_flags(as_area_t *area) 1220 1195 { 1221 ASSERT(interrupts_disabled());1222 1196 ASSERT(mutex_locked(&area->lock)); 1223 1197 … … 1321 1295 as_area_t *find_area_and_lock(as_t *as, uintptr_t va) 1322 1296 { 1323 ASSERT(interrupts_disabled());1324 1297 ASSERT(mutex_locked(&as->lock)); 1325 1298 … … 1386 1359 as_area_t *avoid_area) 1387 1360 { 1388 ASSERT(interrupts_disabled());1389 1361 ASSERT(mutex_locked(&as->lock)); 1390 1362 … … 1486 1458 size_t size; 1487 1459 1488 ipl_t ipl = interrupts_disable();1489 1460 page_table_lock(AS, true); 1490 1461 as_area_t *src_area = find_area_and_lock(AS, base); … … 1497 1468 1498 1469 page_table_unlock(AS, true); 1499 interrupts_restore(ipl);1500 1470 return size; 1501 1471 } … … 2070 2040 void as_get_area_info(as_t *as, as_area_info_t **obuf, size_t *osize) 2071 2041 { 2072 ipl_t ipl = interrupts_disable();2073 2042 mutex_lock(&as->lock); 2074 2043 … … 2114 2083 2115 2084 mutex_unlock(&as->lock); 2116 interrupts_restore(ipl);2117 2085 2118 2086 *obuf = info; … … 2127 2095 void as_print(as_t *as) 2128 2096 { 2129 ipl_t ipl = interrupts_disable();2130 2097 mutex_lock(&as->lock); 2131 2098 … … 2150 2117 2151 2118 mutex_unlock(&as->lock); 2152 interrupts_restore(ipl);2153 2119 } 2154 2120 -
kernel/generic/src/mm/page.c
r4ca26c9b rfdaad75d 118 118 unsigned int flags) 119 119 { 120 ASSERT(interrupts_disabled());121 120 ASSERT(page_table_locked(as)); 122 121 … … 142 141 void page_mapping_remove(as_t *as, uintptr_t page) 143 142 { 144 ASSERT(interrupts_disabled());145 143 ASSERT(page_table_locked(as)); 146 144 … … 167 165 pte_t *page_mapping_find(as_t *as, uintptr_t page) 168 166 { 169 ASSERT(interrupts_disabled());170 167 ASSERT(page_table_locked(as)); 171 168 -
kernel/generic/src/mm/tlb.c
r4ca26c9b rfdaad75d 73 73 * to all other processors. 74 74 * 75 * This function must be called with interrupts disabled.76 *77 75 * @param type Type describing scope of shootdown. 78 76 * @param asid Address space, if required by type. … … 85 83 { 86 84 CPU->tlb_active = false; 87 irq_spinlock_lock(&tlblock, false);85 irq_spinlock_lock(&tlblock, true); 88 86 89 87 size_t i; … … 132 130 void tlb_shootdown_finalize(void) 133 131 { 134 irq_spinlock_unlock(&tlblock, false);132 irq_spinlock_unlock(&tlblock, true); 135 133 CPU->tlb_active = true; 136 134 } -
kernel/generic/src/synch/futex.c
r4ca26c9b rfdaad75d 113 113 uintptr_t paddr; 114 114 pte_t *t; 115 ipl_t ipl;116 115 int rc; 117 116 118 ipl = interrupts_disable();119 120 117 /* 121 118 * Find physical address of futex counter. … … 125 122 if (!t || !PTE_VALID(t) || !PTE_PRESENT(t)) { 126 123 page_table_unlock(AS, true); 127 interrupts_restore(ipl);128 124 return (unative_t) ENOENT; 129 125 } … … 131 127 page_table_unlock(AS, true); 132 128 133 interrupts_restore(ipl);134 135 129 futex = futex_find(paddr); 136 130
Note:
See TracChangeset
for help on using the changeset viewer.