<feed xmlns='http://www.w3.org/2005/Atom'>
<title>litmus-rt.git/include, branch pgm</title>
<subtitle>The LITMUS^RT kernel.</subtitle>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/'/>
<entry>
<title>Fix synchronous task system release support</title>
<updated>2013-06-08T20:06:56+00:00</updated>
<author>
<name>Bjoern Brandenburg</name>
<email>bbb@mpi-sws.org</email>
</author>
<published>2013-06-08T19:56:13+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=39d902832855cbd2baf45ac8943879be3ad8ca5a'/>
<id>39d902832855cbd2baf45ac8943879be3ad8ca5a</id>
<content type='text'>
...and also finally fix the requeue() race (hopefully).

Commit 4ffefb822b9d65d4efbedb60e3c9a0e76895cc5b broke the synchronous
task system release code. The problem is that release_at() clears the
tsk_rt(t)-&gt;completed flag. The patch thus only made the race window
smaller, but didn't close it entirely. Further, it broke the
synchronous task set release, which relies on schedule() being called
with completed == 1.

This patch fixes both problems by introducing a new flag dont_requeue,
which indicates unambiguously that a task should not be requeued by
other processors. This flag is cleared only when the job completion is
being processed, which always happens while holding the appropriate
scheduler locks, which closes the race window.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
...and also finally fix the requeue() race (hopefully).

Commit 4ffefb822b9d65d4efbedb60e3c9a0e76895cc5b broke the synchronous
task system release code. The problem is that release_at() clears the
tsk_rt(t)-&gt;completed flag. The patch thus only made the race window
smaller, but didn't close it entirely. Further, it broke the
synchronous task set release, which relies on schedule() being called
with completed == 1.

This patch fixes both problems by introducing a new flag dont_requeue,
which indicates unambiguously that a task should not be requeued by
other processors. This flag is cleared only when the job completion is
being processed, which always happens while holding the appropriate
scheduler locks, which closes the race window.
</pre>
</div>
</content>
</entry>
<entry>
<title>Define is_priority_boosted() if !CONFIG_LITMUS_LOCKING</title>
<updated>2013-05-04T10:05:21+00:00</updated>
<author>
<name>Bjoern Brandenburg</name>
<email>bbb@mpi-sws.org</email>
</author>
<published>2013-05-04T10:05:21+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=8319864c96a4b2cd519c2183f61dedc39e3d13a4'/>
<id>8319864c96a4b2cd519c2183f61dedc39e3d13a4</id>
<content type='text'>
To avoid compile errors if locking support is disabled, and to avoid
having to use #ifdef each time is_priority_boosted() is used.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To avoid compile errors if locking support is disabled, and to avoid
having to use #ifdef each time is_priority_boosted() is used.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix enum name conflict</title>
<updated>2013-05-03T08:52:36+00:00</updated>
<author>
<name>Felipe Cerqueira</name>
<email>felipec@mpi-sws.org</email>
</author>
<published>2013-05-01T17:19:58+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=d23bba2c2fb91821edc8be5a343f434bc7d35efb'/>
<id>d23bba2c2fb91821edc8be5a343f434bc7d35efb</id>
<content type='text'>
EARLY in release_policy_t was conflicting with
other kernel constants.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
EARLY in release_policy_t was conflicting with
other kernel constants.
</pre>
</div>
</content>
</entry>
<entry>
<title>Changed completion flag use to remove race condition in Cedf,Gedf.</title>
<updated>2013-04-12T19:17:26+00:00</updated>
<author>
<name>Jonathan Herman</name>
<email>hermanjl@cs.unc.edu</email>
</author>
<published>2013-04-12T19:17:26+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=4ffefb822b9d65d4efbedb60e3c9a0e76895cc5b'/>
<id>4ffefb822b9d65d4efbedb60e3c9a0e76895cc5b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Differentiate between PERIODIC and SPORADIC tasks.</title>
<updated>2013-03-12T14:29:37+00:00</updated>
<author>
<name>Glenn Elliott</name>
<email>gelliott@cs.unc.edu</email>
</author>
<published>2013-03-06T18:19:53+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=f4ffe0719dfc150ee182f308d31a226b034f206b'/>
<id>f4ffe0719dfc150ee182f308d31a226b034f206b</id>
<content type='text'>
Tasks can now be PERIODIC or SPORADIC.

PERIODIC tasks do not have their job number incremented
when they wake up and are tardy. PERIODIC jobs must
end with a call to sys_complete_job() to set up their next
release. (Not currently supported by pfair.)

SPORADIC tasks _do_ have their job number incremented when
they wake up and are tardy. SPORADIC is the default task
behavior, carrying forward Litmus's current behavior.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tasks can now be PERIODIC or SPORADIC.

PERIODIC tasks do not have their job number incremented
when they wake up and are tardy. PERIODIC jobs must
end with a call to sys_complete_job() to set up their next
release. (Not currently supported by pfair.)

