- 07 Sep, 2021 3 commits
-
-
Philippe Gerum authored
There is no vDSO support with Valgrind. Detect when running on top of such virtual machine using the Valgrind API, picking the fallback clock_gettime() implementation if so. This is not a problem since the EVL core does intercept and honor this syscall directly from the out-of-band stage as needed. The incurred overhead is negligible compared to what Valgrind already adds anyway. Also, provide a placeholder for valgrind/valgrind.h which should be picked when Valgrind is not installed on the build system. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
The syscall form used for issuing requests to the companion core is based on ORing __OOB_SYSCALL_BIT to the syscall register for tagging an out-of-band syscall, which is outside of the valid in-band range for syscall numbers. Unfortunately, this method has a major drawback: tools like Valgrind which track system calls issued by applications may choke on out-of-band system calls since these do not belong to the common set it recognizes. Although adding syscall wrappers to Valgrind might be a solution, this would not be the most practical one for dual kernel syscall interfaces. The most practical approach would be to piggyback on an existing system call which Valgrind (and others) already recognizes. For this reason, Dovetail introduced a new syscall form based on the regular prctl(2) syscall. In order to benefit from this feature, EVL syscalls are now folded into a prctl() request, which the core receives. This change introduces ABI #27. Recent revisions of the EVL core support both the former ABI and the new (prctl-based) one indifferently. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
There is no point in specializing the resolution of clock_gettime() in the vDSO on a per-arch basis. This is mostly generic code with only a couple of arch-specific identifiers we need, which we can leave into the arch/ area. Move the bulk of the symbol resolution code to the generic init routine, adding asm/evl/vdso.h for storing the few arch-specific bits such code still depends on. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 05 Sep, 2021 1 commit
-
-
Philippe Gerum authored
Use the preset values of CC, CXX, LD, AR if already defined in the environment. This is typically required for building libevl with the Yocto SDK, with the settings sourced from the environment-setup script. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 21 Aug, 2021 2 commits
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 03 Aug, 2021 1 commit
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 30 Jun, 2021 1 commit
-
-
Philippe Gerum authored
Address this warning from the 'find' command used in the evl-test script: "find: warning: you have specified the global option -maxdepth after the argument -type, but global options are not positional, i.e., -maxdepth affects tests specified before it as well as those specified after it. Please specify global options before other arguments."
-
- 13 Jun, 2021 1 commit
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 13 May, 2021 1 commit
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 01 Mar, 2021 1 commit
-
-
Philippe Gerum authored
A receiver could get a spurious empty tube status, due to receive_tube() racing with send_tube(). See the added comments into the code for details about the resolution. At this chance, guard against load/store tearing on shared pointers. Pending issue: we still have a potential connectivity issue between the prep and finish ops when pushing to a tube. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 07 Feb, 2021 5 commits
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Enabling the ftrace infrastructure causes runtime overhead which is noticeable in latmus figures, even with dynamic tracepoints disabled. Warn about CONFIG_FTRACE being enabled. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
It comes in handy to be able to enable a set of related tracepoints for specific tracing purposes. The -e option can now take an optional parameter specifying a pre-defined group of related tracepoints to enable, so far: irq = pipeline_entry, pipeline_exit, handler_entry, handler_exit timer = tracepoints related to timer event handling with latmus (used in chasing latency in the timer handling path) evl = all core tracepoints all = all tracepoints ftrace knows about -eall is identical to -f. -E<tracepoint_file> enables the tracepoints mentioned in the user-provided <file>. -t can be passed to dry-run the enable command, getting the list of ftrace settings which would have been set without this option when enabling the trace. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 13 Dec, 2020 5 commits
-
-
Philippe Gerum authored
Having a predictable sequence for testing and listing is handy. In addition, ensure that shim tests are listed last. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Refrain from inlining core services, so that interposing on them via dynamic linking tricks is made easier. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
evl_get_current() contains implementation details which are definitely not part of the API and the way this works should not be exposed. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Refrain from inlining core services, so that interposing on them via dynamic linking tricks is made easier. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
What evl_read_clock() does is non-trivial, enough to call for an out of line implementation. In general, refrain from inlining core services, so that interposing on them via dynamic linking tricks is made easier. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 12 Dec, 2020 4 commits
-
-
Philippe Gerum authored
We have no more in-tree users of these. Besides, let's assume that the CPU's branch predictor always has better clues than we might have when assessing the likeliness of a condition. Bonus: this clears a recurring source of namespace clashes with C++ frameworks like Boost. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
In user-space at least, we'd be better off trusting the CPU's branch predictor, instead of relying on our limited perception when it comes to determining the likeliness of a condition, or every compiler to do the right thing with respect to efficient branching. We only have a couple of likely predictions in-tree on straightforward conditions from the tube implementation code, which we can remove safely. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 11 Nov, 2020 1 commit
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 10 Nov, 2020 1 commit
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 20 Sep, 2020 1 commit
-
-
When evl_attach_thread() was called, a local stack variable *attrs* will copy- from-user to linux-evl. The problem is that *attrs* initializes only two of its members:attrs.sched_policy and attrs.sched_priority, but none of the other members are initialized. These uninitialized may be "zero" or any other random values, for example: attrs->sched_rr_quantum may be some none-zero value when the threads under discussion is a SCHED_RR task. In this case, *attrs* copyed to linux-evl in *thread_common_ioctl()*, and attrs->sched_rr_quantum is none-zero value; then fllowed call *set_time_slice* will lead to a -EINVAL return for meet *quantum <= evl_get_clock_gravity()*. This patch will initialize all members of *attrs* to zero. Signed-off-by:
lio <liu.hailong6@zte.com.cn>
-
- 13 Sep, 2020 1 commit
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 16 Jul, 2020 2 commits
-
-
Libevl use *-Wshadow=local* flags in config.mk. However this flag is only valid when version >=7, otherwise gcc will complain : "unrecognized command line option ‘-Wshadow=local’; did you mean ‘-Wshadow-ivar’?" and compile will be failed. This patch fix this probelm. Signed-off-by:
lio <liu.hailong6@zte.com.cn> Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Kernel entry instrumentation/debug code has to run in the hot path by definition, add it to the list of settings which may increase latency. This feature is only available for x86 as of kernel 5.8, but it is likely going to spread all over the place in the future, so register it as generic. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 04 Jul, 2020 1 commit
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 14 Jun, 2020 3 commits
-
-
Philippe Gerum authored
Add back a 1s warm-up time, making sure not to include the delta values collected during this period in the histogram distribution this time. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
We cannot rule out one-time PTE misses at startup. Add back a 1s warm-up time for the unusual case. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
We may not get back to the test sitter upon signal (SIGINT/SIGALRM), so move the code parsing the last data bulk behind the sigwait() call instead. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 01 Jun, 2020 3 commits
-
-
Philippe Gerum authored
Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Using -C bypasses the CPU checks, allowing to set the CPU affinity to a non-isolated core. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
This mode measures the delay between the moment a synthetic interrupt is posted from the oob stage and when it is eventually received by its in-band handler. When measured under significant pressure, this gives the typical interrupt latency experienced by the in-band kernel due to local interrupt disabling. Therefore, this is an in-band only test which measures IRQ latency experienced by the common kernel infrastructure, _NOT_ by EVL. Measurement is requested with '-s' option. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
- 27 May, 2020 2 commits
-
-
Philippe Gerum authored
An ugly work-around to pass the test on armv6l (e.g. Raspberry PI Zero targeting the softfp floating-point ABI). Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-
Philippe Gerum authored
Using [SCHED_FIFO, 98] for running the responder thread will work for both EVL and native preemption configurations (i.e. GPIO mode). On the latter, it won't compete with high-priority housekeeping threads running in kernel space (prio 99) which is recommended and saner. On both, this leaves lower priority levels for common application-level threads. Signed-off-by:
Philippe Gerum <rpm@xenomai.org>
-