close
不確定
重要
PPU SIDE:
- ppu_trace.c
- ppu_io.c
- ppu_trace_collector.c
1. ppu_trace.c:
使用變數:
- SPURecords [MAX_SPU] [BUFFER_NUM] [PPU_BUFFER_ENTRY] (spu_trace_t),
- SPUStatus [MAX_SPU] [BUFFER_NUM] (status_t),
- EA[MAX_SPU] [BUFFER_NUM] [2] (存前兩者address),
- PPURecords [PPU_BUFFER_ENTRY * BUFFER_NUM] (ppu_trace_t),
- SPEInfo (spe_info_t),
- SPECtx [MAX_SPU] (spe_context_ptr_t), Cell上特殊結構
- SPU_Count,
- TreadCount
- BufPos
- SPU_Tid (pthread_t), Pthread
extern void* WriteSPUFile (實做於ppu_io.c)
實作函式:
- PPU_TraceInit --> 初始化變數及設定, 呼叫OpenPPUFile及FunctionStart
- PPUTraceTerminate --> 結束Trace, 呼叫FunctionEnd及ClosePPUFile
- SentBufferAddress --> 有關SPU的資訊 --> call SPUCreate
- PThreadCreateStart
- PThreadCreateEnd --> 呼叫外部函式 --> WriteSPUFile --> 寫出trace.details(四個給converter的檔案之一) (我們將寫在msg_exit)
- PThreadJoinStart
- PThreadJoinEnd
2. ppu_io.c
使用變數:
- Store [BUFFER_NUM] [STORAGE_ENTRY] (spu_trace_t)
- StoreID [BUFFER_NUM] [STORAGEW_ENTRY/PPU_BUFFER_ENTRY]
- FILE *ch,*ch1;
- FILE*PPUFile,*PPUFile1;
- ptread_t tid;
實做函式:
- OpenPPUFile --> PPUFile (trace.ppu.event), PPUFile1 (trace.details)
- WritePPUFile --> 將PPURecords寫入PPUFile並將BufPos設為0
- WriteSPUDetails --> 紀錄SPU num及Buffer entry並寫至PPUFile1
- ClosePPUFile
- *WriteFile --> 將前述宣告的變數寫至ch及ch1
- *WriteSPUFile --> 被外部程式呼叫
3. ppu_trace_collector.c
使用變數:
- PPUTime
實做函式;
- IncreasePos --> 對BufPos++,並檢查buffer是否已滿
- CheckCommunicator
- RecordEvent
- RecordEventTime
- RecordEventStart
- RecordEventEnd
- FunctionStart
- FunctionEnd
- SPUCreate
- PPUTerminate
- DMA, MBOX, Sig function
全站熱搜
留言列表