Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef INCLUDED_GCELL_GC_LOGGING_H
00022 #define INCLUDED_GCELL_GC_LOGGING_H
00023
00024 #include <gcell/gc_types.h>
00025 #include <string.h>
00026
00027 __GC_BEGIN_DECLS
00028
00029 typedef struct gc_log {
00030 gc_eaddr_t base;
00031 uint32_t nentries;
00032 } gc_log_t;
00033
00034 typedef struct gc_log_entry {
00035 uint32_t seqno;
00036 uint32_t timestamp;
00037 uint16_t subsystem;
00038 uint16_t event;
00039 uint32_t info[5];
00040 } _AL16 gc_log_entry_t;
00041
00042 #define GCL_SS_SYS 0 // lowest system reserved subsystem
00043 #define GCL_SS_USER 256 // lowest user reserved subsystem
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #if defined(__SPU__)
00054
00055
00056
00057
00058
00059 void _gc_log_write(gc_log_entry_t entry);
00060
00061 #ifdef ENABLE_GC_LOGGING
00062 #define gc_log_write(entry) _gc_log_write(entry)
00063 #else
00064 #define gc_log_write(entry) do { } while (0)
00065 #endif
00066
00067 inline static void
00068 gc_log_write0(int subsystem, int event)
00069 {
00070 gc_log_entry_t e;
00071 e.subsystem = subsystem;
00072 e.event = event;
00073 e.info[0] = 0;
00074 e.info[1] = 0;
00075 e.info[2] = 0;
00076 e.info[3] = 0;
00077 e.info[4] = 0;
00078 gc_log_write(e);
00079 }
00080
00081 inline static void
00082 gc_log_write1(int subsystem, int event,
00083 uint32_t info0)
00084 {
00085 gc_log_entry_t e;
00086 e.subsystem = subsystem;
00087 e.event = event;
00088 e.info[0] = info0;
00089 e.info[1] = 0;
00090 e.info[2] = 0;
00091 e.info[3] = 0;
00092 e.info[4] = 0;
00093 gc_log_write(e);
00094 }
00095
00096 inline static void
00097 gc_log_write2(int subsystem, int event,
00098 uint32_t info0, uint32_t info1)
00099 {
00100 gc_log_entry_t e;
00101 e.subsystem = subsystem;
00102 e.event = event;
00103 e.info[0] = info0;
00104 e.info[1] = info1;
00105 e.info[2] = 0;
00106 e.info[3] = 0;
00107 e.info[4] = 0;
00108 gc_log_write(e);
00109 }
00110
00111 inline static void
00112 gc_log_write3(int subsystem, int event,
00113 uint32_t info0, uint32_t info1, uint32_t info2)
00114 {
00115 gc_log_entry_t e;
00116 e.subsystem = subsystem;
00117 e.event = event;
00118 e.info[0] = info0;
00119 e.info[1] = info1;
00120 e.info[2] = info2;
00121 e.info[3] = 0;
00122 e.info[4] = 0;
00123 gc_log_write(e);
00124 }
00125
00126 inline static void
00127 gc_log_write4(int subsystem, int event,
00128 uint32_t info0, uint32_t info1, uint32_t info2, uint32_t info3)
00129 {
00130 gc_log_entry_t e;
00131 e.subsystem = subsystem;
00132 e.event = event;
00133 e.info[0] = info0;
00134 e.info[1] = info1;
00135 e.info[2] = info2;
00136 e.info[3] = info3;
00137 e.info[4] = 0;
00138 gc_log_write(e);
00139 }
00140
00141 inline static void
00142 gc_log_write5(int subsystem, int event,
00143 uint32_t info0, uint32_t info1, uint32_t info2, uint32_t info3, uint32_t info4)
00144 {
00145 gc_log_entry_t e;
00146 e.subsystem = subsystem;
00147 e.event = event;
00148 e.info[0] = info0;
00149 e.info[1] = info1;
00150 e.info[2] = info2;
00151 e.info[3] = info3;
00152 e.info[4] = info4;
00153 gc_log_write(e);
00154 }
00155
00156
00157
00158
00159 void
00160 _gc_log_init(gc_log_t log_info);
00161
00162 #endif
00163
00164 __GC_END_DECLS
00165
00166 #endif