Mercurial > trustbridge > nss-cmake-static
comparison nspr/pr/include/prcountr.h @ 0:1e5118fa0cb1
This is NSS with a Cmake Buildsyste
To compile a static NSS library for Windows we've used the
Chromium-NSS fork and added a Cmake buildsystem to compile
it statically for Windows. See README.chromium for chromium
changes and README.trustbridge for our modifications.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 28 Jul 2014 10:47:06 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e5118fa0cb1 |
---|---|
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | |
2 /* This Source Code Form is subject to the terms of the Mozilla Public | |
3 * License, v. 2.0. If a copy of the MPL was not distributed with this | |
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
5 | |
6 #ifndef prcountr_h___ | |
7 #define prcountr_h___ | |
8 | |
9 /*---------------------------------------------------------------------------- | |
10 ** prcountr.h -- NSPR Instrumentation counters | |
11 ** | |
12 ** The NSPR Counter Feature provides a means to "count | |
13 ** something." Counters can be dynamically defined, incremented, | |
14 ** decremented, set, and deleted under application program | |
15 ** control. | |
16 ** | |
17 ** The Counter Feature is intended to be used as instrumentation, | |
18 ** not as operational data. If you need a counter for operational | |
19 ** data, use native integral types. | |
20 ** | |
21 ** Counters are 32bit unsigned intergers. On overflow, a counter | |
22 ** will wrap. No exception is recognized or reported. | |
23 ** | |
24 ** A counter can be dynamically created using a two level naming | |
25 ** convention. A "handle" is returned when the counter is | |
26 ** created. The counter can subsequently be addressed by its | |
27 ** handle. An API is provided to get an existing counter's handle | |
28 ** given the names with which it was originally created. | |
29 ** Similarly, a counter's name can be retrieved given its handle. | |
30 ** | |
31 ** The counter naming convention is a two-level hierarchy. The | |
32 ** QName is the higher level of the hierarchy; RName is the | |
33 ** lower level. RNames can be thought of as existing within a | |
34 ** QName. The same RName can exist within multiple QNames. QNames | |
35 ** are unique. The NSPR Counter is not a near-zero overhead | |
36 ** feature. Application designers should be aware of | |
37 ** serialization issues when using the Counter API. Creating a | |
38 ** counter locks a large asset, potentially causing a stall. This | |
39 ** suggest that applications should create counters at component | |
40 ** initialization, for example, and not create and destroy them | |
41 ** willy-nilly. ... You have been warned. | |
42 ** | |
43 ** Incrementing and Adding to counters uses atomic operations. | |
44 ** The performance of these operations will vary from platform | |
45 ** to platform. On platforms where atomic operations are not | |
46 ** supported the overhead may be substantial. | |
47 ** | |
48 ** When traversing the counter database with FindNext functions, | |
49 ** the instantaneous values of any given counter is that at the | |
50 ** moment of extraction. The state of the entire counter database | |
51 ** may not be viewed as atomic. | |
52 ** | |
53 ** The counter interface may be disabled (No-Op'd) at compile | |
54 ** time. When DEBUG is defined at compile time, the Counter | |
55 ** Feature is compiled into NSPR and applications invoking it. | |
56 ** When DEBUG is not defined, the counter macros compile to | |
57 ** nothing. To force the Counter Feature to be compiled into an | |
58 ** optimized build, define FORCE_NSPR_COUNTERS at compile time | |
59 ** for both NSPR and the application intending to use it. | |
60 ** | |
61 ** Application designers should use the macro form of the Counter | |
62 ** Feature methods to minimize performance impact in optimized | |
63 ** builds. The macros normally compile to nothing on optimized | |
64 ** builds. | |
65 ** | |
66 ** Application designers should be aware of the effects of | |
67 ** debug and optimized build differences when using result of the | |
68 ** Counter Feature macros in expressions. | |
69 ** | |
70 ** The Counter Feature is thread-safe and SMP safe. | |
71 ** | |
72 ** /lth. 09-Jun-1998. | |
73 */ | |
74 | |
75 #include "prtypes.h" | |
76 | |
77 PR_BEGIN_EXTERN_C | |
78 | |
79 /* | |
80 ** Opaque counter handle type. | |
81 ** ... don't even think of looking in here. | |
82 ** | |
83 */ | |
84 typedef void * PRCounterHandle; | |
85 | |
86 #define PRCOUNTER_NAME_MAX 31 | |
87 #define PRCOUNTER_DESC_MAX 255 | |
88 | |
89 | |
90 | |
91 /* ----------------------------------------------------------------------- | |
92 ** FUNCTION: PR_DEFINE_COUNTER() -- Define a PRCounterHandle | |
93 ** | |
94 ** DESCRIPTION: PR_DEFINE_COUNTER() is used to define a counter | |
95 ** handle. | |
96 ** | |
97 */ | |
98 #define PR_DEFINE_COUNTER(name) PRCounterHandle name | |
99 | |
100 /* ----------------------------------------------------------------------- | |
101 ** FUNCTION: PR_INIT_COUNTER_HANDLE() -- Set the value of a PRCounterHandle | |
102 ** | |
103 ** DESCRIPTION: | |
104 ** PR_INIT_COUNTER_HANDLE() sets the value of a PRCounterHandle | |
105 ** to value. | |
106 ** | |
107 */ | |
108 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
109 #define PR_INIT_COUNTER_HANDLE(handle,value)\ | |
110 (handle) = (PRCounterHandle)(value) | |
111 #else | |
112 #define PR_INIT_COUNTER_HANDLE(handle,value) | |
113 #endif | |
114 | |
115 /* ----------------------------------------------------------------------- | |
116 ** FUNCTION: PR_CreateCounter() -- Create a counter | |
117 ** | |
118 ** DESCRIPTION: PR_CreateCounter() creates a counter object and | |
119 ** initializes it to zero. | |
120 ** | |
121 ** The macro form takes as its first argument the name of the | |
122 ** PRCounterHandle to receive the handle returned from | |
123 ** PR_CreateCounter(). | |
124 ** | |
125 ** INPUTS: | |
126 ** qName: The QName for the counter object. The maximum length | |
127 ** of qName is defined by PRCOUNTER_NAME_MAX | |
128 ** | |
129 ** rName: The RName for the counter object. The maximum length | |
130 ** of qName is defined by PRCOUNTER_NAME_MAX | |
131 ** | |
132 ** descrioption: The description of the counter object. The | |
133 ** maximum length of description is defined by | |
134 ** PRCOUNTER_DESC_MAX. | |
135 ** | |
136 ** OUTPUTS: | |
137 ** | |
138 ** RETURNS: | |
139 ** PRCounterHandle. | |
140 ** | |
141 ** RESTRICTIONS: | |
142 ** | |
143 */ | |
144 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
145 #define PR_CREATE_COUNTER(handle,qName,rName,description)\ | |
146 (handle) = PR_CreateCounter((qName),(rName),(description)) | |
147 #else | |
148 #define PR_CREATE_COUNTER(handle,qName,rName,description) | |
149 #endif | |
150 | |
151 NSPR_API(PRCounterHandle) | |
152 PR_CreateCounter( | |
153 const char *qName, | |
154 const char *rName, | |
155 const char *description | |
156 ); | |
157 | |
158 /* ----------------------------------------------------------------------- | |
159 ** FUNCTION: PR_DestroyCounter() -- Destroy a counter object. | |
160 ** | |
161 ** DESCRIPTION: PR_DestroyCounter() removes a counter and | |
162 ** unregisters its handle from the counter database. | |
163 ** | |
164 ** INPUTS: | |
165 ** handle: the PRCounterHandle of the counter to be destroyed. | |
166 ** | |
167 ** OUTPUTS: | |
168 ** The counter is destroyed. | |
169 ** | |
170 ** RETURNS: void | |
171 ** | |
172 ** RESTRICTIONS: | |
173 ** | |
174 */ | |
175 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
176 #define PR_DESTROY_COUNTER(handle) PR_DestroyCounter((handle)) | |
177 #else | |
178 #define PR_DESTROY_COUNTER(handle) | |
179 #endif | |
180 | |
181 NSPR_API(void) | |
182 PR_DestroyCounter( | |
183 PRCounterHandle handle | |
184 ); | |
185 | |
186 | |
187 /* ----------------------------------------------------------------------- | |
188 ** FUNCTION: PR_GetCounterHandleFromName() -- Retreive a | |
189 ** counter's handle give its name. | |
190 ** | |
191 ** DESCRIPTION: PR_GetCounterHandleFromName() retreives a | |
192 ** counter's handle from the counter database, given the name | |
193 ** the counter was originally created with. | |
194 ** | |
195 ** INPUTS: | |
196 ** qName: Counter's original QName. | |
197 ** rName: Counter's original RName. | |
198 ** | |
199 ** OUTPUTS: | |
200 ** | |
201 ** RETURNS: | |
202 ** PRCounterHandle or PRCounterError. | |
203 ** | |
204 ** RESTRICTIONS: | |
205 ** | |
206 */ | |
207 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
208 #define PR_GET_COUNTER_HANDLE_FROM_NAME(handle,qName,rName)\ | |
209 (handle) = PR_GetCounterHandleFromName((qName),(rName)) | |
210 #else | |
211 #define PR_GET_COUNTER_HANDLE_FROM_NAME(handle,qName,rName) | |
212 #endif | |
213 | |
214 NSPR_API(PRCounterHandle) | |
215 PR_GetCounterHandleFromName( | |
216 const char *qName, | |
217 const char *rName | |
218 ); | |
219 | |
220 /* ----------------------------------------------------------------------- | |
221 ** FUNCTION: PR_GetCounterNameFromHandle() -- Retreive a | |
222 ** counter's name, given its handle. | |
223 ** | |
224 ** DESCRIPTION: PR_GetCounterNameFromHandle() retreives a | |
225 ** counter's name given its handle. | |
226 ** | |
227 ** INPUTS: | |
228 ** qName: Where to store a pointer to qName. | |
229 ** rName: Where to store a pointer to rName. | |
230 ** description: Where to store a pointer to description. | |
231 ** | |
232 ** OUTPUTS: Pointers to the Counter Feature's copies of the names | |
233 ** used when the counters were created. | |
234 ** | |
235 ** RETURNS: void | |
236 ** | |
237 ** RESTRICTIONS: | |
238 ** | |
239 */ | |
240 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
241 #define PR_GET_COUNTER_NAME_FROM_HANDLE(handle,qName,rName,description)\ | |
242 PR_GetCounterNameFromHandle((handle),(qName),(rName),(description)) | |
243 #else | |
244 #define PR_GET_COUNTER_NAME_FROM_HANDLE(handle,qName,rName,description ) | |
245 #endif | |
246 | |
247 NSPR_API(void) | |
248 PR_GetCounterNameFromHandle( | |
249 PRCounterHandle handle, | |
250 const char **qName, | |
251 const char **rName, | |
252 const char **description | |
253 ); | |
254 | |
255 | |
256 /* ----------------------------------------------------------------------- | |
257 ** FUNCTION: PR_IncrementCounter() -- Add one to the referenced | |
258 ** counter. | |
259 ** | |
260 ** DESCRIPTION: Add one to the referenced counter. | |
261 ** | |
262 ** INPUTS: | |
263 ** handle: The PRCounterHandle of the counter to be incremented | |
264 ** | |
265 ** OUTPUTS: The counter is incrementd. | |
266 ** | |
267 ** RETURNS: void | |
268 ** | |
269 ** RESTRICTIONS: | |
270 ** | |
271 */ | |
272 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
273 #define PR_INCREMENT_COUNTER(handle) PR_IncrementCounter(handle) | |
274 #else | |
275 #define PR_INCREMENT_COUNTER(handle) | |
276 #endif | |
277 | |
278 NSPR_API(void) | |
279 PR_IncrementCounter( | |
280 PRCounterHandle handle | |
281 ); | |
282 | |
283 | |
284 /* ----------------------------------------------------------------------- | |
285 ** FUNCTION: PR_DecrementCounter() -- Subtract one from the | |
286 ** referenced counter | |
287 ** | |
288 ** DESCRIPTION: Subtract one from the referenced counter. | |
289 ** | |
290 ** INPUTS: | |
291 ** handle: The PRCounterHandle of the coutner to be | |
292 ** decremented. | |
293 ** | |
294 ** OUTPUTS: the counter is decremented. | |
295 ** | |
296 ** RETURNS: void | |
297 ** | |
298 ** RESTRICTIONS: | |
299 ** | |
300 */ | |
301 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
302 #define PR_DECREMENT_COUNTER(handle) PR_DecrementCounter(handle) | |
303 #else | |
304 #define PR_DECREMENT_COUNTER(handle) | |
305 #endif | |
306 | |
307 NSPR_API(void) | |
308 PR_DecrementCounter( | |
309 PRCounterHandle handle | |
310 ); | |
311 | |
312 /* ----------------------------------------------------------------------- | |
313 ** FUNCTION: PR_AddToCounter() -- Add a value to a counter. | |
314 ** | |
315 ** DESCRIPTION: Add value to the counter referenced by handle. | |
316 ** | |
317 ** INPUTS: | |
318 ** handle: the PRCounterHandle of the counter to be added to. | |
319 ** | |
320 ** value: the value to be added to the counter. | |
321 ** | |
322 ** OUTPUTS: new value for counter. | |
323 ** | |
324 ** RETURNS: void | |
325 ** | |
326 ** RESTRICTIONS: | |
327 ** | |
328 */ | |
329 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
330 #define PR_ADD_TO_COUNTER(handle,value)\ | |
331 PR_AddToCounter((handle),(value)) | |
332 #else | |
333 #define PR_ADD_TO_COUNTER(handle,value) | |
334 #endif | |
335 | |
336 NSPR_API(void) | |
337 PR_AddToCounter( | |
338 PRCounterHandle handle, | |
339 PRUint32 value | |
340 ); | |
341 | |
342 | |
343 /* ----------------------------------------------------------------------- | |
344 ** FUNCTION: PR_SubtractFromCounter() -- A value is subtracted | |
345 ** from a counter. | |
346 ** | |
347 ** DESCRIPTION: | |
348 ** Subtract a value from a counter. | |
349 ** | |
350 ** INPUTS: | |
351 ** handle: the PRCounterHandle of the counter to be subtracted | |
352 ** from. | |
353 ** | |
354 ** value: the value to be subtracted from the counter. | |
355 ** | |
356 ** OUTPUTS: new value for counter | |
357 ** | |
358 ** RETURNS: void | |
359 ** | |
360 ** RESTRICTIONS: | |
361 ** | |
362 */ | |
363 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
364 #define PR_SUBTRACT_FROM_COUNTER(handle,value)\ | |
365 PR_SubtractFromCounter((handle),(value)) | |
366 #else | |
367 #define PR_SUBTRACT_FROM_COUNTER(handle,value) | |
368 #endif | |
369 | |
370 NSPR_API(void) | |
371 PR_SubtractFromCounter( | |
372 PRCounterHandle handle, | |
373 PRUint32 value | |
374 ); | |
375 | |
376 | |
377 /* ----------------------------------------------------------------------- | |
378 ** FUNCTION: PR_GetCounter() -- Retreive the value of a counter | |
379 ** | |
380 ** DESCRIPTION: | |
381 ** Retreive the value of a counter. | |
382 ** | |
383 ** INPUTS: | |
384 ** handle: the PR_CounterHandle of the counter to be retreived | |
385 ** | |
386 ** OUTPUTS: | |
387 ** | |
388 ** RETURNS: The value of the referenced counter | |
389 ** | |
390 ** RESTRICTIONS: | |
391 ** | |
392 */ | |
393 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
394 #define PR_GET_COUNTER(counter,handle)\ | |
395 (counter) = PR_GetCounter((handle)) | |
396 #else | |
397 #define PR_GET_COUNTER(counter,handle) 0 | |
398 #endif | |
399 | |
400 NSPR_API(PRUint32) | |
401 PR_GetCounter( | |
402 PRCounterHandle handle | |
403 ); | |
404 | |
405 /* ----------------------------------------------------------------------- | |
406 ** FUNCTION: PR_SetCounter() -- Replace the content of counter | |
407 ** with value. | |
408 ** | |
409 ** DESCRIPTION: The contents of the referenced counter are | |
410 ** replaced by value. | |
411 ** | |
412 ** INPUTS: | |
413 ** handle: the PRCounterHandle of the counter whose contents | |
414 ** are to be replaced. | |
415 ** | |
416 ** value: the new value of the counter. | |
417 ** | |
418 ** OUTPUTS: | |
419 ** | |
420 ** RETURNS: void | |
421 ** | |
422 ** RESTRICTIONS: | |
423 ** | |
424 */ | |
425 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
426 #define PR_SET_COUNTER(handle,value) PR_SetCounter((handle),(value)) | |
427 #else | |
428 #define PR_SET_COUNTER(handle,value) | |
429 #endif | |
430 | |
431 NSPR_API(void) | |
432 PR_SetCounter( | |
433 PRCounterHandle handle, | |
434 PRUint32 value | |
435 ); | |
436 | |
437 | |
438 /* ----------------------------------------------------------------------- | |
439 ** FUNCTION: PR_FindNextCounterQname() -- Retreive the next QName counter | |
440 ** handle iterator | |
441 ** | |
442 ** DESCRIPTION: | |
443 ** PR_FindNextCounterQname() retreives the first or next Qname | |
444 ** the counter data base, depending on the value of handle. When | |
445 ** handle is NULL, the function attempts to retreive the first | |
446 ** QName handle in the database. When handle is a handle previosly | |
447 ** retreived QName handle, then the function attempts to retreive | |
448 ** the next QName handle. | |
449 ** | |
450 ** INPUTS: | |
451 ** handle: PRCounterHandle or NULL. | |
452 ** | |
453 ** OUTPUTS: returned | |
454 ** | |
455 ** RETURNS: PRCounterHandle or NULL when no more QName counter | |
456 ** handles are present. | |
457 ** | |
458 ** RESTRICTIONS: | |
459 ** A concurrent PR_CreateCounter() or PR_DestroyCounter() may | |
460 ** cause unpredictable results. | |
461 ** | |
462 ** A PRCounterHandle returned from this function may only be used | |
463 ** in another PR_FindNextCounterQname() function call; other | |
464 ** operations may cause unpredictable results. | |
465 ** | |
466 */ | |
467 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
468 #define PR_FIND_NEXT_COUNTER_QNAME(next,handle)\ | |
469 (next) = PR_FindNextCounterQname((handle)) | |
470 #else | |
471 #define PR_FIND_NEXT_COUNTER_QNAME(next,handle) NULL | |
472 #endif | |
473 | |
474 NSPR_API(PRCounterHandle) | |
475 PR_FindNextCounterQname( | |
476 PRCounterHandle handle | |
477 ); | |
478 | |
479 /* ----------------------------------------------------------------------- | |
480 ** FUNCTION: PR_FindNextCounterRname() -- Retreive the next RName counter | |
481 ** handle iterator | |
482 ** | |
483 ** DESCRIPTION: | |
484 ** PR_FindNextCounterRname() retreives the first or next RNname | |
485 ** handle from the counter data base, depending on the | |
486 ** value of handle. When handle is NULL, the function attempts to | |
487 ** retreive the first RName handle in the database. When handle is | |
488 ** a handle previosly retreived RName handle, then the function | |
489 ** attempts to retreive the next RName handle. | |
490 ** | |
491 ** INPUTS: | |
492 ** handle: PRCounterHandle or NULL. | |
493 ** qhandle: PRCounterHandle of a previously aquired via | |
494 ** PR_FIND_NEXT_QNAME_HANDLE() | |
495 ** | |
496 ** OUTPUTS: returned | |
497 ** | |
498 ** RETURNS: PRCounterHandle or NULL when no more RName counter | |
499 ** handles are present. | |
500 ** | |
501 ** RESTRICTIONS: | |
502 ** A concurrent PR_CreateCounter() or PR_DestroyCounter() may | |
503 ** cause unpredictable results. | |
504 ** | |
505 ** A PRCounterHandle returned from this function may only be used | |
506 ** in another PR_FindNextCounterRname() function call; other | |
507 ** operations may cause unpredictable results. | |
508 ** | |
509 */ | |
510 #if defined(DEBUG) || defined(FORCE_NSPR_COUNTERS) | |
511 #define PR_FIND_NEXT_COUNTER_RNAME(next,rhandle,qhandle)\ | |
512 (next) = PR_FindNextCounterRname((rhandle),(qhandle)) | |
513 #else | |
514 #define PR_FIND_NEXT_COUNTER_RNAME(next,rhandle,qhandle) | |
515 #endif | |
516 | |
517 NSPR_API(PRCounterHandle) | |
518 PR_FindNextCounterRname( | |
519 PRCounterHandle rhandle, | |
520 PRCounterHandle qhandle | |
521 ); | |
522 | |
523 PR_END_EXTERN_C | |
524 | |
525 #endif /* prcountr_h___ */ |