Changeset f275cb3 in mainline


Ignore:
Timestamp:
2006-01-08T16:35:41Z (19 years ago)
Author:
Sergey Bondari <bondari@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b2c92f33
Parents:
677a6d5
Message:

Frame alloc test #1

Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • arch/mips32/src/mm/page.c

    r677a6d5 rf275cb3  
    4343        page_operations = &page_pt_operations;
    4444       
    45         ptl0 = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME);
     45        ptl0 = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME, NULL);
    4646        memsetb(ptl0, FRAME_SIZE, 0);
    4747       
  • genarch/src/mm/page_pt.c

    r677a6d5 rf275cb3  
    6464
    6565        if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) {
    66                 newpt = frame_alloc(FRAME_KA, ONE_FRAME);
     66                newpt = frame_alloc(FRAME_KA, ONE_FRAME, NULL);
    6767                memsetb(newpt, PAGE_SIZE, 0);
    6868                SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page), KA2PA(newpt));
     
    7373
    7474        if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) {
    75                 newpt = frame_alloc(FRAME_KA, ONE_FRAME);
     75                newpt = frame_alloc(FRAME_KA, ONE_FRAME, NULL);
    7676                memsetb(newpt, PAGE_SIZE, 0);
    7777                SET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page), KA2PA(newpt));
     
    8282
    8383        if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) {
    84                 newpt = frame_alloc(FRAME_KA, ONE_FRAME);
     84                newpt = frame_alloc(FRAME_KA, ONE_FRAME, NULL);
    8585                memsetb(newpt, PAGE_SIZE, 0);
    8686                SET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page), KA2PA(newpt));
  • generic/include/mm/frame.h

    r677a6d5 rf275cb3  
    3939#define ONE_FRAME       0
    4040
    41 #define FRAME_KA        1       /* skip frames conflicting with user address space */
    42 #define FRAME_PANIC     2       /* panic on failure */
     41#define FRAME_KA                1       /* skip frames conflicting with user address space */
     42#define FRAME_PANIC             2       /* panic on failure */
     43#define FRAME_NON_BLOCKING      4       /* do not panic and do not sleep on failure */
     44
     45#define FRAME_OK                0       /* frame_alloc return status */
     46#define FRAME_NO_MEMORY         1       /* frame_alloc return status */
     47#define FRAME_ERROR             2       /* frame_alloc return status */
    4348
    4449#define FRAME2ADDR(zone, frame)                 ((zone)->base + ((frame) - (zone)->frames) * FRAME_SIZE)
     
    8994extern void frame_init(void);
    9095extern void frame_initialize(frame_t *frame, zone_t *zone);
    91 __address frame_alloc(int flags, __u8 order);
     96
     97__address frame_alloc(int flags, __u8 order, int * status);
    9298extern void frame_free(__address addr);
     99
    93100zone_t * get_zone_by_frame(frame_t * frame);
    94101
  • generic/src/cpu/cpu.c

    r677a6d5 rf275cb3  
    6262
    6363                for (i=0; i < config.cpu_count; i++) {
    64                         cpus[i].stack = (__u8 *) frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME);
     64                        cpus[i].stack = (__u8 *) frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME, NULL);
    6565                       
    6666                        cpus[i].id = i;
  • generic/src/mm/frame.c

    r677a6d5 rf275cb3  
    8484 * @return Allocated frame.
    8585 */
    86 __address frame_alloc(int flags, __u8 order)
     86__address frame_alloc(int flags, __u8 order, int * status)
    8787{
    8888        ipl_t ipl;
     
    118118                        panic("Can't allocate frame.\n");
    119119               
     120               
     121               
    120122                /*
    121123                 * TODO: Sleep until frames are available again.
     
    124126                interrupts_restore(ipl);
    125127
     128                if (flags & FRAME_NON_BLOCKING) {
     129                        ASSERT(status != NULL);
     130                        *status = FRAME_NO_MEMORY;
     131                        return NULL;
     132                }
     133               
    126134                panic("Sleep not implemented.\n");
    127135                goto loop;
     
    151159        if (flags & FRAME_KA)
    152160                v = PA2KA(v);
     161       
     162        if (flags & FRAME_NON_BLOCKING) {
     163                ASSERT(status != NULL);
     164                *status = FRAME_OK;
     165        }
    153166       
    154167        return v;
  • generic/src/mm/vm.c

    r677a6d5 rf275cb3  
    7171               
    7272                        src_ptl0 = (pte_t *) PA2KA((__address) GET_PTL0_ADDRESS());
    73                         dst_ptl0 = (pte_t *) frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME);
     73                        dst_ptl0 = (pte_t *) frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME, NULL);
    7474
    7575//                      memsetb((__address) dst_ptl0, PAGE_SIZE, 0);
     
    117117               
    118118                for (i=0; i<size; i++)
    119                         a->mapping[i] = frame_alloc(0, ONE_FRAME);
     119                        a->mapping[i] = frame_alloc(0, ONE_FRAME, NULL);
    120120               
    121121                spinlock_initialize(&a->lock, "vm_area_lock");
  • generic/src/proc/thread.c

    r677a6d5 rf275cb3  
    174174                spinlock_initialize(&t->lock, "thread_t_lock");
    175175       
    176                 frame_ks = frame_alloc(FRAME_KA, ONE_FRAME);
     176                frame_ks = frame_alloc(FRAME_KA, ONE_FRAME, NULL);
    177177                if (THREAD_USER_STACK & flags) {
    178                         frame_us = frame_alloc(FRAME_KA, ONE_FRAME);
     178                        frame_us = frame_alloc(FRAME_KA, ONE_FRAME, NULL);
    179179                }
    180180
  • kernel.config

    r677a6d5 rf275cb3  
    8282@ "thread/thread1" Thread test 1
    8383@ "mm/mapping1" Mapping test 1
     84@ "mm/falloc1" Frame Allocation test 1
    8485@ [ARCH=mips32] "debug/mips1" Mips breakpoint-debug test
    8586! CONFIG_TEST (choice)
  • test/mm/mapping1/test.c

    r677a6d5 rf275cb3  
    4848        printf("Memory management test mapping #1\n");
    4949
    50         frame0 = frame_alloc(FRAME_KA, ONE_FRAME);
    51         frame1 = frame_alloc(FRAME_KA, ONE_FRAME);     
     50        frame0 = frame_alloc(FRAME_KA, ONE_FRAME, NULL);
     51        frame1 = frame_alloc(FRAME_KA, ONE_FRAME, NULL);       
    5252
    5353        printf("Writing %L to physical address %P.\n", VALUE0, KA2PA(frame0));
Note: See TracChangeset for help on using the changeset viewer.