~ubuntu-branches/ubuntu/precise/kompozer/precise

« back to all changes in this revision

Viewing changes to mozilla/nsprpub/pr/include/prinit.h

  • Committer: Bazaar Package Importer
  • Author(s): Anthony Yarusso
  • Date: 2007-08-27 01:11:03 UTC
  • Revision ID: james.westby@ubuntu.com-20070827011103-2jgf4s6532gqu2ka
Tags: upstream-0.7.10
ImportĀ upstreamĀ versionĀ 0.7.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 
2
/* 
 
3
 * The contents of this file are subject to the Mozilla Public
 
4
 * License Version 1.1 (the "License"); you may not use this file
 
5
 * except in compliance with the License. You may obtain a copy of
 
6
 * the License at http://www.mozilla.org/MPL/
 
7
 * 
 
8
 * Software distributed under the License is distributed on an "AS
 
9
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 
10
 * implied. See the License for the specific language governing
 
11
 * rights and limitations under the License.
 
12
 * 
 
13
 * The Original Code is the Netscape Portable Runtime (NSPR).
 
14
 * 
 
15
 * The Initial Developer of the Original Code is Netscape
 
16
 * Communications Corporation.  Portions created by Netscape are 
 
17
 * Copyright (C) 1998-2000 Netscape Communications Corporation.  All
 
18
 * Rights Reserved.
 
19
 * 
 
20
 * Contributor(s):
 
21
 * 
 
22
 * Alternatively, the contents of this file may be used under the
 
23
 * terms of the GNU General Public License Version 2 or later (the
 
24
 * "GPL"), in which case the provisions of the GPL are applicable 
 
25
 * instead of those above.  If you wish to allow use of your 
 
26
 * version of this file only under the terms of the GPL and not to
 
27
 * allow others to use your version of this file under the MPL,
 
28
 * indicate your decision by deleting the provisions above and
 
29
 * replace them with the notice and other provisions required by
 
30
 * the GPL.  If you do not delete the provisions above, a recipient
 
31
 * may use your version of this file under either the MPL or the
 
32
 * GPL.
 
33
 */
 
34
 
 
35
#ifndef prinit_h___
 
36
#define prinit_h___
 
37
 
 
38
#include "prthread.h"
 
39
#include "prtypes.h"
 
40
#include "prwin16.h"
 
41
#include <stdio.h>
 
42
 
 
43
PR_BEGIN_EXTERN_C
 
44
 
 
45
/************************************************************************/
 
46
/**************************IDENTITY AND VERSIONING***********************/
 
47
/************************************************************************/
 
48
 
 
49
/*
 
50
** NSPR's name, this should persist until at least the turn of the
 
51
** century.
 
52
*/
 
53
#define PR_NAME     "NSPR"
 
54
 
 
55
/*
 
56
** NSPR's version is used to determine the likelihood that the version you
 
57
** used to build your component is anywhere close to being compatible with
 
58
** what is in the underlying library.
 
59
**
 
60
** The format of the version string is
 
61
**     "<major version>.<minor version>[.<patch level>] [<Beta>]"
 
62
*/
 
63
#define PR_VERSION  "4.5 Beta"
 
64
#define PR_VMAJOR   4
 
65
#define PR_VMINOR   5
 
66
#define PR_VPATCH   0
 
67
#define PR_BETA     PR_TRUE
 
68
 
 
69
/*
 
70
** PRVersionCheck
 
71
**
 
72
** The basic signature of the function that is called to provide version
 
73
** checking. The result will be a boolean that indicates the likelihood
 
74
** that the underling library will perform as the caller expects.
 
75
**
 
76
** The only argument is a string, which should be the verson identifier
 
77
** of the library in question. That string will be compared against an
 
78
** equivalent string that represents the actual build version of the
 
79
** exporting library.
 
80
**
 
81
** The result will be the logical union of the directly called library
 
82
** and all dependent libraries.
 
83
*/
 
84
 
 
85
typedef PRBool (*PRVersionCheck)(const char*);
 
86
 
 
87
/*
 
88
** PR_VersionCheck
 
89
**
 
90
** NSPR's existance proof of the version check function.
 
91
**
 
92
** Note that NSPR has no cooperating dependencies.
 
93
*/
 
94
 
 
95
NSPR_API(PRBool) PR_VersionCheck(const char *importedVersion);
 
96
 
 
97
 
 
98
/************************************************************************/
 
99
/*******************************INITIALIZATION***************************/
 
100
/************************************************************************/
 
101
 
 
102
/*
 
103
** Initialize the runtime. Attach a thread object to the currently
 
104
** executing native thread of type "type".
 
105
**
 
106
** The specificaiton of 'maxPTDs' is ignored.
 
107
*/
 
108
NSPR_API(void) PR_Init(
 
109
    PRThreadType type, PRThreadPriority priority, PRUintn maxPTDs);
 
