Changeset 371bd7d in mainline for kernel/generic/src/mm
- Timestamp:
- 2010-03-27T09:22:17Z (16 years ago)
- 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. - Location:
- kernel/generic/src/mm
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/as.c
rcd82bb1 r371bd7d 75 75 #include <config.h> 76 76 #include <align.h> 77 #include < arch/types.h>77 #include <typedefs.h> 78 78 #include <syscall/copy.h> 79 79 #include <arch/interrupt.h> … … 784 784 { 785 785 as_area_t *area; 786 uintptr_t base;787 786 link_t *cur; 788 787 ipl_t ipl; … … 813 812 return ENOTSUP; 814 813 } 815 816 base = area->base;817 814 818 815 /* … … 952 949 if (!THREAD) 953 950 return AS_PF_FAULT; 954 955 ASSERT(AS); 956 951 952 if (!AS) 953 return AS_PF_FAULT; 954 957 955 mutex_lock(&AS->lock); 958 area = find_area_and_lock(AS, page); 956 area = find_area_and_lock(AS, page); 959 957 if (!area) { 960 958 /* … … 1920 1918 } 1921 1919 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 */ 1926 void 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 1922 1986 /** Print out information about address space. 1923 1987 * -
kernel/generic/src/mm/backend_anon.c
rcd82bb1 r371bd7d 47 47 #include <adt/btree.h> 48 48 #include <errno.h> 49 #include < arch/types.h>49 #include <typedefs.h> 50 50 #include <align.h> 51 51 #include <arch.h> -
kernel/generic/src/mm/backend_elf.c
rcd82bb1 r371bd7d 38 38 #include <lib/elf.h> 39 39 #include <debug.h> 40 #include < arch/types.h>40 #include <typedefs.h> 41 41 #include <mm/as.h> 42 42 #include <mm/frame.h> … … 232 232 void elf_frame_free(as_area_t *area, uintptr_t page, uintptr_t frame) 233 233 { 234 elf_header_t *elf = area->backend_data.elf;235 234 elf_segment_header_t *entry = area->backend_data.segment; 236 uintptr_t base, start_anon; 237 size_t i; 235 uintptr_t start_anon; 238 236 239 237 ASSERT((page >= ALIGN_DOWN(entry->p_vaddr, PAGE_SIZE)) && 240 238 (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));244 239 start_anon = entry->p_vaddr + entry->p_filesz; 245 240 … … 257 252 * lower part is backed by the ELF image and the upper is 258 253 * anonymous). In any case, a frame needs to be freed. 259 */ 254 */ 260 255 frame_free(frame); 261 256 } -
kernel/generic/src/mm/backend_phys.c
rcd82bb1 r371bd7d 38 38 39 39 #include <debug.h> 40 #include < arch/types.h>40 #include <typedefs.h> 41 41 #include <mm/as.h> 42 #include <mm/page.h> 42 43 #include <mm/frame.h> 43 44 #include <mm/slab.h> -
kernel/generic/src/mm/buddy.c
rcd82bb1 r371bd7d 41 41 #include <mm/buddy.h> 42 42 #include <mm/frame.h> 43 #include < arch/types.h>43 #include <typedefs.h> 44 44 #include <debug.h> 45 45 #include <print.h> -
kernel/generic/src/mm/frame.c
rcd82bb1 r371bd7d 43 43 */ 44 44 45 #include < arch/types.h>45 #include <typedefs.h> 46 46 #include <mm/frame.h> 47 47 #include <mm/as.h> -
kernel/generic/src/mm/page.c
rcd82bb1 r371bd7d 63 63 #include <mm/frame.h> 64 64 #include <arch/barrier.h> 65 #include < arch/types.h>65 #include <typedefs.h> 66 66 #include <arch/asm.h> 67 67 #include <memstr.h> -
kernel/generic/src/mm/slab.c
rcd82bb1 r371bd7d 130 130 /** Caches for malloc */ 131 131 static slab_cache_t *malloc_caches[SLAB_MAX_MALLOC_W - SLAB_MIN_MALLOC_W + 1]; 132 static c har *malloc_names[] = {132 static const char *malloc_names[] = { 133 133 "malloc-16", 134 134 "malloc-32", … … 571 571 572 572 /** 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) 573 static 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) 577 576 { 578 577 int pages; … … 631 630 632 631 /** Create slab cache */ 633 slab_cache_t * 634 slab_cache_create(char *name, size_t size, size_t align, 632 slab_cache_t *slab_cache_create(const char *name, size_t size, size_t align, 635 633 int (*constructor)(void *obj, int kmflag), int (*destructor)(void *obj), 636 634 int flags) … … 853 851 cache = list_get_instance(cur, slab_cache_t, link); 854 852 855 c har *name = cache->name;853 const char *name = cache->name; 856 854 uint8_t order = cache->order; 857 855 size_t size = cache->size; … … 896 894 NULL, NULL, SLAB_CACHE_MAGDEFERRED); 897 895 } 898 #ifdef CONFIG_DEBUG 896 #ifdef CONFIG_DEBUG 899 897 _slab_initialized = 1; 900 898 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
