uORB: Remove transfer of memory allocation ownership to CDev

- Allocate and free the node name in uORBDeviceNode.
- Add protected build support by de-allocating the name with kmm_free, when
  running in kernel side. strdup allocates from the kernel heap in NuttX kernel
  space.
- Remove the CDev::unregister_driver_and_memory(), it is no longer used

Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
This commit is contained in:
Jukka Laitinen
2021-12-13 22:52:36 -05:00
committed by Daniel Agar
parent 25c10eb124
commit ce6147f570
4 changed files with 19 additions and 46 deletions
+3 -23
View File
@@ -128,6 +128,9 @@ CDev::init()
if (ret == PX4_OK) {
_registered = true;
}
} else {
ret = -ENODEV;
}
return ret;
@@ -373,27 +376,4 @@ CDev::remove_poll_waiter(px4_pollfd_struct_t *fds)
return -EINVAL;
}
int CDev::unregister_driver_and_memory()
{
int retval = PX4_OK;
if (_registered) {
unregister_driver(_devname);
_registered = false;
} else {
retval = -ENODEV;
}
if (_devname != nullptr) {
free((void *)_devname);
_devname = nullptr;
} else {
retval = -ENODEV;
}
return retval;
}
} // namespace cdev
-11
View File
@@ -270,17 +270,6 @@ protected:
px4_sem_t _lock; /**< lock to protect access to all class members (also for derived classes) */
/**
* First, unregisters the driver. Next, free the memory for the devname,
* in case it was expected to have ownership. Sets devname to nullptr.
*
* This is only needed if the ownership of the devname was passed to the CDev, otherwise ~CDev handles it.
*
* @return PX4_OK on success, -ENODEV if the devname is already nullptr
*/
int unregister_driver_and_memory();
private:
const char *_devname{nullptr}; /**< device node name */