master/slave.c
changeset 409 bc4c852e1b93
parent 404 7f7f429e13c7
child 410 3b8e94d623ab
equal deleted inserted replaced
408:0eda82d1a8c1 409:bc4c852e1b93
   180     ec_sii_string_t *string, *next_str;
   180     ec_sii_string_t *string, *next_str;
   181     ec_sii_sync_t *sync, *next_sync;
   181     ec_sii_sync_t *sync, *next_sync;
   182     ec_sii_pdo_t *pdo, *next_pdo;
   182     ec_sii_pdo_t *pdo, *next_pdo;
   183     ec_sii_pdo_entry_t *entry, *next_ent;
   183     ec_sii_pdo_entry_t *entry, *next_ent;
   184     ec_sdo_t *sdo, *next_sdo;
   184     ec_sdo_t *sdo, *next_sdo;
   185     ec_sdo_entry_t *en, *next_en;
       
   186     ec_sdo_data_t *sdodata, *next_sdodata;
   185     ec_sdo_data_t *sdodata, *next_sdodata;
   187 
   186 
   188     slave = container_of(kobj, ec_slave_t, kobj);
   187     slave = container_of(kobj, ec_slave_t, kobj);
   189 
   188 
   190     // free all string objects
   189     // free all string objects
   220     if (slave->sii_name) kfree(slave->sii_name);
   219     if (slave->sii_name) kfree(slave->sii_name);
   221 
   220 
   222     // free all SDOs
   221     // free all SDOs
   223     list_for_each_entry_safe(sdo, next_sdo, &slave->sdo_dictionary, list) {
   222     list_for_each_entry_safe(sdo, next_sdo, &slave->sdo_dictionary, list) {
   224         list_del(&sdo->list);
   223         list_del(&sdo->list);
   225         if (sdo->name) kfree(sdo->name);
   224         kobject_del(&sdo->kobj);
   226 
   225         kobject_put(&sdo->kobj);
   227         // free all SDO entries
       
   228         list_for_each_entry_safe(en, next_en, &sdo->entries, list) {
       
   229             list_del(&en->list);
       
   230             kfree(en);
       
   231         }
       
   232         kfree(sdo);
       
   233     }
   226     }
   234 
   227 
   235     // free all SDO configurations
   228     // free all SDO configurations
   236     list_for_each_entry_safe(sdodata, next_sdodata, &slave->sdo_confs, list) {
   229     list_for_each_entry_safe(sdodata, next_sdodata, &slave->sdo_confs, list) {
   237         list_del(&sdodata->list);
   230         list_del(&sdodata->list);