Changeset 41deb2a in mainline


Ignore:
Timestamp:
2011-12-30T19:27:15Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
efb48eb
Parents:
0fd9b35
Message:

Allocate ra_segment_t from a dedicated slab cache.

Location:
kernel/generic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/lib/ra.h

    r0fd9b35 r41deb2a  
    7777} ra_segment_t;
    7878
     79extern void ra_init(void);
    7980extern ra_arena_t *ra_arena_create(void);
    8081extern bool ra_span_add(ra_arena_t *, uintptr_t, size_t);
  • kernel/generic/src/lib/ra.c

    r0fd9b35 r41deb2a  
    5555#include <synch/spinlock.h>
    5656
     57static slab_cache_t *ra_segment_cache;
     58
    5759#define USED_BUCKETS    1024
    5860
     
    9092        ra_segment_t *seg;
    9193
    92         seg = (ra_segment_t *) malloc(sizeof(ra_segment_t), FRAME_ATOMIC);
     94        seg = slab_alloc(ra_segment_cache, FRAME_ATOMIC);
    9395        if (!seg)
    9496                return NULL;
     
    105107static void ra_segment_destroy(ra_segment_t *seg)
    106108{
    107         free(seg);
     109        slab_free(ra_segment_cache, seg);
    108110}
    109111
     
    420422}
    421423
     424void ra_init(void)
     425{
     426        ra_segment_cache = slab_cache_create("segment_cache",
     427            sizeof(ra_segment_t), 0, NULL, NULL, SLAB_CACHE_MAGDEFERRED);
     428}
    422429
    423430/** @}
  • kernel/generic/src/main/main.c

    r0fd9b35 r41deb2a  
    8787#include <sysinfo/sysinfo.h>
    8888#include <sysinfo/stats.h>
     89#include <lib/ra.h>
    8990
    9091/** Global configuration structure. */
     
    212213        km_identity_init();
    213214        frame_init();
    214         /* Initialize at least 1 memory segment big enough for slab to work. */
    215215        slab_cache_init();
     216        ra_init();     
    216217        sysinfo_init();
    217218        btree_init();
Note: See TracChangeset for help on using the changeset viewer.