Accepting request 351159 from home:mgalbraith_external2:branches:hardware

- Merge new cpuset upstream.  Update URL, and add post v1.5.6 fixes.
- New patches:
  Fix-crash-with-SCHED_IDLE-policy.patch (bnc#959992)
  Handle-unknown-scheduler-policy-codes-gracefully.patch (bnc#959992)
  Parse-proc-pid-stat-properly.patch
  Docu-remove-mention-about-nonexistent-option.patch (bnc#957323)
  Docu-fix-asciidoc-build-error.patch
  Update-URLs-after-project-migration.patch
  Docu-fixed-a-typo.patch
  Fix-typo-in-setup-py.patch

OBS-URL: https://build.opensuse.org/request/show/351159
OBS-URL: https://build.opensuse.org/package/show/hardware/cpuset?expand=0&rev=24
This commit is contained in:
Mike Galbraith 2015-12-29 09:11:35 +00:00 committed by Git OBS Bridge
parent 038a3b1665
commit ae928f1f52
10 changed files with 4136 additions and 2 deletions

View File

@ -0,0 +1,21 @@
From 9fb11328779ec31bd7034b3a6099d8cfb4510be4 Mon Sep 17 00:00:00 2001
From: Libor Pechacek <lpechacek@suse.com>
Date: Wed, 23 Dec 2015 14:01:54 +0100
Subject: [PATCH] Docu: fix asciidoc build error
References:
Signed-off-by: Libor Pechacek <lpechacek@suse.com>
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
doc/tutorial.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/doc/tutorial.txt
+++ b/doc/tutorial.txt
@@ -1,5 +1,5 @@
Cpuset (cset) Tutorial
-######################
+======================
Alex Tsariounov <alext@novell.com> +
Copyright (c) 2009-2011 Novell Inc., cset v1.5.6 +

928
Docu-fixed-a-typo.patch Normal file
View File

@ -0,0 +1,928 @@
From 86cb8ac7d3db19b6e93075ca701f7e5c471f0588 Mon Sep 17 00:00:00 2001
From: Libor Pechacek <lpechacek@suse.com>
Date: Wed, 23 Dec 2015 14:21:20 +0100
Subject: [PATCH] Docu: fixed a typo
References:
Signed-off-by: Libor Pechacek <lpechacek@suse.com>
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
doc/cset-shield.1 | 30 +-
doc/cset-shield.html | 588 ++++++++++++++++++++++++++++++++++++++++-----------
doc/cset-shield.txt | 2
3 files changed, 490 insertions(+), 130 deletions(-)
--- a/doc/cset-shield.1
+++ b/doc/cset-shield.1
@@ -1,13 +1,22 @@
'\" t
.\" Title: cset-shield
-.\" Author: [see the "AUTHOR" section]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\" Date: 06/09/2011
-.\" Manual: [FIXME: manual]
-.\" Source: [FIXME: source]
+.\" Author: Alex Tsariounov <alext@novell.com>
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: June 2011
+.\" Manual: \ \&
+.\" Source: \ \& 1.5.6
.\" Language: English
.\"
-.TH "CSET\-SHIELD" "1" "06/09/2011" "[FIXME: source]" "[FIXME: manual]"
+.TH "CSET\-SHIELD" "1" "June 2011" "\ \& 1\&.5\&.6" "\ \&"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
@@ -208,7 +217,7 @@ The above command moves all processes an
The range of PIDs or TIDs does not need to have every position populated\&. In other words, for the example above, if there is only one process, say PID 57, in the range of 50\-65, then only that process will be moved\&.
.sp .5v
.RE
-The \-\-unshield (or \-u) subcommand will remove the specified processes or threads from the shielded cpuset and move them into the unshielded (or system) cpuset\&. This command is also used in conjuction with a \-p/\-\-pid option that specifies a PIDSPEC argument, the same as for the \-\-shield subcommand\&.
+The \-\-unshield (or \-u) subcommand will remove the specified processes or threads from the shielded cpuset and move them into the unshielded (or system) cpuset\&. This command is also used in conjunction with a \-p/\-\-pid option that specifies a PIDSPEC argument, the same as for the \-\-shield subcommand\&.
Both the \-\-shield and the \-\-unshield commands will also finally output the number of tasks running in the shield and out of the shield if you do not specify a PIDSPEC with \-\-pid\&. By specifying also a \-\-verbose in addition, then you will get a listing of every task that is running in either the shield or out of the shield\&.
@@ -252,4 +261,9 @@ cset(1), cset\-set(1), cset\-proc(1)
taskset(1), chrt(1)
/usr/src/linux/Documentation/cpusets\&.txt
-
+.SH "AUTHOR"
+.PP
+\fBAlex Tsariounov\fR <\&alext@novell\&.com\&>
+.RS 4
+Author.
+.RE
--- a/doc/cset-shield.html
+++ b/doc/cset-shield.html
@@ -2,15 +2,25 @@
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.4.5" />
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="generator" content="AsciiDoc 8.6.8" />
<title>cset-shield(1)</title>
<style type="text/css">
-/* Debug borders */
-p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
-/*
- border: 1px solid red;
-*/
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
}
body {
@@ -35,13 +45,8 @@ strong {
color: #083194;
}
-tt {
- color: navy;
-}
-
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
- font-family: sans-serif;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
@@ -59,9 +64,11 @@ h3 {
h3 + * {
clear: left;
}
+h5 {
+ font-size: 1.0em;
+}
div.sectionbody {
- font-family: serif;
margin-left: 0;
}
@@ -77,53 +84,58 @@ p {
ul, ol, li > p {
margin-top: 0;
}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
-pre {
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
padding: 0;
margin: 0;
}
-span#author {
+
+#author {
color: #527bbd;
- font-family: sans-serif;
font-weight: bold;
font-size: 1.1em;
}
-span#email {
+#email {
}
-span#revnumber, span#revdate, span#revremark {
- font-family: sans-serif;
+#revnumber, #revdate, #revremark {
}
-div#footer {
- font-family: sans-serif;
+#footer {
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
-div#footer-text {
+#footer-text {
float: left;
padding-bottom: 0.5em;
}
-div#footer-badges {
+#footer-badges {
float: right;
padding-bottom: 0.5em;
}
-div#preamble {
+#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
+div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
- margin-top: 1.5em;
+ margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.admonitionblock {
- margin-top: 2.5em;
- margin-bottom: 2.5em;
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
}
div.content { /* Block element content. */
@@ -133,7 +145,6 @@ div.content { /* Block element content.
/* Block element titles. */
div.title, caption.title {
color: #527bbd;
- font-family: sans-serif;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
@@ -155,31 +166,34 @@ div.content + div.title {
div.sidebarblock > div.content {
background: #ffffee;
- border: 1px solid silver;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
padding: 0.5em;
}
div.listingblock > div.content {
- border: 1px solid silver;
- background: #f4f4f4;
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
padding: 0.5em;
}
-div.quoteblock {
- padding-left: 2.0em;
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
}
+
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
-div.verseblock {
- padding-left: 2.0em;
- margin-right: 10%;
-}
-div.verseblock > div.content {
- white-space: pre;
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
@@ -200,12 +214,12 @@ div.admonitionblock .icon {
}
div.admonitionblock td.content {
padding-left: 0.5em;
- border-left: 2px solid silver;
+ border-left: 3px solid #dddddd;
}
div.exampleblock > div.content {
- border-left: 2px solid silver;
- padding: 0.5em;
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
@@ -252,35 +266,12 @@ div.compact div, div.compact div {
margin-bottom: 0.1em;
}
-div.tableblock > table {
- border: 3px solid #527bbd;
-}
-thead {
- font-family: sans-serif;
- font-weight: bold;
-}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
-p.table {
- margin-top: 0;
-}
-/* Because the table frame attribute is overriden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
- border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
- border-left-style: none;
- border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
- border-top-style: none;
- border-bottom-style: none;
-}
-
div.hdlist {
margin-top: 0.8em;
@@ -310,20 +301,59 @@ div.hdlist.compact tr {
background: yellow;
}
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
@media print {
- div#footer-badges { display: none; }
+ #footer-badges { display: none; }
}
-div#toctitle {
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
color: #527bbd;
- font-family: sans-serif;
font-size: 1.1em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
-div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
margin-top: 0;
margin-bottom: 0;
}
@@ -339,68 +369,367 @@ div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}
-/* Overrides for manpage documents */
-h1 {
- padding-top: 0.5em;
- padding-bottom: 0.5em;
- border-top: 2px solid silver;
- border-bottom: 2px solid silver;
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
}
-h2 {
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
border-style: none;
}
-div.sectionbody {
- margin-left: 5%;
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
}
-
-@media print {
- div#toc { display: none; }
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
}
-/* Workarounds for IE6's broken and incomplete CSS2. */
-div.sidebar-content {
- background: #ffffee;
- border: 1px solid silver;
- padding: 0.5em;
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
}
-div.sidebar-title, div.image-title {
- color: #527bbd;
- font-family: sans-serif;
+thead, p.tableblock.header {
font-weight: bold;
- margin-top: 0.0em;
- margin-bottom: 0.5em;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
}
-div.listingblock div.content {
- border: 1px solid silver;
- background: #f4f4f4;
- padding: 0.5em;
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
}
-div.quoteblock-attribution {
- padding-top: 0.5em;
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
text-align: right;
}
-div.verseblock-content {
- white-space: pre;
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
}
-div.verseblock-attribution {
- padding-top: 0.75em;
- text-align: left;
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
}
-div.exampleblock-content {
- border-left: 2px solid silver;
- padding-left: 0.5em;
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
}
-/* IE6 sets dynamically generated links as visited. */
-div#toc a:visited { color: blue; }
+
</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+var asciidoc = { // Namespace.
+
+/////////////////////////////////////////////////////////////////////
+// Table Of Contents generator
+/////////////////////////////////////////////////////////////////////
+
+/* Author: Mihai Bazon, September 2002
+ * http://students.infoiasi.ro/~mishoo
+ *
+ * Table Of Content generator
+ * Version: 0.4
+ *
+ * Feel free to use this script under the terms of the GNU General Public
+ * License, as long as you do not remove or alter this notice.
+ */
+
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
+
+// toclevels = 1..4.
+toc: function (toclevels) {
+
+ function getText(el) {
+ var text = "";
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
+ text += i.data;
+ else if (i.firstChild != null)
+ text += getText(i);
+ }
+ return text;
+ }
+
+ function TocEntry(el, text, toclevel) {
+ this.element = el;
+ this.text = text;
+ this.toclevel = toclevel;
+ }
+
+ function tocEntries(el, toclevels) {
+ var result = new Array;
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
+ // Function that scans the DOM tree for header elements (the DOM2
+ // nodeIterator API would be a better technique but not supported by all
+ // browsers).
+ var iterate = function (el) {
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
+ var mo = re.exec(i.tagName);
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
+ }
+ iterate(i);
+ }
+ }
+ }
+ iterate(el);
+ return result;
+ }
+
+ var toc = document.getElementById("toc");
+ if (!toc) {
+ return;
+ }
+
+ // Delete existing TOC entries in case we're reloading the TOC.
+ var tocEntriesToRemove = [];
+ var i;
+ for (i = 0; i < toc.childNodes.length; i++) {
+ var entry = toc.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div'
+ && entry.getAttribute("class")
+ && entry.getAttribute("class").match(/^toclevel/))
+ tocEntriesToRemove.push(entry);
+ }
+ for (i = 0; i < tocEntriesToRemove.length; i++) {
+ toc.removeChild(tocEntriesToRemove[i]);
+ }
+
+ // Rebuild TOC entries.
+ var entries = tocEntries(document.getElementById("content"), toclevels);
+ for (var i = 0; i < entries.length; ++i) {
+ var entry = entries[i];
+ if (entry.element.id == "")
+ entry.element.id = "_toc_" + i;
+ var a = document.createElement("a");
+ a.href = "#" + entry.element.id;
+ a.appendChild(document.createTextNode(entry.text));
+ var div = document.createElement("div");
+ div.appendChild(a);
+ div.className = "toclevel" + entry.toclevel;
+ toc.appendChild(div);
+ }
+ if (entries.length == 0)
+ toc.parentNode.removeChild(toc);
+},
+
+
+/////////////////////////////////////////////////////////////////////
+// Footnotes generator
+/////////////////////////////////////////////////////////////////////
+
+/* Based on footnote generation code from:
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
+ */
+
+footnotes: function () {
+ // Delete existing footnote entries in case we're reloading the footnodes.
+ var i;
+ var noteholder = document.getElementById("footnotes");
+ if (!noteholder) {
+ return;
+ }
+ var entriesToRemove = [];
+ for (i = 0; i < noteholder.childNodes.length; i++) {
+ var entry = noteholder.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
+ entriesToRemove.push(entry);
+ }
+ for (i = 0; i < entriesToRemove.length; i++) {
+ noteholder.removeChild(entriesToRemove[i]);
+ }
+
+ // Rebuild footnote entries.
+ var cont = document.getElementById("content");
+ var spans = cont.getElementsByTagName("span");
+ var refs = {};
+ var n = 0;
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnote") {
+ n++;
+ var note = spans[i].getAttribute("data-note");
+ if (!note) {
+ // Use [\s\S] in place of . so multi-line matches work.
+ // Because JavaScript has no s (dotall) regex flag.
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+ spans[i].innerHTML =
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ spans[i].setAttribute("data-note", note);
+ }
+ noteholder.innerHTML +=
+ "<div class='footnote' id='_footnote_" + n + "'>" +
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
+ n + "</a>. " + note + "</div>";
+ var id =spans[i].getAttribute("id");
+ if (id != null) refs["#"+id] = n;
+ }
+ }
+ if (n == 0)
+ noteholder.parentNode.removeChild(noteholder);
+ else {
+ // Process footnoterefs.
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnoteref") {
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
+ href = href.match(/#.*/)[0]; // Because IE return full URL.
+ n = refs[href];
+ spans[i].innerHTML =
+ "[<a href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ }
+ }
+ }
+},
+
+install: function(toclevels) {
+ var timerId;
+
+ function reinstall() {
+ asciidoc.footnotes();
+ if (toclevels) {
+ asciidoc.toc(toclevels);
+ }
+ }
+
+ function reinstallAndRemoveTimer() {
+ clearInterval(timerId);
+ reinstall();
+ }
+
+ timerId = setInterval(reinstall, 500);
+ if (document.addEventListener)
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
+ else
+ window.onload = reinstallAndRemoveTimer;
+}
+
+}
+asciidoc.install();
+/*]]>*/
+</script>
</head>
-<body>
+<body class="manpage">
<div id="header">
<h1>
cset-shield(1) Manual Page
@@ -412,10 +741,12 @@ cset-shield(1) Manual Page
</p>
</div>
</div>
+<div id="content">
+<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
-<div class="verseblock-content"><em>cset</em> [cset options] <em>shield</em> [shield options] [args]
+<pre class="content"><em>cset</em> [cset options] <em>shield</em> [shield options] [args]
<em>cset</em> shield --help
<em>cset</em> shield
<em>cset</em> shield --cpu 1-7
@@ -426,10 +757,12 @@ cset-shield(1) Manual Page
<em>cset</em> shield --unshield --pid 6000-8500
<em>cset</em> shield --kthread=off
<em>cset</em> shield --kthread=on
-<em>cset</em> shield --shield bash</div>
-<div class="verseblock-attribution">
+<em>cset</em> shield --shield bash</pre>
+<div class="attribution">
</div></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
@@ -550,6 +883,8 @@ cset-shield(1) Manual Page
</dd>
</dl></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This is a supercommand that creates basic cpu shielding. The
@@ -588,7 +923,7 @@ is running in initially when using the -
be under the shield (this means assigned to the user cpuset, all
other cpus will be assigned to the system set).</p></div>
<div class="paragraph"><p>For example:</p></div>
-<div class="paragraph"><p><strong><tt># cset shield --cpu=1-3</tt></strong></p></div>
+<div class="paragraph"><p><strong><code># cset shield --cpu=1-3</code></strong></p></div>
<div class="paragraph"><p>On a 4-way machine, this command will dedicate the first
processor, CPU0, for the system set (unshielded) and the last
three processors, CPU1, CPU2, CPU3, for the user set (shielded).</p></div>
@@ -601,7 +936,7 @@ cpuset.</p></div>
unshielded and shielded sets respectively, or if those names are
used already, then use the --sysset and --userset options.</p></div>
<div class="paragraph"><p>For example:</p></div>
-<div class="paragraph"><p><strong><tt># cset shield --sysset=free --userset=cage --cpu=2,3 --kthread=on</tt></strong></p></div>
+<div class="paragraph"><p><strong><code># cset shield --sysset=free --userset=cage --cpu=2,3 --kthread=on</code></strong></p></div>
<div class="paragraph"><p>The above command will use the name "free" for the unshielded
system cpuset, the name "cage" for the shielded user cpuset,
initialize these cpusets and dedicate CPU0 and CPU1 to the "free"
@@ -626,7 +961,7 @@ subcommand and the --pid option.</p></di
traditional "--" marker to separate cset&#8217;s options from your
command&#8217;s options.</p></div>
<div class="paragraph"><p>For example:</p></div>
-<div class="paragraph"><p><strong><tt># cset shield --exec&#8201;&#8212;&#8201;ls -l</tt></strong></p></div>
+<div class="paragraph"><p><strong><code># cset shield --exec&#8201;&#8212;&#8201;ls -l</code></strong></p></div>
<div class="paragraph"><p>This command will execute "ls -l" inside the shield.</p></div>
<div class="paragraph"><p>The PIDSPEC argument taken for the --pid (or -p) option is a
comma separated list of PIDs or TIDs. The list can also include
@@ -634,10 +969,10 @@ brackets of PIDs or TIDs that are inclus
<div class="paragraph"><p>For example:</p></div>
<div class="literalblock">
<div class="content">
-<pre><tt>1,2,5 Means processes 1, 2 and 5
-1,2,600-700 Means processes 1, 2 and from 600 to 700</tt></pre>
+<pre><code>1,2,5 Means processes 1, 2 and 5
+1,2,600-700 Means processes 1, 2 and from 600 to 700</code></pre>
</div></div>
-<div class="paragraph"><p><strong><tt># cset shield --shield --pid=50-65</tt></strong></p></div>
+<div class="paragraph"><p><strong><code># cset shield --shield --pid=50-65</code></strong></p></div>
<div class="paragraph"><p>The above command moves all processes and threads with PID or TID
in the range 50-65 inclusive, from the system cpuset into the
shielded user cpuset. If they are running in the root cpuset,
@@ -657,7 +992,7 @@ then only that process will be moved.</t
<div class="paragraph"><p>The --unshield (or -u) subcommand will remove the specified
processes or threads from the shielded cpuset and move them into
the unshielded (or system) cpuset. This command is also used in
-conjuction with a -p/--pid option that specifies a PIDSPEC
+conjunction with a -p/--pid option that specifies a PIDSPEC
argument, the same as for the --shield subcommand.</p></div>
<div class="paragraph"><p>Both the --shield and the --unshield commands will also finally
output the number of tasks running in the shield and out of the
@@ -674,7 +1009,7 @@ initialized.</p></div>
<div class="paragraph"><p>For example if the original shield contained CPU0 and CPU1 in the
system set and CPU2 and CPU3 in the user set, if you then issue
the following command:</p></div>
-<div class="paragraph"><p><strong><tt># cset shield --cpu=1,2,3</tt></strong></p></div>
+<div class="paragraph"><p><strong><code># cset shield --cpu=1,2,3</code></strong></p></div>
<div class="paragraph"><p>then that command will move CPU1 into the shielded "user" cpuset.
Any processes or threads that were running on CPU1 that belonged
to the unshielded "system" cpuset are migrated to CPU0 by the
@@ -700,18 +1035,26 @@ and proc) directly.</td>
</tr></table>
</div>
</div>
+</div>
+<div class="sect1">
<h2 id="_license">LICENSE</h2>
<div class="sectionbody">
<div class="paragraph"><p>Cpuset is licensed under the GNU GPL V2 only.</p></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_copyright">COPYRIGHT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Copyright (c) 2008-2011 Novell Inc.</p></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_author">AUTHOR</h2>
<div class="sectionbody">
<div class="paragraph"><p>Written by Alex Tsariounov &lt;alext@novell.com&gt;.</p></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>cset(1), cset-set(1), cset-proc(1)</p></div>
@@ -719,10 +1062,13 @@ and proc) directly.</td>
<div class="paragraph"><p>taskset(1), chrt(1)</p></div>
<div class="paragraph"><p>/usr/src/linux/Documentation/cpusets.txt</p></div>
</div>
+</div>
+</div>
+<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Version 1.5.6<br />
-Last updated 2011-06-09 12:53:43 EDT
+Last updated 2015-12-23 14:21:03 CET
</div>
</div>
</body>
--- a/doc/cset-shield.txt
+++ b/doc/cset-shield.txt
@@ -180,7 +180,7 @@ then only that process will be moved.
The --unshield (or -u) subcommand will remove the specified
processes or threads from the shielded cpuset and move them into
the unshielded (or system) cpuset. This command is also used in
-conjuction with a -p/--pid option that specifies a PIDSPEC
+conjunction with a -p/--pid option that specifies a PIDSPEC
argument, the same as for the --shield subcommand.
Both the --shield and the --unshield commands will also finally

