openamp: add openamp patches
0006-openamp-fix-scenario-case.patch 0007-openamp-divide-shram-to-TX-shram-RX-shram.patch 0008-rpmsg_virtio-don-t-need-check-status-when-get_tx_pay.patch Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
parent
759898c090
commit
bae9a97d31
@ -1,7 +1,7 @@
|
|||||||
From d14f87ea5ff1371318acaf4539116b72986bae2c Mon Sep 17 00:00:00 2001
|
From c2b9d18c72eebe558c6a013bf39818c47cffecc3 Mon Sep 17 00:00:00 2001
|
||||||
From: ligd <liguiding1@xiaomi.com>
|
From: ligd <liguiding1@xiaomi.com>
|
||||||
Date: Thu, 18 Nov 2021 20:54:45 +0800
|
Date: Thu, 18 Nov 2021 20:54:45 +0800
|
||||||
Subject: [PATCH] openamp: fix scenario case
|
Subject: [PATCH 1/3] openamp: fix scenario case
|
||||||
|
|
||||||
description:
|
description:
|
||||||
There are two CPUs use IPC.
|
There are two CPUs use IPC.
|
||||||
@ -43,7 +43,6 @@ Resolve:
|
|||||||
add recursive call rpmsg_virtio_rx_callback() when get_tx_buffer() failed
|
add recursive call rpmsg_virtio_rx_callback() when get_tx_buffer() failed
|
||||||
|
|
||||||
Signed-off-by: ligd <liguiding1@xiaomi.com>
|
Signed-off-by: ligd <liguiding1@xiaomi.com>
|
||||||
Change-Id: I60512c50327f180a0aba891e3ec847b211e172db
|
|
||||||
---
|
---
|
||||||
lib/include/openamp/remoteproc.h | 10 +++
|
lib/include/openamp/remoteproc.h | 10 +++
|
||||||
lib/include/openamp/rpmsg_virtio.h | 6 ++
|
lib/include/openamp/rpmsg_virtio.h | 6 ++
|
||||||
@ -53,7 +52,7 @@ Change-Id: I60512c50327f180a0aba891e3ec847b211e172db
|
|||||||
5 files changed, 97 insertions(+), 66 deletions(-)
|
5 files changed, 97 insertions(+), 66 deletions(-)
|
||||||
|
|
||||||
diff --git a/lib/include/openamp/remoteproc.h open-amp/lib/include/openamp/remoteproc.h
|
diff --git a/lib/include/openamp/remoteproc.h open-amp/lib/include/openamp/remoteproc.h
|
||||||
index a71327b..222079e 100644
|
index a71327b..328ec3f 100644
|
||||||
--- a/lib/include/openamp/remoteproc.h
|
--- a/lib/include/openamp/remoteproc.h
|
||||||
+++ open-amp/lib/include/openamp/remoteproc.h
|
+++ open-amp/lib/include/openamp/remoteproc.h
|
||||||
@@ -449,6 +449,16 @@ struct remoteproc_ops {
|
@@ -449,6 +449,16 @@ struct remoteproc_ops {
|
||||||
@ -61,56 +60,56 @@ index a71327b..222079e 100644
|
|||||||
void *va, size_t size,
|
void *va, size_t size,
|
||||||
struct remoteproc_mem *buf);
|
struct remoteproc_mem *buf);
|
||||||
+ /**
|
+ /**
|
||||||
+ * can_recursive
|
+ * wait_tx_buffer
|
||||||
+ *
|
+ *
|
||||||
+ * Check current vdev can do recursive rx_callabck or not
|
+ * Wait tx buffer available
|
||||||
+ *
|
+ *
|
||||||
+ * @rproc - pointer to remoteproc instance
|
+ * @rproc - pointer to remoteproc instance
|
||||||
+ *
|
+ *
|
||||||
+ * return true if can do recursive rx_callabck.
|
+ * return none
|
||||||
+ */
|
+ */
|
||||||
+ int (*can_recursive)(struct remoteproc *rproc);
|
+ int (*wait_tx_buffer)(struct remoteproc *rproc);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Remoteproc error codes */
|
/* Remoteproc error codes */
|
||||||
diff --git a/lib/include/openamp/rpmsg_virtio.h open-amp/lib/include/openamp/rpmsg_virtio.h
|
diff --git a/lib/include/openamp/rpmsg_virtio.h open-amp/lib/include/openamp/rpmsg_virtio.h
|
||||||
index e552b96..fa556a2 100644
|
index e552b96..ac155fb 100644
|
||||||
--- a/lib/include/openamp/rpmsg_virtio.h
|
--- a/lib/include/openamp/rpmsg_virtio.h
|
||||||
+++ open-amp/lib/include/openamp/rpmsg_virtio.h
|
+++ open-amp/lib/include/openamp/rpmsg_virtio.h
|
||||||
@@ -114,6 +114,12 @@ rpmsg_virtio_create_virtqueues(struct rpmsg_virtio_device *rvdev,
|
@@ -114,6 +114,12 @@ rpmsg_virtio_create_virtqueues(struct rpmsg_virtio_device *rvdev,
|
||||||
callbacks);
|
callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
+static inline int rpmsg_virtio_can_recursive(struct rpmsg_virtio_device *rvdev)
|
+static inline int rpmsg_virtio_wait_tx_buffer(struct rpmsg_virtio_device *rvdev)
|
||||||
+{
|
+{
|
||||||
+ return rvdev->vdev->func->can_recursive ?
|
+ return rvdev->vdev->func->wait_tx_buffer ?
|
||||||
+ rvdev->vdev->func->can_recursive(rvdev->vdev) : 0;
|
+ rvdev->vdev->func->wait_tx_buffer(rvdev->vdev) : -EAGAIN;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
/**
|
/**
|
||||||
* rpmsg_virtio_get_buffer_size - get rpmsg virtio buffer size
|
* rpmsg_virtio_get_buffer_size - get rpmsg virtio buffer size
|
||||||
*
|
*
|
||||||
diff --git a/lib/include/openamp/virtio.h open-amp/lib/include/openamp/virtio.h
|
diff --git a/lib/include/openamp/virtio.h open-amp/lib/include/openamp/virtio.h
|
||||||
index 55c8ea5..ce808cc 100644
|
index 55c8ea5..34bccaa 100644
|
||||||
--- a/lib/include/openamp/virtio.h
|
--- a/lib/include/openamp/virtio.h
|
||||||
+++ open-amp/lib/include/openamp/virtio.h
|
+++ open-amp/lib/include/openamp/virtio.h
|
||||||
@@ -137,6 +137,7 @@ struct virtio_dispatch {
|
@@ -137,6 +137,7 @@ struct virtio_dispatch {
|
||||||
void *src, int length);
|
void *src, int length);
|
||||||
void (*reset_device)(struct virtio_device *dev);
|
void (*reset_device)(struct virtio_device *dev);
|
||||||
void (*notify)(struct virtqueue *vq);
|
void (*notify)(struct virtqueue *vq);
|
||||||
+ int (*can_recursive)(struct virtio_device *dev);
|
+ int (*wait_tx_buffer)(struct virtio_device *dev);
|
||||||
};
|
};
|
||||||
|
|
||||||
int virtio_create_virtqueues(struct virtio_device *vdev, unsigned int flags,
|
int virtio_create_virtqueues(struct virtio_device *vdev, unsigned int flags,
|
||||||
diff --git a/lib/remoteproc/remoteproc_virtio.c open-amp/lib/remoteproc/remoteproc_virtio.c
|
diff --git a/lib/remoteproc/remoteproc_virtio.c open-amp/lib/remoteproc/remoteproc_virtio.c
|
||||||
index ed9f33c..937f294 100644
|
index ed9f33c..0de31ee 100644
|
||||||
--- a/lib/remoteproc/remoteproc_virtio.c
|
--- a/lib/remoteproc/remoteproc_virtio.c
|
||||||
+++ open-amp/lib/remoteproc/remoteproc_virtio.c
|
+++ open-amp/lib/remoteproc/remoteproc_virtio.c
|
||||||
@@ -30,6 +30,17 @@ static void rproc_virtio_virtqueue_notify(struct virtqueue *vq)
|
@@ -30,6 +30,17 @@ static void rproc_virtio_virtqueue_notify(struct virtqueue *vq)
|
||||||
rpvdev->notify(rpvdev->priv, vring_info->notifyid);
|
rpvdev->notify(rpvdev->priv, vring_info->notifyid);
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int rproc_virtio_can_recursive(struct virtio_device *vdev)
|
+static int rproc_virtio_wait_tx_buffer(struct virtio_device *vdev)
|
||||||
+{
|
+{
|
||||||
+ struct remoteproc_virtio *rpvdev;
|
+ struct remoteproc_virtio *rpvdev;
|
||||||
+ struct remoteproc *rproc;
|
+ struct remoteproc *rproc;
|
||||||
@ -118,7 +117,7 @@ index ed9f33c..937f294 100644
|
|||||||
+ rpvdev = metal_container_of(vdev, struct remoteproc_virtio, vdev);
|
+ rpvdev = metal_container_of(vdev, struct remoteproc_virtio, vdev);
|
||||||
+ rproc = rpvdev->priv;
|
+ rproc = rpvdev->priv;
|
||||||
+
|
+
|
||||||
+ return rproc->ops->can_recursive ? rproc->ops->can_recursive(rproc) : 0;
|
+ return rproc->ops->wait_tx_buffer ? rproc->ops->wait_tx_buffer(rproc) : -EAGAIN;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
static unsigned char rproc_virtio_get_status(struct virtio_device *vdev)
|
static unsigned char rproc_virtio_get_status(struct virtio_device *vdev)
|
||||||
@ -128,12 +127,12 @@ index ed9f33c..937f294 100644
|
|||||||
.get_features = rproc_virtio_get_features,
|
.get_features = rproc_virtio_get_features,
|
||||||
.read_config = rproc_virtio_read_config,
|
.read_config = rproc_virtio_read_config,
|
||||||
.notify = rproc_virtio_virtqueue_notify,
|
.notify = rproc_virtio_virtqueue_notify,
|
||||||
+ .can_recursive = rproc_virtio_can_recursive,
|
+ .wait_tx_buffer = rproc_virtio_wait_tx_buffer,
|
||||||
#ifndef VIRTIO_SLAVE_ONLY
|
#ifndef VIRTIO_SLAVE_ONLY
|
||||||
/*
|
/*
|
||||||
* We suppose here that the vdev is in a shared memory so that can
|
* We suppose here that the vdev is in a shared memory so that can
|
||||||
diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c
|
diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c
|
||||||
index 2687320..a407be9 100644
|
index 2687320..30c3ab3 100644
|
||||||
--- a/lib/rpmsg/rpmsg_virtio.c
|
--- a/lib/rpmsg/rpmsg_virtio.c
|
||||||
+++ open-amp/lib/rpmsg/rpmsg_virtio.c
|
+++ open-amp/lib/rpmsg/rpmsg_virtio.c
|
||||||
@@ -286,6 +286,72 @@ static void rpmsg_virtio_release_rx_buffer(struct rpmsg_device *rdev,
|
@@ -286,6 +286,72 @@ static void rpmsg_virtio_release_rx_buffer(struct rpmsg_device *rdev,
|
||||||
@ -213,8 +212,8 @@ index 2687320..a407be9 100644
|
|||||||
metal_mutex_release(&rdev->lock);
|
metal_mutex_release(&rdev->lock);
|
||||||
if (rp_hdr || !tick_count)
|
if (rp_hdr || !tick_count)
|
||||||
break;
|
break;
|
||||||
+ if (rpmsg_virtio_can_recursive(rvdev))
|
+ if (rpmsg_virtio_wait_tx_buffer(rvdev) >= 0)
|
||||||
+ rpmsg_virtio_rx_callback(rvdev->rvq);
|
+ continue;
|
||||||
metal_sleep_usec(RPMSG_TICKS_PER_INTERVAL);
|
metal_sleep_usec(RPMSG_TICKS_PER_INTERVAL);
|
||||||
tick_count--;
|
tick_count--;
|
||||||
}
|
}
|
||||||
|
130
openamp/0007-openamp-divide-shram-to-TX-shram-RX-shram.patch
Normal file
130
openamp/0007-openamp-divide-shram-to-TX-shram-RX-shram.patch
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
From 0de084b8b7c65502a2339221b59aeaa60edbe8c5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: ligd <liguiding1@xiaomi.com>
|
||||||
|
Date: Mon, 7 Feb 2022 20:36:25 +0800
|
||||||
|
Subject: [PATCH 2/3] openamp: divide shram to TX shram & RX shram
|
||||||
|
|
||||||
|
Add new API rpmsg_init_vdev_ext()
|
||||||
|
|
||||||
|
Signed-off-by: ligd <liguiding1@xiaomi.com>
|
||||||
|
Change-Id: I790cdcf27276ed12a633fab9cc8aefff7c7da830
|
||||||
|
---
|
||||||
|
lib/include/openamp/rpmsg_virtio.h | 30 +++++++++++++++++++++++++++++
|
||||||
|
lib/rpmsg/rpmsg_virtio.c | 31 ++++++++++++++++++++----------
|
||||||
|
2 files changed, 51 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/include/openamp/rpmsg_virtio.h open-amp/lib/include/openamp/rpmsg_virtio.h
|
||||||
|
index ac155fb..9d6a16e 100644
|
||||||
|
--- a/lib/include/openamp/rpmsg_virtio.h
|
||||||
|
+++ open-amp/lib/include/openamp/rpmsg_virtio.h
|
||||||
|
@@ -156,6 +156,36 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
|
||||||
|
struct metal_io_region *shm_io,
|
||||||
|
struct rpmsg_virtio_shm_pool *shpool);
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * rpmsg_init_vdev_ext - initialize rpmsg virtio device
|
||||||
|
+ * Master side:
|
||||||
|
+ * Initialize RPMsg virtio queues and shared buffers, the address of shm can be
|
||||||
|
+ * ANY. In this case, function will get shared memory from system shared memory
|
||||||
|
+ * pools. If the vdev has RPMsg name service feature, this API will create an
|
||||||
|
+ * name service endpoint.
|
||||||
|
+ *
|
||||||
|
+ * Slave side:
|
||||||
|
+ * This API will not return until the driver ready is set by the master side.
|
||||||
|
+ *
|
||||||
|
+ * @param rvdev - pointer to the rpmsg virtio device
|
||||||
|
+ * @param vdev - pointer to the virtio device
|
||||||
|
+ * @param ns_bind_cb - callback handler for name service announcement without
|
||||||
|
+ * local endpoints waiting to bind.
|
||||||
|
+ * @param shm_io - pointer to the share memory I/O region.
|
||||||
|
+ * @param tx_shpool - pointer to tx shared memory pool. rpmsg_virtio_init_shm_pool
|
||||||
|
+ * has to be called first to fill this structure.
|
||||||
|
+ * @param rx_shpool - pointer to rx shared memory pool. rpmsg_virtio_init_shm_pool
|
||||||
|
+ * has to be called first to fill this structure.
|
||||||
|
+ *
|
||||||
|
+ * @return - status of function execution
|
||||||
|
+ */
|
||||||
|
+int rpmsg_init_vdev_ext(struct rpmsg_virtio_device *rvdev,
|
||||||
|
+ struct virtio_device *vdev,
|
||||||
|
+ rpmsg_ns_bind_cb ns_bind_cb,
|
||||||
|
+ struct metal_io_region *shm_io,
|
||||||
|
+ struct rpmsg_virtio_shm_pool *tx_shpool,
|
||||||
|
+ struct rpmsg_virtio_shm_pool *rx_shpool);
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* rpmsg_deinit_vdev - deinitialize rpmsg virtio device
|
||||||
|
*
|
||||||
|
diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c
|
||||||
|
index 30c3ab3..8a2c795 100644
|
||||||
|
--- a/lib/rpmsg/rpmsg_virtio.c
|
||||||
|
+++ open-amp/lib/rpmsg/rpmsg_virtio.c
|
||||||
|
@@ -604,11 +604,12 @@ int rpmsg_virtio_get_buffer_size(struct rpmsg_device *rdev)
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
|
||||||
|
- struct virtio_device *vdev,
|
||||||
|
- rpmsg_ns_bind_cb ns_bind_cb,
|
||||||
|
- struct metal_io_region *shm_io,
|
||||||
|
- struct rpmsg_virtio_shm_pool *shpool)
|
||||||
|
+int rpmsg_init_vdev_ext(struct rpmsg_virtio_device *rvdev,
|
||||||
|
+ struct virtio_device *vdev,
|
||||||
|
+ rpmsg_ns_bind_cb ns_bind_cb,
|
||||||
|
+ struct metal_io_region *shm_io,
|
||||||
|
+ struct rpmsg_virtio_shm_pool *tx_shpool,
|
||||||
|
+ struct rpmsg_virtio_shm_pool *rx_shpool)
|
||||||
|
{
|
||||||
|
struct rpmsg_device *rdev;
|
||||||
|
const char *vq_names[RPMSG_NUM_VRINGS];
|
||||||
|
@@ -654,11 +655,11 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
|
||||||
|
* Since device is RPMSG Remote so we need to manage the
|
||||||
|
* shared buffers. Create shared memory pool to handle buffers.
|
||||||
|
*/
|
||||||
|
- if (!shpool)
|
||||||
|
+ if (!tx_shpool || !rx_shpool)
|
||||||
|
return RPMSG_ERR_PARAM;
|
||||||
|
- if (!shpool->size)
|
||||||
|
+ if (!tx_shpool->size || !rx_shpool->size)
|
||||||
|
return RPMSG_ERR_NO_BUFF;
|
||||||
|
- rvdev->shpool = shpool;
|
||||||
|
+ rvdev->shpool = tx_shpool;
|
||||||
|
|
||||||
|
vq_names[0] = "rx_vq";
|
||||||
|
vq_names[1] = "tx_vq";
|
||||||
|
@@ -670,7 +671,8 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
|
||||||
|
#endif /*!VIRTIO_SLAVE_ONLY*/
|
||||||
|
|
||||||
|
#ifndef VIRTIO_MASTER_ONLY
|
||||||
|
- (void)shpool;
|
||||||
|
+ (void)tx_shpool;
|
||||||
|
+ (void)rx_shpool;
|
||||||
|
if (role == RPMSG_REMOTE) {
|
||||||
|
vq_names[0] = "tx_vq";
|
||||||
|
vq_names[1] = "rx_vq";
|
||||||
|
@@ -711,7 +713,7 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
|
||||||
|
vqbuf.len = rvdev->config.txbuf_size;
|
||||||
|
for (idx = 0; idx < rvdev->rvq->vq_nentries; idx++) {
|
||||||
|
/* Initialize TX virtqueue buffers for remote device */
|
||||||
|
- buffer = rpmsg_virtio_shm_pool_get_buffer(shpool,
|
||||||
|
+ buffer = rpmsg_virtio_shm_pool_get_buffer(rx_shpool,
|
||||||
|
rvdev->config.txbuf_size);
|
||||||
|
|
||||||
|
if (!buffer) {
|
||||||
|
@@ -757,6 +759,15 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev,
|
||||||
|
+ struct virtio_device *vdev,
|
||||||
|
+ rpmsg_ns_bind_cb ns_bind_cb,
|
||||||
|
+ struct metal_io_region *shm_io,
|
||||||
|
+ struct rpmsg_virtio_shm_pool *shpool)
|
||||||
|
+{
|
||||||
|
+ return rpmsg_init_vdev_ext(rvdev, vdev, ns_bind_cb, shm_io, shpool, shpool);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void rpmsg_deinit_vdev(struct rpmsg_virtio_device *rvdev)
|
||||||
|
{
|
||||||
|
struct metal_list *node;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
From 0e2e59941d9694e060f8ac06fce6b8284d8e74ec Mon Sep 17 00:00:00 2001
|
||||||
|
From: ligd <liguiding1@xiaomi.com>
|
||||||
|
Date: Mon, 28 Feb 2022 16:31:54 +0800
|
||||||
|
Subject: [PATCH 3/3] rpmsg_virtio: don't need check status when get_tx_payload
|
||||||
|
|
||||||
|
Signed-off-by: ligd <liguiding1@xiaomi.com>
|
||||||
|
---
|
||||||
|
lib/rpmsg/rpmsg_virtio.c | 6 ------
|
||||||
|
1 file changed, 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c
|
||||||
|
index 8a2c795..b95bf6d 100644
|
||||||
|
--- a/lib/rpmsg/rpmsg_virtio.c
|
||||||
|
+++ open-amp/lib/rpmsg/rpmsg_virtio.c
|
||||||
|
@@ -359,16 +359,10 @@ static void *rpmsg_virtio_get_tx_payload_buffer(struct rpmsg_device *rdev,
|
||||||
|
struct rpmsg_hdr *rp_hdr;
|
||||||
|
uint16_t idx;
|
||||||
|
int tick_count;
|
||||||
|
- int status;
|
||||||
|
|
||||||
|
/* Get the associated remote device for channel. */
|
||||||
|
rvdev = metal_container_of(rdev, struct rpmsg_virtio_device, rdev);
|
||||||
|
|
||||||
|
- /* Validate device state */
|
||||||
|
- status = rpmsg_virtio_get_status(rvdev);
|
||||||
|
- if (!(status & VIRTIO_CONFIG_STATUS_DRIVER_OK))
|
||||||
|
- return NULL;
|
||||||
|
-
|
||||||
|
if (wait)
|
||||||
|
tick_count = RPMSG_TICK_COUNT / RPMSG_TICKS_PER_INTERVAL;
|
||||||
|
else
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -39,6 +39,8 @@ open-amp.zip:
|
|||||||
$(Q) patch -p0 < 0004-openamp-add-ns_unbind_notify-support.patch
|
$(Q) patch -p0 < 0004-openamp-add-ns_unbind_notify-support.patch
|
||||||
$(Q) patch -p0 < 0005-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch
|
$(Q) patch -p0 < 0005-rpmsg-notify-the-user-when-the-remote-address-is-rec.patch
|
||||||
$(Q) patch -p0 < 0006-openamp-fix-scenario-case.patch
|
$(Q) patch -p0 < 0006-openamp-fix-scenario-case.patch
|
||||||
|
$(Q) patch -p0 < 0007-openamp-divide-shram-to-TX-shram-RX-shram.patch
|
||||||
|
$(Q) patch -p0 < 0008-rpmsg_virtio-don-t-need-check-status-when-get_tx_pay.patch
|
||||||
|
|
||||||
.openamp_headers: open-amp.zip
|
.openamp_headers: open-amp.zip
|
||||||
$(eval headers := $(wildcard open-amp/lib/include/openamp/*.h))
|
$(eval headers := $(wildcard open-amp/lib/include/openamp/*.h))
|
||||||
|
Loading…
Reference in New Issue
Block a user