2019-05-27 08:55:05 +02:00
// SPDX-License-Identifier: GPL-2.0-or-later
2010-01-27 02:27:55 -06:00
/*
* trace - event - scripting . Scripting engine common and initialization code .
*
* Copyright ( C ) 2009 - 2010 Tom Zanussi < tzanussi @ gmail . com >
*/
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <errno.h>
2016-10-25 17:30:05 -03:00
# include "debug.h"
2010-01-27 02:27:55 -06:00
# include "trace-event.h"
2019-07-04 11:32:27 -03:00
# include <linux/zalloc.h>
2010-01-27 02:27:55 -06:00
struct scripting_context * scripting_context ;
2014-08-15 22:08:37 +03:00
static int flush_script_unsupported ( void )
{
return 0 ;
}
2010-01-27 02:27:55 -06:00
static int stop_script_unsupported ( void )
{
return 0 ;
}
2012-09-11 01:15:03 +03:00
static void process_event_unsupported ( union perf_event * event __maybe_unused ,
struct perf_sample * sample __maybe_unused ,
2019-07-21 13:23:51 +02:00
struct evsel * evsel __maybe_unused ,
2013-12-19 17:20:06 -03:00
struct addr_location * al __maybe_unused )
2010-01-27 02:27:55 -06:00
{
}
2010-01-27 02:27:57 -06:00
static void print_python_unsupported_msg ( void )
{
fprintf ( stderr , " Python scripting not supported. "
" Install libpython and rebuild perf to enable it. \n "
" For example: \n # apt-get install python-dev (ubuntu) "
" \n # yum install python-devel (Fedora) "
" \n etc. \n " ) ;
}
2012-09-11 01:15:03 +03:00
static int python_start_script_unsupported ( const char * script __maybe_unused ,
int argc __maybe_unused ,
const char * * argv __maybe_unused )
2010-01-27 02:27:57 -06:00
{
print_python_unsupported_msg ( ) ;
return - 1 ;
}
2018-08-08 14:02:46 -04:00
static int python_generate_script_unsupported ( struct tep_handle * pevent
2012-09-11 01:15:03 +03:00
__maybe_unused ,
const char * outfile
__maybe_unused )
2010-01-27 02:27:57 -06:00
{
print_python_unsupported_msg ( ) ;
return - 1 ;
}
struct scripting_ops python_scripting_unsupported_ops = {
. name = " Python " ,
. start_script = python_start_script_unsupported ,
2014-08-15 22:08:37 +03:00
. flush_script = flush_script_unsupported ,
2010-01-27 02:27:57 -06:00
. stop_script = stop_script_unsupported ,
. process_event = process_event_unsupported ,
. generate_script = python_generate_script_unsupported ,
} ;
static void register_python_scripting ( struct scripting_ops * scripting_ops )
{
2016-10-25 17:20:47 -03:00
if ( scripting_context = = NULL )
scripting_context = malloc ( sizeof ( * scripting_context ) ) ;
2016-10-25 17:30:05 -03:00
if ( scripting_context = = NULL | |
script_spec_register ( " Python " , scripting_ops ) | |
script_spec_register ( " py " , scripting_ops ) ) {
pr_err ( " Error registering Python script extension: disabling it \n " ) ;
zfree ( & scripting_context ) ;
}
2010-01-27 02:27:57 -06:00
}
2018-04-09 18:26:47 +08:00
# ifndef HAVE_LIBPYTHON_SUPPORT
2010-01-27 02:27:57 -06:00
void setup_python_scripting ( void )
{
register_python_scripting ( & python_scripting_unsupported_ops ) ;
}
# else
2010-09-21 00:45:01 +02:00
extern struct scripting_ops python_scripting_ops ;
2010-01-27 02:27:57 -06:00
void setup_python_scripting ( void )
{
register_python_scripting ( & python_scripting_ops ) ;
}
# endif
2010-01-27 02:27:55 -06:00
static void print_perl_unsupported_msg ( void )
{
fprintf ( stderr , " Perl scripting not supported. "
" Install libperl and rebuild perf to enable it. \n "
" For example: \n # apt-get install libperl-dev (ubuntu) "
" \n # yum install 'perl(ExtUtils::Embed)' (Fedora) "
" \n etc. \n " ) ;
}
2012-09-11 01:15:03 +03:00
static int perl_start_script_unsupported ( const char * script __maybe_unused ,
int argc __maybe_unused ,
const char * * argv __maybe_unused )
2010-01-27 02:27:55 -06:00
{
print_perl_unsupported_msg ( ) ;
return - 1 ;
}
2018-08-08 14:02:46 -04:00
static int perl_generate_script_unsupported ( struct tep_handle * pevent
2012-09-11 01:15:03 +03:00
__maybe_unused ,
const char * outfile __maybe_unused )
2010-01-27 02:27:55 -06:00
{
print_perl_unsupported_msg ( ) ;
return - 1 ;
}
struct scripting_ops perl_scripting_unsupported_ops = {
. name = " Perl " ,
. start_script = perl_start_script_unsupported ,
2014-08-15 22:08:37 +03:00
. flush_script = flush_script_unsupported ,
2010-01-27 02:27:55 -06:00
. stop_script = stop_script_unsupported ,
. process_event = process_event_unsupported ,
. generate_script = perl_generate_script_unsupported ,
} ;
static void register_perl_scripting ( struct scripting_ops * scripting_ops )
{
2016-10-25 17:20:47 -03:00
if ( scripting_context = = NULL )
scripting_context = malloc ( sizeof ( * scripting_context ) ) ;
2016-10-25 17:30:05 -03:00
if ( scripting_context = = NULL | |
script_spec_register ( " Perl " , scripting_ops ) | |
script_spec_register ( " pl " , scripting_ops ) ) {
pr_err ( " Error registering Perl script extension: disabling it \n " ) ;
zfree ( & scripting_context ) ;
}
2010-01-27 02:27:55 -06:00
}
2018-04-09 18:26:47 +08:00
# ifndef HAVE_LIBPERL_SUPPORT
2010-01-27 02:27:55 -06:00
void setup_perl_scripting ( void )
{
register_perl_scripting ( & perl_scripting_unsupported_ops ) ;
}
# else
2010-09-21 00:45:01 +02:00
extern struct scripting_ops perl_scripting_ops ;
2010-01-27 02:27:55 -06:00
void setup_perl_scripting ( void )
{
register_perl_scripting ( & perl_scripting_ops ) ;
}
# endif