corosync  3.1.9
config.h
Go to the documentation of this file.
1 /* include/corosync/config.h. Generated from config.h.in by configure. */
2 /* include/corosync/config.h.in. Generated from configure.ac by autoheader. */
3 
4 /* Define to 1 if the 'closedir' function returns void instead of int. */
5 /* #undef CLOSEDIR_VOID */
6 
7 /* corosync config directory */
8 #define COROSYSCONFDIR "/etc/corosync"
9 
10 /* Define to 1 if using 'alloca.c'. */
11 /* #undef C_ALLOCA */
12 
13 /* Compiling Debugging code */
14 /* #undef DEBUG */
15 
16 /* Build in support for sending SNMP traps */
17 #define ENABLE_SNMP 1
18 
19 /* Define to 1 if you have the 'alarm' function. */
20 #define HAVE_ALARM 1
21 
22 /* Define to 1 if you have 'alloca', as a function or macro. */
23 #define HAVE_ALLOCA 1
24 
25 /* Define to 1 if <alloca.h> works. */
26 #define HAVE_ALLOCA_H 1
27 
28 /* Define to 1 if you have the 'alphasort' function. */
29 #define HAVE_ALPHASORT 1
30 
31 /* Define to 1 if you have the <arpa/inet.h> header file. */
32 #define HAVE_ARPA_INET_H 1
33 
34 /* Define to 1 if you have the 'atexit' function. */
35 #define HAVE_ATEXIT 1
36 
37 /* Define to 1 if you have the 'bzero' function. */
38 #define HAVE_BZERO 1
39 
40 /* Define to 1 if you have the 'clock_gettime' function. */
41 #define HAVE_CLOCK_GETTIME 1
42 
43 /* have dbus */
44 #define HAVE_DBUS 1
45 
46 /* Define to 1 if you have the <dirent.h> header file, and it defines 'DIR'.
47  */
48 #define HAVE_DIRENT_H 1
49 
50 /* Define to 1 if you have the <dlfcn.h> header file. */
51 #define HAVE_DLFCN_H 1
52 
53 /* Define to 1 if you don't have 'vprintf' but do have '_doprnt.' */
54 /* #undef HAVE_DOPRNT */
55 
56 /* Define to 1 if you have the 'dup2' function. */
57 #define HAVE_DUP2 1
58 
59 /* Define to 1 if you have the 'endgrent' function. */
60 #define HAVE_ENDGRENT 1
61 
62 /* Define to 1 if you have the 'endpwent' function. */
63 #define HAVE_ENDPWENT 1
64 
65 /* Define to 1 if you have the 'fcntl' function. */
66 #define HAVE_FCNTL 1
67 
68 /* Define to 1 if you have the <fcntl.h> header file. */
69 #define HAVE_FCNTL_H 1
70 
71 /* Define to 1 if you have the 'fdatasync' function. */
72 #define HAVE_FDATASYNC 1
73 
74 /* Define to 1 if you have the 'fork' function. */
75 #define HAVE_FORK 1
76 
77 /* Define to 1 if you have the 'ftruncate' function. */
78 #define HAVE_FTRUNCATE 1
79 
80 /* Define to 1 if you have the 'getcwd' function. */
81 #define HAVE_GETCWD 1
82 
83 /* Define to 1 if you have the 'gethostname' function. */
84 #define HAVE_GETHOSTNAME 1
85 
86 /* Define to 1 if you have the 'getifaddrs' function. */
87 #define HAVE_GETIFADDRS 1
88 
89 /* Define to 1 if you have the <getopt.h> header file. */
90 #define HAVE_GETOPT_H 1
91 
92 /* Define to 1 if you have the 'getpagesize' function. */
93 #define HAVE_GETPAGESIZE 1
94 
95 /* Define to 1 if you have the 'getpeereid' function. */
96 /* #undef HAVE_GETPEEREID */
97 
98 /* Define to 1 if you have the 'getpeerucred' function. */
99 /* #undef HAVE_GETPEERUCRED */
100 
101 /* Define to 1 if you have the 'gettimeofday' function. */
102 #define HAVE_GETTIMEOFDAY 1
103 
104 /* Define to 1 if you have the <ifaddrs.h> header file. */
105 #define HAVE_IFADDRS_H 1
106 
107 /* Define to 1 if you have the 'inet_ntoa' function. */
108 #define HAVE_INET_NTOA 1
109 
110 /* Define to 1 if you have the <inttypes.h> header file. */
111 #define HAVE_INTTYPES_H 1
112 
113 /* have knet access list */
114 #define HAVE_KNET_ACCESS_LIST 1
115 
116 /* have knet crypto reconfig support */
117 #define HAVE_KNET_CRYPTO_RECONF 1
118 
119 /* have knet onwire versioning */
120 /* #undef HAVE_KNET_ONWIRE_VER */
121 
122 /* Define to 1 if you have the 'asan' library (-lasan). */
123 /* #undef HAVE_LIBASAN */
124 
125 /* have nozzle */
126 #define HAVE_LIBNOZZLE 1
127 
128 /* Define to 1 if you have the 'nsl' library (-lnsl). */
129 /* #undef HAVE_LIBNSL */
130 
131 /* Define to 1 if you have the 'pthread' library (-lpthread). */
132 #define HAVE_LIBPTHREAD 1
133 
134 /* Define to 1 if you have the 'rt' library (-lrt). */
135 #define HAVE_LIBRT 1
136 
137 /* Define to 1 if you have the 'socket' library (-lsocket). */
138 /* #undef HAVE_LIBSOCKET */
139 
140 /* have libstatgrab >= 0.90 */
141 #define HAVE_LIBSTATGRAB_GE_090 1
142 
143 /* have systemd interface library */
144 #define HAVE_LIBSYSTEMD 1
145 
146 /* Define to 1 if you have the 'tsan' library (-ltsan). */
147 /* #undef HAVE_LIBTSAN */
148 
149 /* Define to 1 if you have the 'ubsan' library (-lubsan). */
150 /* #undef HAVE_LIBUBSAN */
151 
152 /* Define to 1 if you have the <limits.h> header file. */
153 #define HAVE_LIMITS_H 1
154 
155 /* Define to 1 if you have the 'localtime_r' function. */
156 #define HAVE_LOCALTIME_R 1
157 
158 /* Define to 1 if your system has a GNU libc compatible 'malloc' function, and
159  to 0 otherwise. */
160 #define HAVE_MALLOC 1
161 
162 /* Define to 1 if you have the <malloc.h> header file. */
163 #define HAVE_MALLOC_H 1
164 
165 /* Define to 1 if you have the 'memmove' function. */
166 #define HAVE_MEMMOVE 1
167 
168 /* Define to 1 if you have the 'memset' function. */
169 #define HAVE_MEMSET 1
170 
171 /* Define to 1 if you have the <minix/config.h> header file. */
172 /* #undef HAVE_MINIX_CONFIG_H */
173 
174 /* Define to 1 if you have the 'mkdir' function. */
175 #define HAVE_MKDIR 1
176 
177 /* Define to 1 if you have a working 'mmap' system call. */
178 #define HAVE_MMAP 1
179 
180 /* have resource monitoring */
181 #define HAVE_MONITORING 1
182 
183 /* msghdr has msg_accrights */
184 /* #undef HAVE_MSGHDR_ACCRIGHTS */
185 
186 /* msghdr has msg_accrightslen */
187 /* #undef HAVE_MSGHDR_ACCRIGHTSLEN */
188 
189 /* msghdr has msg_control */
190 #define HAVE_MSGHDR_CONTROL 1
191 
192 /* msghdr has msg_controllen */
193 #define HAVE_MSGHDR_CONTROLLEN 1
194 
195 /* msghdr has msg_flags */
196 #define HAVE_MSGHDR_FLAGS 1
197 
198 /* Define to 1 if you have the 'munmap' function. */
199 #define HAVE_MUNMAP 1
200 
201 /* Define to 1 if you have the <ndir.h> header file, and it defines 'DIR'. */
202 /* #undef HAVE_NDIR_H */
203 
204 /* Define to 1 if you have the <netdb.h> header file. */
205 #define HAVE_NETDB_H 1
206 
207 /* Define to 1 if you have the <netinet/in.h> header file. */
208 #define HAVE_NETINET_IN_H 1
209 
210 /* Define to 1 if you have the 'netsnmp_tdomain_transport' function. */
211 /* #undef HAVE_NETSNMP_TDOMAIN_TRANSPORT */
212 
213 /* Define to 1 if you have the 'netsnmp_transport_open_client' function. */
214 #define HAVE_NETSNMP_TRANSPORT_OPEN_CLIENT 1
215 
216 /* Define to 1 if you have the <net-snmp/net-snmp-config.h> header file. */
217 #define HAVE_NET_SNMP_NET_SNMP_CONFIG_H 1
218 
219 /* Define to 1 if you have the 'pthread_setschedparam' function. */
220 #define HAVE_PTHREAD_SETSCHEDPARAM 1
221 
222 /* have qb_log_file_reopen */
223 #define HAVE_QB_LOG_FILE_REOPEN 1
224 
225 /* have qb_log_thread_priority_set */
226 #define HAVE_QB_LOG_THREAD_PRIORITY_SET 1
227 
228 /* Define to 1 if you have the <readline/history.h> header file. */
229 #define HAVE_READLINE_HISTORY_H 1
230 
231 /* Define to 1 if you have the <readline/readline.h> header file. */
232 #define HAVE_READLINE_READLINE_H 1
233 
234 /* Define to 1 if your system has a GNU libc compatible 'realloc' function,
235  and to 0 otherwise. */
236 #define HAVE_REALLOC 1
237 
238 /* Define to 1 if you have the 'scandir' function. */
239 #define HAVE_SCANDIR 1
240 
241 /* Define to 1 if you have the 'sched_get_priority_max' function. */
242 #define HAVE_SCHED_GET_PRIORITY_MAX 1
243 
244 /* Define to 1 if you have the 'sched_setscheduler' function. */
245 #define HAVE_SCHED_SETSCHEDULER 1
246 
247 /* Define to 1 if you have the 'select' function. */
248 #define HAVE_SELECT 1
249 
250 /* have small_memory_footprint */
251 /* #undef HAVE_SMALL_MEMORY_FOOTPRINT */
252 
253 /* Define to 1 if you have the 'socket' function. */
254 #define HAVE_SOCKET 1
255 
256 /* sockaddr_in6 needs sin6_len */
257 /* #undef HAVE_SOCK_SIN6_LEN */
258 
259 /* sockaddr_in needs sin_len */
260 /* #undef HAVE_SOCK_SIN_LEN */
261 
262 /* Define to 1 if you have the <stddef.h> header file. */
263 #define HAVE_STDDEF_H 1
264 
265 /* Define to 1 if you have the <stdint.h> header file. */
266 #define HAVE_STDINT_H 1
267 
268 /* Define to 1 if you have the <stdio.h> header file. */
269 #define HAVE_STDIO_H 1
270 
271 /* Define to 1 if you have the <stdlib.h> header file. */
272 #define HAVE_STDLIB_H 1
273 
274 /* Define to 1 if you have the 'strcasecmp' function. */
275 #define HAVE_STRCASECMP 1
276 
277 /* Define to 1 if you have the 'strchr' function. */
278 #define HAVE_STRCHR 1
279 
280 /* Define to 1 if you have the 'strdup' function. */
281 #define HAVE_STRDUP 1
282 
283 /* Define to 1 if you have the 'strerror' function. */
284 #define HAVE_STRERROR 1
285 
286 /* Define to 1 if you have the <strings.h> header file. */
287 #define HAVE_STRINGS_H 1
288 
289 /* Define to 1 if you have the <string.h> header file. */
290 #define HAVE_STRING_H 1
291 
292 /* Define to 1 if you have the 'strrchr' function. */
293 #define HAVE_STRRCHR 1
294 
295 /* Define to 1 if you have the 'strspn' function. */
296 #define HAVE_STRSPN 1
297 
298 /* Define to 1 if you have the 'strstr' function. */
299 #define HAVE_STRSTR 1
300 
301 /* Define to 1 if you have the 'strtol' function. */
302 #define HAVE_STRTOL 1
303 
304 /* Define to 1 if you have the <syslog.h> header file. */
305 #define HAVE_SYSLOG_H 1
306 
307 /* Define to 1 if you have the <sys/dir.h> header file, and it defines 'DIR'.
308  */
309 /* #undef HAVE_SYS_DIR_H */
310 
311 /* Define to 1 if you have the <sys/file.h> header file. */
312 #define HAVE_SYS_FILE_H 1
313 
314 /* Define to 1 if you have the <sys/ioctl.h> header file. */
315 #define HAVE_SYS_IOCTL_H 1
316 
317 /* Define to 1 if you have the <sys/ndir.h> header file, and it defines 'DIR'.
318  */
319 /* #undef HAVE_SYS_NDIR_H */
320 
321 /* Define to 1 if you have the <sys/param.h> header file. */
322 #define HAVE_SYS_PARAM_H 1
323 
324 /* Define to 1 if you have the <sys/select.h> header file. */
325 #define HAVE_SYS_SELECT_H 1
326 
327 /* Define to 1 if you have the <sys/socket.h> header file. */
328 #define HAVE_SYS_SOCKET_H 1
329 
330 /* Define to 1 if you have the <sys/stat.h> header file. */
331 #define HAVE_SYS_STAT_H 1
332 
333 /* Define to 1 if you have the <sys/time.h> header file. */
334 #define HAVE_SYS_TIME_H 1
335 
336 /* Define to 1 if you have the <sys/types.h> header file. */
337 #define HAVE_SYS_TYPES_H 1
338 
339 /* Define to 1 if you have the <sys/uio.h> header file. */
340 #define HAVE_SYS_UIO_H 1
341 
342 /* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
343 #define HAVE_SYS_WAIT_H 1
344 
345 /* Define to 1 if you have the <unistd.h> header file. */
346 #define HAVE_UNISTD_H 1
347 
348 /* Define to 1 if you have the <utmpx.h> header file. */
349 #define HAVE_UTMPX_H 1
350 
351 /* Define to 1 if you have the 'vfork' function. */
352 #define HAVE_VFORK 1
353 
354 /* Define to 1 if you have the <vfork.h> header file. */
355 /* #undef HAVE_VFORK_H */
356 
357 /* Define to 1 if you have the 'vprintf' function. */
358 #define HAVE_VPRINTF 1
359 
360 /* have watchdog */
361 #define HAVE_WATCHDOG 1
362 
363 /* Define to 1 if you have the <wchar.h> header file. */
364 #define HAVE_WCHAR_H 1
365 
366 /* Define to 1 if 'fork' works. */
367 #define HAVE_WORKING_FORK 1
368 
369 /* Define to 1 if 'vfork' works. */
370 #define HAVE_WORKING_VFORK 1
371 
372 /* localstate directory */
373 #define LOCALSTATEDIR "/var"
374 
375 /* Define to the sub-directory where libtool stores uninstalled libraries. */
376 #define LT_OBJDIR ".libs/"
377 
378 /* have net-snmp5.4 over */
379 #define NETSNMPV54
380 
381 /* Name of package */
382 #define PACKAGE "corosync"
383 
384 /* Define to the address where bug reports for this package should be sent. */
385 #define PACKAGE_BUGREPORT "users@clusterlabs.org"
386 
387 /* corosync built-in features */
388 #define PACKAGE_FEATURES " dbus monitoring watchdog augeas systemd xmlconf vqsim nozzle snmp pie relro bindnow"
389 
390 /* Define to the full name of this package. */
391 #define PACKAGE_NAME "corosync"
392 
393 /* Define to the full name and version of this package. */
394 #define PACKAGE_STRING "corosync 3.1.9"
395 
396 /* Define to the one symbol short name of this package. */
397 #define PACKAGE_TARNAME "corosync"
398 
399 /* Define to the home page for this package. */
400 #define PACKAGE_URL ""
401 
402 /* Define to the version of this package. */
403 #define PACKAGE_VERSION "3.1.9"
404 
405 /* Define to the type of arg 1 for 'select'. */
406 #define SELECT_TYPE_ARG1 int
407 
408 /* Define to the type of args 2, 3 and 4 for 'select'. */
409 #define SELECT_TYPE_ARG234 (fd_set *)
410 
411 /* Define to the type of arg 5 for 'select'. */
412 #define SELECT_TYPE_ARG5 (struct timeval *)
413 
414 /* If using the C implementation of alloca, define if you know the
415  direction of stack growth for your system; otherwise it will be
416  automatically deduced at runtime.
417  STACK_DIRECTION > 0 => grows toward higher addresses
418  STACK_DIRECTION < 0 => grows toward lower addresses
419  STACK_DIRECTION = 0 => direction of growth unknown */
420 /* #undef STACK_DIRECTION */
421 
422 /* Define to 1 if all of the C89 standard headers exist (not just the ones
423  required in a freestanding environment). This macro is provided for
424  backward compatibility; new code need not use it. */
425 #define STDC_HEADERS 1
426 
427 /* Enable extensions on AIX, Interix, z/OS. */
428 #ifndef _ALL_SOURCE
429 # define _ALL_SOURCE 1
430 #endif
431 /* Enable general extensions on macOS. */
432 #ifndef _DARWIN_C_SOURCE
433 # define _DARWIN_C_SOURCE 1
434 #endif
435 /* Enable general extensions on Solaris. */
436 #ifndef __EXTENSIONS__
437 # define __EXTENSIONS__ 1
438 #endif
439 /* Enable GNU extensions on systems that have them. */
440 #ifndef _GNU_SOURCE
441 # define _GNU_SOURCE 1
442 #endif
443 /* Enable X/Open compliant socket functions that do not require linking
444  with -lxnet on HP-UX 11.11. */
445 #ifndef _HPUX_ALT_XOPEN_SOCKET_API
446 # define _HPUX_ALT_XOPEN_SOCKET_API 1
447 #endif
448 /* Identify the host operating system as Minix.
449  This macro does not affect the system headers' behavior.
450  A future release of Autoconf may stop defining this macro. */
451 #ifndef _MINIX
452 /* # undef _MINIX */
453 #endif
454 /* Enable general extensions on NetBSD.
455  Enable NetBSD compatibility extensions on Minix. */
456 #ifndef _NETBSD_SOURCE
457 # define _NETBSD_SOURCE 1
458 #endif
459 /* Enable OpenBSD compatibility extensions on NetBSD.
460  Oddly enough, this does nothing on OpenBSD. */
461 #ifndef _OPENBSD_SOURCE
462 # define _OPENBSD_SOURCE 1
463 #endif
464 /* Define to 1 if needed for POSIX-compatible behavior. */
465 #ifndef _POSIX_SOURCE
466 /* # undef _POSIX_SOURCE */
467 #endif
468 /* Define to 2 if needed for POSIX-compatible behavior. */
469 #ifndef _POSIX_1_SOURCE
470 /* # undef _POSIX_1_SOURCE */
471 #endif
472 /* Enable POSIX-compatible threading on Solaris. */
473 #ifndef _POSIX_PTHREAD_SEMANTICS
474 # define _POSIX_PTHREAD_SEMANTICS 1
475 #endif
476 /* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
477 #ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
478 # define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
479 #endif
480 /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
481 #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
482 # define __STDC_WANT_IEC_60559_BFP_EXT__ 1
483 #endif
484 /* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
485 #ifndef __STDC_WANT_IEC_60559_DFP_EXT__
486 # define __STDC_WANT_IEC_60559_DFP_EXT__ 1
487 #endif
488 /* Enable extensions specified by C23 Annex F. */
489 #ifndef __STDC_WANT_IEC_60559_EXT__
490 # define __STDC_WANT_IEC_60559_EXT__ 1
491 #endif
492 /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
493 #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
494 # define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
495 #endif
496 /* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */
497 #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
498 # define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
499 #endif
500 /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
501 #ifndef __STDC_WANT_LIB_EXT2__
502 # define __STDC_WANT_LIB_EXT2__ 1
503 #endif
504 /* Enable extensions specified by ISO/IEC 24747:2009. */
505 #ifndef __STDC_WANT_MATH_SPEC_FUNCS__
506 # define __STDC_WANT_MATH_SPEC_FUNCS__ 1
507 #endif
508 /* Enable extensions on HP NonStop. */
509 #ifndef _TANDEM_SOURCE
510 # define _TANDEM_SOURCE 1
511 #endif
512 /* Enable X/Open extensions. Define to 500 only if necessary
513  to make mbstate_t available. */
514 #ifndef _XOPEN_SOURCE
515 /* # undef _XOPEN_SOURCE */
516 #endif
517 
518 
519 /* Version number of package */
520 #define VERSION "3.1.9"
521 
522 /* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
523  <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
524  #define below would cause a syntax error. */
525 /* #undef _UINT32_T */
526 
527 /* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
528  <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
529  #define below would cause a syntax error. */
530 /* #undef _UINT64_T */
531 
532 /* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
533  <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
534  #define below would cause a syntax error. */
535 /* #undef _UINT8_T */
536 
537 /* Define to empty if 'const' does not conform to ANSI C. */
538 /* #undef const */
539 
540 /* Define as 'int' if <sys/types.h> doesn't define. */
541 /* #undef gid_t */
542 
543 /* Define to '__inline__' or '__inline' if that's what the C compiler
544  calls it, or to nothing if 'inline' is not supported under any name. */
545 #ifndef __cplusplus
546 /* #undef inline */
547 #endif
548 
549 /* Define to the type of a signed integer type of width exactly 16 bits if
550  such a type exists and the standard includes do not define it. */
551 /* #undef int16_t */
552 
553 /* Define to the type of a signed integer type of width exactly 32 bits if
554  such a type exists and the standard includes do not define it. */
555 /* #undef int32_t */
556 
557 /* Define to the type of a signed integer type of width exactly 64 bits if
558  such a type exists and the standard includes do not define it. */
559 /* #undef int64_t */
560 
561 /* Define to the type of a signed integer type of width exactly 8 bits if such
562  a type exists and the standard includes do not define it. */
563 /* #undef int8_t */
564 
565 /* Define to rpl_malloc if the replacement function should be used. */
566 /* #undef malloc */
567 
568 /* Define as a signed integer type capable of holding a process identifier. */
569 /* #undef pid_t */
570 
571 /* Define to rpl_realloc if the replacement function should be used. */
572 /* #undef realloc */
573 
574 /* Define as 'unsigned int' if <stddef.h> doesn't define. */
575 /* #undef size_t */
576 
577 /* Define as 'int' if <sys/types.h> doesn't define. */
578 /* #undef ssize_t */
579 
580 /* Define as 'int' if <sys/types.h> doesn't define. */
581 /* #undef uid_t */
582 
583 /* Define to the type of an unsigned integer type of width exactly 16 bits if
584  such a type exists and the standard includes do not define it. */
585 /* #undef uint16_t */
586 
587 /* Define to the type of an unsigned integer type of width exactly 32 bits if
588  such a type exists and the standard includes do not define it. */
589 /* #undef uint32_t */
590 
591 /* Define to the type of an unsigned integer type of width exactly 64 bits if
592  such a type exists and the standard includes do not define it. */
593 /* #undef uint64_t */
594 
595 /* Define to the type of an unsigned integer type of width exactly 8 bits if
596  such a type exists and the standard includes do not define it. */
597 /* #undef uint8_t */
598 
599 /* Define as 'fork' if 'vfork' does not work. */
600 /* #undef vfork */
601 
602 /* Define to empty if the keyword 'volatile' does not work. Warning: valid
603  code using 'volatile' can become incorrect without. Disable with care. */
604 /* #undef volatile */