This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Define setlocale_i() on unsafe threaded builds
[perl5.git] / perlvars.h
CommitLineData
eb1102fc
NIS
1/* perlvars.h
2 *
663f364b 3 * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
54ca4ee7 4 * by Larry Wall and others
eb1102fc
NIS
5 *
6 * You may distribute under the terms of either the GNU General Public
7 * License or the Artistic License, as specified in the README file.
8 *
9 */
10
88e1f1a2
JV
11/*
12=head1 Global Variables
e8570548 13These variables are global to an entire process. They are shared between
5a4fed09
KW
14all interpreters and all threads in a process. Any variables not documented
15here may be changed or removed without notice, so don't use them!
16If you feel you really do need to use an unlisted variable, first send email to
17L<perl5-porters@perl.org|mailto:perl5-porters@perl.org>. It may be that
18someone there will point out a way to accomplish what you need without using an
19internal variable. But if not, you should get a go-ahead to document and then
20use the variable.
e8570548
Z
21
22=cut
88e1f1a2 23*/
49f531da 24
d7cb65f2 25/* Don't forget to re-run regen/embed.pl to propagate changes! */
cb68f92d
GS
26
27/* This file describes the "global" variables used by perl
28 * This used to be in perl.h directly but we want to abstract out into
29 * distinct files which are per-thread, per-interpreter or really global,
30 * and how they're initialized.
31 *
32 * The 'G' prefix is only needed for vars that need appropriate #defines
22c35a8c 33 * generated in embed*.h. Such symbols are also used to generate
14dd3ad8 34 * the appropriate export list for win32. */
cb68f92d 35
49f531da 36/* global state */
eeb6b841 37#if defined(USE_ITHREADS)
115ff745 38PERLVAR(G, op_mutex, perl_mutex) /* Mutex for op refcounting */
eeb6b841 39#endif
5c64bffd 40PERLVARI(G, curinterp, PerlInterpreter *, NULL)
1604cfb0
MS
41 /* currently running interpreter
42 * (initial parent interpreter under
43 * useithreads) */
3db8f154 44#if defined(USE_ITHREADS)
115ff745 45PERLVAR(G, thr_key, perl_key) /* key to retrieve per-thread struct */
ba869deb 46#endif
a0ed51b3 47
43165c05 48/* XXX does anyone even use this? */
115ff745 49PERLVARI(G, do_undump, bool, FALSE) /* -u or dump seen? */
b363f7ed 50
eeb6b841 51#if defined(FAKE_PERSISTENT_SIGNAL_HANDLERS)||defined(FAKE_DEFAULT_SIGNAL_HANDLERS)
115ff745 52PERLVARI(G, sig_handlers_initted, int, 0)
534825c4 53#endif
eeb6b841 54#ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS
115ff745 55PERLVARA(G, sig_ignoring, SIG_SIZE, int)
1604cfb0 56 /* which signals we are ignoring */
eeb6b841
NC
57#endif
58#ifdef FAKE_DEFAULT_SIGNAL_HANDLERS
115ff745 59PERLVARA(G, sig_defaulting, SIG_SIZE, int)
d90a703e 60#endif
5c728af0 61
eeb6b841
NC
62/* XXX signals are process-wide anyway, so we
63 * ignore the implications of this for threading */
64#ifndef HAS_SIGACTION
115ff745 65PERLVARI(G, sig_trapped, int, 0)
428eed4a 66#endif
af419de7 67
b35112e7
CS
68/* If Perl has to ignore SIGPFE, this is its saved state.
69 * See perl.h macros PERL_FPU_INIT and PERL_FPU_{PRE,POST}_EXEC. */
115ff745 70PERLVAR(G, sigfpe_saved, Sighandler_t)
dc37125b
DM
71
72/* these ptrs to functions are to avoid linkage problems; see
73 * perl-5.8.0-2193-g5c1546dc48
74 */
75PERLVARI(G, csighandlerp, Sighandler_t, Perl_csighandler)
76PERLVARI(G, csighandler1p, Sighandler1_t, Perl_csighandler1)
77PERLVARI(G, csighandler3p, Sighandler3_t, Perl_csighandler3)
5c1546dc 78
eeb6b841
NC
79/* This is constant on most architectures, a global on OS/2 */
80#ifdef OS2
115ff745 81PERLVARI(G, sh_path, char *, SH_PATH) /* full path of shell */
50acdf95 82#endif
27da23d5
JH
83
84#ifdef USE_PERLIO
eeb6b841
NC
85
86# if defined(USE_ITHREADS)
115ff745 87PERLVAR(G, perlio_mutex, perl_mutex) /* Mutex for perlio fd refcounts */
eeb6b841
NC
88# endif
89
115ff745
NC
90PERLVARI(G, perlio_fd_refcnt, int *, 0) /* Pointer to array of fd refcounts. */
91PERLVARI(G, perlio_fd_refcnt_size, int, 0) /* Size of the array */
92PERLVARI(G, perlio_debug_fd, int, 0) /* the fd to write perlio debug into, 0 means not set yet */
27da23d5
JH
93#endif
94
95#ifdef HAS_MMAP
115ff745 96PERLVARI(G, mmap_page_size, IV, 0)
27da23d5
JH
97#endif
98
eeb6b841 99#if defined(USE_ITHREADS)
115ff745 100PERLVAR(G, hints_mutex, perl_mutex) /* Mutex for refcounted he refcounting */
57d4826a 101PERLVAR(G, env_mutex, perl_RnW1_mutex_t) /* Mutex for accessing ENV */
407c2aaa 102PERLVAR(G, locale_mutex, perl_mutex) /* Mutex related to locale handling */
5acc3fa5 103#endif
6ebbc862 104
39e69e77 105#ifdef USE_POSIX_2008_LOCALE
67f006ee 106PERLVARI(G, C_locale_obj, locale_t, NULL)
27da23d5
JH
107#endif
108
0c5ea019 109PERLVARI(G, watch_pvx, char *, NULL)
27da23d5 110
e8570548 111/*
78342678 112=for apidoc AmnU|Perl_check_t *|PL_check
e8570548
Z
113
114Array, indexed by opcode, of functions that will be called for the "check"
115phase of optree building during compilation of Perl code. For most (but
116not all) types of op, once the op has been initially built and populated
117with child ops it will be filtered through the check function referenced
118by the appropriate element of this array. The new op is passed in as the
119sole argument to the check function, and the check function returns the
120completed op. The check function may (as the name suggests) check the op
121for validity and signal errors. It may also initialise or modify parts of
122the ops, or perform more radical surgery such as adding or removing child
123ops, or even throw the op away and return a different op in its place.
124
125This array of function pointers is a convenient place to hook into the
126compilation process. An XS module can put its own custom check function
127in place of any of the standard ones, to influence the compilation of a
128particular type of op. However, a custom check function must never fully
129replace a standard check function (or even a custom check function from
130another module). A module modifying checking must instead B<wrap> the
131preexisting check function. A custom check function must be selective
132about when to apply its custom behaviour. In the usual case where
133it decides not to do anything special with an op, it must chain the
134preexisting op function. Check functions are thus linked in a chain,
135with the core's base checker at the end.
136
137For thread safety, modules should not write directly to this array.
138Instead, use the function L</wrap_op_checker>.
139
5e18b295
FG
140=for apidoc Amn|enum perl_phase|PL_phase
141
142A value that indicates the current Perl interpreter's phase. Possible values
143include C<PERL_PHASE_CONSTRUCT>, C<PERL_PHASE_START>, C<PERL_PHASE_CHECK>,
144C<PERL_PHASE_INIT>, C<PERL_PHASE_RUN>, C<PERL_PHASE_END>, and
145C<PERL_PHASE_DESTRUCT>.
146
147For example, the following determines whether the interpreter is in
148global destruction:
149
150 if (PL_phase == PERL_PHASE_DESTRUCT) {
151 // we are in global destruction
152 }
153
154C<PL_phase> was introduced in Perl 5.14; in prior perls you can use
155C<PL_dirty> (boolean) to determine whether the interpreter is in global
156destruction. (Use of C<PL_dirty> is discouraged since 5.14.)
157
e8570548
Z
158=cut
159*/
160
161#if defined(USE_ITHREADS)
162PERLVAR(G, check_mutex, perl_mutex) /* Mutex for PL_check */
163#endif
27da23d5 164
f16dd614 165/* allocate a unique index to every module that calls MY_CXT_INIT */
27da23d5 166
6e512bc2 167#ifdef MULTIPLICITY
97aff369 168# ifdef USE_ITHREADS
115ff745 169PERLVAR(G, my_ctx_mutex, perl_mutex)
644641ff 170PERLVARI(G, veto_switch_non_tTHX_context, int, FALSE)
97aff369 171# endif
115ff745 172PERLVARI(G, my_cxt_index, int, 0)
f16dd614 173#endif
71ad1b0c 174
c301d606
DM
175/* this is currently set without MUTEX protection, so keep it a type which
176 * can be set atomically (ie not a bit field) */
115ff745 177PERLVARI(G, veto_cleanup, int, FALSE) /* exit without cleanup */
c301d606 178
88e1f1a2 179/*
78342678 180=for apidoc AmnUx|Perl_keyword_plugin_t|PL_keyword_plugin
88e1f1a2
JV
181
182Function pointer, pointing at a function used to handle extended keywords.
183The function should be declared as
184
1604cfb0
MS
185 int keyword_plugin_function(pTHX_
186 char *keyword_ptr, STRLEN keyword_len,
187 OP **op_ptr)
88e1f1a2
JV
188
189The function is called from the tokeniser, whenever a possible keyword
190is seen. C<keyword_ptr> points at the word in the parser's input
191buffer, and C<keyword_len> gives its length; it is not null-terminated.
192The function is expected to examine the word, and possibly other state
193such as L<%^H|perlvar/%^H>, to decide whether it wants to handle it
194as an extended keyword. If it does not, the function should return
195C<KEYWORD_PLUGIN_DECLINE>, and the normal parser process will continue.
196
197If the function wants to handle the keyword, it first must
198parse anything following the keyword that is part of the syntax
f0e67a1d 199introduced by the keyword. See L</Lexer interface> for details.
88e1f1a2
JV
200
201When a keyword is being handled, the plugin function must build
202a tree of C<OP> structures, representing the code that was parsed.
203The root of the tree must be stored in C<*op_ptr>. The function then
364f83bf 204returns a constant indicating the syntactic role of the construct that
88e1f1a2
JV
205it has parsed: C<KEYWORD_PLUGIN_STMT> if it is a complete statement, or
206C<KEYWORD_PLUGIN_EXPR> if it is an expression. Note that a statement
207construct cannot be used inside an expression (except via C<do BLOCK>
208and similar), and an expression is not a complete statement (it requires
209at least a terminating semicolon).
210
211When a keyword is handled, the plugin function may also have
212(compile-time) side effects. It may modify C<%^H>, define functions, and
213so on. Typically, if side effects are the main purpose of a handler,
214it does not wish to generate any ops to be included in the normal
215compilation. In this case it is still required to supply an op tree,
216but it suffices to generate a single null op.
217
218That's how the C<*PL_keyword_plugin> function needs to behave overall.
219Conventionally, however, one does not completely replace the existing
220handler function. Instead, take a copy of C<PL_keyword_plugin> before
221assigning your own function pointer to it. Your handler function should
222look for keywords that it is interested in and handle those. Where it
223is not interested, it should call the saved plugin function, passing on
224the arguments it received. Thus C<PL_keyword_plugin> actually points
225at a chain of handler functions, all of which have an opportunity to
226handle keywords, and only the last function in the chain (built into
227the Perl core) will normally return C<KEYWORD_PLUGIN_DECLINE>.
228
1e5c5f69
LM
229For thread safety, modules should not set this variable directly.
230Instead, use the function L</wrap_keyword_plugin>.
231
88e1f1a2
JV
232=cut
233*/
234
1e5c5f69 235#if defined(USE_ITHREADS)
cd7d7848 236PERLVAR(G, keyword_plugin_mutex, perl_mutex) /* Mutex for PL_keyword_plugin and PL_infix_plugin */
1e5c5f69 237#endif
115ff745 238PERLVARI(G, keyword_plugin, Perl_keyword_plugin_t, Perl_keyword_plugin_standard)
eeb6b841 239
51fd43e9
PE
240/*
241=for apidoc AmnUx|Perl_infix_plugin_t|PL_infix_plugin
242
243B<NOTE:> This API exists entirely for the purpose of making the CPAN module
244C<XS::Parse::Infix> work. It is not expected that additional modules will make
245use of it; rather, that they should use C<XS::Parse::Infix> to provide parsing
246of new infix operators.
247
248Function pointer, pointing at a function used to handle extended infix
249operators. The function should be declared as
250
251 int infix_plugin_function(pTHX_
252 char *opname, STRLEN oplen,
253 struct Perl_custom_infix **infix_ptr)
254
255The function is called from the tokenizer whenever a possible infix operator
256is seen. C<opname> points to the operator name in the parser's input buffer,
257and C<oplen> gives the I<maximum> number of bytes of it that should be
258consumed; it is not null-terminated. The function is expected to examine the
259operator name and possibly other state such as L<%^H|perlvar/%^H>, to
260determine whether it wants to handle the operator name.
261
262As compared to the single stage of C<PL_keyword_plugin>, parsing of additional
263infix operators occurs in three separate stages. This is because of the more
264complex interactions it has with the parser, to ensure that operator
265precedence rules work correctly. These stages are co-ordinated by the use of
266an additional information structure.
267
268If the function wants to handle the infix operator, it must set the variable
269pointed to by C<infix_ptr> to the address of a structure that provides this
270additional information about the subsequent parsing stages. If it does not,
271it should make a call to the next function in the chain.
272
273This structure has the following definition:
274
275 struct Perl_custom_infix {
276 enum Perl_custom_infix_precedence prec;
277 void (*parse)(pTHX_ SV **opdata,
278 struct Perl_custom_infix *);
279 OP *(*build_op)(pTHX_ SV **opdata, OP *lhs, OP *rhs,
280 struct Perl_custom_infix *);
281 };
282
283The function must then return an integer giving the number of bytes consumed
284by the name of this operator. In the case of an operator whose name is
285composed of identifier characters, this must be equal to C<oplen>. In the case
286of an operator named by non-identifier characters, this is permitted to be
287shorter than C<oplen>, and any additional characters after it will not be
288claimed by the infix operator but instead will be consumed by the tokenizer
289and parser as normal.
290
291If the optional C<parse> function is provided, it is called immediately by the
292parser to let the operator's definition consume any additional syntax from the
293source code. This should I<not> be used for normal operand parsing, but it may
294be useful when implementing things like parametric operators or meta-operators
295that consume more syntax themselves. This function may use the variable
296pointed to by C<opdata> to provide an SV containing additional data to be
297passed into the C<build_op> function later on.
298
299The information structure gives the operator precedence level in the C<prec>
300field. This is used to tell the parser how much of the surrounding syntax
301before and after should be considered as operands to the operator.
302
303The tokenizer and parser will then continue to operate as normal until enough
304additional input has been parsed to form both the left- and right-hand side
305operands to the operator, according to the precedence level. At this point the
306C<build_op> function is called, being passed the left- and right-hand operands
307as optree fragments. It is expected to combine them into the resulting optree
308fragment, which it should return.
309
310After the C<build_op> function has returned, if the variable pointed to by
311C<opdata> was set to a non-C<NULL> value, it will then be destroyed by calling
312C<SvREFCNT_dec()>.
313
314For thread safety, modules should not set this variable directly.
315Instead, use the function L</wrap_infix_plugin>.
316
317However, that all said, the introductory note above still applies. This
318variable is provided in core perl only for the benefit of the
319C<XS::Parse::Infix> module. That module acts as a central registry for infix
320operators, automatically handling things like deparse support and
321discovery/reflection, and these abilities only work because it knows all the
322registered operators. Other modules should not use this interpreter variable
323directly to implement them because then those central features would no longer
324work properly.
325
326Furthermore, it is likely that this (experimental) API will be replaced in a
327future Perl version by a more complete API that fully implements the central
328registry and other semantics currently provided by C<XS::Parse::Infix>, once
329the module has had sufficient experimental testing time. This current
330mechanism exists only as an interim measure to get to that stage.
331
332=cut
333*/
334
cd7d7848
PE
335PERLVARI(G, infix_plugin, Perl_infix_plugin_t, Perl_infix_plugin_standard)
336
5c64bffd 337PERLVARI(G, op_sequence, HV *, NULL) /* dump.c */
115ff745 338PERLVARI(G, op_seq, UV, 0) /* dump.c */
eeb6b841
NC
339
340#ifdef USE_ITHREADS
115ff745 341PERLVAR(G, dollarzero_mutex, perl_mutex) /* Modifying $0 */
eeb6b841
NC
342#endif
343
344/* Restricted hashes placeholder value.
5c64bffd
NC
345 In theory, the contents are never used, only the address.
346 In practice, &PL_sv_placeholder is returned by some APIs, and the calling
347 code is checking SvOK(). */
348
115ff745 349PERLVAR(G, sv_placeholder, SV)
eeb6b841
NC
350
351#if defined(MYMALLOC) && defined(USE_ITHREADS)
115ff745 352PERLVAR(G, malloc_mutex, perl_mutex) /* Mutex for malloc */
eeb6b841 353#endif
7dc86639
YO
354
355PERLVARI(G, hash_seed_set, bool, FALSE) /* perl.c */
58411bc7 356PERLVARA(G, hash_seed_w, PERL_HASH_SEED_WORDS, PVT__PERL_HASH_WORD_TYPE) /* perl.c and hv.h */
9d5e3f1a 357#if defined(PERL_HASH_STATE_BYTES)
58411bc7 358PERLVARA(G, hash_state_w, PERL_HASH_STATE_WORDS, PVT__PERL_HASH_WORD_TYPE) /* perl.c and hv.h */
9d5e3f1a
YO
359#endif
360#if defined(PERL_USE_SINGLE_CHAR_HASH_CACHE)
c5cd648d
YO
361#define PERL_SINGLE_CHAR_HASH_CACHE_ELEMS ((1+256) * sizeof(U32))
362PERLVARA(G, hash_chars, PERL_SINGLE_CHAR_HASH_CACHE_ELEMS, unsigned char) /* perl.c and hv.h */
9d5e3f1a 363#endif
483efd0a
CB
364
365/* The path separator can vary depending on whether we're running under DCL or
366 * a Unix shell.
367 */
368#ifdef __VMS
369PERLVAR(G, perllib_sep, char)
370#endif
744ebf52 371
dd52e3cc
KW
372/* Definitions of user-defined \p{} properties, as the subs that define them
373 * are only called once */
374PERLVARI(G, user_def_props, HV *, NULL)
375
8310e7fa 376#if defined(USE_ITHREADS)
dd52e3cc
KW
377PERLVAR(G, user_def_props_aTHX, PerlInterpreter *) /* aTHX that user_def_props
378 was defined in */
379PERLVAR(G, user_prop_mutex, perl_mutex) /* Mutex for manipulating
380 PL_user_defined_properties */
8310e7fa
KW
381#endif
382
a3815e44 383/* these record the best way to perform certain IO operations while
999d65ed
DM
384 * atomically setting FD_CLOEXEC. On the first call, a probe is done
385 * and the result recorded for use by subsequent calls.
386 * In theory these variables aren't thread-safe, but the worst that can
387 * happen is that two treads will both do an initial probe
388 */
389PERLVARI(G, strategy_dup, int, 0) /* doio.c */
390PERLVARI(G, strategy_dup2, int, 0) /* doio.c */
391PERLVARI(G, strategy_open, int, 0) /* doio.c */
392PERLVARI(G, strategy_open3, int, 0) /* doio.c */
393PERLVARI(G, strategy_mkstemp, int, 0) /* doio.c */
394PERLVARI(G, strategy_socket, int, 0) /* doio.c */
395PERLVARI(G, strategy_accept, int, 0) /* doio.c */
396PERLVARI(G, strategy_pipe, int, 0) /* doio.c */
397PERLVARI(G, strategy_socketpair, int, 0) /* doio.c */
b95d2334
TK
398
399PERLVARI(G, my_environ, char **, NULL)
66673af5 400PERLVARI(G, origenviron, char **, NULL)