Changes in / [0d8a304:0496c17] in mainline


Ignore:
Location:
kernel/generic
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/mm/frame.h

    r0d8a304 r0496c17  
    164164extern void frame_free_noreserve(uintptr_t);
    165165extern void frame_reference_add(pfn_t);
    166 extern size_t frame_total_free_get(void);
    167166
    168167extern size_t find_zone(pfn_t, size_t, size_t);
  • kernel/generic/include/mm/reserve.h

    r0d8a304 r0496c17  
    3838#include <typedefs.h>
    3939
    40 extern void reserve_init(void);
    4140extern bool reserve_try_alloc(size_t);
    4241extern void reserve_force_alloc(size_t);
  • kernel/generic/src/main/main.c

    r0d8a304 r0496c17  
    7171#include <mm/as.h>
    7272#include <mm/slab.h>
    73 #include <mm/reserve.h>
    7473#include <synch/waitq.h>
    7574#include <synch/futex.h>
     
    218217        ddi_init();
    219218        arch_post_mm_init();
    220         reserve_init();
    221219        arch_pre_smp_init();
    222220        smp_init();
  • kernel/generic/src/mm/frame.c

    r0d8a304 r0496c17  
    182182 *
    183183 */
    184 NO_TRACE static size_t frame_total_free_get_internal(void)
     184#ifdef CONFIG_DEBUG
     185NO_TRACE static size_t total_frames_free(void)
    185186{
    186187        size_t total = 0;
    187188        size_t i;
    188 
    189189        for (i = 0; i < zones.count; i++)
    190190                total += zones.info[i].free_count;
     
    192192        return total;
    193193}
    194 
    195 NO_TRACE size_t frame_total_free_get(void)
    196 {
    197         size_t total;
    198 
    199         irq_spinlock_lock(&zones.lock, true);
    200         total = frame_total_free_get_internal();
    201         irq_spinlock_unlock(&zones.lock, true);
    202 
    203         return total;
    204 }
    205 
     194#endif /* CONFIG_DEBUG */
    206195
    207196/** Find a zone with a given frames.
     
    851840                        buddy_system_free(zone->buddy_system, &zone->frames[i].buddy_link);
    852841                }
     842
     843                /* "Unreserve" new frames. */
     844                reserve_free(count);
    853845        } else
    854846                zone->frames = NULL;
     
    10591051               
    10601052#ifdef CONFIG_DEBUG
    1061                 size_t avail = frame_total_free_get_internal();
     1053                size_t avail = total_frames_free();
    10621054#endif
    10631055               
  • kernel/generic/src/mm/reserve.c

    r0d8a304 r0496c17  
    4545IRQ_SPINLOCK_STATIC_INITIALIZE_NAME(reserve_lock, "reserve_lock");
    4646static ssize_t reserve = 0;
    47 
    48 /** Initialize memory reservations tracking.
    49  *
    50  * This function must be called after frame zones are created and merged
    51  * and before any address space area is created.
    52  */
    53 void reserve_init(void)
    54 {
    55         reserve = frame_total_free_get();
    56 }
    5747
    5848/** Try to reserve memory.
Note: See TracChangeset for help on using the changeset viewer.