Introducing the Big Tinc Lock.
authorGuus Sliepen <guus@tinc-vpn.org>
Fri, 14 Jan 2011 21:18:59 +0000 (22:18 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Fri, 14 Jan 2011 21:18:59 +0000 (22:18 +0100)
commit6834b882015a9323672e9fce8811aa4283f196f0
tree72d5ebe2d2674b8c0ed8de8e65de4c94cde14fa2
parent95d8811c2cef8bcde78e1f172f6c57c25cd487aa
Introducing the Big Tinc Lock.

Now that tinc is multi-threaded, we need some form of synchronisation.  For
now, there is a single mutex which we lock whenever we do something with global
data structures. The main thread, from which timer events are handled, is
always locked unless it is sleeping for the next event, the other threads
receive incoming I/O unlocked, and lock to process the received data.

In the future more fine-grained locking should be used, probably in the form of
rwlocks, or lockless algorithms (maybe RCU).
src/linux/device.c
src/meta.c
src/net.c
src/net.h
src/net_packet.c
src/net_socket.c
src/threads.h
src/tincd.c