Jan Kiszka wrote: > This patch is in fact part of my xnlock rework (updates on that one will > follow the next days). I noticed that the complexity of > ipipe_cpudom_var(head_domain, *), normally inlined, is fairly relevant > for the text size of Xenomai and may thus impact the WCET as well. > > So I applied the same pattern as already used for ipipe_root_cpudom_var > also to the head domain, ie. assigned a fixed slot, the topmost, in > ipipe_percpu_daddr/darray to the head domain. This gives a nice text > size reduction as we no longer need to go via > __ipipe_pipeline.next->slot (2 memory accesses, even 3 on x867/SMP + > some arithmetics) to look up the address of per-cpu domain variables > like "status". > > The drawback is that this introduces an inconsistency to the > ipipe_*_pipeline_head API: It no longer works for head == root. While > this is most probably irrelevant in practice, it remains ugly. I already > thought about renaming the modified services (and deprecating the > original ones), but for now I would like to focus the discussion on the > optimized services. > > The patch already survived quite some testing on various real and > virtual boxes with Xenomai. Latency reduction is hard to estimate as > such comparably small optimizations are within the noise range of fast > test boxes. Maybe someone could give this a try on a smaller device (UP > should benefit from this patch as well!). >
The root domain cannot be an invariant pipeline head, by design, so I don't see any showstopper regarding this approach. This looks good. > Jan > > > ------------------------------------------------------------------------ > > _______________________________________________ > Adeos-main mailing list > [email protected] > https://mail.gna.org/listinfo/adeos-main -- Philippe. _______________________________________________ Adeos-main mailing list [email protected] https://mail.gna.org/listinfo/adeos-main
