summaryrefslogtreecommitdiffstats
path: root/docs/nspr/reference/pr_initialize.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/nspr/reference/pr_initialize.rst')
-rw-r--r--docs/nspr/reference/pr_initialize.rst63
1 files changed, 63 insertions, 0 deletions
diff --git a/docs/nspr/reference/pr_initialize.rst b/docs/nspr/reference/pr_initialize.rst
new file mode 100644
index 0000000000..027f040a79
--- /dev/null
+++ b/docs/nspr/reference/pr_initialize.rst
@@ -0,0 +1,63 @@
+PR_Initialize
+=============
+
+Provides an alternate form of explicit initialization. In addition to
+establishing the sequence of operations, :ref:`PR_Initialize` implicitly
+calls :ref:`PR_Cleanup` on exiting the primordial function.
+
+
+Syntax
+------
+
+.. code::
+
+ #include <prinit.h>
+
+ PRIntn PR_Initialize(
+ PRPrimordialFn prmain,
+ PRIntn argc,
+ char **argv,
+ PRUintn maxPTDs);
+
+
+Parameters
+~~~~~~~~~~
+
+:ref:`PR_Initialize` has the following parameters:
+
+``prmain``
+ The function that becomes the primordial thread's root function.
+ Returning from prmain leads to termination of the process.
+``argc``
+ The length of the argument vector, whether passed in from the host's
+ program-launching facility or fabricated by the actual main program.
+ This approach conforms to standard C programming practice.
+``argv``
+ The base address of an array of strings that compromise the program's
+ argument vector. This approach conforms to standard C programming
+ practice.
+``maxPTDs``
+ This parameter is ignored.
+
+
+Returns
+~~~~~~~
+
+The value returned from the root function, ``prmain``.
+
+
+Description
+-----------
+
+:ref:`PR_Initialize` initializes the NSPR runtime and places NSPR between
+the caller and the runtime library. This allows ``main`` to be treated
+like any other function, signaling its completion by returning and
+allowing the runtime to coordinate the completion of the other threads
+of the runtime.
+
+:ref:`PR_Initialize` does not return to its caller until all user threads
+have terminated.
+
+The priority of the main (or primordial) thread is
+``PR_PRIORITY_NORMAL``. The thread may adjust its own priority by using
+:ref:`PR_SetThreadPriority`.