Skip to content

Generic fast xnsynch support & more

Jan Kiszka xenomai 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest12 patches 37 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/12Generic thread registrationinclude/nucleus/registry.h include/nucleus/thread.h ksrc/nucleus/thread.c +6 more+102 -802 replies
2/12Handle-based xeno_get_current serviceinclude/asm-generic/bits/bind.h include/asm-generic/bits/current.h include/nucleus/types.h +20 more+199 -811 reply
3/12Remove xnarch_atomic_intptrinclude/asm-arm/atomic.h include/asm-blackfin/atomic.h include/asm-generic/Makefile.am +5 more+2 -371 reply
4/12Spread xeno_set_current under all skinssrc/skins/native/task.c src/skins/psos+/task.c src/skins/uitron/task.c +2 more+44 -111 reply
5/12Factor out xnsynch_acquire/releaseinclude/nucleus/synch.h include/rtdm/rtdm_driver.h ksrc/nucleus/synch.c +10 more+326 -1791 reply
6/12Lockless fast path for xnsynch_acquire/releaseconfigure.in include/asm-generic/bits/bind.h include/asm-generic/features.h +57 more+309 -1625 replies
7/12Convert POSIX skin to fast xnsynchksrc/skins/posix/cond.c ksrc/skins/posix/mutex.c ksrc/skins/posix/mutex.h +2 more+132 -1982 replies
8/12Use fast xnsynch with native skininclude/native/mutex.h ksrc/skins/native/cond.c ksrc/skins/native/mutex.c +3 more+398 -1579 replies
9/12Optionally replace pthread_getspecific with TLS variablesconfigure.in include/asm-generic/bits/bind.h include/asm-generic/bits/current.h +6 more+137 -223 replies
10/12Report current shadow thread mode to user spaceinclude/asm-generic/bits/bind.h include/asm-generic/bits/current.h include/native/syscall.h +18 more+201 -373 replies
11/12Ensure mode switch in mutex fast pathssrc/skins/native/mutex.c src/skins/posix/mutex.c+71 -541 reply
12/12Enable SMP support for user libs by defaultREADME.INSTALL configure.in+4 -42 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [Xenomai-core] [PATCH 00/12] Generic fast xnsynch support & more

Here comes a significantly reworked patch series to improve fast mutex support of Xenomai.

This approach now introduces a generic fast xnsynch core and converts the existing POSIX implementation over. It also comes with a second user, the Native skin. Additionally, it improves xeno_get_current via a TLS variable and addresses the issue that threads in secondary mode acquiring an uncontended mutex need to be migrated first.

At this chance, the TLS optimization is also applied on self-lookups of task handles (Native, VRTX and VxWorks). And I included my SMP-by-default patch for user libs which is highly recommended to reduce the risk of accidental code breakage on SMP with the new mutex code.

Jan

