equal
deleted
inserted
replaced
180 |
180 |
181 void RetainIterator(void* varp, __IEC_types_enum vartype){ |
181 void RetainIterator(void* varp, __IEC_types_enum vartype){ |
182 BufferIterator(varp, vartype, 0); |
182 BufferIterator(varp, vartype, 0); |
183 } |
183 } |
184 |
184 |
|
185 extern void PLC_GetTime(IEC_TIME*); |
185 extern int TryEnterDebugSection(void); |
186 extern int TryEnterDebugSection(void); |
186 extern long AtomicCompareExchange(long*, long, long); |
187 extern long AtomicCompareExchange(long*, long, long); |
187 extern long long AtomicCompareExchange64(long long* , long long , long long); |
188 extern long long AtomicCompareExchange64(long long* , long long , long long); |
188 extern void LeaveDebugSection(void); |
189 extern void LeaveDebugSection(void); |
189 extern void ValidateRetainBuffer(void); |
190 extern void ValidateRetainBuffer(void); |
355 | Message | Buffer | |
356 | Message | Buffer | |
356 | counter | Index | */ |
357 | counter | Index | */ |
357 static uint64_t LogCursor[LOG_LEVELS] = {0x0,0x0,0x0,0x0}; |
358 static uint64_t LogCursor[LOG_LEVELS] = {0x0,0x0,0x0,0x0}; |
358 |
359 |
359 /* Store one log message of give size */ |
360 /* Store one log message of give size */ |
360 int LogMessage(uint8_t level, char* buf, uint32_t size){ |
361 int LogMessage(uint8_t level, uint8_t* buf, uint32_t size){ |
361 if(size < LOG_BUFFER_SIZE - sizeof(mTail)){ |
362 if(size < LOG_BUFFER_SIZE - sizeof(mTail)){ |
362 uint32_t buffpos; |
363 uint32_t buffpos; |
363 uint64_t new_cursor, old_cursor; |
364 uint64_t new_cursor, old_cursor; |
364 |
365 |
365 mTail tail; |
366 mTail tail; |
385 copy_to_log(level, buffpos, buf, size); |
386 copy_to_log(level, buffpos, buf, size); |
386 copy_to_log(level, (buffpos + size) & LOG_BUFFER_MASK, &tail, sizeof(mTail)); |
387 copy_to_log(level, (buffpos + size) & LOG_BUFFER_MASK, &tail, sizeof(mTail)); |
387 |
388 |
388 return 1; /* Success */ |
389 return 1; /* Success */ |
389 }else{ |
390 }else{ |
390 char mstr[] = "Logging error : message too big"; |
391 uint8_t mstr[] = "Logging error : message too big"; |
391 LogMessage(LOG_CRITICAL, mstr, sizeof(mstr)); |
392 LogMessage(LOG_CRITICAL, mstr, sizeof(mstr)); |
392 } |
393 } |
393 return 0; |
394 return 0; |
394 } |
395 } |
395 |
396 |