Changeset 8df5f20 in mainline for kernel/generic/src/mm
- Timestamp:
- 2019-02-11T14:56:26Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4805495
- Parents:
- 391996b
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-02-01 23:26:21)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2019-02-11 14:56:26)
- Location:
- kernel/generic/src/mm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/as.c
r391996b r8df5f20 127 127 static void used_space_shorten_ival(used_space_ival_t *, size_t); 128 128 129 NO_TRACE static errno_t as_constructor(void *obj, unsigned int flags)129 _NO_TRACE static errno_t as_constructor(void *obj, unsigned int flags) 130 130 { 131 131 as_t *as = (as_t *) obj; … … 137 137 } 138 138 139 NO_TRACE static size_t as_destructor(void *obj)139 _NO_TRACE static size_t as_destructor(void *obj) 140 140 { 141 141 return as_destructor_arch((as_t *) obj); … … 281 281 * 282 282 */ 283 NO_TRACE void as_hold(as_t *as)283 _NO_TRACE void as_hold(as_t *as) 284 284 { 285 285 refcount_up(&as->refcount); … … 294 294 * 295 295 */ 296 NO_TRACE void as_release(as_t *as)296 _NO_TRACE void as_release(as_t *as) 297 297 { 298 298 if (refcount_down(&as->refcount)) … … 340 340 * @return True if the two areas conflict, false otherwise. 341 341 */ 342 NO_TRACE static bool area_is_conflicting(uintptr_t addr,342 _NO_TRACE static bool area_is_conflicting(uintptr_t addr, 343 343 size_t count, bool guarded, as_area_t *area) 344 344 { … … 380 380 * 381 381 */ 382 NO_TRACE static bool check_area_conflicts(as_t *as, uintptr_t addr,382 _NO_TRACE static bool check_area_conflicts(as_t *as, uintptr_t addr, 383 383 size_t count, bool guarded, as_area_t *avoid) 384 384 { … … 474 474 * 475 475 */ 476 NO_TRACE static uintptr_t as_get_unmapped_area(as_t *as, uintptr_t bound,476 _NO_TRACE static uintptr_t as_get_unmapped_area(as_t *as, uintptr_t bound, 477 477 size_t size, bool guarded) 478 478 { … … 580 580 * @param pagemap Pagemap 581 581 */ 582 NO_TRACE void as_pagemap_initialize(as_pagemap_t *pagemap)582 _NO_TRACE void as_pagemap_initialize(as_pagemap_t *pagemap) 583 583 { 584 584 odict_initialize(&pagemap->map, as_pagemap_getkey, as_pagemap_cmp); … … 591 591 * @param pagemap Pagemap 592 592 */ 593 NO_TRACE void as_pagemap_finalize(as_pagemap_t *pagemap)593 _NO_TRACE void as_pagemap_finalize(as_pagemap_t *pagemap) 594 594 { 595 595 as_page_mapping_t *mapping = as_pagemap_first(pagemap); … … 606 606 * @return First mapping or @c NULL if there is none 607 607 */ 608 NO_TRACE as_page_mapping_t *as_pagemap_first(as_pagemap_t *pagemap)608 _NO_TRACE as_page_mapping_t *as_pagemap_first(as_pagemap_t *pagemap) 609 609 { 610 610 odlink_t *odlink; … … 622 622 * @return Next mapping or @c NULL if @a cur is the last one 623 623 */ 624 NO_TRACE as_page_mapping_t *as_pagemap_next(as_page_mapping_t *cur)624 _NO_TRACE as_page_mapping_t *as_pagemap_next(as_page_mapping_t *cur) 625 625 { 626 626 odlink_t *odlink; … … 640 640 * @return EOK on succcess or ENOENT if no mapping found 641 641 */ 642 NO_TRACE errno_t as_pagemap_find(as_pagemap_t *pagemap, uintptr_t vaddr,642 _NO_TRACE errno_t as_pagemap_find(as_pagemap_t *pagemap, uintptr_t vaddr, 643 643 uintptr_t *rframe) 644 644 { … … 663 663 * @param frame Physical frame address 664 664 */ 665 NO_TRACE void as_pagemap_insert(as_pagemap_t *pagemap, uintptr_t vaddr,665 _NO_TRACE void as_pagemap_insert(as_pagemap_t *pagemap, uintptr_t vaddr, 666 666 uintptr_t frame) 667 667 { … … 680 680 * @param mapping Mapping 681 681 */ 682 NO_TRACE void as_pagemap_remove(as_page_mapping_t *mapping)682 _NO_TRACE void as_pagemap_remove(as_page_mapping_t *mapping) 683 683 { 684 684 odict_remove(&mapping->lpagemap); … … 693 693 * 694 694 */ 695 NO_TRACE static void sh_info_remove_reference(share_info_t *sh_info)695 _NO_TRACE static void sh_info_remove_reference(share_info_t *sh_info) 696 696 { 697 697 bool dealloc = false; … … 861 861 * 862 862 */ 863 NO_TRACE static as_area_t *find_area_and_lock(as_t *as, uintptr_t va)863 _NO_TRACE static as_area_t *find_area_and_lock(as_t *as, uintptr_t va) 864 864 { 865 865 assert(mutex_locked(&as->lock)); … … 1305 1305 * 1306 1306 */ 1307 NO_TRACE bool as_area_check_access(as_area_t *area, pf_access_t access)1307 _NO_TRACE bool as_area_check_access(as_area_t *area, pf_access_t access) 1308 1308 { 1309 1309 assert(mutex_locked(&area->lock)); … … 1328 1328 * 1329 1329 */ 1330 NO_TRACE static unsigned int area_flags_to_page_flags(unsigned int aflags)1330 _NO_TRACE static unsigned int area_flags_to_page_flags(unsigned int aflags) 1331 1331 { 1332 1332 unsigned int flags = PAGE_USER | PAGE_PRESENT; … … 1698 1698 * 1699 1699 */ 1700 NO_TRACE unsigned int as_area_get_flags(as_area_t *area)1700 _NO_TRACE unsigned int as_area_get_flags(as_area_t *area) 1701 1701 { 1702 1702 assert(mutex_locked(&area->lock)); … … 1746 1746 * 1747 1747 */ 1748 NO_TRACE pte_t *page_table_create(unsigned int flags)1748 _NO_TRACE pte_t *page_table_create(unsigned int flags) 1749 1749 { 1750 1750 assert(as_operations); … … 1761 1761 * 1762 1762 */ 1763 NO_TRACE void page_table_destroy(pte_t *page_table)1763 _NO_TRACE void page_table_destroy(pte_t *page_table) 1764 1764 { 1765 1765 assert(as_operations); … … 1782 1782 * 1783 1783 */ 1784 NO_TRACE void page_table_lock(as_t *as, bool lock)1784 _NO_TRACE void page_table_lock(as_t *as, bool lock) 1785 1785 { 1786 1786 assert(as_operations); … … 1796 1796 * 1797 1797 */ 1798 NO_TRACE void page_table_unlock(as_t *as, bool unlock)1798 _NO_TRACE void page_table_unlock(as_t *as, bool unlock) 1799 1799 { 1800 1800 assert(as_operations); … … 1811 1811 * are locked, otherwise false. 1812 1812 */ 1813 NO_TRACE bool page_table_locked(as_t *as)1813 _NO_TRACE bool page_table_locked(as_t *as) 1814 1814 { 1815 1815 assert(as_operations); -
kernel/generic/src/mm/frame.c
r391996b r8df5f20 79 79 * 80 80 */ 81 NO_TRACE static void frame_initialize(frame_t *frame)81 _NO_TRACE static void frame_initialize(frame_t *frame) 82 82 { 83 83 frame->refcount = 0; … … 100 100 * 101 101 */ 102 NO_TRACE static size_t zones_insert_zone(pfn_t base, size_t count,102 _NO_TRACE static size_t zones_insert_zone(pfn_t base, size_t count, 103 103 zone_flags_t flags) 104 104 { … … 156 156 * 157 157 */ 158 NO_TRACE static size_t frame_total_free_get_internal(void)158 _NO_TRACE static size_t frame_total_free_get_internal(void) 159 159 { 160 160 size_t total = 0; … … 167 167 } 168 168 169 NO_TRACE size_t frame_total_free_get(void)169 _NO_TRACE size_t frame_total_free_get(void) 170 170 { 171 171 size_t total; … … 190 190 * 191 191 */ 192 NO_TRACE size_t find_zone(pfn_t frame, size_t count, size_t hint)192 _NO_TRACE size_t find_zone(pfn_t frame, size_t count, size_t hint) 193 193 { 194 194 if (hint >= zones.count) … … 211 211 212 212 /** @return True if zone can allocate specified number of frames */ 213 NO_TRACE static bool zone_can_alloc(zone_t *zone, size_t count,213 _NO_TRACE static bool zone_can_alloc(zone_t *zone, size_t count, 214 214 pfn_t constraint) 215 215 { … … 239 239 * 240 240 */ 241 NO_TRACE static size_t find_free_zone_all(size_t count, zone_flags_t flags,241 _NO_TRACE static size_t find_free_zone_all(size_t count, zone_flags_t flags, 242 242 pfn_t constraint, size_t hint) 243 243 { … … 265 265 * 266 266 */ 267 NO_TRACE static bool is_high_priority(pfn_t base, size_t count)267 _NO_TRACE static bool is_high_priority(pfn_t base, size_t count) 268 268 { 269 269 return (base + count <= FRAME_LOWPRIO); … … 285 285 * 286 286 */ 287 NO_TRACE static size_t find_free_zone_lowprio(size_t count, zone_flags_t flags,287 _NO_TRACE static size_t find_free_zone_lowprio(size_t count, zone_flags_t flags, 288 288 pfn_t constraint, size_t hint) 289 289 { … … 322 322 * 323 323 */ 324 NO_TRACE static size_t find_free_zone(size_t count, zone_flags_t flags,324 _NO_TRACE static size_t find_free_zone(size_t count, zone_flags_t flags, 325 325 pfn_t constraint, size_t hint) 326 326 { … … 346 346 347 347 /** Return frame from zone. */ 348 NO_TRACE static frame_t *zone_get_frame(zone_t *zone, size_t index)348 _NO_TRACE static frame_t *zone_get_frame(zone_t *zone, size_t index) 349 349 { 350 350 assert(index < zone->count); … … 366 366 * 367 367 */ 368 NO_TRACE static size_t zone_frame_alloc(zone_t *zone, size_t count,368 _NO_TRACE static size_t zone_frame_alloc(zone_t *zone, size_t count, 369 369 pfn_t constraint) 370 370 { … … 405 405 * 406 406 */ 407 NO_TRACE static size_t zone_frame_free(zone_t *zone, size_t index)407 _NO_TRACE static size_t zone_frame_free(zone_t *zone, size_t index) 408 408 { 409 409 assert(zone->flags & ZONE_AVAILABLE); … … 427 427 428 428 /** Mark frame in zone unavailable to allocation. */ 429 NO_TRACE static void zone_mark_unavailable(zone_t *zone, size_t index)429 _NO_TRACE static void zone_mark_unavailable(zone_t *zone, size_t index) 430 430 { 431 431 assert(zone->flags & ZONE_AVAILABLE); … … 453 453 * 454 454 */ 455 NO_TRACE static void zone_merge_internal(size_t z1, size_t z2, zone_t *old_z1,455 _NO_TRACE static void zone_merge_internal(size_t z1, size_t z2, zone_t *old_z1, 456 456 void *confdata) 457 457 { … … 507 507 * 508 508 */ 509 NO_TRACE static void return_config_frames(size_t znum, pfn_t pfn, size_t count)509 _NO_TRACE static void return_config_frames(size_t znum, pfn_t pfn, size_t count) 510 510 { 511 511 assert(zones.info[znum].flags & ZONE_AVAILABLE); … … 623 623 * 624 624 */ 625 NO_TRACE static void zone_construct(zone_t *zone, pfn_t start, size_t count,625 _NO_TRACE static void zone_construct(zone_t *zone, pfn_t start, size_t count, 626 626 zone_flags_t flags, void *confdata) 627 627 { … … 1037 1037 * 1038 1038 */ 1039 NO_TRACE void frame_reference_add(pfn_t pfn)1039 _NO_TRACE void frame_reference_add(pfn_t pfn) 1040 1040 { 1041 1041 irq_spinlock_lock(&zones.lock, true); … … 1056 1056 * 1057 1057 */ 1058 NO_TRACE void frame_mark_unavailable(pfn_t start, size_t count)1058 _NO_TRACE void frame_mark_unavailable(pfn_t start, size_t count) 1059 1059 { 1060 1060 irq_spinlock_lock(&zones.lock, true); -
kernel/generic/src/mm/page.c
r391996b r8df5f20 95 95 * 96 96 */ 97 NO_TRACE void page_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame,97 _NO_TRACE void page_mapping_insert(as_t *as, uintptr_t page, uintptr_t frame, 98 98 unsigned int flags) 99 99 { … … 120 120 * 121 121 */ 122 NO_TRACE void page_mapping_remove(as_t *as, uintptr_t page)122 _NO_TRACE void page_mapping_remove(as_t *as, uintptr_t page) 123 123 { 124 124 assert(page_table_locked(as)); … … 144 144 * the PTE is not guaranteed to be present. 145 145 */ 146 NO_TRACE bool page_mapping_find(as_t *as, uintptr_t page, bool nolock,146 _NO_TRACE bool page_mapping_find(as_t *as, uintptr_t page, bool nolock, 147 147 pte_t *pte) 148 148 { … … 165 165 * @param pte New PTE. 166 166 */ 167 NO_TRACE void page_mapping_update(as_t *as, uintptr_t page, bool nolock,167 _NO_TRACE void page_mapping_update(as_t *as, uintptr_t page, bool nolock, 168 168 pte_t *pte) 169 169 { -
kernel/generic/src/mm/slab.c
r391996b r8df5f20 158 158 * 159 159 */ 160 NO_TRACE static slab_t *slab_space_alloc(slab_cache_t *cache,160 _NO_TRACE static slab_t *slab_space_alloc(slab_cache_t *cache, 161 161 unsigned int flags) 162 162 { … … 206 206 * 207 207 */ 208 NO_TRACE static size_t slab_space_free(slab_cache_t *cache, slab_t *slab)208 _NO_TRACE static size_t slab_space_free(slab_cache_t *cache, slab_t *slab) 209 209 { 210 210 frame_free(KA2PA(slab->start), slab->cache->frames); … … 218 218 219 219 /** Map object to slab structure */ 220 NO_TRACE static slab_t *obj2slab(void *obj)220 _NO_TRACE static slab_t *obj2slab(void *obj) 221 221 { 222 222 return (slab_t *) frame_get_parent(ADDR2PFN(KA2PA(obj)), 0); … … 234 234 * 235 235 */ 236 NO_TRACE static size_t slab_obj_destroy(slab_cache_t *cache, void *obj,236 _NO_TRACE static size_t slab_obj_destroy(slab_cache_t *cache, void *obj, 237 237 slab_t *slab) 238 238 { … … 276 276 * 277 277 */ 278 NO_TRACE static void *slab_obj_create(slab_cache_t *cache, unsigned int flags)278 _NO_TRACE static void *slab_obj_create(slab_cache_t *cache, unsigned int flags) 279 279 { 280 280 irq_spinlock_lock(&cache->slablock, true); … … 332 332 * 333 333 */ 334 NO_TRACE static slab_magazine_t *get_mag_from_cache(slab_cache_t *cache,334 _NO_TRACE static slab_magazine_t *get_mag_from_cache(slab_cache_t *cache, 335 335 bool first) 336 336 { … … 357 357 * 358 358 */ 359 NO_TRACE static void put_mag_to_cache(slab_cache_t *cache,359 _NO_TRACE static void put_mag_to_cache(slab_cache_t *cache, 360 360 slab_magazine_t *mag) 361 361 { … … 373 373 * 374 374 */ 375 NO_TRACE static size_t magazine_destroy(slab_cache_t *cache,375 _NO_TRACE static size_t magazine_destroy(slab_cache_t *cache, 376 376 slab_magazine_t *mag) 377 377 { … … 392 392 * 393 393 */ 394 NO_TRACE static slab_magazine_t *get_full_current_mag(slab_cache_t *cache)394 _NO_TRACE static slab_magazine_t *get_full_current_mag(slab_cache_t *cache) 395 395 { 396 396 slab_magazine_t *cmag = cache->mag_cache[CPU->id].current; … … 429 429 * 430 430 */ 431 NO_TRACE static void *magazine_obj_get(slab_cache_t *cache)431 _NO_TRACE static void *magazine_obj_get(slab_cache_t *cache) 432 432 { 433 433 if (!CPU) … … 459 459 * 460 460 */ 461 NO_TRACE static slab_magazine_t *make_empty_current_mag(slab_cache_t *cache)461 _NO_TRACE static slab_magazine_t *make_empty_current_mag(slab_cache_t *cache) 462 462 { 463 463 slab_magazine_t *cmag = cache->mag_cache[CPU->id].current; … … 509 509 * 510 510 */ 511 NO_TRACE static int magazine_obj_put(slab_cache_t *cache, void *obj)511 _NO_TRACE static int magazine_obj_put(slab_cache_t *cache, void *obj) 512 512 { 513 513 if (!CPU) … … 538 538 * 539 539 */ 540 NO_TRACE static size_t comp_objects(slab_cache_t *cache)540 _NO_TRACE static size_t comp_objects(slab_cache_t *cache) 541 541 { 542 542 if (cache->flags & SLAB_CACHE_SLINSIDE) … … 550 550 * 551 551 */ 552 NO_TRACE static size_t badness(slab_cache_t *cache)552 _NO_TRACE static size_t badness(slab_cache_t *cache) 553 553 { 554 554 size_t objects = comp_objects(cache); … … 564 564 * 565 565 */ 566 NO_TRACE static bool make_magcache(slab_cache_t *cache)566 _NO_TRACE static bool make_magcache(slab_cache_t *cache) 567 567 { 568 568 assert(_slab_initialized >= 2); … … 585 585 * 586 586 */ 587 NO_TRACE static void _slab_cache_create(slab_cache_t *cache, const char *name,587 _NO_TRACE static void _slab_cache_create(slab_cache_t *cache, const char *name, 588 588 size_t size, size_t align, errno_t (*constructor)(void *obj, 589 589 unsigned int kmflag), size_t (*destructor)(void *obj), unsigned int flags) … … 660 660 * 661 661 */ 662 NO_TRACE static size_t _slab_reclaim(slab_cache_t *cache, unsigned int flags)662 _NO_TRACE static size_t _slab_reclaim(slab_cache_t *cache, unsigned int flags) 663 663 { 664 664 if (cache->flags & SLAB_CACHE_NOMAGAZINE) … … 707 707 * 708 708 */ 709 NO_TRACE static void _slab_free(slab_cache_t *cache, void *obj, slab_t *slab)709 _NO_TRACE static void _slab_free(slab_cache_t *cache, void *obj, slab_t *slab) 710 710 { 711 711 if (!obj)
Note:
See TracChangeset
for help on using the changeset viewer.