Maria Matejka
83045e9a1f
Configuration obstacles made a separate, explicit structure
...
With this, one can walk the obstacle list in a debugger and
easier see which specific object is holding the reference.
2024-06-14 23:16:07 +02:00
Maria Matejka
61dcbb1d83
Global runtime values separated from config
2024-06-14 23:16:07 +02:00
Maria Matejka
397eee5a00
Config: Removed obsolete force_restart option when commiting
2024-06-14 23:16:07 +02:00
Maria Matejka
ea4aef2a14
Memory allocator tweaking
...
TODO: make this configurable
2024-06-12 14:48:33 +02:00
Maria Matejka
5c8179d63a
Time accounting must be done by coarse timers
...
on some ARM, the precise timers are too slow to be actually useful
2024-06-12 14:48:33 +02:00
Maria Matejka
2e882d4a7d
IO Loop: process socket reads only after timers and events are done
2024-06-12 14:48:33 +02:00
Maria Matejka
50d7287741
IO Threads: scheduler debug shows info on next loop to run
2024-06-12 14:48:33 +02:00
Maria Matejka
1180f25123
Threads: smoothening loop pickup and less aggressive dropping
2024-06-12 14:48:33 +02:00
Maria Matejka
8ad9c946e1
IO loop picker fixed
...
Now if the thread finds out that it actually isn't busy,
it unsets the business status and picks something up right away.
2024-06-12 14:48:33 +02:00
Maria Matejka
4bca3b9f86
Task-in-limit checker hacked for mainloop
2024-06-12 14:48:33 +02:00
Maria Matejka
661193cf98
Thread IO: a little bit faster RX repeat
2024-06-12 14:48:33 +02:00
Maria Matejka
bf961ba405
Threads shouldn't drop stopping loops
2024-06-12 09:23:50 +02:00
Maria Matejka
0fb9177374
Loop scheduler tracing options configurable
2024-06-12 09:23:50 +02:00
Maria Matejka
67e9a37291
Fixed nanoseconds in IO loop time limiter
2024-06-12 09:23:50 +02:00
Maria Matejka
4104d668d9
Read-write spinlocks
2024-06-12 09:23:50 +02:00
Maria Matejka
6ffab25f01
IO loop: fixed unassigned count
2024-06-04 22:20:18 +02:00
Maria Matejka
423eaf3438
Softened warning about too much time spent in loop
...
Now the warning needs at least 10 ms after the scheduled end time
to ever complain.
TODO: make this configurable
2024-06-04 22:20:18 +02:00
Maria Matejka
2705c385c0
Never allow more than 300 ms per loop
2024-06-04 10:11:36 +02:00
Maria Matejka
dc416d2de3
RCU: Rewritten to be more straightforward
2024-06-04 10:11:36 +02:00
Maria Matejka
10bb1c1e9d
Real almost-lockless feeds and more pull-like exports
...
Introducing a new omnipotent internal API to just pass route updates
from whatever point wherever we want.
From now on, all the exports should be processed by RT_WALK_EXPORTS
macro, and you can also issue a separate feed-only request to just get a
feed and finish.
The exporters can now also stop and the readers must expect that to
happen and recover. Main tables don't stop, though.
2024-06-04 10:11:36 +02:00
Maria Matejka
b5f803ce4a
Simplified temporary resources
...
Also TMP_SAVED now uses the CLEANUP hook to allow for breaks and returns
2024-05-25 19:37:16 +02:00
Maria Matejka
76ca53e4f8
SKIP_BACK_DECLARE: easier embedded-to-parent typecasting
2024-05-25 19:37:16 +02:00
Maria Matejka
29cd2c0170
Refactored the deferring framework into a separate structure
2024-05-22 11:34:34 +02:00
Maria Matejka
2b38a833cd
Avoiding RCU synchronization deadlock when locking in critical section
...
Explicitly marking domains eligible for RCU synchronization. It's then
forbidden to lock these domains in RCU critical section to avoid
possible deadlock.
2024-05-22 11:34:34 +02:00
Maria Matejka
eaf187b57b
Table feeds are now lockless
...
This commit makes the route chains in the tables atomic. This allows not
only standard exports but also feeds and bulk exports to be processed
without ever locking the table.
Design note: the overall data structures are quite brittle. We're using
RCU read-locks to keep track about readers, and we're indicating ongoing
work on the data structures by prepending a REF_OBSOLETE sentinel node
to make every reader go waiting.
All the operations are intended to stay inside nest/rt-table.c and it
may be even best to further refactor the code to hide the routing table
internal structure inside there. Nobody shall definitely write any
routines manipulating live routes in tables from outside.
2024-05-22 11:34:34 +02:00
Maria Matejka
a716e7ea79
Kernel: replaced synchronous prune by a refeed
2024-05-22 11:34:34 +02:00
Maria Matejka
46164395b2
Fixed all implicit seq_cst warnings caused by the previous commit
2024-05-22 11:34:34 +02:00
Maria Matejka
6a13c02d3b
Removed the obsolete birdloop flagger
...
This was useful when events were locking. As now sending events is lockless,
we can drop this obsolete routine for good.
2024-05-22 11:34:34 +02:00
Maria Matejka
4b9d12708e
Loop run waits until pingers finish
...
This ensures that if somebody passes an event to a loop which
has just started executing, then the event gets picked up. Otherwise
there is a race condition causing stray events pending in queue
but without the ping (because the run actually finishes too fast
to pickup the later events).
2024-05-18 15:50:03 +02:00
Maria Matejka
67f6ac1628
IO Loop: provide information about current loop and task time limit
2024-05-18 15:48:03 +02:00
Maria Matejka
b1b3c7aac2
Allowing to send events to the metaloop's priority list
2024-05-18 15:48:03 +02:00
Maria Matejka
418578bc6b
IO loop: fixed local hot page cache flushing condition
2024-05-18 15:48:03 +02:00
Maria Matejka
cd81b6d7cd
Merge commit '2c7555cf2ac8439713dd9148b348128c57222a38' into thread-next
...
The UDP logging had to be substantially rewritten due to a different
logging backend and reconfiguration mechanisms.
Conflicts:
doc/bird.sgml
sysdep/unix/config.Y
sysdep/unix/io.c
sysdep/unix/log.c
sysdep/unix/unix.h
2024-01-28 23:01:39 +01:00
Maria Matejka
86ba37d8f1
Logging: uses writev instead of in-buffer magic
2024-01-28 21:42:39 +01:00
Maria Matejka
7045a715cf
Merge commit 'v2.13.1-189-g105e50f6' into thread-next
2024-01-28 14:42:36 +01:00
Maria Matejka
a28264adc5
Merge commit 'v2.13.1-168-g5e9cf0ab' into thread-next
2024-01-28 13:40:23 +01:00
Maria Matejka
8fb1f098d1
Fixes for CLang
2024-01-26 14:50:56 +01:00
Maria Matejka
2379ed40be
Linux: Not binding the default-vrf socket to the (nonexistent) vrf device
2024-01-26 14:42:55 +01:00
Maria Matejka
548dbb2252
Replacing table FIB by netindex and simple pointer block
...
Using the netindex data structure to simplify route storage inside route
tables. This should also help with future unlocking of route import.
2024-01-08 09:34:32 +01:00
Maria Matejka
6c4be8d1d3
Kernel: Before first scan, reject exported routes immediately in preexport
2024-01-08 09:23:35 +01:00
Ondrej Zajicek
2c7555cf2a
Log: Add support for UDP logging
...
Add support for UDP logging, using RFC 3164 syslog protocol.
Based on the patch from Alexander Zubkov <green@qrator.net>, thanks!
2023-12-13 04:01:09 +01:00
Maria Matejka
5a916ed53f
Locking: Dropping DEFINE_DOMAIN ugly macro
2023-12-04 10:39:32 +01:00
Maria Matejka
c7cc1ccd2e
Merge branch 'mq-aggregator-for-v3' into thread-next
2023-11-09 15:50:13 +01:00
Maria Matejka
30712a2bdf
Merge branch 'mq-aggregator-for-v3' into thread-next
2023-11-08 21:51:46 +01:00
Maria Matejka
28bb5694f8
Merge remote-tracking branch 'origin/partial-reload' into thread-next
2023-11-08 17:37:42 +01:00
Katerina Kubecova
f992e7e1fe
krt.c: fixup lots of routes learn & unlearn
2023-11-06 09:38:13 +01:00
Maria Matejka
c6fba7d7e6
Merge branch 'thread-next' into HEAD
2023-11-02 14:43:15 +01:00
Katerina Kubecova
9680bf68e4
Automatic ROA reloads on channel import
...
This includes updating OSPF, Pipe and RIP to enable partial route reload
directly from the protocols' internal tables.
2023-11-02 14:37:27 +01:00
Maria Matejka
6f1485baf9
Debug file fix
...
It got mistakenly closed while applying the log configuration.
2023-11-01 18:25:15 +01:00
Maria Matejka
796f0af0cc
Fixes to root pool and meta loop to allow resource dumps
2023-11-01 18:23:43 +01:00