ntap / warpcore Goto Github PK
View Code? Open in Web Editor NEWUser-space UDP/IP stack on top of netmap
License: BSD 2-Clause "Simplified" License
User-space UDP/IP stack on top of netmap
License: BSD 2-Clause "Simplified" License
Pull them back out of the ring after TX and return them to the app
Hi! I want to run a QUIC example based on warpcore. I encountered an error when making the project. The log is:
/riotproject/lib/deps/warpcore/lib/src/backend.h:88:5: error: unknown type name 'fd_set' 88 | fd_set fds;
I searched the warpcore and couldn't find the definition of ‘fd_set’. Is it a bug? or how could I fix the error? Thanks!
Warpcore should really support IPv6
Use a TommyDS hash or some other advanced data structure for the ARP cache, w_sock_chain, and others.
Add an ARP cache instead of doing repeated lookups in w_connect()
Not sure if it is relevant or not but got a seg fault when trying to run test_warp
0.000 w_init warpcore.c:423 lo addr 0:0:0:0:0:0, MTU 65535, speed 4294967G, link up
w_init warpcore.c:465 lo has IP addr 127.0.0.1/255.0.0.0
backend_init backend_netmap.c:101 lo is a loopback, using left netmap pipe
arp_cache_update arp.c:95 ARP cache entry: 127.0.0.1 is at 0:0:0:0:0:0
0.055 backend_init backend_netmap.c:146 tx ring 0 has 1024 slots (1026-2049)
0.057 backend_init backend_netmap.c:153 rx ring 0 has 1024 slots (2-1025)
0.082 backend_init backend_netmap.c:172 can only allocate 19112/65536 extra buffers
w_init warpcore.c:486 warpcore/netmap 0.27.0 using 19112 2048-byte bufs on lo
0.083 w_init warpcore.c:423 lo addr 0:0:0:0:0:0, MTU 65535, speed 4294967G, link up
0.104 w_init warpcore.c:465 lo has IP addr 127.0.0.1/255.0.0.0
backend_init backend_netmap.c:101 lo is a loopback, using right netmap pipe
0.108 arp_cache_update arp.c:95 ARP cache entry: 127.0.0.1 is at 0:0:0:0:0:0
0.125 backend_init backend_netmap.c:146 tx ring 0 has 1024 slots (2-1025)
backend_init backend_netmap.c:153 rx ring 0 has 1024 slots (1026-2049)
0.126 backend_init backend_netmap.c:172 can only allocate 0/65536 extra buffers
0.126 backend_init backend_netmap.c:173 ABORT: assertion failed
b->req->nr_arg3 != 0
got some extra buffers errno 0 =
/usr/lib/x86_64-linux-gnu/libasan.so.4(+0x558c0) [0x7ffff6e6f8c0]
util_die at /usr/local/src/warpcore/lib/src/util.c:224
backend_init at /usr/local/src/warpcore/lib/src/backend_netmap.c:176
w_init at /usr/local/src/warpcore/lib/src/warpcore.c:483
init at /usr/local/src/warpcore/test/common.c:123
main at /usr/local/src/warpcore/test/test_sock.c:39
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1) [0x7ffff5b361c1]
_start at ??:?
Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff5b4df5d in __GI_abort () at abort.c:90
#2 0x0000555555595e2f in util_die (func=0x5555555c6fc0 <__func__.7064> "backend_init", file=0x5555555c6160 "/usr/local/src/warpcore/lib/src/backend_netmap.c", line=173)
at /usr/local/src/warpcore/lib/src/util.c:268
#3 0x000055555559b737 in backend_init (w=0x60c000000100, nbufs=65536, is_lo=true, is_left=false) at /usr/local/src/warpcore/lib/src/backend_netmap.c:173
#4 0x00005555555a89a9 in w_init (ifname=0x7fffffffe2c0 "lo", rip=0, nbufs=65536) at /usr/local/src/warpcore/lib/src/warpcore.c:480
#5 0x0000555555594bb3 in init (len=65536) at /usr/local/src/warpcore/test/common.c:123
#6 0x0000555555594dea in main () at /usr/local/src/warpcore/test/test_sock.c:38
(gdb) up
#1 0x00007ffff5b4df5d in __GI_abort () at abort.c:90
90 abort.c: No such file or directory.
(gdb) up
#2 0x0000555555595e2f in util_die (func=0x5555555c6fc0 <__func__.7064> "backend_init", file=0x5555555c6160 "/usr/local/src/warpcore/lib/src/backend_netmap.c", line=173)
at /usr/local/src/warpcore/lib/src/util.c:268
268 abort();
(gdb) up
#3 0x000055555559b737 in backend_init (w=0x60c000000100, nbufs=65536, is_lo=true, is_left=false) at /usr/local/src/warpcore/lib/src/backend_netmap.c:173
173 ensure(b->req->nr_arg3 != 0, "got some extra buffers");
(gdb) print b->req->nr_arg3
$1 = 0
So apps can readv() and writev()
Similar to plat_setaffinity(), which binds the thread to a core, we should offer binding the NIC IRQ to a core. Unfortunately, the methods for getting IRQ information out of the kernel are disgustingly ugly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.