On 10/11/15 11:08, Maxim Uvarov wrote:
On 10 November 2015 at 13:41, Zoltan Kiss <zoltan.kiss@linaro.org mailto:zoltan.kiss@linaro.org> wrote:
On 10/11/15 07:39, Maxim Uvarov wrote: JIT like lua might also not work because you need to rewrite OVS to support it. I don't think that it will be accepted. And it looks like it's problem in OVS, not in ODP. I.e. OVS should allow to use library functions for fast path (where inlines are critical). I.e. not just call odp_packet_len(), but move hole OVS function to dynamic library. I'm not sure I get your point here, but OVS allows to use dynamic library functions on fast path. The problem is that it's slow, because of the function call overhead.
I'm not familiar with ovs code. But for example ovs has something like:
ovs_get_and_packet_process() { // here you use some inlines: pkt = odp_recv(); len = odp_packet_len(pkt);
... etc.
}
So it's clear for each target arch you needs it's own variant of ovs_get_and_packet_process() function. That function should go from ovs to dynamic library.
I see. That would mitigate some of the problems, but unfortunately the usage of these accessor functions couldn't be narrowed down to particular piece of fast path code. E.g. the packet length is a quite good example, you need it very often during processing, at different parts of the code.
Maxim.
regards, Maxim. On 10 November 2015 at 02:50, Bill Fischofer <bill.fischofer@linaro.org <mailto:bill.fischofer@linaro.org> <mailto:bill.fischofer@linaro.org <mailto:bill.fischofer@linaro.org>>> wrote: Adding Grant Likely to this chain as it relates to the broader subject of portable ABIs that we've been discussing. On Mon, Nov 9, 2015 at 4:48 PM, Jim Wilson <jim.wilson@linaro.org <mailto:jim.wilson@linaro.org> <mailto:jim.wilson@linaro.org <mailto:jim.wilson@linaro.org>>> wrote: On Mon, Nov 9, 2015 at 2:39 PM, Bill Fischofer <bill.fischofer@linaro.org <mailto:bill.fischofer@linaro.org> <mailto:bill.fischofer@linaro.org <mailto:bill.fischofer@linaro.org>>> wrote: > The IO Visor project appears to be doing something like this with LLVM and > JIT constructs to dynamically insert code into the kernel in a > platform-independent manner. Perhaps we can leverage that technology? GCC has some experimental JIT support, but I think it would be a lot of work to use it, and I don't know how stable it is. https://gcc.gnu.org/wiki/JIT The LLVM support is probably more advanced. Jim _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> <mailto:lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>> https://lists.linaro.org/mailman/listinfo/lng-odp _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> https://lists.linaro.org/mailman/listinfo/lng-odp