Ignore:
Timestamp:
01/16/12 08:22:51 (16 months ago)
Author:
philmoz
Message:

Update trunk with latest changes from reyalp-flt branch.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/platform/generic/wrappers.c

    r1527 r1569  
    692692// Use suba functions to fill meminfo structure to match firmware GetMemInfo function 
    693693 
    694 void GetExMemInfo(cam_meminfo *camera_meminfo) 
     694int GetExMemInfo(cam_meminfo *camera_meminfo) 
    695695{ 
    696696        extern void suba_getmeminfo(void*, int*, int*, int*, int*, int*, int*); 
     
    702702                    &camera_meminfo->allocated_size, &camera_meminfo->allocated_peak, &camera_meminfo->allocated_count, 
    703703                    &camera_meminfo->free_size, &camera_meminfo->free_block_max_size, &camera_meminfo->free_block_count); 
     704 
     705    return 1;   // return success 
    704706} 
    705707// regular malloc 
     
    711713void free(void *p) { 
    712714    return _free(p); 
     715} 
     716 
     717// Include this for the module_inspector module to simplify symbol export logic 
     718int GetExMemInfo(cam_meminfo *camera_meminfo) 
     719{ 
     720    return 0;   // return failure (not implemented) 
    713721} 
    714722#endif 
     
    747755} 
    748756  
     757void GetMemInfo(cam_meminfo *camera_meminfo) 
     758{ 
    749759#if defined(CAM_FIRMWARE_MEMINFO) 
    750760 
    751761// Use firmware GetMemInfo function to retrieve info about Canon heap memory allocation 
    752762 
    753 void GetMemInfo(cam_meminfo *camera_meminfo) 
    754 { 
    755763#if defined(CAM_DRYOS) 
    756764    // Prior to dryos R39 GetMemInfo returns 9 values, after R39 it returns 10 (all but 1 are used in each case) 
     
    800808#endif 
    801809#endif 
    802 } 
    803  
    804 #endif 
     810 
     811#else   //!defined(CAM_FIRMWARE_MEMINFO) 
     812    // -1 for invalid 
     813    memset(camera_meminfo,0xFF,sizeof(cam_meminfo)); 
     814 
     815    // Calculate largest free block size 
     816        int size, l_size, d; 
     817    char* ptr; 
     818 
     819    size = 16; 
     820    while (1) { 
     821        ptr= malloc(size); 
     822        if (ptr) { 
     823            free(ptr); 
     824            size <<= 1; 
     825        } else 
     826            break; 
     827    } 
     828 
     829    l_size = size; 
     830    size >>= 1; 
     831    d=1024; 
     832    while (d) { 
     833        ptr = malloc(size); 
     834        if (ptr) { 
     835            free(ptr); 
     836            d = l_size-size; 
     837            if (d<0) d=-d; 
     838            l_size = size; 
     839            size += d>>1; 
     840        } else { 
     841            d = size-l_size; 
     842            if (d<0) d=-d; 
     843            l_size = size; 
     844            size -= d>>1; 
     845        } 
     846         
     847    } 
     848 
     849    camera_meminfo->free_block_max_size = size-1; 
     850#endif 
     851} 
     852 
    805853 
    806854//---------------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.