1. 31 Jan, 2020 5 commits
  2. 22 Jan, 2020 1 commit
  3. 21 Jan, 2020 1 commit
  4. 16 Jan, 2020 2 commits
  5. 14 Jan, 2020 6 commits
  6. 17 Dec, 2019 1 commit
    • Jan Kiszka's avatar
      cobalt: sched-quota: Fix live-updating if quotas, once more · 133e9969
      Jan Kiszka authored
      f116e7eb already tried to enable live updates of a quota group but
      got one thing wrong and missed another catch:
      
      First, we must not use group_is_active() to check if the group is
      currently consuming time. That has to be the same logic as in
      xnsched_quota_pick(), i.e. a check of the currently running thread on
      the target sched belongs to the modified group.
      
      The second issue is that, if a group had no budget on refill or consumed
      it in this period already, an extension of the budget missed to move
      expired threads back to the runqueue.
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      133e9969
  7. 12 Dec, 2019 1 commit
  8. 09 Dec, 2019 1 commit
  9. 06 Dec, 2019 2 commits
  10. 05 Dec, 2019 1 commit
  11. 02 Dec, 2019 15 commits
  12. 27 Nov, 2019 1 commit
    • Jan Kiszka's avatar
      testsuite/smokey/posix-cond: Make more robust for execution in VMs · 3fb46693
      Jan Kiszka authored
      Specifically when running over QEMU on ARM64, there are frequent
      failures of this test case on check_sleep("mutex_lock"). Apparently,
      the context calling thread_spawn runs while the new thread is not yet
      executed. When the latter finally will, the creator already released
      the mutex, and the sleep check fails. This ensures that both contexts
      are running before starting the measurements.
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      3fb46693
  13. 25 Nov, 2019 3 commits
    • Philippe Gerum's avatar
      cobalt/thread: fix scheduler breakage on thread suspension · 3f16906c
      Philippe Gerum authored
      In the event that xnthread_suspend() adds blocking bit(s) to a thread
      which is running in primary mode on a remote CPU at the time of the
      call, a spurious rescheduling call is performed, causing the local CPU
      to pick its next thread from the remote CPU's runqueue.
      
      CPU0                              CPU1
      ----                              ----
                                        t2: ...
      t1: suspend(t2)                       ...
             |
             |
             +------> t2->sched == t2->sched->curr (i.e. running primary)
                                 |
                                 |
                                 +----> __xnsched_run(t2->sched);
                                              |
                                              |
                                              v
                                CPU0: ___xnsched__run(CPU1.sched);
      
      IOW, CPU0 would pick the next thread from CPU1's runqueue. Conditions
      for observing this bug:
      
      - t1 is running in primary mode on the local CPU (such as
        CPU0:sched->curr == t1) , so that the rescheduling request needs no
        prior escalation to the head stage, allowing ___xnsched_run() to
        execute immediately using the sched slot pointer received from
        __xnsched_run().
      
      - t2 is running in primary mode on a remote CPU (such as
        CPU1:sched->curr == t2) when t1 attempts to suspend it via a call to
        xnthread_suspend().
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      3f16906c
    • Philippe Gerum's avatar
      cobalt/process: remove superfluous check for non-relaxed state · e3a8e572
      Philippe Gerum authored
      If sched->curr is not the root thread, it has to refer to a Cobalt
      thread currently running in primary mode, by design. Convert this
      check to an assertion.
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      e3a8e572
    • Philippe Gerum's avatar
      cobalt/posix: fix missed rescheduling opportunities · a97cf34b
      Philippe Gerum authored
      stop_debugged_thread() may suspend threads running on a remote CPU, we
      have to kick the rescheduling procedure for these changes to take
      effect asap. Make sure xnsched_run() is kicked from the call sites
      once they are done updating the scheduler state.
      Signed-off-by: Philippe Gerum's avatarPhilippe Gerum <rpm@xenomai.org>
      Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
      a97cf34b