209 |
209 |
210 void RetainIterator(dbgvardsc_t *dsc){ |
210 void RetainIterator(dbgvardsc_t *dsc){ |
211 BufferIterator(dsc, 0); |
211 BufferIterator(dsc, 0); |
212 } |
212 } |
213 |
213 |
|
214 |
|
215 unsigned int retain_size = 0; |
|
216 |
|
217 /* GetRetainSizeIterator */ |
|
218 void GetRetainSizeIterator(dbgvardsc_t *dsc) |
|
219 { |
|
220 void *real_value_p = NULL; |
|
221 char flags = 0; |
|
222 UnpackVar(dsc, &real_value_p, &flags); |
|
223 |
|
224 if(flags & __IEC_RETAIN_FLAG){ |
|
225 USINT size = __get_type_enum_size(dsc->type); |
|
226 /* Calc retain buffer size */ |
|
227 retain_size += size; |
|
228 } |
|
229 } |
|
230 |
|
231 /* Return size of all retain variables */ |
|
232 unsigned int GetRetainSize(void) |
|
233 { |
|
234 __for_each_variable_do(GetRetainSizeIterator); |
|
235 return retain_size; |
|
236 } |
|
237 |
|
238 |
214 extern void PLC_GetTime(IEC_TIME*); |
239 extern void PLC_GetTime(IEC_TIME*); |
215 extern int TryEnterDebugSection(void); |
240 extern int TryEnterDebugSection(void); |
216 extern long AtomicCompareExchange(long*, long, long); |
241 extern long AtomicCompareExchange(long*, long, long); |
217 extern long long AtomicCompareExchange64(long long* , long long , long long); |
242 extern long long AtomicCompareExchange64(long long* , long long , long long); |
218 extern void LeaveDebugSection(void); |
243 extern void LeaveDebugSection(void); |