Commit Graph
11 Commits
Author SHA1 Message Date
Laurent THOMAS 3f2dd17191 code review comments + re-test 2022-01-13 16:04:16 +01:00
Laurent THOMAS bc05bd882d cleaning after big merge 2022-01-10 11:44:45 +01:00
Raphael Defosseux aa6b36a60f [RHEL8][CONTAINER] Runtime check when creating pThreads
It looks like :
  - when running on a Fedora-host
  - with generic kernel
  - in a container
  - even in privileged mode

That is not enough and priority/schedule settings is not allowed.

So at runtime, we check and in case, we don't set up priorities.

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-25 14:41:30 +02:00
Laurent THOMAS 86f1c69f26 Fix code review remarks, merge develop, revert some merge errors 2021-04-13 22:28:02 +02:00
Laurent OpenCells 4511e70fac fix from ci results 2021-04-05 12:56:52 +02:00
Laurent THOMAS 0317d6725b sanitize, calibration tool kickoff 2021-04-02 10:12:13 +02:00
Laurent THOMAS 738728142f merge develop 2021-03-29 15:33:45 +02:00
Laurent 4d787625ab still to compile 2019-04-30 14:25:42 +02:00
laurent 8a92138086 rework threads in 5G 2019-04-30 10:17:08 +02:00
Cedric Roux 1b1f941e3c upgrade license to version 1.1 2017-10-23 12:22:13 +02:00
Cedric Roux cff9149920 fix issue 227 - UE IP settings disrupts realtime
see https://gitlab.eurecom.fr/oai/openairinterface5g/issues/227

When the UE connects to the eNodeB and receives its IP address from the
network, it calls system() to set it in the linux kernel world. This call
is not done in a realtime thread, but in the NAS, which uses its own thread,
independent of the realtime processing.

In some situations this totally disrupts realtime processing.

It is difficult to know precisely why that happens, but it seems that calling
fork(), as system() does, in a multi-threaded program is not a good idea. (So
say several people on the internet.) It is not clear why the softmodem is
impacted, but it seems that fork() is really what triggers the disruption.
Several tests lead to that conclusion.

To fix the problem, we create a child background process very early in main()
(before anything else basically). Then instead of calling system(), the main
process sends the string to the background process. The background process
gets the string, passes it to system() and reports the success/failure back
to the main process.

This solution involves a lot of system calls, but calling system() in the
first place is not cheap either. As long as no realtime thread uses this
mechanism, things should be fine. Time will tell.
2017-03-23 12:34:24 +01:00