Change root folder name, create pasdk subfolder
[processor-sdk/performance-audio-sr.git] / processor_audio_sdk_1_00_00_00 / pasdk / common / paf_alg_print.c
2 /*
3 * Copyright (C) 2004-2014 Texas Instruments Incorporated - http://www.ti.com/
4 * All rights reserved.  
5 *
6 *  Redistribution and use in source and binary forms, with or without
7 *  modification, are permitted provided that the following conditions
8 *  are met:
9 *
10 *    Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 *
13 *    Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the
16 *    distribution.
17 *
18 *    Neither the name of Texas Instruments Incorporated nor the names of
19 *    its contributors may be used to endorse or promote products derived
20 *    from this software without specific prior written permission.
21 *
22 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
23 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 */
36 //
37 //
38 // Performance Audio Algorithm RAM_REPORT definitions.
39 //
40 //
41 #include <stdlib.h> // malloc
42 #include <stdio.h>  // printf
43 #include <paf_alg_print.h>
45 #include <xdc/runtime/Memory.h>
46 #include <xdc/runtime/IHeap.h>
47 #include <ti/sysbios/heaps/HeapMem.h>
49 Int
50 PAF_ALG_allocPrint (const PAF_ALG_AllocInit *pInit, Int sizeofInit, PAF_IALG_Config *p)
51 {
52     IALG_MemRec *memTab;
53     Int commonSize[PAF_IALG_COMMON_MEMN+1];
54     Int commonCount[PAF_IALG_COMMON_MEMN+1];
55     Int commonSpace[PAF_IALG_COMMON_MEMN+1];
56     Int i,n;
58     for ( ; pInit && pInit->ialg_fxns; 
59         pInit=(const PAF_ALG_AllocInit *)((char *)pInit+sizeofInit)) {
60 #ifdef _TMS320C6X
61 #pragma UNROLL(1)
62 #endif
63         for (i=PAF_IALG_COMMON_MEM0;i<=PAF_IALG_COMMON_MEMN;++i) {
64             commonSize[i]=0;
65             commonCount[i]=0;
66             commonSpace[i]=-1;
67         }
68         n = pInit->ialg_fxns->algNumAlloc != NULL ? pInit->ialg_fxns->algNumAlloc() 
69                                                   : IALG_DEFMEMRECS;
70         if((memTab = (IALG_MemRec *)malloc(n * sizeof(IALG_MemRec)))){
71             n=pInit->ialg_fxns->algAlloc(pInit->ialg_prms,(IALG_Fxns ** )&(pInit->ialg_fxns),memTab);
72             if(n<=0)
73                 return PAF_ALGERR_MEMTAB_COUNT;
75             for(i=0;i<n;++i){
76                 if((((Int)memTab[i].attrs >= PAF_IALG_COMMON_MEM0) && ((Int)memTab[i].attrs <= PAF_IALG_COMMON_MEMN))) {
77                     commonSize[memTab[i].attrs] += memTab[i].size + 
78                 (commonCount[memTab[i].attrs] ? memTab[i].alignment : 0);
79                     commonCount[memTab[i].attrs]++;
80                 }
81                 // (***) FL: this is broken for printout of persistent memory
82                 // The code was broken before addition of persist memory in MSMC SHM.
83                 // commonSize[] and commonCount[] are correct, but here persist is treated like common memory, i.e.
84                 //     persistent memory is treated as through it's combined into a single memory space.
85                 //     For example, printout can only show persist memory as belonging to one space.
86                 //     This isn't true for persistent memory since it can be in multiple spaces.
87                 if (commonSpace[memTab[i].attrs] < (Int)memTab[i].space) {
88                     commonSpace[memTab[i].attrs] = (Int)memTab[i].space;
89                 }
90             }
91             free(memTab);
93             printf("\n0x%-3x\t",((PAF_ASP_LinkInit*)pInit)->thisCode.part.beta);
94             for(i=PAF_IALG_COMMON_MEM0;i<=PAF_IALG_COMMON_MEMN;++i){
95                 if (commonSize[i] == 0)
96                     printf("%9d\t",0);
97                 else 
98                     printf("%6d(%1d)\t", 
99                         commonSize[i], PAF_ALG_memSpaceToHeapId(p, (IALG_MemSpace)commonSpace[i]));
100             }
101             commonSize[IALG_SCRATCH] = commonSize[IALG_PERSIST] = commonSize[IALG_WRITEONCE] = 0;
102         }
103         else
104             return 1;
105     }
106     return 0;
109 Void
110 PAF_ALG_commonPrint (IALG_MemRec common[], PAF_IALG_Config *p)
113     Int i;
115     printf("\n\n");
116     for(i=0;i<130;i++)
117         printf ("--");
119     printf ("\nCOMMON                         \t\t\t\t");
120     for (i=PAF_IALG_COMMON_MEM0; i <= PAF_IALG_COMMON_MEMN; i++) {
121         if (i <= IALG_WRITEONCE)
122             ; //printf(""); // print empty string??
123         else if (common[i].size == 0)
124             printf("%9d\t",0);
125         else 
126             printf("%6d(%1d)\t",
127                 common[i].size, PAF_ALG_memSpaceToHeapId(p, common[i].space));
128     }
132 //PAF_ALG_memStatusPrint(Int internal, Int external, Int internal1)
133 Void
134 PAF_ALG_memStatusPrint(
135     HeapMem_Handle hInternalHeap, 
136     HeapMem_Handle hInternal1Heap,
137     HeapMem_Handle hExternalHeap, 
138     HeapMem_Handle hInternal1HeapShm
141     //MEM_Stat statbuf;
142     Memory_Stats stats;
144     printf("\n\nSegment\tSize\tUsed\tAvailable");
145     
146     //MEM_stat(internal,&statbuf);
147     //printf("\nIRAM\t%d\t%d\t%d",statbuf.size,statbuf.used,statbuf.length);
148     //MEM_stat(external,&statbuf);
149     //printf("\nSDRAM\t%d\t%d\t%d",statbuf.size,statbuf.used,statbuf.length);
150     //MEM_stat(internal1,&statbuf);
151     //printf("\nL3RAM\t%d\t%d\t%d\n",statbuf.size,statbuf.used,statbuf.length);
153     if (hInternalHeap != NULL)
154     {
155         Memory_getStats((IHeap_Handle)hInternalHeap, &stats);
156         printf("\nL2\t%d\t%d\t%d", stats.totalSize, stats.totalSize-stats.totalFreeSize, stats.largestFreeSize);
157     }
158     if (hInternal1Heap != NULL)
159     {
160         Memory_getStats((IHeap_Handle)hInternal1Heap, &stats);
161         printf("\nMSMC\t%d\t%d\t%d", stats.totalSize, stats.totalSize-stats.totalFreeSize, stats.largestFreeSize);    
162     }
163     if (hExternalHeap != NULL)
164     {
165         Memory_getStats((IHeap_Handle)hExternalHeap, &stats);
166         printf("\nDDR3\t%d\t%d\t%d", stats.totalSize, stats.totalSize-stats.totalFreeSize, stats.largestFreeSize);
167     }
168     if (hInternal1HeapShm != NULL)
169     {
170         Memory_getStats((IHeap_Handle)hInternal1HeapShm, &stats);
171         printf("\nMSMC SHM\t%d\t%d\t%d\n", stats.totalSize, stats.totalSize-stats.totalFreeSize, stats.largestFreeSize);
172     }
175 //PAF_ALG_bufMemPrint(Int z,Int size, Int heap,Int bufType)
176 Void
177 PAF_ALG_bufMemPrint(
178     Int z,
179     Int size, 
180     Int heapId,
181     Int bufType
184       printf("\n\n%s Device Buffer (Zone %d) = %d (%d)", 
185               (bufType==0 ? "Input" : bufType==1 ? "Output" : "Audio Frame"), 
186               z, size, heapId);
187       printf("\n");
190 Void
191 PAF_ALG_headerPrint()
193     Int i;
195     printf("\n\nAlgorithm Memory requirement:\n");
196     printf("  Key:  \n");
197     printf("    Beta ID can be decoded from stdbeta.h, oembeta.h or cusbeta.h in pa\\sio\\acp1.\n");
198     printf("    The number in parentheses is the heap.  (0) is L2.  (1) is MSMC.  (2) is DDR3.  (3) is MSMC SHM.\n");
199     printf("%8s\t","BetaId");
200     for(i=PAF_IALG_COMMON_MEM0;i<=PAF_IALG_COMMON_MEMN;++i){
201         if(i==0) printf("%8s\t","SCRATCH");
202         else if(i==1) printf("%8s\t","PERSIST");
203         else if(i==2) printf("%8s \t","WRITEONCE");
204         else if(i<10)
205             printf("%-7s%d  \t","COMMON",(i==0 ? i : i-IALG_WRITEONCE));
206         else
207             printf("%6s%2d \t","COMMON",(i==0 ? i : i-IALG_WRITEONCE));
208     }