Aaron Nyholm commented on a discussion on cpukit/include/dev/io/iodev.h: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1243#note_151927 > + * > + * @retval 0 Successful operation. > + * @retval non-zero Failed operation. > + */ > +int rtems_iodev_unregister( const char *iodev_path ); > + > +/** > + * @brief Destroys the iodev device. Frees the iodev if initialised with > + * rtems_iodev_alloc_and_init. > + * > + * This function must only be used on rtems_iodev instances that have not > been > + * successfully registered with rtems_iodev_register. > + * > + * @param[in] iodev The iodev device. > + */ > +void rtems_iodev_destroy_unregistered( rtems_iodev *iodev ); I did not go with this approach as there is afaik there is no why to know if the device has been destroyed or not. For example: 1. iodev is allocated and initalised with `rtems_iodev_alloc_and_init` 2. iodev is registered with `rtems_iodev_register` 3. iodev is unregistered (and destroyed) by `rtems_iodev_unregister` 4. `rtems_iodev_destroy_unregistered` is called The pointer to the iodev passed into `rtems_iodev_destroy_unregistered` is now a pointer to freed memory. `rtems_iodev_destroy_unregistered` makes it clear that it's only used to destroy unregistered iodevs. However, your issue remains with the lack of clarity of the API. I think renaming `rtems_iodev_unregister` to `rtems_iodev_unregister_and_destroy` would be a better solution to make it clearer what should be called in what order. -- View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1243#note_151927 You're receiving this email because of your account on gitlab.rtems.org.
_______________________________________________ bugs mailing list [email protected] http://lists.rtems.org/mailman/listinfo/bugs