---
 include/asm-generic/atomic.h               |   24 -
 xenomai/README.INSTALL                     |    2 
 xenomai/configure.in                       |   45 +-
 xenomai/include/asm-arm/atomic.h           |    3 
 xenomai/include/asm-blackfin/atomic.h      |    2 
 xenomai/include/asm-generic/Makefile.am    |    2 
 xenomai/include/asm-generic/Makefile.in    |    2 
 xenomai/include/asm-generic/bits/bind.h    |   82 +++-
 xenomai/include/asm-generic/bits/current.h |   36 +
 xenomai/include/asm-generic/features.h     |   24 -
 xenomai/include/asm-ia64/atomic.h          |    2 
 xenomai/include/asm-powerpc/atomic.h       |    2 
 xenomai/include/asm-x86/atomic.h           |    2 
 xenomai/include/native/mutex.h             |   23 -
 xenomai/include/native/syscall.h           |    1 
 xenomai/include/nucleus/registry.h         |    1 
 xenomai/include/nucleus/shadow.h           |    3 
 xenomai/include/nucleus/synch.h            |   70 +++
 xenomai/include/nucleus/thread.h           |   29 +
 xenomai/include/nucleus/types.h            |   13 
 xenomai/include/psos+/syscall.h            |    8 
 xenomai/include/rtdm/rtdm_driver.h         |    2 
 xenomai/include/vrtx/syscall.h             |    1 
 xenomai/include/vxworks/syscall.h          |    1 
 xenomai/ksrc/arch/arm/Kconfig              |    2 
 xenomai/ksrc/arch/powerpc/Kconfig          |    2 
 xenomai/ksrc/arch/x86/Kconfig              |    2 
 xenomai/ksrc/drivers/testing/switchtest.c  |    2 
 xenomai/ksrc/nucleus/pipe.c                |    2 
 xenomai/ksrc/nucleus/registry.c            |    4 
 xenomai/ksrc/nucleus/select.c              |    2 
 xenomai/ksrc/nucleus/shadow.c              |   38 +-
 xenomai/ksrc/nucleus/synch.c               |  534 ++++++++++++++++++++---------
 xenomai/ksrc/nucleus/thread.c              |    2 
 xenomai/ksrc/skins/native/Kconfig          |    1 
 xenomai/ksrc/skins/native/alarm.c          |    2 
 xenomai/ksrc/skins/native/buffer.c         |    4 
 xenomai/ksrc/skins/native/cond.c           |   18 
 xenomai/ksrc/skins/native/event.c          |    2 
 xenomai/ksrc/skins/native/heap.c           |    2 
 xenomai/ksrc/skins/native/intr.c           |    2 
 xenomai/ksrc/skins/native/mutex.c          |  327 ++++++++++-------
 xenomai/ksrc/skins/native/queue.c          |    2 
 xenomai/ksrc/skins/native/sem.c            |    2 
 xenomai/ksrc/skins/native/syscall.c        |  132 +++++--
 xenomai/ksrc/skins/native/task.c           |   28 -
 xenomai/ksrc/skins/posix/Kconfig           |    1 
 xenomai/ksrc/skins/posix/cb_lock.h         |   21 -
 xenomai/ksrc/skins/posix/cond.c            |   34 -
 xenomai/ksrc/skins/posix/intr.c            |    2 
 xenomai/ksrc/skins/posix/mq.c              |    4 
 xenomai/ksrc/skins/posix/mutex.c           |  121 ++++--
 xenomai/ksrc/skins/posix/mutex.h           |  136 +------
 xenomai/ksrc/skins/posix/sem.c             |    2 
 xenomai/ksrc/skins/posix/syscall.c         |   61 +--
 xenomai/ksrc/skins/posix/thread.c          |   14 
 xenomai/ksrc/skins/psos+/Kconfig           |    2 
 xenomai/ksrc/skins/psos+/event.c           |    2 
 xenomai/ksrc/skins/psos+/queue.c           |    2 
 xenomai/ksrc/skins/psos+/rn.c              |    2 
 xenomai/ksrc/skins/psos+/sem.c             |    2 
 xenomai/ksrc/skins/psos+/syscall.c         |   53 +-
 xenomai/ksrc/skins/psos+/task.c            |   20 -
 xenomai/ksrc/skins/rtai/Kconfig            |    1 
 xenomai/ksrc/skins/rtai/sem.c              |   12 
 xenomai/ksrc/skins/rtai/task.c             |   10 
 xenomai/ksrc/skins/rtdm/drvlib.c           |   27 -
 xenomai/ksrc/skins/uitron/Kconfig          |    1 
 xenomai/ksrc/skins/uitron/flag.c           |    2 
 xenomai/ksrc/skins/uitron/mbx.c            |    3 
 xenomai/ksrc/skins/uitron/sem.c            |    3 
 xenomai/ksrc/skins/uitron/syscall.c        |    8 
 xenomai/ksrc/skins/uitron/task.c           |   11 
 xenomai/ksrc/skins/vrtx/Kconfig            |    2 
 xenomai/ksrc/skins/vrtx/event.c            |    2 
 xenomai/ksrc/skins/vrtx/mb.c               |    2 
 xenomai/ksrc/skins/vrtx/mx.c               |    7 
 xenomai/ksrc/skins/vrtx/queue.c            |    2 
 xenomai/ksrc/skins/vrtx/sem.c              |    2 
 xenomai/ksrc/skins/vrtx/syscall.c          |    4 
 xenomai/ksrc/skins/vrtx/task.c             |   17 
 xenomai/ksrc/skins/vxworks/Kconfig         |    2 
 xenomai/ksrc/skins/vxworks/module.c        |    2 
 xenomai/ksrc/skins/vxworks/msgQLib.c       |    2 
 xenomai/ksrc/skins/vxworks/semLib.c        |    8 
 xenomai/ksrc/skins/vxworks/syscall.c       |   37 +-
 xenomai/ksrc/skins/vxworks/taskLib.c       |   12 
 xenomai/src/skins/native/cond.c            |   30 +
 xenomai/src/skins/native/init.c            |    8 
 xenomai/src/skins/native/mutex.c           |  105 +++++
 xenomai/src/skins/native/task.c            |   44 ++
 xenomai/src/skins/posix/mutex.c            |  192 +++++-----
 xenomai/src/skins/posix/thread.c           |   33 +
 xenomai/src/skins/psos+/task.c             |   34 +
 xenomai/src/skins/uitron/task.c            |   29 +
 xenomai/src/skins/vrtx/init.c              |   19 -
 xenomai/src/skins/vrtx/task.c              |   37 +-
 xenomai/src/skins/vxworks/init.c           |    8 
 xenomai/src/skins/vxworks/taskLib.c        |   29 +
 99 files changed, 1809 insertions(+), 909 deletions(-)

--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux