Jelajahi Sumber

RPMsg-Lite update 02/2018

- code adjustments based on static analysis tool findings
Marek Novak 8 tahun lalu
induk
melakukan
ed7ff3701b

+ 4 - 0
lib/common/llist.c

@@ -56,7 +56,9 @@
 void add_to_list(struct llist **head, struct llist *node)
 {
     if (!node)
+    {
         return;
+    }
 
     if (*head)
     {
@@ -87,7 +89,9 @@ void add_to_list(struct llist **head, struct llist *node)
 void remove_from_list(struct llist **head, struct llist *node)
 {
     if (!(*head) || !(node))
+    {
         return;
+    }
 
     if (node == *head)
     {

+ 2 - 6
lib/include/rpmsg_env.h

@@ -54,8 +54,6 @@
 *       env_free_memory
 *       env_memset
 *       env_memcpy
-*       env_strlen
-*       env_strcpy
 *       env_strncpy
 *       env_print
 *       env_map_vatopa
@@ -141,8 +139,6 @@ void env_free_memory(void *ptr);
 
 void env_memset(void *ptr, int value, unsigned long size);
 void env_memcpy(void *dst, void const *src, unsigned long len);
-size_t env_strlen(const char *str);
-void env_strcpy(char *dest, const char *src);
 int env_strcmp(const char *dst, const char *src);
 void env_strncpy(char *dest, const char *src, unsigned long len);
 int env_strncmp(char *dest, const char *src, unsigned long len);
@@ -342,7 +338,7 @@ void env_unregister_isr(int vector_id);
  *
  * Enables the given interrupt
  *
- * @param vector_id   - interrupt vector number
+ * @param vector_id   - virtual interrupt vector number
  */
 
 void env_enable_interrupt(unsigned int vector_id);
@@ -352,7 +348,7 @@ void env_enable_interrupt(unsigned int vector_id);
  *
  * Disables the given interrupt.
  *
- * @param vector_id   - interrupt vector number
+ * @param vector_id   - virtual interrupt vector number
  */
 
 void env_disable_interrupt(unsigned int vector_id);

+ 2 - 3
lib/include/virtqueue.h

@@ -33,7 +33,6 @@
 typedef uint8_t boolean;
 
 #include "virtio_ring.h"
-#include "rpmsg_env.h"
 #include "llist.h"
 
 /*Error Codes*/
@@ -154,8 +153,8 @@ struct vq_static_context
     struct virtqueue vq;
 };
 
-typedef void vq_callback(struct virtqueue *);
-typedef void vq_notify(struct virtqueue *);
+typedef void vq_callback(struct virtqueue *vq);
+typedef void vq_notify(struct virtqueue *vq);
 
 #if (VQUEUE_DEBUG == true)
 #define VQASSERT_BOOL(_vq, _exp, _msg)                             \

+ 18 - 22
lib/rpmsg_lite/porting/environment/rpmsg_env_bm.c

@@ -50,7 +50,6 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 
 static int env_init_counter = 0;
 
@@ -65,17 +64,6 @@ struct isr_info
 };
 static struct isr_info isr_table[ISR_COUNT];
 
-/*!
- * env_in_isr
- *
- * @returns True, if currently in ISR
- *
- */
-inline int env_in_isr(void)
-{
-    return platform_in_isr();
-}
-
 /*!
  * env_init
  *
@@ -85,13 +73,17 @@ inline int env_in_isr(void)
 int env_init(void)
 {
     // verify 'env_init_counter'
-    assert(env_init_counter >= 0);
+    RL_ASSERT(env_init_counter >= 0);
     if (env_init_counter < 0)
+    {
         return -1;
+    }
     env_init_counter++;
     // multiple call of 'env_init' - return ok
     if (1 < env_init_counter)
+    {
         return 0;
+    }
     // first call
     memset(isr_table, 0, sizeof(isr_table));
     return platform_init();
@@ -107,14 +99,18 @@ int env_init(void)
 int env_deinit(void)
 {
     // verify 'env_init_counter'
-    assert(env_init_counter > 0);
+    RL_ASSERT(env_init_counter > 0);
     if (env_init_counter <= 0)
+    {
         return -1;
+    }
     // counter on zero - call platform deinit
     env_init_counter--;
     // multiple call of 'env_deinit' - return ok
     if (0 < env_init_counter)
+    {
         return 0;
+    }
     // last call
     return platform_deinit();
 }
@@ -316,12 +312,12 @@ void env_sleep_msec(int num_msec)
  *
  * Registers interrupt handler data for the given interrupt vector.
  *
- * @param vector_id Virtual interrupt vector number
- * @param data Interrupt handler data (virtqueue)
+ * @param vector_id - virtual interrupt vector number
+ * @param data      - interrupt handler data (virtqueue)
  */
 void env_register_isr(int vector_id, void *data)
 {
-    assert(vector_id < ISR_COUNT);
+    RL_ASSERT(vector_id < ISR_COUNT);
     if (vector_id < ISR_COUNT)
     {
         isr_table[vector_id].data = data;
@@ -337,7 +333,7 @@ void env_register_isr(int vector_id, void *data)
  */
 void env_unregister_isr(int vector_id)
 {
-    assert(vector_id < ISR_COUNT);
+    RL_ASSERT(vector_id < ISR_COUNT);
     if (vector_id < ISR_COUNT)
     {
         isr_table[vector_id].data = NULL;
@@ -349,7 +345,7 @@ void env_unregister_isr(int vector_id)
  *
  * Enables the given interrupt
  *
- * @param vector_id Interrupt vector number
+ * @param vector_id   - virtual interrupt vector number
  */
 
 void env_enable_interrupt(unsigned int vector_id)
@@ -362,7 +358,7 @@ void env_enable_interrupt(unsigned int vector_id)
  *
  * Disables the given interrupt
  *
- * @param vector_id Interrupt vector number
+ * @param vector_id   - virtual interrupt vector number
  */
 
 void env_disable_interrupt(unsigned int vector_id)
@@ -393,7 +389,7 @@ void env_map_memory(unsigned int pa, unsigned int va, unsigned int size, unsigne
  *
  */
 
-void env_disable_cache()
+void env_disable_cache(void)
 {
     platform_cache_all_flush_invalidate();
     platform_cache_disable();
@@ -405,7 +401,7 @@ void env_disable_cache()
 void env_isr(int vector)
 {
     struct isr_info *info;
-    assert(vector < ISR_COUNT);
+    RL_ASSERT(vector < ISR_COUNT);
     if (vector < ISR_COUNT)
     {
         info = &isr_table[vector];

+ 14 - 10
lib/rpmsg_lite/porting/environment/rpmsg_env_freertos.c

@@ -53,7 +53,6 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
 
 static int env_init_counter = 0;
 SemaphoreHandle_t env_sema = NULL;
@@ -75,7 +74,7 @@ static struct isr_info isr_table[ISR_COUNT];
  * @returns - true, if currently in ISR
  *
  */
-int env_in_isr(void)
+static int env_in_isr(void)
 {
     return platform_in_isr();
 }
@@ -91,7 +90,7 @@ int env_init(void)
     int retval;
     vTaskSuspendAll(); /* stop scheduler */
     // verify 'env_init_counter'
-    assert(env_init_counter >= 0);
+    RL_ASSERT(env_init_counter >= 0);
     if (env_init_counter < 0)
     {
         xTaskResumeAll(); /* re-enable scheduler */
@@ -137,7 +136,7 @@ int env_deinit(void)
 
     vTaskSuspendAll(); /* stop scheduler */
     // verify 'env_init_counter'
-    assert(env_init_counter > 0);
+    RL_ASSERT(env_init_counter > 0);
     if (env_init_counter <= 0)
     {
         xTaskResumeAll(); /* re-enable scheduler */
@@ -182,7 +181,10 @@ void *env_allocate_memory(unsigned int size)
  */
 void env_free_memory(void *ptr)
 {
-    vPortFree(ptr);
+    if (ptr != NULL)
+    {
+        vPortFree(ptr);
+    }
 }
 
 /*!
@@ -376,7 +378,9 @@ int env_create_sync_lock(void **lock, int state)
 void env_delete_sync_lock(void *lock)
 {
     if (lock)
+    {
         env_delete_mutex(lock);
+    }
 }
 
 /*!
@@ -440,7 +444,7 @@ void env_sleep_msec(int num_msec)
  */
 void env_register_isr(int vector_id, void *data)
 {
-    assert(vector_id < ISR_COUNT);
+    RL_ASSERT(vector_id < ISR_COUNT);
     if (vector_id < ISR_COUNT)
     {
         isr_table[vector_id].data = data;
@@ -456,7 +460,7 @@ void env_register_isr(int vector_id, void *data)
  */
 void env_unregister_isr(int vector_id)
 {
-    assert(vector_id < ISR_COUNT);
+    RL_ASSERT(vector_id < ISR_COUNT);
     if (vector_id < ISR_COUNT)
     {
         isr_table[vector_id].data = NULL;
@@ -468,7 +472,7 @@ void env_unregister_isr(int vector_id)
  *
  * Enables the given interrupt
  *
- * @param vector_id   - interrupt vector number
+ * @param vector_id   - virtual interrupt vector number
  */
 
 void env_enable_interrupt(unsigned int vector_id)
@@ -481,7 +485,7 @@ void env_enable_interrupt(unsigned int vector_id)
  *
  * Disables the given interrupt
  *
- * @param vector_id   - interrupt vector number
+ * @param vector_id   - virtual interrupt vector number
  */
 
 void env_disable_interrupt(unsigned int vector_id)
@@ -544,7 +548,7 @@ unsigned long long env_get_timestamp(void)
 void env_isr(int vector)
 {
     struct isr_info *info;
-    assert(vector < ISR_COUNT);
+    RL_ASSERT(vector < ISR_COUNT);
     if (vector < ISR_COUNT)
     {
         info = &isr_table[vector];

+ 3 - 1
lib/rpmsg_lite/porting/platform/lpc5410x/rpmsg_platform.c

@@ -131,9 +131,11 @@ void platform_notify(int vq_id)
     MCMGR_TriggerEventForce(kMCMGR_RemoteRPMsgEvent, RL_GET_Q_ID(vq_id));
     env_unlock_mutex(lock);
 #else
+/* Only single RPMsg-Lite instance (LINK_ID) is defined for this dual core device. Extend
+   this statement in case multiple instances of RPMsg-Lite are needed. */
     switch (RL_GET_LINK_ID(vq_id))
     {
-        case 0:
+        case RL_PLATFORM_LPC5410x_M4_M0_LINK_ID:
             env_lock_mutex(lock);
 /* Write directly into the Mailbox register, no need to wait until the content is cleared
    (consumed by the receiver side) because the same walue of the virtqueu ID is written

+ 3 - 1
lib/rpmsg_lite/porting/platform/lpc5411x/rpmsg_platform.c

@@ -131,9 +131,11 @@ void platform_notify(int vq_id)
     MCMGR_TriggerEventForce(kMCMGR_RemoteRPMsgEvent, RL_GET_Q_ID(vq_id));
     env_unlock_mutex(lock);
 #else
+/* Only single RPMsg-Lite instance (LINK_ID) is defined for this dual core device. Extend
+   this statement in case multiple instances of RPMsg-Lite are needed. */
     switch (RL_GET_LINK_ID(vq_id))
     {
-        case 0:
+        case RL_PLATFORM_LPC5411x_M4_M0_LINK_ID:
             env_lock_mutex(lock);
 /* Write directly into the Mailbox register, no need to wait until the content is cleared
    (consumed by the receiver side) because the same walue of the virtqueu ID is written

+ 63 - 8
lib/rpmsg_lite/rpmsg_lite.c

@@ -32,7 +32,6 @@
 
 #include "rpmsg_lite.h"
 #include "rpmsg_platform.h"
-#include "rpmsg_env.h"
 
 RL_PACKED_BEGIN
 /*!
@@ -111,7 +110,7 @@ struct virtqueue_ops
  * @return       RL_NULL if not found, node pointer containing the ept on success
  *
  */
-struct llist *rpmsg_lite_get_endpoint_from_addr(struct rpmsg_lite_instance *rpmsg_lite_dev, unsigned long addr)
+static struct llist *rpmsg_lite_get_endpoint_from_addr(struct rpmsg_lite_instance *rpmsg_lite_dev, unsigned long addr)
 {
     struct llist *rl_ept_lut_head;
 
@@ -387,7 +386,7 @@ static const struct virtqueue_ops remote_vq_ops = {
 };
 
 /* helper function for virtqueue notification */
-void virtqueue_notify(struct virtqueue *vq)
+static void virtqueue_notify(struct virtqueue *vq)
 {
     platform_notify(vq->vq_queue_index);
 }
@@ -417,9 +416,11 @@ struct rpmsg_lite_endpoint *rpmsg_lite_create_ept(struct rpmsg_lite_instance *rp
     struct rpmsg_lite_endpoint *rl_ept;
     struct llist *node;
     unsigned int i;
-    
+
     if (!rpmsg_lite_dev)
+    {
         return RL_NULL;
+    }
 
     env_lock_mutex(rpmsg_lite_dev->lock);
     {
@@ -505,11 +506,15 @@ int rpmsg_lite_destroy_ept(struct rpmsg_lite_instance *rpmsg_lite_dev, struct rp
     struct llist *node;
 
     if (!rpmsg_lite_dev)
+    {
         return RL_ERR_PARAM;
-    
+    }
+
     if (!rl_ept)
+    {
         return RL_ERR_PARAM;
-    
+    }
+
     env_lock_mutex(rpmsg_lite_dev->lock);
     node = rpmsg_lite_get_endpoint_from_addr(rpmsg_lite_dev, rl_ept->addr);
     if (node)
@@ -542,7 +547,9 @@ mmmmmmm m    m          mm   mmmmm  mmmmm
 int rpmsg_lite_is_link_up(struct rpmsg_lite_instance *rpmsg_lite_dev)
 {
     if (!rpmsg_lite_dev)
+    {
         return 0;
+    }
 
     return rpmsg_lite_dev->link_state;
 }
@@ -578,13 +585,19 @@ int rpmsg_lite_format_message(struct rpmsg_lite_instance *rpmsg_lite_dev,
     unsigned long buff_len;
 
     if (!rpmsg_lite_dev)
+    {
         return RL_ERR_PARAM;
+    }
 
     if (!data)
+    {
         return RL_ERR_PARAM;
+    }
 
     if (!rpmsg_lite_dev->link_state)
+    {
         return RL_NOT_READY;
+    }
 
     /* Lock the device to enable exclusive access to virtqueues */
     env_lock_mutex(rpmsg_lite_dev->lock);
@@ -593,7 +606,9 @@ int rpmsg_lite_format_message(struct rpmsg_lite_instance *rpmsg_lite_dev,
     env_unlock_mutex(rpmsg_lite_dev->lock);
 
     if (!buffer && !timeout)
+    {
         return RL_ERR_NO_MEM;
+    }
 
     while (!buffer)
     {
@@ -637,13 +652,17 @@ int rpmsg_lite_send(struct rpmsg_lite_instance *rpmsg_lite_dev,
                     unsigned long timeout)
 {
     if (!ept)
+    {
         return RL_ERR_PARAM;
+    }
 
     // FIXME : may be just copy the data size equal to buffer length and Tx it.
     if (size > RL_BUFFER_PAYLOAD_SIZE)
+    {
         return RL_ERR_BUFF_SIZE;
+    }
 
-    return rpmsg_lite_format_message(rpmsg_lite_dev, ept->addr, dst, data, size, 0, timeout);
+    return rpmsg_lite_format_message(rpmsg_lite_dev, ept->addr, dst, data, size, RL_NO_FLAGS, timeout);
 }
 
 #if defined(RL_API_HAS_ZEROCOPY) && (RL_API_HAS_ZEROCOPY == 1)
@@ -714,13 +733,19 @@ int rpmsg_lite_send_nocopy(struct rpmsg_lite_instance *rpmsg_lite_dev,
     struct rpmsg_hdr_reserved *reserved = RL_NULL;
 
     if (!ept || !data)
+    {
         return RL_ERR_PARAM;
+    }
 
     if (size > RL_BUFFER_PAYLOAD_SIZE)
+    {
         return RL_ERR_BUFF_SIZE;
+    }
 
     if (!rpmsg_lite_dev->link_state)
+    {
         return RL_NOT_READY;
+    }
 
     src = ept->addr;
 
@@ -730,7 +755,7 @@ int rpmsg_lite_send_nocopy(struct rpmsg_lite_instance *rpmsg_lite_dev,
     rpmsg_msg->hdr.dst = dst;
     rpmsg_msg->hdr.src = src;
     rpmsg_msg->hdr.len = size;
-    rpmsg_msg->hdr.flags = 0;
+    rpmsg_msg->hdr.flags = RL_NO_FLAGS;
 
     reserved = (struct rpmsg_hdr_reserved *)&rpmsg_msg->hdr.reserved;
 
@@ -762,9 +787,13 @@ int rpmsg_lite_release_rx_buffer(struct rpmsg_lite_instance *rpmsg_lite_dev, voi
     struct rpmsg_hdr_reserved *reserved = RL_NULL;
 
     if (!rpmsg_lite_dev)
+    {
         return RL_ERR_PARAM;
+    }
     if (!rxbuf)
+    {
         return RL_ERR_PARAM;
+    }
 
     rpmsg_msg = RPMSG_STD_MSG_FROM_BUF(rxbuf);
 
@@ -814,22 +843,32 @@ struct rpmsg_lite_instance *rpmsg_lite_master_init(void *shmem_addr,
     struct rpmsg_lite_instance *rpmsg_lite_dev = NULL;
 
     if ((2 * RL_BUFFER_COUNT) > ((RL_WORD_ALIGN_DOWN(shmem_length - RL_VRING_OVERHEAD)) / RL_BUFFER_SIZE))
+    {
         return NULL;
+    }
 
     if (link_id > RL_PLATFORM_HIGHEST_LINK_ID)
+    {
         return NULL;
+    }
 
     if (!shmem_addr)
+    {
         return NULL;
+    }
 
 #if defined(RL_USE_STATIC_API) && (RL_USE_STATIC_API == 1)
     if (!static_context)
+    {
         return NULL;
+    }
     rpmsg_lite_dev = static_context;
 #else
     rpmsg_lite_dev = env_allocate_memory(sizeof(struct rpmsg_lite_instance));
     if (!rpmsg_lite_dev)
+    {
         return NULL;
+    }
 #endif
 
     env_memset(rpmsg_lite_dev, 0, sizeof(struct rpmsg_lite_instance));
@@ -925,11 +964,17 @@ struct rpmsg_lite_instance *rpmsg_lite_master_init(void *shmem_addr,
 
             env_memset(buffer, 0x00, RL_BUFFER_SIZE);
             if (vqs[j] == rpmsg_lite_dev->rvq)
+            {
                 status = virtqueue_fill_avail_buffers(vqs[j], buffer, RL_BUFFER_SIZE);
+            }
             else if (vqs[j] == rpmsg_lite_dev->tvq)
+            {
                 status = virtqueue_fill_used_buffers(vqs[j], buffer, RL_BUFFER_SIZE);
+            }
             else
+            {
                 RL_ASSERT(0); /* should not happen */
+            }
 
             if (status != RL_SUCCESS)
             {
@@ -979,19 +1024,27 @@ struct rpmsg_lite_instance *rpmsg_lite_remote_init(void *shmem_addr, int link_id
     struct rpmsg_lite_instance *rpmsg_lite_dev = NULL;
 
     if (link_id > RL_PLATFORM_HIGHEST_LINK_ID)
+    {
         return NULL;
+    }
 
     if (!shmem_addr)
+    {
         return NULL;
+    }
 
 #if defined(RL_USE_STATIC_API) && (RL_USE_STATIC_API == 1)
     if (!static_context)
+    {
         return NULL;
+    }
     rpmsg_lite_dev = static_context;
 #else
     rpmsg_lite_dev = env_allocate_memory(sizeof(struct rpmsg_lite_instance));
     if (!rpmsg_lite_dev)
+    {
         return NULL;
+    }
 #endif
 
     env_memset(rpmsg_lite_dev, 0, sizeof(struct rpmsg_lite_instance));
@@ -1077,7 +1130,9 @@ struct rpmsg_lite_instance *rpmsg_lite_remote_init(void *shmem_addr, int link_id
 int rpmsg_lite_deinit(struct rpmsg_lite_instance *rpmsg_lite_dev)
 {
     if (!rpmsg_lite_dev)
+    {
         return RL_ERR_PARAM;
+    }
 
     if (!(rpmsg_lite_dev->rvq && rpmsg_lite_dev->tvq && rpmsg_lite_dev->lock))
     {

+ 16 - 2
lib/rpmsg_lite/rpmsg_ns.c

@@ -29,6 +29,8 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  */
+
+#include "rpmsg_lite.h"
 #include "rpmsg_ns.h"
 
 /* from rpmsg_lite.c { */
@@ -76,7 +78,7 @@ struct rpmsg_ns_msg
  * @return  RL_RELEASE, message is always freed
  *
  */
-int rpmsg_ns_rx_cb(void *payload, int payload_len, unsigned long src, void *priv)
+static int rpmsg_ns_rx_cb(void *payload, int payload_len, unsigned long src, void *priv)
 {
     struct rpmsg_ns_msg *ns_msg_ptr = payload;
     struct rpmsg_ns_callback_data *cb_ctxt = priv;
@@ -85,7 +87,9 @@ int rpmsg_ns_rx_cb(void *payload, int payload_len, unsigned long src, void *priv
 
     /* Drop likely bad messages received at nameservice address */
     if (payload_len == sizeof(struct rpmsg_ns_msg))
+    {
         cb_ctxt->cb(ns_msg_ptr->addr, ns_msg_ptr->name, ns_msg_ptr->flags, cb_ctxt->user_data);
+    }
 
     return RL_RELEASE;
 }
@@ -102,11 +106,15 @@ rpmsg_ns_handle rpmsg_ns_bind(struct rpmsg_lite_instance *rpmsg_lite_dev, rpmsg_
     struct rpmsg_ns_context *ns_ctxt;
 
     if (app_cb == NULL)
+    {
         return NULL;
+    }
 
 #if defined(RL_USE_STATIC_API) && (RL_USE_STATIC_API == 1)
     if (ns_ept_ctxt == NULL)
+    {
         return NULL;
+    }
 
     ns_ctxt = &ns_ept_ctxt->ns_ctxt;
 
@@ -124,7 +132,9 @@ rpmsg_ns_handle rpmsg_ns_bind(struct rpmsg_lite_instance *rpmsg_lite_dev, rpmsg_
 
         cb_ctxt = env_allocate_memory(sizeof(struct rpmsg_ns_callback_data));
         if (cb_ctxt == NULL)
+        {
             return NULL;
+        }
         ns_ctxt = env_allocate_memory(sizeof(struct rpmsg_ns_context));
         if (ns_ctxt == NULL)
         {
@@ -171,15 +181,19 @@ int rpmsg_ns_announce(struct rpmsg_lite_instance *rpmsg_lite_dev,
     struct rpmsg_ns_msg ns_msg;
 
     if (!ept_name)
+    {
         return RL_ERR_PARAM;
+    }
 
     if (!new_ept)
+    {
         return RL_ERR_PARAM;
+    }
 
     env_strncpy(ns_msg.name, ept_name, RL_NS_NAME_SIZE);
     ns_msg.flags = flags;
     ns_msg.addr = new_ept->addr;
 
     return rpmsg_lite_format_message(rpmsg_lite_dev, new_ept->addr, RL_NS_EPT_ADDR, (char *)&ns_msg,
-                                     sizeof(struct rpmsg_ns_msg), 0, RL_BLOCK);
+                                     sizeof(struct rpmsg_ns_msg), RL_NO_FLAGS, RL_BLOCK);
 }

+ 36 - 4
lib/rpmsg_lite/rpmsg_queue.c

@@ -63,11 +63,13 @@ int rpmsg_queue_rx_cb(void *payload, int payload_len, unsigned long src, void *p
 
 rpmsg_queue_handle rpmsg_queue_create(struct rpmsg_lite_instance *rpmsg_lite_dev)
 {
-    int status = -1;
+    int status;
     void *q = NULL;
 
     if (rpmsg_lite_dev == RL_NULL)
+    {
         return RL_NULL;
+    }
 
     /* create message queue for channel default endpoint */
     status = env_create_queue(&q, rpmsg_lite_dev->rvq->vq_nentries, sizeof(rpmsg_queue_rx_cb_data_t));
@@ -82,10 +84,14 @@ rpmsg_queue_handle rpmsg_queue_create(struct rpmsg_lite_instance *rpmsg_lite_dev
 int rpmsg_queue_destroy(struct rpmsg_lite_instance *rpmsg_lite_dev, rpmsg_queue_handle q)
 {
     if (rpmsg_lite_dev == RL_NULL)
+    {
         return RL_ERR_PARAM;
+    }
 
     if (q == RL_NULL)
+    {
         return RL_ERR_PARAM;
+    }
     env_delete_queue((void *)q);
     return RL_SUCCESS;
 }
@@ -98,23 +104,33 @@ int rpmsg_queue_recv(struct rpmsg_lite_instance *rpmsg_lite_dev,
                      int *len,
                      unsigned long timeout)
 {
-    rpmsg_queue_rx_cb_data_t msg;
+    rpmsg_queue_rx_cb_data_t msg = {0};
     int retval = RL_SUCCESS;
 
     if (!rpmsg_lite_dev)
+    {
         return RL_ERR_PARAM;
+    }
     if (!q)
+    {
         return RL_ERR_PARAM;
+    }
     if (!data)
-        return RL_ERR_PARAM;
+    {
+       return RL_ERR_PARAM;
+    }
 
     /* Get an element out of the message queue for the selected endpoint */
     if (env_get_queue((void *)q, &msg, timeout))
     {
         if (src != NULL)
+        {
             *src = msg.src;
+        }
         if (len != NULL)
+        {
             *len = msg.len;
+        }
 
         if (maxlen >= msg.len)
         {
@@ -143,22 +159,32 @@ int rpmsg_queue_recv_nocopy(struct rpmsg_lite_instance *rpmsg_lite_dev,
                             int *len,
                             unsigned long timeout)
 {
-    rpmsg_queue_rx_cb_data_t msg;
+    rpmsg_queue_rx_cb_data_t msg = {0};
 
     if (!rpmsg_lite_dev)
+    {
         return RL_ERR_PARAM;
+    }
     if (!data)
+    {
         return RL_ERR_PARAM;
+    }
     if (!q)
+    {
         return RL_ERR_PARAM;
+    }
 
     /* Get an element out of the message queue for the selected endpoint */
     if (env_get_queue((void *)q, &msg, timeout))
     {
         if (src != NULL)
+        {
             *src = msg.src;
+        }
         if (len != NULL)
+        {
             *len = msg.len;
+        }
 
         *data = msg.data;
 
@@ -171,9 +197,13 @@ int rpmsg_queue_recv_nocopy(struct rpmsg_lite_instance *rpmsg_lite_dev,
 int rpmsg_queue_nocopy_free(struct rpmsg_lite_instance *rpmsg_lite_dev, void *data)
 {
     if (!rpmsg_lite_dev)
+    {
         return RL_ERR_PARAM;
+    }
     if (!data)
+    {
         return RL_ERR_PARAM;
+    }
 
     /* Return used buffer. */
     rpmsg_lite_release_rx_buffer(rpmsg_lite_dev, data);
@@ -184,7 +214,9 @@ int rpmsg_queue_nocopy_free(struct rpmsg_lite_instance *rpmsg_lite_dev, void *da
 int rpmsg_queue_get_current_size(rpmsg_queue_handle q)
 {
     if (!q)
+    {
         return RL_ERR_PARAM;
+    }
 
     /* Return actual queue size. */
     return env_get_current_queue_size((void *)q);

+ 1 - 0
lib/virtio/virtqueue.c

@@ -24,6 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include "rpmsg_env.h"
 #include "virtqueue.h"
 
 /* Prototype for internal functions. */