1. 17 Jul, 2014 2 commits
    • Philippe Gerum's avatar
      cobalt/timer: assign handler identifier as default timer name · 05ea3c68
      Philippe Gerum authored
      Timer name and handler name are redundant. Drop the latter, but assign
      it as the timer's default name until xntimer_set_name() is called.
      05ea3c68
    • Philippe Gerum's avatar
      cobalt/timer: introduce context-sensitive timer gravity · a7147eb6
      Philippe Gerum authored
      Applying a single gravity value for anticipating on all timer shots -
      regardless of what the issuing timer is being used for - falls short
      of considering the proper latency attached to the context. This leads
      to poor tuning, with either negative latencies (i.e. early shots)
      observed on measuring the jitter for irq handlers, or higher latencies
      than expected for user-space threads when using too optimistic
      (i.e. small) clock gravities.
      
      Typically, the distance between the core clock handler and the
      associated kernel-based handler the former calls, is much shorter than
      what has to be traversed for switching in a kernel thread. It is even
      shorter than the latency incurred for switching a user-space thread
      from the core clock handler.
      
      To solve this, we differentiate timers on the final context they
      activate, between irq(handler), kernel and user threads, using the
      appropriate gravity value when planning for the next shot, on a
      per-timer basis, instead of using a single per-clock gravity as
      previously.
      
      Two additional contexts (irq and kernel) are added to the clock
      gravity settings. The user can pass a hint to xntimer_init() for
      indicating which kind of context will be activated by this timer (see
      XNTIMER_[IKU]GRAVITY).
      
      There are side-effects for this change on the procfs support:
      
      - the information previously available from the xenomai/timer entry is
        now obtained by reading xenomai/clock/coreclk. In addition, the
        clock gravity values are reported.
      
      - the former contents of xenomai/clock/* entries (i.e. the list of
        active timers running on the associated clock) is now available from
        the new xenomai/timer/* entries, also indexed on the clock name.
      
      Writing to an entry under xenomai/clock/* can be used to change the
      gravity values of the associated clock.
      
      /* change the user gravity (default) */
      echo 3000 > /proc/xenomai/clock/coreclck
      /* change the IRQ gravity */
      echo 1000i > /proc/xenomai/clock/coreclck
      /* change the user and kernel gravities */
      echo "2000u 1000k" > /proc/xenomai/clock/coreclck
      a7147eb6
  2. 16 Jul, 2014 1 commit
  3. 10 Jul, 2014 2 commits
  4. 09 Jul, 2014 1 commit
  5. 08 Jul, 2014 1 commit
  6. 06 Jul, 2014 1 commit
  7. 05 Jul, 2014 2 commits
  8. 03 Jul, 2014 4 commits
  9. 01 Jul, 2014 1 commit
    • Philippe Gerum's avatar
      cobalt: fix naming consistency issues with *_np() calls · 50bd5540
      Philippe Gerum authored
      To match the GNU extension equivalent, pthread_set_name_np() is
      renamed to pthread_setname_np(). For consistency with the previous
      change, pthread_set_mode_np() becomes pthread_setmode_np().
      
      The former calls will be available from the upcoming transition kit.
      50bd5540
  10. 30 Jun, 2014 3 commits
  11. 26 Jun, 2014 1 commit
    • Philippe Gerum's avatar
      cobalt/thread: enable SIGDEBUG on denied lock break detection · 3eeb8249
      Philippe Gerum authored
      Send SIGDEBUG to the thread being denied a suspension/sleep state due
      to XNTRAPLB, if the atypical/abnormal detection feature is armed.
      The new SIGDEBUG_LOCK_BREAK alert code matches this case in the
      siginfo data conveyed by SIGDEBUG.
      
      At this chance, the related TCB state and information flag names have
      been updated to better reflect the semantics:
      
      XNTRAPSW -> XNWARN (SIGDEBUG warning enabled for atypical/abnormal
      conditions)
      
      XNSWREP -> XNPIALERT (Priority inversion alert sent [via SIGDEBUG])
      3eeb8249
  12. 25 Jun, 2014 1 commit
  13. 22 Jun, 2014 1 commit
  14. 17 Jun, 2014 2 commits
    • Philippe Gerum's avatar
      rtdm: introduce rtdm_task_join(), deprecate rtdm_task_join_nrt() · 8e161d18
      Philippe Gerum authored
      The new rtdm_task_join() service may be called regardless of the
      current execution mode, therefore rtdm_task_join_nrt() becomes
      pointless and will be phased out in the next release.
      8e161d18
    • Philippe Gerum's avatar
      cobalt/posix: drop pthread_make_periodic_np/wait_period_np services · bf112060
      Philippe Gerum authored
      We have no more in-tree users of these calls.
      
      With the introduction of services to support real-time signals, those
      two non-portable calls have become redundant. Instead, Cobalt-based
      applications should set up a periodic timer using the
      timer_create()+timer_settime() call pair, then wait for release points
      via sigwaitinfo(). Overruns can be detected by looking at the
      siginfo.si_overrun field.
      
      Alternatively, applications may obtain a file descriptor referring to
      a Cobalt timer via the timerfd() call, and read() from it to wait for
      timeouts.
      
      In addition, applications may include a timer in a synchronous
      multiplexing operation involving other event sources, by passing a
      file descriptor returned by the timerfd() service to a select() call.
      bf112060
  15. 15 Jun, 2014 1 commit
  16. 14 Jun, 2014 2 commits
  17. 12 Jun, 2014 1 commit
  18. 10 Jun, 2014 1 commit
  19. 06 Jun, 2014 1 commit
  20. 03 Jun, 2014 3 commits
  21. 02 Jun, 2014 3 commits
  22. 01 Jun, 2014 1 commit
  23. 30 May, 2014 2 commits
  24. 29 May, 2014 2 commits