110
 
 
111
/*
 
112
** And alternate form of initialization, one that may become the default if
 
113
** not the only mechanism, provides a method to get the NSPR runtime init-
 
114
** ialized and place NSPR between the caller and the runtime library. This
 
115
** allows main() to be treated as any other thread root function, signalling
 
116
** its compeletion by returning and allowing the runtime to coordinate the
 
117
** completion of the other threads of the runtime.
 
118
**
 
119
** The priority of the main (or primordial) thread will be PR_PRIORITY_NORMAL.
 
120
** The thread may adjust its own priority by using PR_SetPriority(), though
 
121
** at this time the support for priorities is somewhat weak.
 
122
**
 
123
** The specificaiton of 'maxPTDs' is ignored.
 
124
**
 
125
** The value returned by PR_Initialize is the value returned from the root
 
126
** function, 'prmain'.
 
127
*/
 
128
 
 
129
typedef PRIntn (PR_CALLBACK *PRPrimordialFn)(PRIntn argc, char **argv);
 
130
 
 
131
NSPR_API(PRIntn) PR_Initialize(
 
132
    PRPrimordialFn prmain, PRIntn argc, char **argv, PRUintn maxPTDs);
 
133
 
 
134
/*
 
135
** Return PR_TRUE if PR_Init has already been called.
 
136
*/
 
137
NSPR_API(PRBool) PR_Initialized(void);
 
138
 
 
139
/*
 
140
 * Perform a graceful shutdown of NSPR.  PR_Cleanup() may be called by
 
141
 * the primordial thread near the end of the main() function.
 
142
 *
 
143
 * PR_Cleanup() attempts to synchronize the natural termination of
 
144
 * process.  It does that by blocking the caller, if and only if it is
 
145
 * the primordial thread, until the number of user threads has dropped
 
146
 * to zero.  When the primordial thread returns from main(), the process
 
147
 * will immediately and silently exit.  That is, it will (if necessary)
 
148
 * forcibly terminate any existing threads and exit without significant
 
149
 * blocking and there will be no error messages or core files.
 
150
 *
 
151
 * PR_Cleanup() returns PR_SUCCESS if NSPR is successfully shutdown,
 
152
 * or PR_FAILURE if the calling thread of this function is not the
 
153
 * primordial thread.
 
154
 */
 
155
NSPR_API(PRStatus) PR_Cleanup(void);
 
156
 
 
157
/*
 
158
** Disable Interrupts
 
159
**              Disables timer signals used for pre-emptive scheduling.
 
160
*/
 
161
NSPR_API(void) PR_DisableClockInterrupts(void);
 
162
 
 
163
/*
 
164
** Enables Interrupts
 
165
**              Enables timer signals used for pre-emptive scheduling.
 
166
*/
 
167
NSPR_API(void) PR_EnableClockInterrupts(void);
 
168
 
 
169
/*
 
170
** Block Interrupts
 
171
**              Blocks the timer signal used for pre-emptive scheduling
 
172
*/
 
173
NSPR_API(void) PR_BlockClockInterrupts(void);
 
174
 
 
175
/*
 
176
** Unblock Interrupts
 
177
**              Unblocks the timer signal used for pre-emptive scheduling
 
178
*/
 
179
NSPR_API(void) PR_UnblockClockInterrupts(void);
 
180
 
 
181
/*
 
182
** Create extra virtual processor threads. Generally used with MP systems.
 
183
*/
 
184
NSPR_API(void) PR_SetConcurrency(PRUintn numCPUs);
 
185
 
 
186
/*
 
187
** Control the method and size of the file descriptor (PRFileDesc*)
 
188
** cache used by the runtime. Setting 'high' to zero is for performance,
 
189
** any other value probably for debugging (see memo on FD caching).
 
190
*/
 
191
NSPR_API(PRStatus) PR_SetFDCacheSize(PRIntn low, PRIntn high);
 
192
 
 
193
/*
 
194
 * Cause an immediate, nongraceful, forced termination of the process.
 
195
 * It takes a PRIntn argument, which is the exit status code of the
 
196
 * process.
 
197
 */
 
198
NSPR_API(void) PR_ProcessExit(PRIntn status);
 
199
 
 
200
/*
 
201
** Abort the process in a non-graceful manner. This will cause a core file,
 
202
** call to the debugger or other moral equivalent as well as causing the
 
203
** entire process to stop.
 
204
*/
 
205
NSPR_API(void) PR_Abort(void);
 
206
 
 
207
/*
 
208
 ****************************************************************
 
209
 *
 
210
 * Module initialization:
 
211
 *
 
212
 ****************************************************************
 
213
 */
 
214
 
 
215
typedef struct PRCallOnceType {
 
216
    PRIntn initialized;
 
217
    PRInt32 inProgress;
 
218
    PRStatus status;
 
219
} PRCallOnceType;
 
220
 
 
221
typedef PRStatus (PR_CALLBACK *PRCallOnceFN)(void);
 
222
 
 
223
typedef PRStatus (PR_CALLBACK *PRCallOnceWithArgFN)(void *arg);
 
224
 
 
225
NSPR_API(PRStatus) PR_CallOnce(
 
226
    PRCallOnceType *once,
 
227
    PRCallOnceFN    func
 
228
);
 
229
 
 
230
NSPR_API(PRStatus) PR_CallOnceWithArg(
 
231
    PRCallOnceType      *once,
 
232
    PRCallOnceWithArgFN  func,
 
233
    void                *arg
 
234
);
 
235
 
 
236
 
 
237
PR_END_EXTERN_C
 
238
 
 
239
#endif /* prinit_h___ */