summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-05-13 09:31:17 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-05-13 09:32:37 +0200
commit5da04d68376693a87af63f4b8db7067e7e6e5267 (patch)
tree91cd9ebb1ee31b2eba7e051ee8db153dc00e39e9
parentIFCONFIG(8): Fix write to const string (diff)
downloadrtems-libbsd-5da04d68376693a87af63f4b8db7067e7e6e5267.tar.bz2
Fix zero-copy mbuf support
In 2017 there was a change in the mbuf API.
-rw-r--r--rtemsbsd/include/rtems/bsd/zerocopy.h3
-rw-r--r--rtemsbsd/rtems/rtems-kernel-mbuf.c3
-rw-r--r--testsuite/zerocopy01/test_main.c6
3 files changed, 5 insertions, 7 deletions
diff --git a/rtemsbsd/include/rtems/bsd/zerocopy.h b/rtemsbsd/include/rtems/bsd/zerocopy.h
index b15333c4..339e7a42 100644
--- a/rtemsbsd/include/rtems/bsd/zerocopy.h
+++ b/rtemsbsd/include/rtems/bsd/zerocopy.h
@@ -53,8 +53,7 @@ struct mbuf *rtems_bsd_m_get(int how, short type);
struct mbuf *rtems_bsd_m_gethdr(int how, short type);
void rtems_bsd_m_extaddref(struct mbuf *m, void *buf, size_t size,
- u_int *ref_cnt, void (*freef)(void *, void *), void *arg1,
- void *arg2);
+ u_int *ref_cnt, m_ext_free_t *freef, void *arg1, void *arg2);
void rtems_bsd_m_free(struct mbuf *m);
diff --git a/rtemsbsd/rtems/rtems-kernel-mbuf.c b/rtemsbsd/rtems/rtems-kernel-mbuf.c
index a1429d86..1d10b51f 100644
--- a/rtemsbsd/rtems/rtems-kernel-mbuf.c
+++ b/rtemsbsd/rtems/rtems-kernel-mbuf.c
@@ -55,8 +55,7 @@ rtems_bsd_m_gethdr(int how, short type)
void
rtems_bsd_m_extaddref(struct mbuf *m, void *buf, size_t size,
- u_int *ref_cnt, void (*freef)(void *, void *), void *arg1,
- void *arg2)
+ u_int *ref_cnt, m_ext_free_t *freef, void *arg1, void *arg2)
{
m_extaddref(m, buf, size, ref_cnt, freef, arg1, arg2);
}
diff --git a/testsuite/zerocopy01/test_main.c b/testsuite/zerocopy01/test_main.c
index d23c746f..e528257f 100644
--- a/testsuite/zerocopy01/test_main.c
+++ b/testsuite/zerocopy01/test_main.c
@@ -82,10 +82,10 @@ struct buffer_control {
static struct buffer_control buffer_control;
static void
-buffer_free(void *arg1, void *arg2)
+buffer_free(struct mbuf *m)
{
- struct buffer_control *bc = arg1;
- struct buffer *buf = arg2;
+ struct buffer_control *bc = m->m_ext.ext_arg1;
+ struct buffer *buf = m->m_ext.ext_arg2;
rtems_status_code sc;
rtems_interrupt_lock_context lock_context;
rtems_id waiting_task;