summaryrefslogtreecommitdiff
path: root/perlvars.h
blob: c1a0dd41cc61b6821154c0579e89bc302f5078c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/****************/
/* Truly global */
/****************/

/* Don't forget to re-run embed.pl to propagate changes! */

/* This file describes the "global" variables used by perl
 * This used to be in perl.h directly but we want to abstract out into
 * distinct files which are per-thread, per-interpreter or really global,
 * and how they're initialized.
 *
 * The 'G' prefix is only needed for vars that need appropriate #defines
 * generated in embed*.h.  Such symbols are also used to generate
 * the appropriate export list for win32.
 *
 * Avoid build-specific #ifdefs here, like DEBUGGING.  That way,
 * we can keep binary compatibility of the curinterp structure */


/* global state */
PERLVAR(Gcurinterp,	PerlInterpreter *)
					/* currently running interpreter */
#ifdef USE_THREADS
PERLVAR(Gthr_key,	perl_key)	/* For per-thread struct perl_thread* */
PERLVAR(Gsv_mutex,	perl_mutex)	/* Mutex for allocating SVs in sv.c */
PERLVAR(Gmalloc_mutex,	perl_mutex)	/* Mutex for malloc */
PERLVAR(Geval_mutex,	perl_mutex)	/* Mutex for doeval */
PERLVAR(Geval_cond,	perl_cond)	/* Condition variable for doeval */
PERLVAR(Geval_owner,	struct perl_thread *)
					/* Owner thread for doeval */
PERLVAR(Gnthreads,	int)		/* Number of threads currently */
PERLVAR(Gthreads_mutex,	perl_mutex)	/* Mutex for nthreads and thread list */
PERLVAR(Gnthreads_cond,	perl_cond)	/* Condition variable for nthreads */
PERLVAR(Gsvref_mutex,	perl_mutex)	/* Mutex for SvREFCNT_{inc,dec} */
PERLVARI(Gthreadsv_names,char *,	THREADSV_NAMES)
#ifdef FAKE_THREADS
PERLVAR(Gcurthr,	struct perl_thread *)
					/* Currently executing (fake) thread */
#endif

PERLVAR(Gcred_mutex,	perl_mutex)	/* altered credentials in effect */

#endif /* USE_THREADS */

PERLVAR(Gninterps,	int)		/* number of active interpreters */
PERLVARI(Gdo_undump,	bool,	FALSE)	/* -u or dump seen? */

/* constants (these are not literals to facilitate pointer comparisons) */
PERLVARIC(GYes,		char *, "1")
PERLVARIC(GNo,		char *, "")
PERLVARIC(Ghexdigit,	char *, "0123456789abcdef0123456789ABCDEF")
PERLVARIC(Gpatleave,	char *, "\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}")