Changeset 086a600 in mainline for generic/src/mm/frame.c


Ignore:
Timestamp:
2006-02-02T23:54:42Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fb10289b
Parents:
4a5b2b0e
Message:

Debugged slab allocator. It currently supports per-CPU cache on 1 cpu.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generic/src/mm/frame.c

    r4a5b2b0e r086a600  
    116116        zone_t *zone = NULL;
    117117        frame_t *frame = NULL;
     118        int freed;
    118119        __address v;
    119120       
     
    136137                /* If no memory, reclaim some slab memory,
    137138                   if it does not help, reclaim all */
    138                 if (!zone && !(flags & FRAME_NO_RECLAIM))
    139                         if (slab_reclaim(0) || slab_reclaim(SLAB_RECLAIM_ALL))
     139                if (!zone && !(flags & FRAME_NO_RECLAIM)) {
     140                        spinlock_unlock(&zone_head_lock);
     141                        freed = slab_reclaim(0);
     142                        spinlock_lock(&zone_head_lock);
     143                        if (freed)
    140144                                zone = find_free_zone(order);
     145                        if (!zone) {
     146                                spinlock_unlock(&zone_head_lock);
     147                                freed = slab_reclaim(SLAB_RECLAIM_ALL);
     148                                spinlock_lock(&zone_head_lock);
     149                                if (freed)
     150                                        zone = find_free_zone(order);
     151                        }
     152                }
    141153        }
    142154
Note: See TracChangeset for help on using the changeset viewer.