diff -r a7a8ed41b50a -r 29af81543ce1 master/master.c --- a/master/master.c Tue Sep 19 13:09:39 2006 +0000 +++ b/master/master.c Tue Sep 19 13:28:40 2006 +0000 @@ -98,7 +98,8 @@ int ec_master_init(ec_master_t *master, /**< EtherCAT master */ unsigned int index, /**< master index */ - unsigned int eoeif_count /**< number of EoE interfaces */ + unsigned int eoeif_count, /**< number of EoE interfaces */ + dev_t dev_num /**< number for XML cdev's */ ) { ec_eoe_t *eoe, *next_eoe; @@ -133,6 +134,12 @@ goto out_return; } + // init XML character device + if (ec_xmldev_init(&master->xmldev, master, dev_num)) { + EC_ERR("Failed to init XML character device.\n"); + goto out_clear_wq; + } + // create EoE handlers for (i = 0; i < eoeif_count; i++) { if (!(eoe = (ec_eoe_t *) kmalloc(sizeof(ec_eoe_t), GFP_KERNEL))) { @@ -168,6 +175,8 @@ ec_eoe_clear(eoe); kfree(eoe); } + ec_xmldev_clear(&master->xmldev); + out_clear_wq: destroy_workqueue(master->workqueue); out_return: return -1; @@ -191,6 +200,7 @@ ec_master_reset(master); ec_fsm_clear(&master->fsm); destroy_workqueue(master->workqueue); + ec_xmldev_clear(&master->xmldev); // clear EoE objects list_for_each_entry_safe(eoe, next_eoe, &master->eoe_handlers, list) {