Changeset 4a2f4bb in mainline


Ignore:
Timestamp:
2006-01-25T21:18:38Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2a003d5b
Parents:
895be41
Message:

Fix and cleanup frame allocator tests.
falloc1:

  • fix so that it compiles on ia64
  • check that frames is not NULL

falloc2:

  • threads cannot be passed argument in the way this test did (otherwise some threads will use the same value for val)
    • check that frames is not NULL
    • free frames at the end of the test
Location:
test/mm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • test/mm/falloc1/test.c

    r895be41 r4a2f4bb  
    3434#include <arch/types.h>
    3535#include <debug.h>
     36#include <align.h>
    3637
    3738#define MAX_FRAMES 1024
     
    4849
    4950        ASSERT(TEST_RUNS > 1);
     51        ASSERT(frames != NULL)
    5052
    51         for (run=0;run<=TEST_RUNS;run++) {
    52                 for (order=0;order<=MAX_ORDER;order++) {
    53                         printf("Allocating %d frames blocks ... ", 1<<order);
     53        for (run = 0; run < TEST_RUNS; run++) {
     54                for (order = 0; order <= MAX_ORDER; order++) {
     55                        printf("Allocating %d frames blocks ... ", 1 << order);
    5456                        allocated = 0;
    55                         for (i=0;i<MAX_FRAMES>>order;i++) {
     57                        for (i = 0; i < MAX_FRAMES >> order; i++) {
    5658                                frames[allocated] = frame_alloc(FRAME_NON_BLOCKING | FRAME_KA, order, &status);
    5759                               
    58                                 if (frames[allocated] % (FRAME_SIZE << order) != 0) {
     60                                if (ALIGN_UP(frames[allocated], FRAME_SIZE << order) != frames[allocated]) {
    5961                                        panic("Test failed. Block at address %X (size %dK) is not aligned\n", frames[allocated], (FRAME_SIZE << order) >> 10);
    6062                                }
     
    6870                        }
    6971               
    70                         printf("%d blocks alocated.\n", allocated);
     72                        printf("%d blocks allocated.\n", allocated);
    7173               
    7274                        if (run) {
     
    7476                                        panic("Test failed. Frame leak possible.\n");
    7577                                }
    76                         } else results[order] = allocated;
     78                        } else
     79                                results[order] = allocated;
    7780                       
    7881                        printf("Deallocating ... ");
    79                         for (i=0;i<allocated;i++) {
     82                        for (i = 0; i < allocated; i++) {
    8083                                frame_free(frames[i]);
    8184                        }
     
    8689        free(frames);
    8790       
    88         printf("Test passed\n");
     91        printf("Test passed.\n");
    8992}
    9093
  • test/mm/falloc2/test.c

    r895be41 r4a2f4bb  
    3737#include <proc/thread.h>
    3838#include <memstr.h>
     39#include <arch.h>
    3940
    4041#define MAX_FRAMES 256
     
    4950static atomic_t thread_count;
    5051
    51 void thread(void * arg) {
    52         int status, order, run, allocated,i;
    53        
    54         __u8 val = *((__u8 *) arg);
     52void thread(void * arg)
     53{
     54        int status, order, run, allocated, i;
     55        __u8 val = THREAD->tid % THREADS;
    5556        index_t k;
    5657       
    5758        __address * frames =  (__address *) malloc(MAX_FRAMES * sizeof(__address));
     59        ASSERT(frames != NULL);
    5860
    59         for (run=0;run<THREAD_RUNS;run++) {
    60        
    61                 for (order=0;order<=MAX_ORDER;order++) {
    62                         printf("Thread #%d: Allocating %d frames blocks ... \n",val, 1<<order);
     61        for (run = 0; run < THREAD_RUNS; run++) {
     62                for (order = 0; order <= MAX_ORDER; order++) {
     63                        printf("Thread #%d: Allocating %d frames blocks ... \n", THREAD->tid, 1 << order);
    6364                        allocated = 0;
    64                         for (i=0;i < (MAX_FRAMES >> order);i++) {
    65                                 frames[allocated] = frame_alloc(FRAME_NON_BLOCKING | FRAME_KA,order, &status);
     65                        for (i = 0; i < (MAX_FRAMES >> order); i++) {
     66                                frames[allocated] = frame_alloc(FRAME_NON_BLOCKING | FRAME_KA, order, &status);
    6667                                if (status == 0) {
    67                                         memsetb(frames[allocated], (1 << order) * FRAME_SIZE, val);
     68                                        memsetb(frames[allocated], FRAME_SIZE << order, val);
    6869                                        allocated++;
    6970                                } else {
     
    7172                                }
    7273                        }
    73                
    74                         printf("Thread #%d: %d blocks alocated.\n",val, allocated);
     74                        printf("Thread #%d: %d blocks allocated.\n", THREAD->tid, allocated);
    7575
    76                         printf("Thread #%d: Deallocating ... \n", val);
    77                         for (i=0;i<allocated;i++) {
    78                        
    79                                 for (k=0;k<=((FRAME_SIZE << order) - 1);k++) {
    80                                         if ( ((char *) frames[i])[k] != val ) {
    81                                                 printf("Thread #%d: Unexpected data in block %P offset %X\n",val, frames[i], k);
     76                        printf("Thread #%d: Deallocating ... \n", THREAD->tid);
     77                        for (i = 0; i < allocated; i++) {
     78                                for (k = 0; k <= ((FRAME_SIZE << order) - 1); k++) {
     79                                        if (((__u8 *) frames[i])[k] != val) {
     80                                                printf("Thread #%d: Unexpected data (%d) in block %P offset %X\n", THREAD->tid, ((char *) frames[i])[k], frames[i], k);
    8281                                                failed();
    8382                                        }
    84                                
    8583                                }
    86                                
    8784                                frame_free(frames[i]);
    8885                        }
     
    9188        }
    9289       
     90        free(frames);
    9391       
    9492        atomic_dec(&thread_count);
    95 
    9693}
    9794
    9895
    99 void failed(void) {
     96void failed(void)
     97{
    10098        panic("Test failed.\n");
    10199}
    102100
    103101
    104 void test(void) {
     102void test(void)
     103{
    105104        int i;
    106105
    107106        atomic_set(&thread_count, THREADS);
    108107               
    109         for (i=1;i<=THREADS;i++) {
     108        for (i = 0; i < THREADS; i++) {
    110109                thread_t * thrd;
    111                 thrd = thread_create(thread, &i, TASK, 0);
    112                 if (thrd) thread_ready(thrd); else failed();
     110                thrd = thread_create(thread, NULL, TASK, 0);
     111                if (thrd)
     112                        thread_ready(thrd);
     113                else
     114                        failed();
    113115        }
    114116       
    115         while (thread_count.count);
     117        while (thread_count.count)
     118                ;
    116119
    117         printf("Test passed\n");
     120        printf("Test passed.\n");
    118121}
    119 
Note: See TracChangeset for help on using the changeset viewer.