<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style="--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title>
GitLab
</title>
<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>
<style>img {
max-width: 100%; height: auto;
}
body {
font-size: .875rem;
}
body {
-webkit-text-shadow: hsla(0,0%,100%,.01) 0 0 1px;
}
body {
font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style="font-size: inherit; -webkit-text-shadow: hsla(0,0%,100%,.01) 0 0 1px; font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";">
<div class="content">
<p class="details" style="font-style: italic; color: #626168;">
<a href="https://gitlab.rtems.org/sebhub">Sebastian Huber</a> created a merge request: <a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1481">!1481</a>
</p>
<div class="branch">
Project:Branches: sebhub/rtems:up/thread-timeout to rtems/rtos/rtems:main
</div>
<div class="author">
Author: Sebastian Huber
</div>
<div class="assignee">
Assignees:
</div>
<div class="reviewer">
Reviewers:
</div>
<div class="md gl-mt-5" style="position: relative; z-index: 1; color: #3a383f; word-wrap: break-word; margin-top: 1rem;">
<h2 id="user-content-summary" dir="auto" style="margin-top: 0px; margin-bottom: 10px;" align="initial">Summary<a href="#summary" aria-label="Link to heading 'Summary'" data-heading-content="Summary" class="anchor" style="margin-top: 0px;"></a>
</h2>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Issue <a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5756" title="score: A time of day set dispatches inside the watchdog tickle" class="gfm gfm-issue" data-original="#5756" data-link="false" data-link-reference="false" data-issue="29990" data-project="26" data-iid="5756" data-namespace-path="rtems/rtos/rtems" data-project-path="rtems/rtos/rtems" data-issue-type="issue" data-container="body" data-placement="top" data-reference-type="issue" style="margin-top: 0px;">#5756</a>: score: A time of day set dispatches inside the watchdog tickle</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Issue <a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5733" title="A timeout of a wait which ended may cancel the next wait" class="gfm gfm-issue" data-original="#5733" data-link="false" data-link-reference="false" data-issue="29959" data-project="26" data-iid="5733" data-namespace-path="rtems/rtos/rtems" data-project-path="rtems/rtos/rtems" data-issue-type="issue" data-container="body" data-placement="top" data-reference-type="issue" style="margin-top: 0px;">#5733</a>: A timeout ends a wait which already ended</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Thirteen commits, each one a step towards the three fixes.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The first disables the thread dispatch around the realtime tickle of
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_TOD_Set()</code>. <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Watchdog_Do_tickle()</code> calls a service routine outside
the lock of the collection and with interrupts enabled. <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_TOD_Set()</code>
runs in the task which calls <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">rtems_clock_set()</code> or <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">clock_settime()</code>
and held no dispatch. A thread dispatch point in a routine took the
processor away in the middle of the tickle. An interrupt which readies
a task of a higher priority did the same, because the level returns to
zero when the interrupt ends. A timer service routine which
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">rtems_clock_set()</code> calls may no longer call a directive which blocks.
That is already the rule for a service routine of the clock tick.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The second adds the validation test of that requirement. It arms a task
based timer and sets the clock beyond the time point of it. The routine
reports whether the thread dispatch is enabled.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The third lets the wait class alone name a started wait and drops
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">THREAD_WAIT_STATE_INTEND_TO_BLOCK</code>. It adds
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Thread_Wait_flags_exchange_release()</code>, so a party which ends a wait
writes the ready value once rather than running a compare and exchange
loop. The same dance stood in five places.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The fourth gives <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">rtems_task_wake_after()</code> and <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">rtems_task_wake_when()</code>
the new <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">THREAD_WAIT_CLASS_TIME</code>, so the flags of a sleeping thread say
that it sleeps. The fifth moves the state to bit 0 and the class to bits
1 to 5, which frees bits 6 to 31, and renames <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">THREAD_WAIT_CLASS_OBJECT</code>
to <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">THREAD_WAIT_CLASS_QUEUE</code>.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The sixth gives the flags a generation in bits 6 to 31. The generation
steps at the end of every wait, so the value names one wait of the
thread.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The seventh lets a watchdog carry an opaque token which the party who
schedules it writes. <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Watchdog_Do_tickle()</code> reads the token under the
lock of the header and hands it to the service routine, so the token
belongs to the schedule which expired. The token sits between the
routine and the expiration time point, so the structure grows by no word
on a 32 bit or a 64 bit target.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The eighth writes the thread wait flags of the wait into the token when
the wait arms the timer. <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Thread_Timeout()</code> compares the token against
the flags of the thread and does nothing where they differ. A tickle
phase runs with thread dispatch disabled, so only another processor can
start the new wait. The comparison is therefore built in an SMP
configuration only.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The ninth adds the validation test of that requirement. The runner arms
the timeout of a worker and moves the worker to the second processor.
The link wraps <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Thread_Timeout()</code>. The wrapper ends the first wait of
the worker and waits for the second wait before it calls the real
routine.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The tenth adds the field <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">timer_generation</code> to the period, which names
one schedule of the timer. <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Rate_monotonic_Insert_timer()</code> steps it and
writes it into the watchdog token, and <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Rate_monotonic_Remove_timer()</code>
steps it, so the token of a schedule which ends names no schedule.
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Rate_monotonic_Timeout()</code> compares it against the field under the lock
of the period and returns on a mismatch. The field sits in the padding
which the <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">uint64_t latest_deadline</code> already leaves after
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">postponed_jobs</code>, so the period does not grow. This comparison is built
in an SMP configuration only for the same reason.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The eleventh adds the validation test of the two requirements which the
tenth meets. The owner arms the period on the first processor and then
runs on the second one. The link wraps <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Rate_monotonic_Timeout()</code>, and
the wrapper lets the owner act before it calls the real routine. One
action lets the owner cancel the period and checks the state of it. The
other action lets the owner begin a new interval and checks the wait for
it.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The twelfth disables the thread dispatch around the tick.
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">rtems_clock_tick()</code> expires the watchdogs of the processor of the
caller and held no dispatch disable. A task which called it lost the
processor in the middle of a tickle phase. sp37 checks the dispatch
level in its timer service routine and takes the level which the tick
holds.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The thirteenth asserts that thread dispatch is disabled at the entry of
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">_Watchdog_Do_tickle()</code>. An interrupt handler meets the assertion,
because the interrupt entry raises the level. The tickle of spwatchdog
takes the dispatch disable which the caller of a real collection holds.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The branch shares <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">coretodset.c</code> with section 56, so whichever of the
two goes second needs a rebase.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The trees stay unchanged in the commits which are preparation. Each new
test fails before its fix and passes after it. The test suite of
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">sparc/gr740</code> runs in the four configurations without a regression.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial"><strong style="font-weight: 600; margin-top: 0px;">BSP</strong> <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">sparc/gr740</code> in four configurations · <strong style="font-weight: 600;">Simulator</strong> SIS</p>
<h2 id="user-content-ai-details" dir="auto" style="margin-top: 20px; margin-bottom: 10px;" align="initial">AI Details<a href="#ai-details" aria-label="Link to heading 'AI Details'" data-heading-content="AI Details" class="anchor" style="margin-top: 0px;"></a>
</h2>
<h3 id="user-content-prompt-used" dir="auto" style="margin-top: 1.5rem; margin-bottom: 1rem; font-weight: 600; font-size: 1.125rem; letter-spacing: inherit; line-height: 1.25; color: #18171d;" align="initial">Prompt used<a href="#prompt-used" aria-label="Link to heading 'Prompt used'" data-heading-content="Prompt used" class="anchor" style="margin-top: 0px;"></a>
</h3>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">None as a single prompt. The work was done in an interactive Claude Code
session on the RTEMS tree. The task was to run the test suites of the
simulator BSPs, diagnose every failure and fix the cause. Each change was
directed and reviewed.</p>
<h3 id="user-content-ai-model-used" dir="auto" style="margin-top: 1.5rem; margin-bottom: 1rem; font-weight: 600; font-size: 1.125rem; letter-spacing: inherit; line-height: 1.25; color: #18171d;" align="initial">AI model used<a href="#ai-model-used" aria-label="Link to heading 'AI model used'" data-heading-content="AI model used" class="anchor" style="margin-top: 0px;"></a>
</h3>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Claude Opus 5 (claude-opus-5), through Claude Code.</p>
<h3 id="user-content-how-ai-was-used-for-the-contribution" dir="auto" style="margin-top: 1.5rem; margin-bottom: 1rem; font-weight: 600; font-size: 1.125rem; letter-spacing: inherit; line-height: 1.25; color: #18171d;" align="initial">How AI was used for the contribution<a href="#how-ai-was-used-for-the-contribution" aria-label="Link to heading 'How AI was used for the contribution'" data-heading-content="How AI was used for the contribution" class="anchor" style="margin-top: 0px;"></a>
</h3>
<ul class="task-list" dir="auto" style="text-align: initial; list-style-type: disc; margin: 0px 0px 1rem; padding: 0;">
<li class="task-list-item" style="margin-top: 0px; line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Formatting" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Formatting</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: Test creation." style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Test creation.</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" checked disabled aria-label="Check option: Code comments." style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> Code comments.</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: The entire contribution was generated using AI" style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> The entire contribution was generated using AI</li>
<li class="task-list-item" style="line-height: 1.6em; margin-left: 25px; padding-left: 3px; position: relative; min-height: 22px; padding-inline-start: 32px; list-style-type: none; margin-inline-start: 0 !important;">
<input type="checkbox" class="task-list-item-checkbox" disabled aria-label="Check option: AI code completion such as Copilot in VSCode." style="margin-top: 0px; position: absolute; inset-inline-start: 8px; inset-block-start: 3px; all: unset; display: block; width: 1rem; height: 1rem; cursor: pointer; box-sizing: border-box; border-radius: .25rem; background-color: #ffffff; border: 1px solid #89888d;"> AI code completion such as Copilot in VSCode.</li>
</ul>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The diagnosis and the implementation were produced in that session under my
direction, and the commit messages were drafted there.</p>
<h3 id="user-content-access" dir="auto" style="margin-top: 1.5rem; margin-bottom: 1rem; font-weight: 600; font-size: 1.125rem; letter-spacing: inherit; line-height: 1.25; color: #18171d;" align="initial">Access<a href="#access" aria-label="Link to heading 'Access'" data-heading-content="Access" class="anchor" style="margin-top: 0px;"></a>
</h3>
<p dir="auto" style="color: #3a383f; margin: 0px;" align="initial">I have not used a product which claims copyright in its output, and I have
legitimate access to the one I used.</p>
</div>
</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #626168;">
—
<br>
<a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1481">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.rtems.org">gitlab.rtems.org</a>. <a href="https://gitlab.rtems.org/-/sent_notifications/5-4fqcwsv1zhvlbsqxdi79hxfqw-1d/unsubscribe" target="_blank" rel="noopener noreferrer">Unsubscribe</a> from this thread · <a href="https://gitlab.rtems.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.rtems.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>
<span style="color: transparent; font-size: 0; display: none; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0;">
Notification message regarding https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1481 at 1788933604
</span>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Merge request","url":"https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1481"}}</script>
</p>
</div>
</body>
</html>