View File

@ -0,0 +1,916 @@
From e3fa37041a3e955b81023e46215166d214816906 Mon Sep 17 00:00:00 2001
From: Libor Pechacek <lpechacek@suse.com>
Date: Wed, 23 Dec 2015 13:31:08 +0100
Subject: [PATCH] Docu: remove mention about nonexistent option
References: bnc#957323
Signed-off-by: Libor Pechacek <lpechacek@suse.com>
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
doc/cset-set.1 | 31 ++
doc/cset-set.html | 583 +++++++++++++++++++++++++++++++++++++++++++-----------
doc/cset-set.txt | 3
3 files changed, 489 insertions(+), 128 deletions(-)
--- a/doc/cset-set.1
+++ b/doc/cset-set.1
@@ -1,13 +1,22 @@
'\" t
.\" Title: cset-set
-.\" Author: [see the "AUTHOR" section]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\" Date: 06/09/2011
-.\" Manual: [FIXME: manual]
-.\" Source: [FIXME: source]
+.\" Author: Alex Tsariounov <alext@novell.com>
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: June 2011
+.\" Manual: \ \&
+.\" Source: \ \& 1.5.6
.\" Language: English
.\"
-.TH "CSET\-SET" "1" "06/09/2011" "[FIXME: source]" "[FIXME: manual]"
+.TH "CSET\-SET" "1" "June 2011" "\ \& 1\&.5\&.6" "\ \&"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
@@ -45,7 +54,7 @@ prints the list of options for this comm
.PP
\-l, \-\-list
.RS 4
-list the named cpuset(s); if \-a is used, will list members of named cpuset; if \-r is used, will list recursively
+list the named cpuset(s); if \-r is used, will list recursively
.RE
.PP
\-c CPUSPEC, \-\-cpu=CPUSPEC
@@ -114,6 +123,7 @@ Create a cpuset with the default memory
\fB# cset set \-\-cpu=2,4,6\-8 \-\-set=new_set\fR
.RE
This command creates a cpuset called "new_set" located off the root cpuset which holds CPUS 2,4,6,7,8 and node 0 (interleaved) memory\&. Note that \-\-set is optional, and you can just specify the name for the new cpuset after all arguments\&.
+
.PP
Create a cpuset that specifies both CPUs and memory nodes
.RS 4
@@ -136,4 +146,9 @@ cset(1), cset\-proc(1), cset\-shield(1)
taskset(1), chrt(1)
/usr/src/linux/Documentation/cpusets\&.txt
-
+.SH "AUTHOR"
+.PP
+\fBAlex Tsariounov\fR <\&alext@novell\&.com\&>
+.RS 4
+Author.
+.RE
--- a/doc/cset-set.html
+++ b/doc/cset-set.html
@@ -2,15 +2,25 @@
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.4.5" />
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="generator" content="AsciiDoc 8.6.8" />
<title>cset-set(1)</title>
<style type="text/css">
-/* Debug borders */
-p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
-/*
- border: 1px solid red;
-*/
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
}
body {
@@ -35,13 +45,8 @@ strong {
color: #083194;
}
-tt {
- color: navy;
-}
-
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
- font-family: sans-serif;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
@@ -59,9 +64,11 @@ h3 {
h3 + * {
clear: left;
}
+h5 {
+ font-size: 1.0em;
+}
div.sectionbody {
- font-family: serif;
margin-left: 0;
}
@@ -77,53 +84,58 @@ p {
ul, ol, li > p {
margin-top: 0;
}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
-pre {
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
padding: 0;
margin: 0;
}
-span#author {
+
+#author {
color: #527bbd;
- font-family: sans-serif;
font-weight: bold;
font-size: 1.1em;
}
-span#email {
+#email {
}
-span#revnumber, span#revdate, span#revremark {
- font-family: sans-serif;
+#revnumber, #revdate, #revremark {
}
-div#footer {
- font-family: sans-serif;
+#footer {
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
-div#footer-text {
+#footer-text {
float: left;
padding-bottom: 0.5em;
}
-div#footer-badges {
+#footer-badges {
float: right;
padding-bottom: 0.5em;
}
-div#preamble {
+#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
+div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
- margin-top: 1.5em;
+ margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.admonitionblock {
- margin-top: 2.5em;
- margin-bottom: 2.5em;
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
}
div.content { /* Block element content. */
@@ -133,7 +145,6 @@ div.content { /* Block element content.
/* Block element titles. */
div.title, caption.title {
color: #527bbd;
- font-family: sans-serif;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
@@ -155,31 +166,34 @@ div.content + div.title {
div.sidebarblock > div.content {
background: #ffffee;
- border: 1px solid silver;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
padding: 0.5em;
}
div.listingblock > div.content {
- border: 1px solid silver;
- background: #f4f4f4;
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
padding: 0.5em;
}
-div.quoteblock {
- padding-left: 2.0em;
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
}
+
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
-div.verseblock {
- padding-left: 2.0em;
- margin-right: 10%;
-}
-div.verseblock > div.content {
- white-space: pre;
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
@@ -200,12 +214,12 @@ div.admonitionblock .icon {
}
div.admonitionblock td.content {
padding-left: 0.5em;
- border-left: 2px solid silver;
+ border-left: 3px solid #dddddd;
}
div.exampleblock > div.content {
- border-left: 2px solid silver;
- padding: 0.5em;
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
@@ -252,35 +266,12 @@ div.compact div, div.compact div {
margin-bottom: 0.1em;
}
-div.tableblock > table {
- border: 3px solid #527bbd;
-}
-thead {
- font-family: sans-serif;
- font-weight: bold;
-}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
-p.table {
- margin-top: 0;
-}
-/* Because the table frame attribute is overriden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
- border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
- border-left-style: none;
- border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
- border-top-style: none;
- border-bottom-style: none;
-}
-
div.hdlist {
margin-top: 0.8em;
@@ -310,20 +301,59 @@ div.hdlist.compact tr {
background: yellow;
}
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
@media print {
- div#footer-badges { display: none; }
+ #footer-badges { display: none; }
}
-div#toctitle {
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
color: #527bbd;
- font-family: sans-serif;
font-size: 1.1em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
-div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
margin-top: 0;
margin-bottom: 0;
}
@@ -339,68 +369,367 @@ div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}
-/* Overrides for manpage documents */
-h1 {
- padding-top: 0.5em;
- padding-bottom: 0.5em;
- border-top: 2px solid silver;
- border-bottom: 2px solid silver;
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
}
-h2 {
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
border-style: none;
}
-div.sectionbody {
- margin-left: 5%;
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
}
-
-@media print {
- div#toc { display: none; }
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
}
-/* Workarounds for IE6's broken and incomplete CSS2. */
-div.sidebar-content {
- background: #ffffee;
- border: 1px solid silver;
- padding: 0.5em;
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
}
-div.sidebar-title, div.image-title {
- color: #527bbd;
- font-family: sans-serif;
+thead, p.tableblock.header {
font-weight: bold;
- margin-top: 0.0em;
- margin-bottom: 0.5em;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
}
-div.listingblock div.content {
- border: 1px solid silver;
- background: #f4f4f4;
- padding: 0.5em;
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
}
-div.quoteblock-attribution {
- padding-top: 0.5em;
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
text-align: right;
}
-div.verseblock-content {
- white-space: pre;
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
}
-div.verseblock-attribution {
- padding-top: 0.75em;
- text-align: left;
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
}
-div.exampleblock-content {
- border-left: 2px solid silver;
- padding-left: 0.5em;
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
}
-/* IE6 sets dynamically generated links as visited. */
-div#toc a:visited { color: blue; }
+@media print {
+ body.manpage div#toc { display: none; }
+}
+
+
</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+var asciidoc = { // Namespace.
+
+/////////////////////////////////////////////////////////////////////
+// Table Of Contents generator
+/////////////////////////////////////////////////////////////////////
+
+/* Author: Mihai Bazon, September 2002
+ * http://students.infoiasi.ro/~mishoo
+ *
+ * Table Of Content generator
+ * Version: 0.4
+ *
+ * Feel free to use this script under the terms of the GNU General Public
+ * License, as long as you do not remove or alter this notice.
+ */
+
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
+
+// toclevels = 1..4.
+toc: function (toclevels) {
+
+ function getText(el) {
+ var text = "";
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
+ text += i.data;
+ else if (i.firstChild != null)
+ text += getText(i);
+ }
+ return text;
+ }
+
+ function TocEntry(el, text, toclevel) {
+ this.element = el;
+ this.text = text;
+ this.toclevel = toclevel;
+ }
+
+ function tocEntries(el, toclevels) {
+ var result = new Array;
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
+ // Function that scans the DOM tree for header elements (the DOM2
+ // nodeIterator API would be a better technique but not supported by all
+ // browsers).
+ var iterate = function (el) {
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
+ var mo = re.exec(i.tagName);
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
+ }
+ iterate(i);
+ }
+ }
+ }
+ iterate(el);
+ return result;
+ }
+
+ var toc = document.getElementById("toc");
+ if (!toc) {
+ return;
+ }
+
+ // Delete existing TOC entries in case we're reloading the TOC.
+ var tocEntriesToRemove = [];
+ var i;
+ for (i = 0; i < toc.childNodes.length; i++) {
+ var entry = toc.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div'
+ && entry.getAttribute("class")
+ && entry.getAttribute("class").match(/^toclevel/))
+ tocEntriesToRemove.push(entry);
+ }
+ for (i = 0; i < tocEntriesToRemove.length; i++) {
+ toc.removeChild(tocEntriesToRemove[i]);
+ }
+
+ // Rebuild TOC entries.
+ var entries = tocEntries(document.getElementById("content"), toclevels);
+ for (var i = 0; i < entries.length; ++i) {
+ var entry = entries[i];
+ if (entry.element.id == "")
+ entry.element.id = "_toc_" + i;
+ var a = document.createElement("a");
+ a.href = "#" + entry.element.id;
+ a.appendChild(document.createTextNode(entry.text));
+ var div = document.createElement("div");
+ div.appendChild(a);
+ div.className = "toclevel" + entry.toclevel;
+ toc.appendChild(div);
+ }
+ if (entries.length == 0)
+ toc.parentNode.removeChild(toc);
+},
+
+
+/////////////////////////////////////////////////////////////////////
+// Footnotes generator
+/////////////////////////////////////////////////////////////////////
+
+/* Based on footnote generation code from:
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
+ */
+
+footnotes: function () {
+ // Delete existing footnote entries in case we're reloading the footnodes.
+ var i;
+ var noteholder = document.getElementById("footnotes");
+ if (!noteholder) {
+ return;
+ }
+ var entriesToRemove = [];
+ for (i = 0; i < noteholder.childNodes.length; i++) {
+ var entry = noteholder.childNodes[i];
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
+ entriesToRemove.push(entry);
+ }
+ for (i = 0; i < entriesToRemove.length; i++) {
+ noteholder.removeChild(entriesToRemove[i]);
+ }
+
+ // Rebuild footnote entries.
+ var cont = document.getElementById("content");
+ var spans = cont.getElementsByTagName("span");
+ var refs = {};
+ var n = 0;
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnote") {
+ n++;
+ var note = spans[i].getAttribute("data-note");
+ if (!note) {
+ // Use [\s\S] in place of . so multi-line matches work.
+ // Because JavaScript has no s (dotall) regex flag.
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+ spans[i].innerHTML =
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ spans[i].setAttribute("data-note", note);
+ }
+ noteholder.innerHTML +=
+ "<div class='footnote' id='_footnote_" + n + "'>" +
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
+ n + "</a>. " + note + "</div>";
+ var id =spans[i].getAttribute("id");
+ if (id != null) refs["#"+id] = n;
+ }
+ }
+ if (n == 0)
+ noteholder.parentNode.removeChild(noteholder);
+ else {
+ // Process footnoterefs.
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnoteref") {
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
+ href = href.match(/#.*/)[0]; // Because IE return full URL.
+ n = refs[href];
+ spans[i].innerHTML =
+ "[<a href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ }
+ }
+ }
+},
+
+install: function(toclevels) {
+ var timerId;
+
+ function reinstall() {
+ asciidoc.footnotes();
+ if (toclevels) {
+ asciidoc.toc(toclevels);
+ }
+ }
+
+ function reinstallAndRemoveTimer() {
+ clearInterval(timerId);
+ reinstall();
+ }
+
+ timerId = setInterval(reinstall, 500);
+ if (document.addEventListener)
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
+ else
+ window.onload = reinstallAndRemoveTimer;
+}
+
+}
+asciidoc.install();
+/*]]>*/
+</script>
</head>
-<body>
+<body class="manpage">
<div id="header">
<h1>
cset-set(1) Manual Page
@@ -412,10 +741,12 @@ cset-set(1) Manual Page
</p>
</div>
</div>
+<div id="content">
+<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
-<div class="verseblock-content"><em>cset</em> [cset options] <em>set</em> [set options] [args]
+<pre class="content"><em>cset</em> [cset options] <em>set</em> [set options] [args]
<em>cset</em> set --help
<em>cset</em> set
<em>cset</em> set --recurse
@@ -426,10 +757,12 @@ cset-set(1) Manual Page
<em>cset</em> set --cpu 2-5 newset
<em>cset</em> set --cpu 1,2,5-7 another_set
<em>cset</em> set --destroy newset
-<em>cset</em> set --destroy /mygroup_sets/my_set</div>
-<div class="verseblock-attribution">
+<em>cset</em> set --destroy /mygroup_sets/my_set</pre>
+<div class="attribution">
</div></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
@@ -446,8 +779,7 @@ cset-set(1) Manual Page
</dt>
<dd>
<p>
- list the named cpuset(s); if -a is used, will list members of named
- cpuset; if -r is used, will list recursively
+ list the named cpuset(s); if -r is used, will list recursively
</p>
</dd>
<dt class="hdlist1">
@@ -519,6 +851,8 @@ cset-set(1) Manual Page
</dd>
</dl></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>This command is used to create, modify, and destroy cpusets.
@@ -572,14 +906,15 @@ moved to the parent of that cpuset. If
want, then manually move those tasks to the cpuset of your choice
with the <em>cset proc</em> command (see <em>cset proc --help</em> for more
information).</p></div>
-<h3 id="_examples">EXAMPLES</h3><div style="clear:left"></div>
+<div class="sect2">
+<h3 id="_examples">EXAMPLES</h3>
<div class="dlist"><dl>
<dt class="hdlist1">
Create a cpuset with the default memory specification
</dt>
<dd>
<p>
-<strong><tt># cset set --cpu=2,4,6-8 --set=new_set</tt></strong>
+<strong><code># cset set --cpu=2,4,6-8 --set=new_set</code></strong>
</p>
</dd>
</dl></div>
@@ -594,7 +929,7 @@ Create a cpuset that specifies both CPUs
</dt>
<dd>
<p>
-<strong><tt># cset set --cpu=3 --mem=3 /rad/set_one</tt></strong>
+<strong><code># cset set --cpu=3 --mem=3 /rad/set_one</code></strong>
</p>
</dd>
</dl></div>
@@ -608,18 +943,27 @@ cpuset as well as CPU 3.</p></div>
<div class="paragraph"><p>The above commands will create the new cpusets, or if they
already exist, they will modify them to the new specifications.</p></div>
</div>
+</div>
+</div>
+<div class="sect1">
<h2 id="_license">LICENSE</h2>
<div class="sectionbody">
<div class="paragraph"><p>Cpuset is licensed under the GNU GPL V2 only.</p></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_copyright">COPYRIGHT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Copyright (c) 2008-2011 Novell Inc.</p></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_author">AUTHOR</h2>
<div class="sectionbody">
<div class="paragraph"><p>Written by Alex Tsariounov &lt;alext@novell.com&gt;.</p></div>
</div>
+</div>
+<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p>cset(1), cset-proc(1), cset-shield(1)</p></div>
@@ -627,10 +971,13 @@ already exist, they will modify them to
<div class="paragraph"><p>taskset(1), chrt(1)</p></div>
<div class="paragraph"><p>/usr/src/linux/Documentation/cpusets.txt</p></div>
</div>
+</div>
+</div>
+<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Version 1.5.6<br />
-Last updated 2011-06-09 12:53:27 EDT
+Last updated 2015-12-23 13:33:32 CET
</div>
</div>
</body>
--- a/doc/cset-set.txt
+++ b/doc/cset-set.txt
@@ -29,8 +29,7 @@ OPTIONS
prints the list of options for this command
-l, --list::
- list the named cpuset(s); if -a is used, will list members of named
- cpuset; if -r is used, will list recursively
+ list the named cpuset(s); if -r is used, will list recursively
-c CPUSPEC, --cpu=CPUSPEC::
create or modify cpuset in the specified cpuset with CPUSPEC

