hrev56154 adds 3 changesets to branch 'master'
old head: 9a6815fbfa897d422b20c46f98ebf736f90c3ff4
new head: 3e9b842151944134c92982cefa9dfb741f925b33
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=3e9b84215194+%5E9a6815fbfa89
----------------------------------------------------------------------------
92d0fd610b56: freebsd_network: Fix definition of bus_dma_tag_create.
Fixes the build under 32-bit.
04d2f987a6aa: freebsd_network: Put extern "C" in front of all public busdma
functions.
Should catch the problem the previous commit fixed earlier.
3e9b84215194: freebsd_network: bus_dmamap_load_mbuf_sg is always NOWAIT.
This matches FreeBSD.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
1 file changed, 14 insertions(+), 13 deletions(-)
src/libs/compat/freebsd_network/bus_dma.cpp | 27 +++++++++++++------------
############################################################################
Commit: 92d0fd610b564d9b27298682a9d9e217bf73d88e
URL: https://git.haiku-os.org/haiku/commit/?id=92d0fd610b56
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Fri Jun 3 17:55:50 2022 UTC
freebsd_network: Fix definition of bus_dma_tag_create.
Fixes the build under 32-bit.
----------------------------------------------------------------------------
diff --git a/src/libs/compat/freebsd_network/bus_dma.cpp
b/src/libs/compat/freebsd_network/bus_dma.cpp
index b1bc9a7a06..70bd5d6f24 100644
--- a/src/libs/compat/freebsd_network/bus_dma.cpp
+++ b/src/libs/compat/freebsd_network/bus_dma.cpp
@@ -91,7 +91,7 @@ busdma_lock_mutex(void* arg, bus_dma_lock_op_t op)
int
-bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, bus_size_t
boundary,
+bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, bus_addr_t
boundary,
bus_addr_t lowaddr, bus_addr_t highaddr, bus_dma_filter_t* filter,
void* filterarg, bus_size_t maxsize, int nsegments, bus_size_t maxsegsz,
int flags, bus_dma_lock_t* lockfunc, void* lockfuncarg, bus_dma_tag_t*
dmat)
############################################################################
Commit: 04d2f987a6aa3928442a1423f693a362bd341008
URL: https://git.haiku-os.org/haiku/commit/?id=04d2f987a6aa
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Fri Jun 3 17:56:38 2022 UTC
freebsd_network: Put extern "C" in front of all public busdma functions.
Should catch the problem the previous commit fixed earlier.
----------------------------------------------------------------------------
diff --git a/src/libs/compat/freebsd_network/bus_dma.cpp
b/src/libs/compat/freebsd_network/bus_dma.cpp
index 70bd5d6f24..bbfde5ab15 100644
--- a/src/libs/compat/freebsd_network/bus_dma.cpp
+++ b/src/libs/compat/freebsd_network/bus_dma.cpp
@@ -73,7 +73,7 @@ struct bus_dmamap {
// #pragma mark - functions
-void
+extern "C" void
busdma_lock_mutex(void* arg, bus_dma_lock_op_t op)
{
struct mtx* dmtx = (struct mtx*)arg;
@@ -90,7 +90,7 @@ busdma_lock_mutex(void* arg, bus_dma_lock_op_t op)
}
-int
+extern "C" int
bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, bus_addr_t
boundary,
bus_addr_t lowaddr, bus_addr_t highaddr, bus_dma_filter_t* filter,
void* filterarg, bus_size_t maxsize, int nsegments, bus_size_t maxsegsz,
@@ -151,7 +151,7 @@ bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t
alignment, bus_addr_t bounda
}
-int
+extern "C" int
bus_dma_tag_destroy(bus_dma_tag_t dmat)
{
if (dmat == NULL)
@@ -176,7 +176,7 @@ bus_dma_tag_destroy(bus_dma_tag_t dmat)
}
-int
+extern "C" int
bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t* mapp)
{
*mapp = (bus_dmamap_t)calloc(sizeof(**mapp), 1);
@@ -229,7 +229,7 @@ _prepare_bounce_buffer(bus_dmamap_t map, bus_size_t
reqsize, int flags)
}
-int
+extern "C" int
bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
{
if (map == NULL)
@@ -245,7 +245,7 @@ bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map)
}
-int
+extern "C" int
bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags,
bus_dmamap_t* mapp)
{
@@ -301,7 +301,7 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int
flags,
}
-void
+extern "C" void
bus_dmamem_free(bus_dma_tag_t dmat, void* vaddr, bus_dmamap_t map)
{
kernel_contigfree(vaddr, dmat->maxsize, M_DEVBUF);
@@ -388,7 +388,7 @@ _bus_load_buffer(bus_dma_tag_t dmat, void* buf, bus_size_t
buflen,
}
-int
+extern "C" int
bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf,
bus_size_t buflen, bus_dmamap_callback_t *callback,
void *callback_arg, int flags)
@@ -428,7 +428,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void
*buf,
}
-int
+extern "C" int
bus_dmamap_load_mbuf_sg(bus_dma_tag_t dmat, bus_dmamap_t map, struct mbuf* mb,
bus_dma_segment_t* segs, int* _nsegs, int flags)
{
@@ -469,7 +469,7 @@ bus_dmamap_load_mbuf_sg(bus_dma_tag_t dmat, bus_dmamap_t
map, struct mbuf* mb,
}
-int
+extern "C" int
bus_dmamap_load_mbuf(bus_dma_tag_t dmat, bus_dmamap_t map, struct mbuf* mb,
bus_dmamap_callback2_t* callback, void* callback_arg, int flags)
{
@@ -486,7 +486,7 @@ bus_dmamap_load_mbuf(bus_dma_tag_t dmat, bus_dmamap_t map,
struct mbuf* mb,
}
-void
+extern "C" void
bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
if (map == NULL)
@@ -498,7 +498,7 @@ bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
}
-void
+extern "C" void
bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
{
if (map == NULL)
############################################################################
Revision: hrev56154
Commit: 3e9b842151944134c92982cefa9dfb741f925b33
URL: https://git.haiku-os.org/haiku/commit/?id=3e9b84215194
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Fri Jun 3 17:57:10 2022 UTC
freebsd_network: bus_dmamap_load_mbuf_sg is always NOWAIT.
This matches FreeBSD.
----------------------------------------------------------------------------
diff --git a/src/libs/compat/freebsd_network/bus_dma.cpp
b/src/libs/compat/freebsd_network/bus_dma.cpp
index bbfde5ab15..050fdaea95 100644
--- a/src/libs/compat/freebsd_network/bus_dma.cpp
+++ b/src/libs/compat/freebsd_network/bus_dma.cpp
@@ -440,6 +440,7 @@ bus_dmamap_load_mbuf_sg(bus_dma_tag_t dmat, bus_dmamap_t
map, struct mbuf* mb,
int nsegs = 0, error = 0;
bool first = true;
bus_addr_t lastaddr = 0;
+ flags |= BUS_DMA_NOWAIT;
for (struct mbuf* m = mb; m != NULL && error == 0; m = m->m_next) {
if (m->m_len <= 0)