| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 
| 3  * | 3  * | 
| 4  *  Use of this source code is governed by a BSD-style license | 4  *  Use of this source code is governed by a BSD-style license | 
| 5  *  that can be found in the LICENSE file in the root of the source | 5  *  that can be found in the LICENSE file in the root of the source | 
| 6  *  tree. An additional intellectual property rights grant can be found | 6  *  tree. An additional intellectual property rights grant can be found | 
| 7  *  in the file PATENTS.  All contributing project authors may | 7  *  in the file PATENTS.  All contributing project authors may | 
| 8  *  be found in the AUTHORS file in the root of the source tree. | 8  *  be found in the AUTHORS file in the root of the source tree. | 
| 9  */ | 9  */ | 
| 10 | 10 | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 29 #endif | 29 #endif | 
| 30 | 30 | 
| 31 #if HAVE_PTHREAD_H | 31 #if HAVE_PTHREAD_H | 
| 32 # include <pthread.h> | 32 # include <pthread.h> | 
| 33 #elif defined(WIN32) || defined(_WIN32_WCE) | 33 #elif defined(WIN32) || defined(_WIN32_WCE) | 
| 34 # define WIN32_LEAN_AND_MEAN | 34 # define WIN32_LEAN_AND_MEAN | 
| 35 # include <windows.h> | 35 # include <windows.h> | 
| 36 # include <winbase.h> | 36 # include <winbase.h> | 
| 37 #elif defined(VXWORKS) | 37 #elif defined(VXWORKS) | 
| 38 # include <sem_lib.h> | 38 # include <sem_lib.h> | 
| 39 #elif defined(NDS_NITRO) |  | 
| 40 # include <nitro.h> |  | 
| 41 # include <nitro/os.h> |  | 
| 42 #endif | 39 #endif | 
| 43 | 40 | 
| 44 #include <stdio.h> | 41 #include <stdio.h> | 
| 45 #include <stdlib.h> | 42 #include <stdlib.h> | 
| 46 #include <string.h> //VXWORKS doesn't have a malloc/memory.h file, | 43 #include <string.h> //VXWORKS doesn't have a malloc/memory.h file, | 
| 47 //this should pull in malloc,free,etc. | 44 //this should pull in malloc,free,etc. | 
| 48 #include <stdarg.h> | 45 #include <stdarg.h> | 
| 49 | 46 | 
| 50 #include "include/vpx_mem_tracker.h" | 47 #include "include/vpx_mem_tracker.h" | 
| 51 | 48 | 
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 105         totalsize; | 102         totalsize; | 
| 106     unsigned int current_allocated, | 103     unsigned int current_allocated, | 
| 107              max_allocated; | 104              max_allocated; | 
| 108 | 105 | 
| 109 #if HAVE_PTHREAD_H | 106 #if HAVE_PTHREAD_H | 
| 110     pthread_mutex_t mutex; | 107     pthread_mutex_t mutex; | 
| 111 #elif defined(WIN32) || defined(_WIN32_WCE) | 108 #elif defined(WIN32) || defined(_WIN32_WCE) | 
| 112     HANDLE mutex; | 109     HANDLE mutex; | 
| 113 #elif defined(VXWORKS) | 110 #elif defined(VXWORKS) | 
| 114     SEM_ID mutex; | 111     SEM_ID mutex; | 
| 115 #elif defined(NDS_NITRO) |  | 
| 116     OSMutex mutex; |  | 
| 117 #elif defined(NO_MUTEX) | 112 #elif defined(NO_MUTEX) | 
| 118 #else | 113 #else | 
| 119 #error "No mutex type defined for this platform!" | 114 #error "No mutex type defined for this platform!" | 
| 120 #endif | 115 #endif | 
| 121 | 116 | 
| 122     int padding_size, | 117     int padding_size, | 
| 123         pad_value; | 118         pad_value; | 
| 124 }; | 119 }; | 
| 125 | 120 | 
| 126 static struct memory_tracker memtrack;   //our global memory allocation list | 121 static struct memory_tracker memtrack;   //our global memory allocation list | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 186                                      NULL);            /*mutex attributes (NULL=
     default)*/ | 181                                      NULL);            /*mutex attributes (NULL=
     default)*/ | 
