1e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng/*
2e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng * This file was generated automatically by ExtUtils::ParseXS version 2.18_02 from the
3e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng * contents of Context.xs. Do not edit this file, edit Context.xs instead.
4e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *
5e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *	ANY CHANGES MADE HERE WILL BE LOST!
6e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *
7e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng */
8e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
9e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#line 1 "Context.xs"
10e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng/*
11e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng * Context.xs.  XS interfaces for perf script.
12e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *
13e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng * Copyright (C) 2009 Tom Zanussi <tzanussi@gmail.com>
14e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *
15e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  This program is free software; you can redistribute it and/or modify
16e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  it under the terms of the GNU General Public License as published by
17e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  the Free Software Foundation; either version 2 of the License, or
18e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  (at your option) any later version.
19e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *
20e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  This program is distributed in the hope that it will be useful,
21e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  but WITHOUT ANY WARRANTY; without even the implied warranty of
22e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  GNU General Public License for more details.
24e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *
25e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  You should have received a copy of the GNU General Public License
26e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  along with this program; if not, write to the Free Software
27e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng *
29e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng */
30e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
31e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "EXTERN.h"
32e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "perl.h"
33e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "XSUB.h"
34e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "../../../perf.h"
35e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#include "../../../util/trace-event.h"
36e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
37e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifndef PERL_UNUSED_VAR
38e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#  define PERL_UNUSED_VAR(var) if (0) var = var
39e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif
40e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
41e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#line 42 "Context.c"
42e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
43e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(XS_Perf__Trace__Context_common_pc); /* prototype to pass -Wmissing-prototypes */
44e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(XS_Perf__Trace__Context_common_pc)
45e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng{
46e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifdef dVAR
47e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dVAR; dXSARGS;
48e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#else
49e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dXSARGS;
50e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif
51e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    if (items != 1)
52e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng       Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_pc", "context");
53e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    PERL_UNUSED_VAR(cv); /* -W */
54e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    {
55e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
56e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	int	RETVAL;
57e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	dXSTARG;
58e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
59e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	RETVAL = common_pc(context);
60e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	XSprePUSH; PUSHi((IV)RETVAL);
61e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    }
62e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    XSRETURN(1);
63e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng}
64e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
65e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
66e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(XS_Perf__Trace__Context_common_flags); /* prototype to pass -Wmissing-prototypes */
67e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(XS_Perf__Trace__Context_common_flags)
68e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng{
69e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifdef dVAR
70e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dVAR; dXSARGS;
71e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#else
72e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dXSARGS;
73e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif
74e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    if (items != 1)
75e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng       Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_flags", "context");
76e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    PERL_UNUSED_VAR(cv); /* -W */
77e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    {
78e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
79e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	int	RETVAL;
80e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	dXSTARG;
81e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
82e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	RETVAL = common_flags(context);
83e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	XSprePUSH; PUSHi((IV)RETVAL);
84e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    }
85e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    XSRETURN(1);
86e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng}
87e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
88e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
89e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(XS_Perf__Trace__Context_common_lock_depth); /* prototype to pass -Wmissing-prototypes */
90e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(XS_Perf__Trace__Context_common_lock_depth)
91e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng{
92e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifdef dVAR
93e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dVAR; dXSARGS;
94e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#else
95e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dXSARGS;
96e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif
97e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    if (items != 1)
98e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng       Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_lock_depth", "context");
99e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    PERL_UNUSED_VAR(cv); /* -W */
100e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    {
101e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	struct scripting_context *	context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
102e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	int	RETVAL;
103e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	dXSTARG;
104e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
105e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	RETVAL = common_lock_depth(context);
106e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng	XSprePUSH; PUSHi((IV)RETVAL);
107e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    }
108e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    XSRETURN(1);
109e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng}
110e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
111e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifdef __cplusplus
112e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengextern "C"
113e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif
114e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(boot_Perf__Trace__Context); /* prototype to pass -Wmissing-prototypes */
115e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengXS(boot_Perf__Trace__Context)
116e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng{
117e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#ifdef dVAR
118e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dVAR; dXSARGS;
119e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#else
120e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    dXSARGS;
121e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng#endif
122e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    const char* file = __FILE__;
123e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
124e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    PERL_UNUSED_VAR(cv); /* -W */
125e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    PERL_UNUSED_VAR(items); /* -W */
126e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    XS_VERSION_BOOTCHECK ;
127e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
128e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng        newXSproto("Perf::Trace::Context::common_pc", XS_Perf__Trace__Context_common_pc, file, "$");
129e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng        newXSproto("Perf::Trace::Context::common_flags", XS_Perf__Trace__Context_common_flags, file, "$");
130e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng        newXSproto("Perf::Trace::Context::common_lock_depth", XS_Perf__Trace__Context_common_lock_depth, file, "$");
131e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    if (PL_unitcheckav)
132e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng         call_list(PL_scopestack_ix, PL_unitcheckav);
133e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng    XSRETURN_YES;
134e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng}
135e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng
136