This file is indexed.

/usr/share/doc/slurm-wlm-doc/html/plugins.html is in slurm-wlm-doc 15.08.7-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
                        "http://www.w3.org/TR/REC-html40/loose.dtd">

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="keywords" content="Simple Linux Utility for Resource Management, SLURM, resource management,
Linux clusters, high-performance computing">
<meta name="description" content="Simple Linux Utility for Resource Management">
<title>Simple Linux Utility for Resource Management</title>
<link href="linuxstyles.css" rel="stylesheet" type="text/css">
<link href="slurmstyles.css" rel="stylesheet" type="text/css">

<script type="text/javascript">

function window_check ()
{
	obj = document.getElementById('navigation');
	if ((window.innerWidth>=800) && (window.innerHeight>=700) &&
	    (screen.width>=800) && (screen.height>=700)) {
	   obj.style.position = 'fixed';
	} else {
	   obj.style.position = 'absolute';
	}
}

window.onload = window_check;
window.onresize = window_check;

</script>

</head>

<body><div id="container"><div id="row">

<div id="navigation">
<a href="slurm.html"><img class="displayed" src="slurm_logo.png" width="130" usemap="#Map"></a>

<div id="version">Version 15.08</div>
<p></p>
<div id="slurmh2">About</div>
<ul>
	  <li><a href="overview.html" class="nav">Overview</a></li>
	  <li><a href="news.html" class="nav">What's New</a></li>
	  <li><a href="team.html" class="nav">Slurm Team</a></li>
	  <li><a href="meetings.html" class="nav">Meetings</a></li>
	  <li><a href="testimonials.html" class="nav">Testimonials</a></li>
	  <li><a href="disclaimer.html" class="nav">Legal Notices</a></li>
</ul>
<div id="slurmh2">Using</div>
<ul>
	  <li><a href="tutorials.html" class="nav">Tutorials</a></li>
	  <li><a href="documentation.html" class="nav">Documentation</a></li>
	  <li><a href="faq.html" class="nav">FAQ</a></li>
	  <li><a href="publications.html" class="nav">Publications</a></li>
</ul>
<div id="slurmh2">Installing</div>
<ul>
	  <li><a href="download.html" class="nav">Download</a></li>
	  <li><a href="quickstart_admin.html" class="nav">Installation Guide</a></li>
</ul>
<div id="slurmh2">Getting Help</div>
<ul>
	  <li><a href="http://www.schedmd.com/#services" class="nav">Support</a></li>
	  <li><a href="mail.html" class="nav">Mailing Lists</a></li>
	  <li><a href="http://www.schedmd.com/#services" class="nav">Training</a></li>
	  <li><a href="troubleshoot.html" class="nav">Troubleshooting</a></li>
</ul>
<a href="http://www.schedmd.com"><img class="displayed" src="schedmd.png" width="130" usemap="#Map"></a>
</div>

<div id="content">

<div id="cse"></div>


<h1><a name="top">Slurm Plugin API</a></h1>
<h2>Overview</h2>
<p>A Slurm plugin is a dynamically linked code object which is loaded explicitly
at run time by the Slurm libraries. A plugin provides a customized implementation
of a well-defined API connected to tasks such as authentication, interconnect
fabric, and task scheduling.</p>
<h2>Identification</h2>
<p>A Slurm plugin identifies itself by a short character string formatted similarly
to a MIME type: <i>&lt;major&gt;/&lt;minor&gt;</i>. The major type identifies
which API the plugin implements. The minor type uniquely distinguishes a plugin
from other plugins that implement that same API, by such means as the intended
platform or the internal algorithm. For example, a plugin to interface to the
Maui scheduler would give its type as &quot;sched/maui.&quot; It would implement
the Slurm Scheduler API.</p>

<h2>Versioning</h2>
<p>Slurm plugin version numbers comprise a major, minor and micro revision number.
If the major and/or minor revision number changes, this indicates major changes
to the Slurm functionality including changes to APIs, command options, and
plugins.
These plugin changes may include new functions and/or function arguments.
If only the micro revision number changes, this is indicative of bug fixes
and possibly minor enhancements which should not adversely impact users.
In all cases, rebuilding and installing all Slurm plugins is recommended
at upgrade time.
Not all compute nodes in a cluster need be updated at the same time, but
all Slurm APIs, commands, plugins, etc. on a compute node should represent
the same version of Slurm.</p>

