targets/plc_debug.c
changeset 2172 9fa5be79bb77
parent 1800 1711339585ce
child 2190 b7d803fc44db
equal deleted inserted replaced
2171:d1536c271866 2172:9fa5be79bb77
   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);