| 187 #elif defined(WIN32) || defined(_WIN32_WCE) | 182 #elif defined(WIN32) || defined(_WIN32_WCE) | 
| 188             memtrack.mutex = CreateMutex(NULL,   /*security attributes*/ | 183             memtrack.mutex = CreateMutex(NULL,   /*security attributes*/ | 
| 189                                           FALSE,  /*we don't want initial owners
     hip*/ | 184                                           FALSE,  /*we don't want initial owners
     hip*/ | 
| 190                                           NULL);  /*mutex name*/ | 185                                           NULL);  /*mutex name*/ | 
| 191             ret = !memtrack.mutex; | 186             ret = !memtrack.mutex; | 
| 192 #elif defined(VXWORKS) | 187 #elif defined(VXWORKS) | 
| 193             memtrack.mutex = sem_bcreate(SEM_Q_FIFO, /*SEM_Q_FIFO non-priority b
     ased mutex*/ | 188             memtrack.mutex = sem_bcreate(SEM_Q_FIFO, /*SEM_Q_FIFO non-priority b
     ased mutex*/ | 
| 194                                          SEM_FULL);  /*SEM_FULL initial state is
      unlocked*/ | 189                                          SEM_FULL);  /*SEM_FULL initial state is
      unlocked*/ | 
