diff options
author | Dimitri Staessens <[email protected]> | 2018-04-02 08:19:54 +0200 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2018-04-05 10:31:52 +0200 |
commit | 3b03c4b2bcbcf5a913a3127d2b45283540c505c3 (patch) | |
tree | fc18ab41a741f7d6ce3b05145558a1cf83c422f8 /src/ipcpd/eth | |
parent | b81d5a327d272db9b511217665b5febceccb725d (diff) | |
download | ouroboros-3b03c4b2bcbcf5a913a3127d2b45283540c505c3.tar.gz ouroboros-3b03c4b2bcbcf5a913a3127d2b45283540c505c3.zip |
ipcpd: Enable locking threads to a CPU core
This adds a function that locks a thread to a random core. This
greatly improves performance on multi-cpu systems. There is no
portable way to do this, this only implements it for GNU/Linux.
Signed-off-by: Dimitri Staessens <[email protected]>
Signed-off-by: Sander Vrijders <[email protected]>
Diffstat (limited to 'src/ipcpd/eth')
-rw-r--r-- | src/ipcpd/eth/eth.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/ipcpd/eth/eth.c b/src/ipcpd/eth/eth.c index b43caae1..d1ee088d 100644 --- a/src/ipcpd/eth/eth.c +++ b/src/ipcpd/eth/eth.c @@ -777,6 +777,8 @@ static void * eth_ipcp_sdu_reader(void * o) (void) o; + ipcp_lock_to_core(); + memset(br_addr, 0xff, MAC_SIZE * sizeof(uint8_t)); while (true) { @@ -893,6 +895,8 @@ static void * eth_ipcp_sdu_writer(void * o) (void) o; + ipcp_lock_to_core(); + while (true) { fevent(eth_data.np1_flows, eth_data.fq, NULL); |