Philippe Gerum wrote:
> On Thu, 2006-07-13 at 13:13 +0200, Jan Kiszka wrote:
>> Hi,
>>
>> some may recall the "micro-optimisation" thread I once started. Here is
>> now a simple approach to deal with the yet suboptimal mux-code
>> calculation in user-space. Code saving:
>>
>> Before:
>>    text    data     bss     dec     hex filename
>>   18004     476       8   18488    4838 native/.libs/libnative.so
>>   27445     696       4   28145    6df1 posix/.libs/libpthread_rt.so
>>
>> After:
>>    text    data     bss     dec     hex filename
>>   17172     476       8   17656    44f8 native/.libs/libnative.so
>>   26805     696       4   27505    6b71 posix/.libs/libpthread_rt.so
>>
>> Of course, this also results in a few ops less being executed on each
>> Xenomai syscall invocation (not many cycles, though).
>>
>> Tested without problems on x86 so far.
>>
> 
> This is post 2.2 stuff since we need to check this critical change
> against each and every supported arch. 

Agree, there is no need to hurry in 2.2.

> Since this breaks the ABI
> including the ascending compatibility between old apps and new kernel
> support, this won't make it during the v2 series either.

The ABI chance just took place due to my laziness - I didn't want to
touch every skin library. Anyway, this ABI breakage can be avoided with
slightly more effort, i.e. by doing the shift in user-space during the
binding.

> 
>> Jan
>> plain text document attachment (optimise-muxcode-calculation.patch)
>> ---
>>  include/asm-arm/syscall.h      |   25 +++++++++++++------------
>>  include/asm-blackfin/syscall.h |    4 +++-
>>  include/asm-i386/syscall.h     |    3 ++-
>>  include/asm-ia64/syscall.h     |   23 ++++++++++++-----------
>>  include/asm-powerpc/syscall.h  |    3 ++-
>>  ksrc/nucleus/shadow.c          |    3 ++-
>>  6 files changed, 34 insertions(+), 27 deletions(-)
>>
>> Index: xenomai/include/asm-arm/syscall.h
>> ===================================================================
>> --- xenomai.orig/include/asm-arm/syscall.h
>> +++ xenomai/include/asm-arm/syscall.h
>> @@ -26,6 +26,7 @@
>>  #include <asm-generic/xenomai/syscall.h>
>>  
>>  #define __xn_mux_code(id,op)    ((op << 24)|((id << 16) & 
>> 0xff0000)|(__xn_sys_mux & 0xffff))
>> +#define __xn_mux_code_shft(shifted_id,op) ((op << 
>> 24)|shifted_id|(__xn_sys_mux & 0xffff))
> 
> +#define __xn_mux_code_shft(shifted_id,op) ((op << 24)|shifted_id)
> 
> should be enough.

Given my current calculation of the muxid in the kernel, yes. But the
original variant has zero effect on the code and looks more consistent
to me.

> 
> <snip>
> 
>> Index: xenomai/include/asm-blackfin/syscall.h
>> ===================================================================
>> --- xenomai.orig/include/asm-blackfin/syscall.h
>> +++ xenomai/include/asm-blackfin/syscall.h
>> @@ -27,6 +27,7 @@
>>     (i.e. negative syscall number in orig_p0 meaning "non-syscall
>>     entry"). */
>>  #define __xn_mux_code(id,op)   ((id << 24)|((op << 16) & 
>> 0xff0000)|(__xn_sys_mux & 0xffff))
>> +#define __xn_mux_code_fast(shifted_id,op) ((op << 
>> 24)|shifted_id|(__xn_sys_mux & 0xffff))
>>  
> 
> Breakage alert.
> 

Oops.

Ok, I will rework this patch.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to