SPORADIC tasks _do_ have their job number incremented when
they wake up and are tardy. SPORADIC is the default task
behavior, carrying forward Litmus's current behavior.
</pre>
</div>
</content>
</entry>
<entry>
<title>EDF schedulers: Support early job releasing.</title>
<updated>2013-03-12T14:29:24+00:00</updated>
<author>
<name>Glenn Elliott</name>
<email>gelliott@cs.unc.edu</email>
</author>
<published>2013-03-06T01:03:04+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=181b6bb0f5f122741262edc7ac0eca86d3f6dd73'/>
<id>181b6bb0f5f122741262edc7ac0eca86d3f6dd73</id>
<content type='text'>
This patch allows a task to request early releasing
via rt_task parameters to sys_set_task_rt_param().
Note that early releasing can easily peg your CPUs
since early-releasing tasks never suspend to wait for
their next job. As such, early releasing is really
only useful in the context of implementing bandwidth
servers, interrupt handling threads (or any thread that
spends most of its time waiting for an event), or
short-lived computations. If early releasing pegs your
CPUs, then you probably shouldn't be using it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch allows a task to request early releasing
via rt_task parameters to sys_set_task_rt_param().
Note that early releasing can easily peg your CPUs
since early-releasing tasks never suspend to wait for
their next job. As such, early releasing is really
only useful in the context of implementing bandwidth
servers, interrupt handling threads (or any thread that
spends most of its time waiting for an event), or
short-lived computations. If early releasing pegs your
CPUs, then you probably shouldn't be using it.
</pre>
</div>
</content>
</entry>
<entry>
<title>Disallow nesting of LITMUS^RT locks</title>
<updated>2013-02-15T15:44:42+00:00</updated>
<author>
<name>Bjoern Brandenburg</name>
<email>bbb@mpi-sws.org</email>
</author>
<published>2013-02-15T15:44:42+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=5b8782ef8948c7aad808971f359401f1dc837c25'/>
<id>5b8782ef8948c7aad808971f359401f1dc837c25</id>
<content type='text'>
Nesting of locks was never supported in LITMUS^RT since
the required analysis does not exist anyway. That is, as
defined in the literature, the protocols implemented
in LITMUS^RT have not been studied in conjunction with
nested critical sections.

In LITMUS^RT, attempting to nest locks could lead to
silent or not-so-silent bugs. This patch makes this
restriction explicit and returns EBUSY when a process
attempts to nest resources.

This is enforced on a protocol-by-protocol basis,
which means that adding protocols with support for
nesting in future versions is not affected by this
change.

Exception: PCP and SRP resources may be nested,
but not within global critical sections.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nesting of locks was never supported in LITMUS^RT since
the required analysis does not exist anyway. That is, as
defined in the literature, the protocols implemented
in LITMUS^RT have not been studied in conjunction with
nested critical sections.

In LITMUS^RT, attempting to nest locks could lead to
silent or not-so-silent bugs. This patch makes this
restriction explicit and returns EBUSY when a process
attempts to nest resources.

This is enforced on a protocol-by-protocol basis,
which means that adding protocols with support for
nesting in future versions is not affected by this
change.

Exception: PCP and SRP resources may be nested,
but not within global critical sections.
</pre>
</div>
</content>
</entry>
<entry>
<title>TRACE_TASK(): accept NULL pointers</title>
<updated>2013-02-04T14:24:57+00:00</updated>
<author>
<name>Bjoern Brandenburg</name>
<email>bbb@mpi-sws.org</email>
</author>
<published>2013-01-20T17:25:51+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=44b2be2bd7b1985345bf855bc74dfc303c7c79cb'/>
<id>44b2be2bd7b1985345bf855bc74dfc303c7c79cb</id>
<content type='text'>
Allow tracing of NULL tasks. Makes debugging a bit easier.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow tracing of NULL tasks. Makes debugging a bit easier.
</pre>
</div>
</content>
</entry>
<entry>
<title>litmus: get rid of unused RT_F_EXIT_SEM flag</title>
<updated>2012-11-27T18:50:17+00:00</updated>
<author>
<name>Manohar Vanga</name>
<email>mvanga@mpi-sws.org</email>
</author>
<published>2012-10-03T23:06:01+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=63537c738e7eb0ad6bc064b5e47c88092897c1cb'/>
<id>63537c738e7eb0ad6bc064b5e47c88092897c1cb</id>
<content type='text'>
This patch removes the RT_F_EXIT_SEM flag. All code paths
depending on it being true are assumed to be unreachable
and removed.

The 'flags' field in struct rt_params is left as-is for
use by specific schedulers. For example, sched_pfair
defines a custom flag RT_F_REQUEUE within the 'flags'
field.

Signed-off-by: Manohar Vanga &lt;mvanga@mpi-sws.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch removes the RT_F_EXIT_SEM flag. All code paths
depending on it being true are assumed to be unreachable
and removed.

The 'flags' field in struct rt_params is left as-is for
use by specific schedulers. For example, sched_pfair
defines a custom flag RT_F_REQUEUE within the 'flags'
field.

Signed-off-by: Manohar Vanga &lt;mvanga@mpi-sws.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>litmus: get rid of RT_F_SLEEP and RT_F_RUNNING</title>
<updated>2012-11-27T18:50:17+00:00</updated>
<author>
<name>Manohar Vanga</name>
<email>mvanga@mpi-sws.org</email>
</author>
<published>2012-10-03T22:30:51+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/litmus-rt.git/commit/?id=b7012aa7edba4b88906fc39b9005ff4dae69be59'/>
<id>b7012aa7edba4b88906fc39b9005ff4dae69be59</id>
<content type='text'>
This patch removes the flags RT_F_SLEEP and RT_F_RUNNING
as their name is misleading. This patch replaces them with
a 'completed' field in struct rt_param.

Signed-off-by: Manohar Vanga &lt;mvanga@mpi-sws.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch removes the flags RT_F_SLEEP and RT_F_RUNNING
as their name is misleading. This patch replaces them with
a 'completed' field in struct rt_param.

Signed-off-by: Manohar Vanga &lt;mvanga@mpi-sws.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
