kirr has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmocom-bb/+/40057?usp=email )
Change subject: trx_toolkit/*: Invoke UDPLink.send via C from data/clock plane
......................................................................
trx_toolkit/*: Invoke UDPLink.send via C from data/clock plane
As can be seen from
http://navytux.spb.ru/~kirr/osmo/fake_trx/pyx-base.html
(DATAInterface_15send_msg)
the system spends some time in py-overhead before reaching UDPLink.send
-> Avoid that overhead via providing cdef UDPLink._send and use that
from performance-sensitive places.
Change-Id: I3774beebfd37e6b36d3d119ec19b0d3c2a88b10d
---
M src/target/trx_toolkit/_clck_gen.pyx
M src/target/trx_toolkit/data_if.pyx
M src/target/trx_toolkit/udp_link.pxd
M src/target/trx_toolkit/udp_link.pyx
4 files changed, 9 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/57/40057/1
diff --git a/src/target/trx_toolkit/_clck_gen.pyx b/src/target/trx_toolkit/_clck_gen.pyx
index 914b821..6eb5717 100644
--- a/src/target/trx_toolkit/_clck_gen.pyx
+++ b/src/target/trx_toolkit/_clck_gen.pyx
@@ -22,6 +22,7 @@
import os
import sys
+from udp_link cimport UDPLink
from gsm_shared import *
@@ -94,6 +95,8 @@
self.send_clck_ind()
def send_clck_ind(self):
+ cdef UDPLink link
+
# We don't need to send so often
if self.clck_src % self.ind_period == 0:
# Create UDP payload
@@ -101,7 +104,7 @@
# Send indication to all UDP links
for link in self.clck_links:
- link.send(payload)
+ link._send(payload)
# Debug print
log.debug(payload.rstrip("\0"))
diff --git a/src/target/trx_toolkit/data_if.pyx b/src/target/trx_toolkit/data_if.pyx
index 5ae2bc1..ca4d82d 100644
--- a/src/target/trx_toolkit/data_if.pyx
+++ b/src/target/trx_toolkit/data_if.pyx
@@ -111,4 +111,4 @@
return
# Send message
- self.send(payload)
+ self._send(payload)
diff --git a/src/target/trx_toolkit/udp_link.pxd b/src/target/trx_toolkit/udp_link.pxd
index d50fe5f..8698cab 100644
--- a/src/target/trx_toolkit/udp_link.pxd
+++ b/src/target/trx_toolkit/udp_link.pxd
@@ -17,5 +17,7 @@
cdef int sock_fd
cdef sockaddr_in remote_addr
+ cdef _send(self, object data) # bytes|bytearray|str
+
cdef _raise_oserr()
diff --git a/src/target/trx_toolkit/udp_link.pyx b/src/target/trx_toolkit/udp_link.pyx
index d75e058..c54845b 100644
--- a/src/target/trx_toolkit/udp_link.pyx
+++ b/src/target/trx_toolkit/udp_link.pyx
@@ -66,6 +66,8 @@
return "L:%s <-> R:%s" % (self.desc_local(), self.desc_remote())
def send(self, data):
+ self._send(data)
+ cdef _send(self, object data):
cdef const char *buf
cdef Py_ssize_t buflen
if type(data) is bytearray:
--
To view, visit
https://gerrit.osmocom.org/c/osmocom-bb/+/40057?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: I3774beebfd37e6b36d3d119ec19b0d3c2a88b10d
Gerrit-Change-Number: 40057
Gerrit-PatchSet: 1
Gerrit-Owner: kirr <kirr(a)nexedi.com>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: osmith <osmith(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>