8f61950416b0b3b58295665abb9eaf8775af3915
[p5sagit/p5-mst-13.2.git] / thrdvar.h
1 /* Per-thread variables */
2 /* Important ones in the first cache line (if alignment is done right) */
3 PERLVAR(Tstack_sp,      SV **)          
4 #ifdef OP_IN_REGISTER
5 PERLVAR(Topsave,        OP *)           
6 #else
7 PERLVAR(Top,            OP *)           
8 #endif
9 PERLVAR(Tcurpad,        SV **)          
10 PERLVAR(Tstack_base,    SV **)          
11
12 PERLVAR(Tstack_max,     SV **)          
13
14 PERLVAR(Tscopestack,    I32 *)          
15 PERLVAR(Tscopestack_ix, I32)            
16 PERLVAR(Tscopestack_max,I32)            
17
18 PERLVAR(Tsavestack,     ANY *)          
19 PERLVAR(Tsavestack_ix,  I32)            
20 PERLVAR(Tsavestack_max, I32)            
21
22 PERLVAR(Tretstack,      OP **)          
23 PERLVAR(Tretstack_ix,   I32)            
24 PERLVAR(Tretstack_max,  I32)            
25
26 PERLVAR(Tmarkstack,     I32 *)          
27 PERLVAR(Tmarkstack_ptr, I32 *)          
28 PERLVAR(Tmarkstack_max, I32 *)          
29
30 PERLVAR(TSv,    SV *)           
31 PERLVAR(TXpv,   XPV *)          
32 PERLVAR(Tstatbuf,       struct stat)            
33 #ifdef HAS_TIMES
34 PERLVAR(Ttimesbuf,      struct tms)             
35 #endif
36     
37 /* XXX What about regexp stuff? */
38
39 /* Now the fields that used to be "per interpreter" (even when global) */
40
41 /* Fields used by magic variables such as $@, $/ and so on */
42 PERLVAR(Ttainted,       bool)           
43 PERLVAR(Tcurpm,         PMOP *)         
44 PERLVAR(Tnrs,           SV *)           
45 PERLVAR(Trs,            SV *)           
46 PERLVAR(Tlast_in_gv,    GV *)           
47 PERLVAR(Tofs,           char *)         
48 PERLVAR(Tofslen,        STRLEN)         
49 PERLVAR(Tdefoutgv,      GV *)           
50 PERLVAR(Tchopset,       char *)         
51 PERLVAR(Tformtarget,    SV *)           
52 PERLVAR(Tbodytarget,    SV *)           
53 PERLVAR(Ttoptarget,     SV *)           
54
55     /* Stashes */
56 PERLVAR(Tdefstash,      HV *)           
57 PERLVAR(Tcurstash,      HV *)           
58
59     /* Stacks */
60 PERLVAR(Ttmps_stack,    SV **)          
61 PERLVAR(Ttmps_ix,       I32)            
62 PERLVAR(Ttmps_floor,    I32)            
63 PERLVAR(Ttmps_max,      I32)            
64
65 PERLVAR(Tin_eval,       int)            
66 PERLVAR(Trestartop,     OP *)           
67 PERLVAR(Tdelaymagic,    int)            
68 PERLVAR(Tdirty,         bool)           
69 PERLVAR(Tlocalizing,    U8)             
70 PERLVAR(Tcurcop,        COP *)          
71
72 PERLVAR(Tcxstack,       PERL_CONTEXT *)         
73 PERLVAR(Tcxstack_ix,    I32)            
74 PERLVAR(Tcxstack_max,   I32)            
75
76 PERLVAR(Tcurstack,      AV *)           
77 PERLVAR(Tmainstack,     AV *)           
78 PERLVAR(Ttop_env,       JMPENV *)               
79 PERLVAR(Tstart_env,     JMPENV)                 /* Top of top_env longjmp() chain */
80
81 /* XXX Sort stuff, firstgv secongv and so on? */
82
83 PERLVAR(oursv,          SV *)           
84 PERLVAR(cvcache,        HV *)           
85 PERLVAR(self,           perl_os_thread)         /* Underlying thread object */
86 PERLVAR(flags,          U32)            
87 PERLVAR(threadsv,       AV *)                   /* Per-thread SVs ($_, $@ etc.) */
88 PERLVAR(specific,       AV *)                   /* Thread-specific user data */
89 PERLVAR(errsv,          SV *)                   /* Backing SV for $@ */
90 PERLVAR(errhv,          HV *)                   /* HV for what was %@ in pp_ctl.c */
91 PERLVAR(mutex,          perl_mutex)             /* For the fields others can change */
92 PERLVAR(tid,            U32)            
93 PERLVAR(prev,           struct perl_thread *)
94 PERLVAR(next,           struct perl_thread *)   /* Circular linked list of threads */
95
96 #ifdef HAVE_THREAD_INTERN
97 PERLVAR(i,              struct thread_intern)   /* Platform-dependent internals */
98 #endif
99
100 PERLVAR(trailing_nul,   char)                   /* For the sake of thrsv and oursv */
101