mirror of
https://github.com/OpenAMP/open-amp.git
synced 2026-10-02 18:23:21 +08:00
apps: Convert examples to rpmsg_get_{tx,rx}_buffer_size()
The contents of app() in these examples is given a rpmsg_device. We should not have to know about the backing transport layer. We assume it is virtio and call into the virtio layer to get the buffer size. This information is now available from the rpmsg layer. Use those functions to make the app() agnostic to the backing layer. Signed-off-by: Andrew Davis <afd@ti.com>
This commit is contained in:
committed by
Arnaud Pouliquen
parent
52c27fbd91
commit
89a8a3002f
@@ -76,8 +76,8 @@ int app(struct rpmsg_device *rdev, void *priv)
|
||||
|
||||
LPRINTF("Successfully created rpmsg endpoint.\r\n");
|
||||
|
||||
LPRINTF("RPMsg device TX buffer size: %#x\r\n", rpmsg_virtio_get_tx_buffer_size(rdev));
|
||||
LPRINTF("RPMsg device RX buffer size: %#x\r\n", rpmsg_virtio_get_rx_buffer_size(rdev));
|
||||
LPRINTF("RPMsg device TX buffer size: %#x\r\n", rpmsg_get_tx_buffer_size(&lept));
|
||||
LPRINTF("RPMsg device RX buffer size: %#x\r\n", rpmsg_get_rx_buffer_size(&lept));
|
||||
|
||||
while(1) {
|
||||
platform_poll(priv);
|
||||
|
||||
@@ -103,9 +103,20 @@ int app (struct rpmsg_device *rdev, void *priv)
|
||||
LPRINTF(" 1 - Send data to remote core, retrieve the echo");
|
||||
LPRINTF(" and validate its integrity ..\r\n");
|
||||
|
||||
max_size = rpmsg_virtio_get_buffer_size(rdev);
|
||||
if (max_size < 0) {
|
||||
/* Create RPMsg endpoint */
|
||||
ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME,
|
||||
RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
|
||||
rpmsg_endpoint_cb, rpmsg_service_unbind);
|
||||
|
||||
if (ret) {
|
||||
LPERROR("Failed to create RPMsg endpoint.\r\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
max_size = rpmsg_get_tx_buffer_size(&lept);
|
||||
if (max_size <= 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
@@ -116,22 +127,12 @@ int app (struct rpmsg_device *rdev, void *priv)
|
||||
|
||||
if (!i_payload) {
|
||||
LPERROR("memory allocation failed.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Create RPMsg endpoint */
|
||||
ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME,
|
||||
RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
|
||||
rpmsg_endpoint_cb, rpmsg_service_unbind);
|
||||
|
||||
if (ret) {
|
||||
LPERROR("Failed to create RPMsg endpoint.\r\n");
|
||||
metal_free_memory(i_payload);
|
||||
return ret;
|
||||
}
|
||||
|
||||
LPRINTF("RPMsg driver TX buffer size: %#x\r\n", rpmsg_virtio_get_tx_buffer_size(rdev));
|
||||
LPRINTF("RPMsg driver RX buffer size: %#x\r\n", rpmsg_virtio_get_rx_buffer_size(rdev));
|
||||
LPRINTF("RPMsg device TX buffer size: %#x\r\n", rpmsg_get_tx_buffer_size(&lept));
|
||||
LPRINTF("RPMsg device RX buffer size: %#x\r\n", rpmsg_get_rx_buffer_size(&lept));
|
||||
|
||||
while (!is_rpmsg_ept_ready(&lept))
|
||||
platform_poll(priv);
|
||||
|
||||
@@ -122,14 +122,6 @@ static int app(struct rpmsg_device *rdev, void *priv)
|
||||
LPRINTF(" 1 - Send data to remote core, retrieve the echo");
|
||||
LPRINTF(" and validate its integrity ..\r\n");
|
||||
|
||||
max_size = rpmsg_virtio_get_buffer_size(rdev);
|
||||
if ((int32_t)max_size < 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
num_payloads = max_size - PAYLOAD_MIN_SIZE + 1;
|
||||
|
||||
/* Create RPMsg endpoint */
|
||||
ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME,
|
||||
RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
|
||||
@@ -142,8 +134,17 @@ static int app(struct rpmsg_device *rdev, void *priv)
|
||||
|
||||
while (!is_rpmsg_ept_ready(&lept))
|
||||
platform_poll(priv);
|
||||
|
||||
LPRINTF("RPMSG endpoint is binded with remote.\r\n");
|
||||
|
||||
max_size = rpmsg_get_tx_buffer_size(&lept);
|
||||
if ((int32_t)max_size <= 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
num_payloads = max_size - PAYLOAD_MIN_SIZE + 1;
|
||||
|
||||
for (i = 0, size = PAYLOAD_MIN_SIZE; i < num_payloads; i++, size++) {
|
||||
struct _payload *i_payload;
|
||||
|
||||
|
||||
@@ -116,18 +116,6 @@ int app (struct rpmsg_device *rdev, void *priv)
|
||||
LPRINTF(" and validate its integrity ..\r\n");
|
||||
|
||||
num_pkgs = NUMS_PACKAGES;
|
||||
max_size = rpmsg_virtio_get_buffer_size(rdev);
|
||||
if (max_size < 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
return -1;
|
||||
}
|
||||
i_payload = (struct _payload *)metal_allocate_memory(max_size);
|
||||
|
||||
if (!i_payload) {
|
||||
LPERROR("memory allocation failed.\r\n");
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
|
||||
/* Create RPMsg endpoint */
|
||||
ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME, APP_EPT_ADDR,
|
||||
@@ -135,7 +123,6 @@ int app (struct rpmsg_device *rdev, void *priv)
|
||||
rpmsg_endpoint_cb, rpmsg_service_unbind);
|
||||
if (ret) {
|
||||
LPERROR("Failed to create RPMsg endpoint.\r\n");
|
||||
metal_free_memory(i_payload);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -143,6 +130,21 @@ int app (struct rpmsg_device *rdev, void *priv)
|
||||
platform_poll(priv);
|
||||
LPRINTF("RPMSG endpoint is binded with remote.\r\n");
|
||||
|
||||
max_size = rpmsg_get_tx_buffer_size(&lept);
|
||||
if (max_size <= 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
i_payload = (struct _payload *)metal_allocate_memory(max_size);
|
||||
|
||||
if (!i_payload) {
|
||||
LPERROR("memory allocation failed.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
|
||||
memset(&(i_payload->data[0]), 0xA5, max_size);
|
||||
for (s = PAYLOAD_MIN_SIZE; s <= max_size; s++) {
|
||||
int size;
|
||||
|
||||
@@ -132,14 +132,6 @@ int app(struct rpmsg_device *rdev, void *priv)
|
||||
int expect_rnum = 0;
|
||||
void *buff_list[MAX_NB_TX_BUFF];
|
||||
|
||||
max_size = rpmsg_virtio_get_buffer_size(rdev);
|
||||
if (((int)max_size) < 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
num_payloads = max_size - PAYLOAD_MIN_SIZE + 1;
|
||||
|
||||
/* Create RPMsg endpoint */
|
||||
ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME,
|
||||
RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
|
||||
@@ -155,6 +147,15 @@ int app(struct rpmsg_device *rdev, void *priv)
|
||||
|
||||
LPRINTF("RPMSG endpoint is binded with remote.\r\n");
|
||||
|
||||
max_size = rpmsg_get_tx_buffer_size(&lept);
|
||||
if (((int)max_size) <= 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
num_payloads = max_size - PAYLOAD_MIN_SIZE + 1;
|
||||
|
||||
LPRINTF(" 1 - Get some TX buffers\r\n");
|
||||
for (i = 0; i < MAX_NB_TX_BUFF; i++)
|
||||
buff_list[i] = rpmsg_get_tx_payload_buffer(&lept, &max_size, 1);
|
||||
|
||||
+15
-14
@@ -108,9 +108,19 @@ int app (struct rpmsg_device *rdev, void *priv)
|
||||
LPRINTF(" 1 - Send data to remote core, retrieve the echo");
|
||||
LPRINTF(" and validate its integrity ..\r\n");
|
||||
|
||||
max_size = rpmsg_virtio_get_buffer_size(rdev);
|
||||
if (max_size < 0) {
|
||||
/* Create RPMsg endpoint */
|
||||
ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME,
|
||||
RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
|
||||
rpmsg_endpoint_cb, rpmsg_service_unbind);
|
||||
if (ret) {
|
||||
LPERROR("Failed to create RPMsg endpoint.\r\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
max_size = rpmsg_get_tx_buffer_size(&lept);
|
||||
if (max_size <= 0) {
|
||||
LPERROR("No available buffer size.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
max_size -= sizeof(struct _payload);
|
||||
@@ -121,21 +131,12 @@ int app (struct rpmsg_device *rdev, void *priv)
|
||||
|
||||
if (!i_payload) {
|
||||
LPERROR("memory allocation failed.\r\n");
|
||||
rpmsg_destroy_ept(&lept);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Create RPMsg endpoint */
|
||||
ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME,
|
||||
RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
|
||||
rpmsg_endpoint_cb, rpmsg_service_unbind);
|
||||
if (ret) {
|
||||
LPERROR("Failed to create RPMsg endpoint.\r\n");
|
||||
metal_free_memory(i_payload);
|
||||
return ret;
|
||||
}
|
||||
|
||||
LPRINTF("RPMsg driver TX buffer size: %#x\r\n", rpmsg_virtio_get_tx_buffer_size(rdev));
|
||||
LPRINTF("RPMsg driver RX buffer size: %#x\r\n", rpmsg_virtio_get_rx_buffer_size(rdev));
|
||||
LPRINTF("RPMsg device TX buffer size: %#x\r\n", rpmsg_get_tx_buffer_size(&lept));
|
||||
LPRINTF("RPMsg device RX buffer size: %#x\r\n", rpmsg_get_rx_buffer_size(&lept));
|
||||
|
||||
while (!is_rpmsg_ept_ready(&lept))
|
||||
platform_poll(priv);
|
||||
|
||||
Reference in New Issue
Block a user