Changeset 371bd7d in mainline for kernel/generic/src/mm


Ignore:
Timestamp:
2010-03-27T09:22:17Z (16 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
36a75a2
Parents:
cd82bb1 (diff), eaf22d4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

Location:
kernel/generic/src/mm
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/as.c

    rcd82bb1 r371bd7d  
    7575#include <config.h>
    7676#include <align.h>
    77 #include <arch/types.h>
     77#include <typedefs.h>
    7878#include <syscall/copy.h>
    7979#include <arch/interrupt.h>
     
    784784{
    785785        as_area_t *area;
    786         uintptr_t base;
    787786        link_t *cur;
    788787        ipl_t ipl;
     
    813812                return ENOTSUP;
    814813        }
    815 
    816         base = area->base;
    817814
    818815        /*
     
    952949        if (!THREAD)
    953950                return AS_PF_FAULT;
    954                
    955         ASSERT(AS);
    956 
     951       
     952        if (!AS)
     953                return AS_PF_FAULT;
     954       
    957955        mutex_lock(&AS->lock);
    958         area = find_area_and_lock(AS, page);   
     956        area = find_area_and_lock(AS, page);
    959957        if (!area) {
    960958                /*
     
    19201918}
    19211919
     1920/** Get list of adress space areas.
     1921 *
     1922 * @param as            Address space.
     1923 * @param obuf          Place to save pointer to returned buffer.
     1924 * @param osize         Place to save size of returned buffer.
     1925 */
     1926void as_get_area_info(as_t *as, as_area_info_t **obuf, size_t *osize)
     1927{
     1928        ipl_t ipl;
     1929        size_t area_cnt, area_idx, i;
     1930        link_t *cur;
     1931
     1932        as_area_info_t *info;
     1933        size_t isize;
     1934
     1935        ipl = interrupts_disable();
     1936        mutex_lock(&as->lock);
     1937
     1938        /* First pass, count number of areas. */
     1939
     1940        area_cnt = 0;
     1941
     1942        for (cur = as->as_area_btree.leaf_head.next;
     1943            cur != &as->as_area_btree.leaf_head; cur = cur->next) {
     1944                btree_node_t *node;
     1945
     1946                node = list_get_instance(cur, btree_node_t, leaf_link);
     1947                area_cnt += node->keys;
     1948        }
     1949
     1950        isize = area_cnt * sizeof(as_area_info_t);
     1951        info = malloc(isize, 0);
     1952
     1953        /* Second pass, record data. */
     1954
     1955        area_idx = 0;
     1956
     1957        for (cur = as->as_area_btree.leaf_head.next;
     1958            cur != &as->as_area_btree.leaf_head; cur = cur->next) {
     1959                btree_node_t *node;
     1960
     1961                node = list_get_instance(cur, btree_node_t, leaf_link);
     1962
     1963                for (i = 0; i < node->keys; i++) {
     1964                        as_area_t *area = node->value[i];
     1965
     1966                        ASSERT(area_idx < area_cnt);
     1967                        mutex_lock(&area->lock);
     1968
     1969                        info[area_idx].start_addr = area->base;
     1970                        info[area_idx].size = FRAMES2SIZE(area->pages);
     1971                        info[area_idx].flags = area->flags;
     1972                        ++area_idx;
     1973
     1974                        mutex_unlock(&area->lock);
     1975                }
     1976        }
     1977
     1978        mutex_unlock(&as->lock);
     1979        interrupts_restore(ipl);
     1980
     1981        *obuf = info;
     1982        *osize = isize;
     1983}
     1984
     1985
    19221986/** Print out information about address space.
    19231987 *
  • kernel/generic/src/mm/backend_anon.c

    rcd82bb1 r371bd7d  
    4747#include <adt/btree.h>
    4848#include <errno.h>
    49 #include <arch/types.h>
     49#include <typedefs.h>
    5050#include <align.h>
    5151#include <arch.h>
  • kernel/generic/src/mm/backend_elf.c

    rcd82bb1 r371bd7d  
    3838#include <lib/elf.h>
    3939#include <debug.h>
    40 #include <arch/types.h>
     40#include <typedefs.h>
    4141#include <mm/as.h>
    4242#include <mm/frame.h>
     
    232232void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame)
    233233{
    234         elf_header_t *elf = area->backend_data.elf;
    235234        elf_segment_header_t *entry = area->backend_data.segment;
    236         uintptr_t base, start_anon;
    237         size_t i;
     235        uintptr_t start_anon;
    238236
    239237        ASSERT((page >= ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE)) &&
    240238            (page < entry->p_vaddr + entry->p_memsz));
    241         i = (page - ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE)) >> PAGE_WIDTH;
    242         base = (uintptr_t) (((void *) elf) +
    243             ALIGN_DOWN(entry->p_offset, FRAME_SIZE));
    244239        start_anon = entry->p_vaddr + entry->p_filesz;
    245240
     
    257252                 * lower part is backed by the ELF image and the upper is
    258253                 * anonymous). In any case, a frame needs to be freed.
    259                  */ 
     254                 */
    260255                frame_free(frame);
    261256        }
  • kernel/generic/src/mm/backend_phys.c

    rcd82bb1 r371bd7d  
    3838
    3939#include <debug.h>
    40 #include <arch/types.h>
     40#include <typedefs.h>
    4141#include <mm/as.h>
     42#include <mm/page.h>
    4243#include <mm/frame.h>
    4344#include <mm/slab.h>
  • kernel/generic/src/mm/buddy.c

    rcd82bb1 r371bd7d  
    4141#include <mm/buddy.h>
    4242#include <mm/frame.h>
    43 #include <arch/types.h>
     43#include <typedefs.h>
    4444#include <debug.h>
    4545#include <print.h>
  • kernel/generic/src/mm/frame.c

    rcd82bb1 r371bd7d  
    4343 */
    4444
    45 #include <arch/types.h>
     45#include <typedefs.h>
    4646#include <mm/frame.h>
    4747#include <mm/as.h>
  • kernel/generic/src/mm/page.c

    rcd82bb1 r371bd7d  
    6363#include <mm/frame.h>
    6464#include <arch/barrier.h>
    65 #include <arch/types.h>
     65#include <typedefs.h>
    6666#include <arch/asm.h>
    6767#include <memstr.h>
  • kernel/generic/src/mm/slab.c

    rcd82bb1 r371bd7d  
    130130/** Caches for malloc */
    131131static slab_cache_t *malloc_caches[SLAB_MAX_MALLOC_W - SLAB_MIN_MALLOC_W + 1];
    132 static char *malloc_names[] =  {
     132static const char *malloc_names[] =  {
    133133        "malloc-16",
    134134        "malloc-32",
     
    571571
    572572/** Initialize allocated memory as a slab cache */
    573 static void
    574 _slab_cache_create(slab_cache_t *cache, char *name, size_t size, size_t align,
    575     int (*constructor)(void *obj, int kmflag), int (*destructor)(void *obj),
    576     int flags)
     573static void _slab_cache_create(slab_cache_t *cache, const char *name,
     574    size_t size, size_t align, int (*constructor)(void *obj, int kmflag),
     575    int (*destructor)(void *obj), int flags)
    577576{
    578577        int pages;
     
    631630
    632631/** Create slab cache  */
    633 slab_cache_t *
    634 slab_cache_create(char *name, size_t size, size_t align,
     632slab_cache_t *slab_cache_create(const char *name, size_t size, size_t align,
    635633    int (*constructor)(void *obj, int kmflag), int (*destructor)(void *obj),
    636634    int flags)
     
    853851                cache = list_get_instance(cur, slab_cache_t, link);
    854852
    855                 char *name = cache->name;
     853                const char *name = cache->name;
    856854                uint8_t order = cache->order;
    857855                size_t size = cache->size;
     
    896894                    NULL, NULL, SLAB_CACHE_MAGDEFERRED);
    897895        }
    898 #ifdef CONFIG_DEBUG       
     896#ifdef CONFIG_DEBUG
    899897        _slab_initialized = 1;
    900898#endif
Note: See TracChangeset for help on using the changeset viewer.