diff options
| author | liang yongxiang <[email protected]> | 2018-07-07 13:56:21 +0800 |
|---|---|---|
| committer | liang yongxiang <[email protected]> | 2018-07-11 14:58:59 +0800 |
| commit | 5213fd0e952876467909b23bfaa48c700bdb695d (patch) | |
| tree | 7b44600b54d6374a0de608dcce96dd860bfa4eb8 | |
| parent | 7b984c2f547849191036a7b15d132ff967bb9d42 (diff) | |
[kernel] splite rt_device_unregister() and rt_device_destroy(), add assert to device object
| -rw-r--r-- | src/device.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/device.c b/src/device.c index d5535b5aa1..0b662ae620 100644 --- a/src/device.c +++ b/src/device.c @@ -94,6 +94,8 @@ RTM_EXPORT(rt_device_register); rt_err_t rt_device_unregister(rt_device_t dev) { RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); + RT_ASSERT(rt_object_is_systemobject(&dev->parent)); rt_object_detach(&(dev->parent)); @@ -191,15 +193,18 @@ RTM_EXPORT(rt_device_create); /** * This function destroy the specific device object. * - * @param device, the specific device object. + * @param dev, the specific device object. */ -void rt_device_destroy(rt_device_t device) +void rt_device_destroy(rt_device_t dev) { - /* unregister device firstly */ - rt_device_unregister(device); + RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); + RT_ASSERT(rt_object_is_systemobject(&dev->parent) == RT_FALSE); + + rt_object_detach(&(dev->parent)); /* release this device object */ - rt_free(device); + rt_free(dev); } RTM_EXPORT(rt_device_destroy); #endif @@ -251,6 +256,7 @@ rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflag) rt_err_t result = RT_EOK; RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); /* if device is not initialized, initialize it. */ if (!(dev->flag & RT_DEVICE_FLAG_ACTIVATED)) @@ -315,6 +321,7 @@ rt_err_t rt_device_close(rt_device_t dev) rt_err_t result = RT_EOK; RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); if (dev->ref_count == 0) return -RT_ERROR; @@ -356,6 +363,7 @@ rt_size_t rt_device_read(rt_device_t dev, rt_size_t size) { RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); if (dev->ref_count == 0) { @@ -394,6 +402,7 @@ rt_size_t rt_device_write(rt_device_t dev, rt_size_t size) { RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); if (dev->ref_count == 0) { @@ -426,6 +435,7 @@ RTM_EXPORT(rt_device_write); rt_err_t rt_device_control(rt_device_t dev, int cmd, void *arg) { RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); /* call device write interface */ if (device_control != RT_NULL) @@ -451,6 +461,7 @@ rt_device_set_rx_indicate(rt_device_t dev, rt_err_t (*rx_ind)(rt_device_t dev, rt_size_t size)) { RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); dev->rx_indicate = rx_ind; @@ -472,6 +483,7 @@ rt_device_set_tx_complete(rt_device_t dev, rt_err_t (*tx_done)(rt_device_t dev, void *buffer)) { RT_ASSERT(dev != RT_NULL); + RT_ASSERT(rt_object_get_type(&dev->parent) == RT_Object_Class_Device); dev->tx_complete = tx_done; |