View File

@ -0,0 +1,39 @@
From de1ae0d598c29b2ae056234f8ecd003e86314871 Mon Sep 17 00:00:00 2001
From: Libor Pechacek <lpechacek@suse.com>
Date: Tue, 22 Dec 2015 09:46:00 +0100
Subject: [PATCH] Fix crash with SCHED_IDLE policy
References: bnc#959992
There are two new schduling policies to be recognized by cset. SCHED_ISO and
SCHED_IDLE. The former is not yet implemented in Linux kernel so we write out
'???' when we encounter its code. For the latter there is the string 'idl'.
Signed-off-by: Libor Pechacek <lpechacek@suse.com>
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
cpuset/commands/proc.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--- a/cpuset/commands/proc.py
+++ b/cpuset/commands/proc.py
@@ -684,7 +684,7 @@ options = [make_option('-l', '--list',
def task_detail(pid, width=70):
# scheduler policy definitions
- policy = ['o', 'f', 'r', 'b']
+ policy = ['o', 'f', 'r', 'b', '?', 'i']
# stat location definitions
statdef = {
'pid': 0,
@@ -732,6 +732,11 @@ options = [make_option('-l', '--list',
out2.append('th')
elif stat[statdef['rtpolicy']] == '3':
out2.append('at')
+ # SCHED_ISO is reserved but not yet implemented as of Linux v4.4
+ elif stat[statdef['rtpolicy']] == '4':
+ out2.append('??')
+ elif stat[statdef['rtpolicy']] == '5':
+ out2.append('dl')
else:
if int(stat[statdef['rtpriority']]) < 10:
out2.append('_')

View File

@ -0,0 +1,21 @@
From: Mike Galbraith <mgalbraith@suse.de>
Subject: Fix type in setup.py to get make [rpm/srcrpm] working
Date: Tue Dec 29 07:45:23 CET 2015
References:
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/setup.py
+++ b/setup.py
@@ -10,7 +10,7 @@ setup(name = 'cpuset',
license = 'GPLv2',
author = 'Alex Tsariounov',
author_email = 'alext@novell.com',
- url = 'https://github.com/lpechacek/cpuset'
+ url = 'https://github.com/lpechacek/cpuset',
description = 'Allows manipluation of cpusets and provides higher level functions.',
long_description = \
'Cpuset is a Python application to make using the cpusets facilities in the Linux\n'

View File

@ -0,0 +1,27 @@
From 0dab14e927137f4cb8d311b6cbae77343fa95ee0 Mon Sep 17 00:00:00 2001
From: Libor Pechacek <lpechacek@suse.com>
Date: Tue, 22 Dec 2015 12:50:55 +0100
Subject: [PATCH] Handle unknown scheduler policy codes gracefully
References: bnc#959992
Prevent unhandled exception upon reading unknown scheduler policy code from
/proc/<pid>/stat.
Signed-off-by: Libor Pechacek <lpechacek@suse.com>
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
cpuset/commands/proc.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/cpuset/commands/proc.py
+++ b/cpuset/commands/proc.py
@@ -727,7 +727,8 @@ options = [make_option('-l', '--list',
out2 = []
out2.append(stdict['State'].split()[0])
- out2.append(policy[int(stat[statdef['rtpolicy']])])
+ policy_code=int(stat[statdef['rtpolicy']])
+ out2.append(policy[policy_code] if policy_code<len(policy) else '?')
if stat[statdef['rtpolicy']] == '0':
out2.append('th')
elif stat[statdef['rtpolicy']] == '3':

View File

@ -0,0 +1,30 @@
From 226c8185d4f59cdbcc2116b7bf5df1f44fc59aa4 Mon Sep 17 00:00:00 2001
From: Libor Pechacek <lpechacek@suse.com>
Date: Tue, 22 Dec 2015 15:10:55 +0100
Subject: [PATCH] Parse /proc/<pid>/stat properly
References:
Process names can contain spaces. Handle these cases correctly.
Signed-off-by: Libor Pechacek <lpechacek@suse.com>
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
---
cpuset/commands/proc.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--- a/cpuset/commands/proc.py
+++ b/cpuset/commands/proc.py
@@ -711,7 +711,12 @@ options = [make_option('-l', '--list',
except:
pass # sometimes, we get an extra \n out of this file...
stat = file('/proc/'+pid+'/stat', 'r').readline()
- stat = stat.split()
+ # we assume parentheses appear only around the name
+ stat_right_paren = stat.rfind(')')
+ stat_left_paren = stat.find('(')
+ stat = [stat[:stat_left_paren-1]] + \
+ [stat[stat_left_paren:stat_right_paren+1]] + \
+ stat[stat_right_paren+2:].split()
cmdline = file('/proc/'+pid+'/cmdline').readline()
# assume that a zero delimits the cmdline (it does now...)
cmdline = cmdline.replace('\0', ' ')

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,18 @@
-------------------------------------------------------------------
Tue Dec 29 07:41:24 UTC 2015 - mgalbraith@suse.com
- Merge new cpuset upstream. Update URL, and add post v1.5.6 fixes.
- New patches:
Fix-crash-with-SCHED_IDLE-policy.patch (bnc#959992)
Handle-unknown-scheduler-policy-codes-gracefully.patch (bnc#959992)
Parse-proc-pid-stat-properly.patch
Docu-remove-mention-about-nonexistent-option.patch (bnc#957323)
Docu-fix-asciidoc-build-error.patch
Update-URLs-after-project-migration.patch
Docu-fixed-a-typo.patch
Fix-typo-in-setup-py.patch
-------------------------------------------------------------------
Wed May 28 02:40:03 UTC 2014 - mgalbraith@suse.com

View File

@ -1,7 +1,7 @@
#
# spec file for package cpuset
#
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2008-2011 Novell, Inc. Waltham, MA, USA
#
# All modifications and additions to the file contributed by third parties
@ -21,28 +21,52 @@ Name: cpuset
Version: 1.5.6
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Url: http://code.google.com/p/cpuset
Url: https://github.com/lpechacek/cpuset
Summary: Allows manipulation of cpusets on system and provides higher level functions
License: GPL-2.0
Group: System/Management
Source: %{name}-%{version}.tar.gz
Patch0: cset-make-it-handle-cgroup-mounts.patch
Patch1: Fix-crash-with-SCHED_IDLE-policy.patch
Patch2: Handle-unknown-scheduler-policy-codes-gracefully.patch
Patch3: Parse-proc-pid-stat-properly.patch
Patch4: Docu-remove-mention-about-nonexistent-option.patch
Patch5: Docu-fix-asciidoc-build-error.patch
Patch6: Update-URLs-after-project-migration.patch
Patch7: Docu-fixed-a-typo.patch
Patch8: Fix-typo-in-setup-py.patch
BuildRequires: python-devel
%if 0%{?suse_version} > 0
%py_requires
%endif
%{!?python_sitelib: %define python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%description
Cpuset is a Python application to make using the cpusets facilities in
the Linux kernel easier. The actual included command is called cset
and it allows manipulation of cpusets on the system and provides higher
level functions such as implementation and control of a basic CPU
shielding setup.
Authors:
--------
Alex Tsariounov <alext@novell.com>
%prep
%setup
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%build
CFLAGS="%{optflags}" \
@ -53,6 +77,7 @@ CFLAGS="%{optflags}" \
# Install binaries, but do not install docs via setup.py
%{__python} setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-data=/eraseme
%{__rm} -rf %{buildroot}/eraseme
# Install documentation
%{__mkdir_p} %{buildroot}/%{_defaultdocdir}/cpuset
%{__cp} NEWS README INSTALL AUTHORS COPYING cset.init.d %{buildroot}/%{_defaultdocdir}/cpuset/
@ -64,6 +89,9 @@ cd doc
%{__mkdir} %{buildroot}/%{_defaultdocdir}/cpuset/html
%{__cp} *.html %{buildroot}/%{_defaultdocdir}/cpuset/html/
%clean
%{__rm} -rf %{buildroot}
%files
%defattr(-,root,root)
%{_bindir}/cset