<p class="footer"><a href="#top">top</a></p>

<h2>Data Objects</h2>

<p>A plugin must define and export the following symbols:</p>
<ul>
<li><span class="commandline">char plugin_type[]<br>
</span> a unique, short, formatted string to identify the plugin's purpose as
described above. A &quot;null&quot; plugin (i.e., one that implements the desired
API as stubs) should have a minor type of &quot;none.&quot;</li>
<li><span class="commandline">char plugin_name[]<br>
</span> a free-form string that identifies the plugin in human-readable terms,
such as &quot;Kerberos authentication.&quot; Slurm will use this string to identify
the plugin to end users.</li>
</ul>
<p>A plugin may optionally define and export the following symbols:</p>
<ul>
<li>const uint32_t plugin_version<br>
If specified, identifies the version of Slurm used to build this plugin and
any attempt to load the plugin from a different version of Slurm will result
in an error.
If not specified, then the plugin may be loadeed by Slurm commands and
daemons from any version, however this may result in difficult to diagnose
failures due to changes in the arguments to plugin functions or changes
in other Slurm functions used by the plugin.</p>
</ul>
<p class="footer"><a href="#top">top</a></p>

<h2>API Functions in All Plugins</h2>
<p class="commandline">int init (void);</p>
<p style="margin-left:.2in"><b>Description</b>: If present, this function is called
just after the plugin is loaded. This allows the plugin to perform any global
initialization prior to any actual API calls.</p>
<p style="margin-left:.2in"><b>Arguments</b>: None.</p>
<p style="margin-left:.2in"><b>Returns</b>: SLURM_SUCCESS if the plugin's initialization
was successful. Any other return value indicates to Slurm that the plugin should
be unloaded and not used.</p>
<p class="commandline">void fini (void);</p>
<p style="margin-left:.2in"><b>Description</b>: If present, this function is called
just before the plugin is unloaded. This allows the plugin to do any finalization
after the last plugin-specific API call is made.</p>
<p style="margin-left:.2in"><b>Arguments</b>: None.</p>
<p style="margin-left:.2in"><b>Returns</b>: None.</p>
<p><b>Note</b>: These init and fini functions are not the same as those
described in the <span class="commandline">dlopen (3)</span> system library.
The C run-time system co-opts those symbols for its own initialization.
The system <span class="commandline">_init()</span> is called before the Slurm
<span class="commandline">init()</span>, and the Slurm
<span class="commandline">fini()</span> is called before the system's
<span class="commandline">_fini()</span>.</p>
<p>The functions need not appear. The plugin may provide either
<span class="commandline">init()</span> or <span class="commandline">fini()</span> or both.</p>
<p class="footer"><a href="#top">top</a></p>
<h2>Thread Safety</h2>

<p>Slurm is a multithreaded application. The Slurm plugin library may exercise
the plugin functions in a re-entrant fashion. It is the responsibility of the
plugin author to provide the necessarily mutual exclusion and synchronization
in order to avoid the pitfalls of re-entrant code.</p>
<h2>Run-time Support</h2>
<p>The standard system libraries are available to the plugin. The Slurm libraries
are also available and plugin authors are encouraged to make use of them rather
than develop their own substitutes. Plugins should use the Slurm log to print
error messages.</p>
<p>The plugin author is responsible for specifying any specific non-standard libraries
needed for correct operation. Plugins will not load if their dependent libraries
are not available, so it is the installer's job to make sure the specified libraries
are available.</p>
<h2>Performance</h2>
<p>All plugin functions are expected to execute very quickly. If any function
entails delays (e.g. transactions with other systems), it should be written to
utilize a thread for that functionality. This thread may be created by the
<span class="commandline">init()</span> function and deleted by the
<span class="commandline">fini()</span> functions. See <b>plugins/sched/backfill</b>
for an example of how to do this.</p>
<p class="footer"><a href="#top">top</a></p>

<p style="text-align:center;">Last modified 27 March 2015</p>

</div> <!-- closes "row" -->
</div> <!-- closes "content" -->
<div id="row">
<div id="footer">
<div id="left">&nbsp;&nbsp;<a href="disclaimer.html" target="_blank" class="privacy">Legal Notices</a></div>
<div id="right"><span class="ucrlnum"></span></div>
</div>

<div id="footer2">
<div style="clear:both;"></div>
</div>
</div> <!-- closes "row" -->

</div> <!-- closes "container" -->

</body>
</html>