Gleb Natapov
20d2725ed9
core: shared_ptr add noexcept
...
Add missing noexcepts. Those on constructors are needed to be able to
store shared pointers in growable containers efficiently.
2015-01-12 17:29:02 +02:00
Avi Kivity
94ffb2c948
net: add missing includes to byteorder.hh
2015-01-12 14:11:56 +02:00
Pekka Enberg
4dd4fa67c1
configure.py: Fix error hadling when no rule is found
...
There's a typo in configure.py which causes the "no rule found" handler
to die.
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com >
2015-01-12 11:24:02 +02:00
Gleb Natapov
bef054f8c8
net: rename udp_v4 to ipv4_udp for consistency with other l4 protocols
2015-01-11 12:29:05 +02:00
Avi Kivity
37026f8c5f
Merge branch 'gleb/net' of ssh://github.com/cloudius-systems/seastar-dev
...
Network stack inversion: tcp, from Gleb.
TCP now does not transmit on a user write; instead it signals that
packets can be generated to the IP layer. When the IP layer is polled,
it will poll TCP in turn and generate packets. This improves batching.
2015-01-11 12:26:39 +02:00
Gleb Natapov
32b42af49f
net: register l3 poller for tcp connections
...
This patch change tcp to register a poller so that l3 can poll tcp for
a packet instead of pushing packets from tcp to ipv4. This pushes
networking tx path inversion a little bit closer to an application.
2015-01-11 10:48:32 +02:00
Gleb Natapov
d5c309c74e
net: provide poller registration API between l3 and l4
...
Both push and pull methods will be supported between l3 and l4 after
this patch.
2015-01-11 10:17:48 +02:00
Gleb Natapov
2b340b80ce
net: unfuturize packet fragmentation
...
Since sending of a single packet does not involve futures anymore we can
simplify this code.
2015-01-11 10:17:48 +02:00
Avi Kivity
4c59fe6436
xen: ensure _xenstore member is initialized early enough
...
Thanks clang.
2015-01-08 18:44:23 +02:00
Avi Kivity
062f621aa0
net: wrap toeplitz hash initializer in more braces
...
Nagging by clang.
2015-01-08 18:43:49 +02:00
Avi Kivity
0aaea57838
tests: fix missing do in do/while(0) in timertest
...
Thanks clang.
2015-01-08 18:36:51 +02:00
Gleb Natapov
13c1324d45
net: provide some statistics via collectd
...
Provide batching and overall send/received packet stats.
2015-01-08 17:41:26 +02:00
Gleb Natapov
51fb18aba0
net: remove unused variable from virtio
2015-01-08 16:45:01 +02:00
Amnon Heiman
5002f0f10e
README: boost is needed for ubuntu compilation
2015-01-08 16:44:59 +02:00
Takuya ASADA
902b5b00a4
Make pollable_fd::_s as private variable
...
We can use pollable_fd::writeable/readable instead.
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com >
2015-01-08 12:07:16 +02:00
Gleb Natapov
b824790798
net: move udp_v4 from network_stack into ipv4 class
...
ipv4 class manages tcp and icmp, but for some reason udp is managed by
network_stack. Fix this and make all L4 protocol handling to be the same.
2015-01-08 11:33:19 +02:00
Avi Kivity
65d4969504
build: limit link concurrency
...
The linker can easily overwhelm a desktop, limit linker concurrency to
preserve some interactiveness.
2015-01-08 11:21:04 +02:00
Avi Kivity
c95e452a3a
Merge branch 'directory'
...
Directory listing support, using subscription<sstring> to represent the
stream of file names produced by the directory lister running in parallel
with the directory consumer.
2015-01-08 11:14:52 +02:00
Avi Kivity
4fd5ab936b
tests: add directory_test
...
Lists the current directory, testing open_directory() / list_directory().
2015-01-08 11:09:27 +02:00
Avi Kivity
3be04e7009
reactor: implement open_directory(), list_directory()
...
open_directory() is similar to open_file_dma() with just the O_ flags adjusted.
list_directory() returns a subscription(), so that both the producer and
the consumer can be asynchronous.
2015-01-08 11:09:25 +02:00
Avi Kivity
f26e74b1ff
Merge branch 'takuya/tcp-clientv16' of github.com:cloudius-systems/seastar-dev
...
TCP client, from Takuya.
Reviewed-by: Asias He <asias@cloudius-systems.com >
2015-01-08 10:46:35 +02:00
Takuya ASADA
46d8b24626
Add tcp_client test
...
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com >
2015-01-08 01:26:36 +09:00
Takuya ASADA
e9e1ed7977
Implement TCP client on native-stack
2015-01-08 01:26:36 +09:00
Takuya ASADA
7b3b9e5a46
Implement TCP client on posix-stack
...
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com >
2015-01-08 01:26:36 +09:00
Takuya ASADA
b9a2541c7e
Add reactor::connect(), client_socket definition and network stack stub code
...
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com >
2015-01-08 01:26:36 +09:00
Takuya ASADA
2118fe5a09
Add l4connid::hash()
2015-01-08 01:26:36 +09:00
Takuya ASADA
9c2ca3d6b6
return correct option size when new SYN packet sending
...
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com >
2015-01-08 01:26:36 +09:00
Takuya ASADA
7730ef29cd
Add readable()/writeable() method on pollable_fd
2015-01-08 01:26:36 +09:00
Takuya ASADA
24820543ff
Add reactor::posix_connect()
...
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com >
2015-01-08 01:26:30 +09:00
Takuya ASADA
d3e83dde8b
Add file_desc::getsockopt()
2015-01-07 23:48:53 +09:00
Takuya ASADA
ff39f8c93e
Initialize _snd.initial/next on tcb constructor
2015-01-07 23:48:41 +09:00
Avi Kivity
8101c1f2a6
stream/subscription: fix build error in stream::close()
2015-01-07 15:12:23 +02:00
Pekka Enberg
fa8d120d70
core: Fix shared_ptr pointer casts
...
Fix compilation errors in the shared_ptr pointer cast functions and
update shared_ptr constructor to take shared_ptr_count_base.
Suggested by Avi.
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com >
2015-01-07 13:50:59 +02:00
Takuya ASADA
c01e9dc8d6
Add file_desc::connect()
...
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com >
2015-01-06 22:54:38 +09:00
Avi Kivity
a5802e36a2
Merge branch 'gleb/net' of github.com:cloudius-systems/seastar-dev
...
Network tx path inversion, from Gleb:
"Instead of pushing packets from upper layers towards HW those patches
change networking stack to do the opposite: HW polls upper layers for
packets to send. There are several advantages to this approach. First
one is that now, instead of getting packets one by one HW will get them
in bulks. Another is that packet queueing happens closer to an application
layer where sender can be stopped more accurately without dropping packets."
2015-01-06 15:48:03 +02:00
Gleb Natapov
8d4e6b832a
net: implement bulk sending interface for dpdk
2015-01-06 15:24:10 +02:00
Gleb Natapov
aae617f9f5
net: revert whatever is left from "virtio: batch transmitted packets" commit.
...
Revert remains of commit 503f1bf4 since there is no need to batch
packets inside virtio any more. Upper layer does it already.
2015-01-06 15:24:10 +02:00
Gleb Natapov
72324f02e2
net: implement bulk sending interface for virtio
2015-01-06 15:24:10 +02:00
Gleb Natapov
77bd21c387
net: implement bulk sending interface for proxy queue
...
Take advantage of the bulk interface to send several packets simultaneity
with one submit_to() to remote cpu.
2015-01-06 15:24:10 +02:00
Gleb Natapov
c98bdf5137
net: limit native udp send buffer size
...
Currently udp sender my send whenever it has data and if it does
this faster than packets can be transmitted we will run out of memory.
This patch limits how much outstanding data each native udp channel may
have.
2015-01-06 15:24:10 +02:00
Gleb Natapov
0fd014fc35
net: add add completion callback between l3 and l4
...
L4 will provide the callback to be called by L3 after the packet is
handled to lower layers for transmission. L4 will know that it can queue
more data from user at this point. The patch also change send function
that can no longer block to return void instead of future<>.
2015-01-06 15:24:10 +02:00
Gleb Natapov
e80fa4af7d
net: drop top level 'remaining' from ipv4::send()
...
It is not needed.
2015-01-06 15:24:10 +02:00
Gleb Natapov
12bce3f4fc
net: make interface get packets from l3
...
Instead of l3 (arp/ipv4) pushing packets into interface's queue, make
them register functions that interface can use to ask l3 for packets.
2015-01-06 15:24:10 +02:00
Gleb Natapov
e5d0adb339
net: make qp poll for tx packets from networking stack
...
Packets are accumulated in interface's packet queue. The queue is polled
by qp to see if there is something to send.
2015-01-06 15:24:10 +02:00
Gleb Natapov
865d95c0f1
net: provide bulk sending interface for qp
...
Implement it as calls to send() in a loop for now. Each device will
get proper implementation later.
2015-01-06 15:24:10 +02:00
Gleb Natapov
3f483b22bc
future: add missing std::forward() in do_until_continued()
2015-01-06 14:43:34 +02:00
Avi Kivity
66eea763bf
shared_ptr: add comparison operators
2015-01-05 13:24:07 +02:00
Avi Kivity
7a317f78a2
shared_ptr: be friend to self
...
Needed for converting constructor.
2015-01-05 13:24:06 +02:00
Avi Kivity
f2e25b8442
Merge branch 'shared_ptr'
...
Split shared_ptr into a traditional polymorphic shared_ptr implementation,
and a lighter-weight, non polymorphic lw_shared_ptr.
2015-01-05 11:29:35 +02:00
Avi Kivity
c7d7494a65
shared_ptr: add some documentation
2015-01-05 10:39:35 +02:00