| 195             ret = !memtrack.mutex; | 190             ret = !memtrack.mutex; | 
| 196 #elif defined(NDS_NITRO) |  | 
| 197             os_init_mutex(&memtrack.mutex); |  | 
| 198             ret = 0; |  | 
| 199 #elif defined(NO_MUTEX) | 191 #elif defined(NO_MUTEX) | 
| 200             ret = 0; | 192             ret = 0; | 
| 201 #endif | 193 #endif | 
| 202 | 194 | 
| 203             if (ret) | 195             if (ret) | 
| 204             { | 196             { | 
| 205                 memtrack_log("vpx_memory_tracker_init: Error creating mutex!\n")
     ; | 197                 memtrack_log("vpx_memory_tracker_init: Error creating mutex!\n")
     ; | 
| 206 | 198 | 
| 207                 MEM_TRACK_FREE(memtrack.head); | 199                 MEM_TRACK_FREE(memtrack.head); | 
| 208                 memtrack.head = NULL; | 200                 memtrack.head = NULL; | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 244         } | 236         } | 
| 245 | 237 | 
| 246         memtrack.head              = NULL; | 238         memtrack.head              = NULL; | 
| 247         memtrack.tail              = NULL; | 239         memtrack.tail              = NULL; | 
| 248         memtrack.len               = 0; | 240         memtrack.len               = 0; | 
| 249         memtrack.current_allocated = 0; | 241         memtrack.current_allocated = 0; | 
| 250         memtrack.max_allocated     = 0; | 242         memtrack.max_allocated     = 0; | 
| 251 | 243 | 
| 252         if (!g_logging.type && g_logging.file && g_logging.file != stderr) | 244         if (!g_logging.type && g_logging.file && g_logging.file != stderr) | 
| 253         { | 245         { | 
| 254 #if !defined(NDS_NITRO) |  | 
| 255             fclose(g_logging.file); | 246             fclose(g_logging.file); | 
| 256 #endif |  | 
| 257             g_logging.file = NULL; | 247             g_logging.file = NULL; | 
| 258         } | 248         } | 
| 259 | 249 | 
| 260         memory_tracker_unlock_mutex(); | 250         memory_tracker_unlock_mutex(); | 
| 261 | 251 | 
| 262         g_b_mem_tracker_inited = 0; | 252         g_b_mem_tracker_inited = 0; | 
| 263     } | 253     } | 
| 264 } | 254 } | 
| 265 | 255 | 
| 266 /* | 256 /* | 
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 361     switch (type) | 351     switch (type) | 
| 362     { | 352     { | 
| 363     case 0: | 353     case 0: | 
| 364         g_logging.type = 0; | 354         g_logging.type = 0; | 
| 365 | 355 | 
| 366         if (!option) | 356         if (!option) | 
| 367         { | 357         { | 
| 368             g_logging.file = stderr; | 358             g_logging.file = stderr; | 
| 369             ret = 0; | 359             ret = 0; | 
| 370         } | 360         } | 
| 371 |  | 
| 372 #if !defined(NDS_NITRO) |  | 
| 373         else | 361         else | 
| 374         { | 362         { | 
| 375             if ((g_logging.file = fopen((char *)option, "w"))) | 363             if ((g_logging.file = fopen((char *)option, "w"))) | 
| 376                 ret = 0; | 364                 ret = 0; | 
| 377         } | 365         } | 
| 378 | 366 | 
| 379 #endif |  | 
| 380         break; | 367         break; | 
| 381 #if defined(WIN32) && !defined(_WIN32_WCE) | 368 #if defined(WIN32) && !defined(_WIN32_WCE) | 
| 382     case 1: | 369     case 1: | 
| 383         g_logging.type = type; | 370         g_logging.type = type; | 
| 384         ret = 0; | 371         ret = 0; | 
| 385         break; | 372         break; | 
| 386 #endif | 373 #endif | 
| 387     default: | 374     default: | 
| 388         break; | 375         break; | 
| 389     } | 376     } | 
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 499             memtrack_log("memblocks[%d].addr= 0x%.8x, memblocks[%d].size= %d, fi
     le:\n" | 486             memtrack_log("memblocks[%d].addr= 0x%.8x, memblocks[%d].size= %d, fi
     le:\n" | 
| 500                          "  %s(%d):\n", i, | 487                          "  %s(%d):\n", i, | 
| 501                          p->addr, i, p->size, | 488                          p->addr, i, p->size, | 
| 502                          p->file, p->line); | 489                          p->file, p->line); | 
| 503         else | 490         else | 
| 504 #endif | 491 #endif | 
| 505             memtrack_log("memblocks[%d].addr= 0x%.8x, memblocks[%d].size= %d, fi
     le: %s, line: %d\n", i, | 492             memtrack_log("memblocks[%d].addr= 0x%.8x, memblocks[%d].size= %d, fi
     le: %s, line: %d\n", i, | 
| 506                          p->addr, i, p->size, | 493                          p->addr, i, p->size, | 
| 507                          p->file, p->line); | 494                          p->file, p->line); | 
| 508 | 495 | 
| 509 #ifdef NDS_NITRO |  | 
| 510 |  | 
| 511         if (!(i % 20)) os_sleep(500); |  | 
| 512 |  | 
| 513 #endif |  | 
| 514 |  | 
| 515         p = p->next; | 496         p = p->next; | 
| 516         ++i; | 497         ++i; | 
| 517     } | 498     } | 
| 518 | 499 | 
| 519     memtrack_log("\n"); | 500     memtrack_log("\n"); | 
| 520 } | 501 } | 
| 521 | 502 | 
| 522 /* | 503 /* | 
| 523     memory_tracker_check_integrity(char* file, unsigned int file) | 504     memory_tracker_check_integrity(char* file, unsigned int file) | 
| 524       file - the file name where the check was placed | 505       file - the file name where the check was placed | 
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 712 | 693 | 
| 713     if (g_b_mem_tracker_inited) | 694     if (g_b_mem_tracker_inited) | 
| 714     { | 695     { | 
| 715 | 696 | 
| 716 #if HAVE_PTHREAD_H | 697 #if HAVE_PTHREAD_H | 
| 717         ret = pthread_mutex_lock(&memtrack.mutex); | 698         ret = pthread_mutex_lock(&memtrack.mutex); | 
| 718 #elif defined(WIN32) || defined(_WIN32_WCE) | 699 #elif defined(WIN32) || defined(_WIN32_WCE) | 
| 719         ret = WaitForSingleObject(memtrack.mutex, INFINITE); | 700         ret = WaitForSingleObject(memtrack.mutex, INFINITE); | 
| 720 #elif defined(VXWORKS) | 701 #elif defined(VXWORKS) | 
| 721         ret = sem_take(memtrack.mutex, WAIT_FOREVER); | 702         ret = sem_take(memtrack.mutex, WAIT_FOREVER); | 
| 722 #elif defined(NDS_NITRO) |  | 
| 723         os_lock_mutex(&memtrack.mutex); |  | 
| 724         ret = 0; |  | 
| 725 #endif | 703 #endif | 
| 726 | 704 | 
| 727         if (ret) | 705         if (ret) | 
| 728         { | 706         { | 
| 729             memtrack_log("memory_tracker_lock_mutex: mutex lock failed\n"); | 707             memtrack_log("memory_tracker_lock_mutex: mutex lock failed\n"); | 
| 730         } | 708         } | 
| 731     } | 709     } | 
| 732 | 710 | 
| 733     return ret; | 711     return ret; | 
| 734 } | 712 } | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 747 | 725 | 
| 748     if (g_b_mem_tracker_inited) | 726     if (g_b_mem_tracker_inited) | 
| 749     { | 727     { | 
| 750 | 728 | 
| 751 #if HAVE_PTHREAD_H | 729 #if HAVE_PTHREAD_H | 
| 752         ret = pthread_mutex_unlock(&memtrack.mutex); | 730         ret = pthread_mutex_unlock(&memtrack.mutex); | 
| 753 #elif defined(WIN32) || defined(_WIN32_WCE) | 731 #elif defined(WIN32) || defined(_WIN32_WCE) | 
| 754         ret = !ReleaseMutex(memtrack.mutex); | 732         ret = !ReleaseMutex(memtrack.mutex); | 
| 755 #elif defined(VXWORKS) | 733 #elif defined(VXWORKS) | 
| 756         ret = sem_give(memtrack.mutex); | 734         ret = sem_give(memtrack.mutex); | 
| 757 #elif defined(NDS_NITRO) |  | 
| 758         os_unlock_mutex(&memtrack.mutex); |  | 
| 759         ret = 0; |  | 
| 760 #endif | 735 #endif | 
| 761 | 736 | 
| 762         if (ret) | 737         if (ret) | 
| 763         { | 738         { | 
| 764             memtrack_log("memory_tracker_unlock_mutex: mutex unlock failed\n"); | 739             memtrack_log("memory_tracker_unlock_mutex: mutex unlock failed\n"); | 
| 765         } | 740         } | 
| 766     } | 741     } | 
| 767 | 742 | 
| 768     return ret; | 743     return ret; | 
| 769 } | 744 } | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 814     (void)g_malloc_l; | 789     (void)g_malloc_l; | 
| 815     (void)g_calloc_l; | 790     (void)g_calloc_l; | 
| 816     (void)g_realloc_l; | 791     (void)g_realloc_l; | 
| 817     (void)g_free_l; | 792     (void)g_free_l; | 
| 818     (void)g_memcpy_l; | 793     (void)g_memcpy_l; | 
| 819     (void)g_memset_l; | 794     (void)g_memset_l; | 
| 820     (void)g_memmove_l; | 795     (void)g_memmove_l; | 
| 821     return -1; | 796     return -1; | 
| 822 #endif | 797 #endif | 
| 823 } | 798 } | 
| OLD | NEW | 
|---|