rekado, le Tue 10 Sep 2013 11:10:47 +0800, a écrit : > > - it should close the previous master device before opening another > > one, otherwise you get a port leak on each ds_device_open call. It > > ds_device_close() only returns D_INVALID_OPERATION. How should the > master device be closed? Is it enough to deallocate the port?
Yes, it is enough. But don't do this on ds_device_close(), since you have no assurance that it will be called once for each ds_device_open() call. Really do it simply after usage in ds_device_open(). > > then actually becomes useless to call file_name_lookup in parse_opt(), > > and instead call it from ds_device_open itself, and free the port > > there (but only when master_file is not NULL of course). The check for > > Well, the call in parse_opt() ensures that devnode fails immediately > when an invalid parameter for device_file is provided. That's why I > decided to leave it there. Is it desirable to fail early in this case > or should it only fail when the device is actually accessed in > ds_device_open()? Mmm, good question. Maybe it's better to do as you say indeed. ds_device_open() could also reopen the master_file only when device_open() returns a "translator died" error. Samuel