summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorGrissiom <[email protected]>2013-08-22 16:43:06 +0800
committerGrissiom <[email protected]>2013-08-22 16:43:06 +0800
commit246bdde8de4167065b4a52530a9c7be85c189dd8 (patch)
treeb46fcf3ed4f7d49034cbb55ed4b9c1c314c6c058 /components/drivers
parent824261d3bc8467f6220061f43d22321f1ce50bc3 (diff)
dev/portal: fix bug in portal callback forwarding
When forwarding rx/tx callback from the underlaying device(pipe), the "dev" argument should be the portal. So the portal callback could think itself as called.
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/src/portal.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/components/drivers/src/portal.c b/components/drivers/src/portal.c
index 26977a8259..779812e9ca 100644
--- a/components/drivers/src/portal.c
+++ b/components/drivers/src/portal.c
@@ -116,7 +116,8 @@ static rt_err_t _portal_rx_indicate(rt_device_t dev, rt_size_t size)
pipe = (struct rt_pipe_device*)dev;
if (pipe->read_portal->parent.rx_indicate)
- return pipe->read_portal->parent.rx_indicate(dev, size);
+ return pipe->read_portal->parent.rx_indicate(
+ (rt_device_t)pipe->read_portal, size);
return -RT_ENOSYS;
}
@@ -130,7 +131,8 @@ static rt_err_t _portal_tx_complete(rt_device_t dev, void *buf)
pipe = (struct rt_pipe_device*)dev;
if (pipe->write_portal->parent.tx_complete)
- return pipe->write_portal->parent.tx_complete(dev, buf);
+ return pipe->write_portal->parent.tx_complete(
+ (rt_device_t)pipe->write_portal, buf);
return -RT_ENOSYS;
}