lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3820e6b6-5bda-4ab1-82fe-1b8001d2b810@linaro.org>
Date: Tue, 1 Oct 2024 13:52:44 +0100
From: James Clark <james.clark@...aro.org>
To: Ian Rogers <irogers@...gle.com>
Cc: Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>,
 Arnaldo Carvalho de Melo <acme@...nel.org>,
 Namhyung Kim <namhyung@...nel.org>, Mark Rutland <mark.rutland@....com>,
 Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
 Jiri Olsa <jolsa@...nel.org>, Adrian Hunter <adrian.hunter@...el.com>,
 Kan Liang <kan.liang@...ux.intel.com>, Xu Yang <xu.yang_2@....com>,
 Andi Kleen <ak@...ux.intel.com>, Zixian Cai <fzczx123@...il.com>,
 Paran Lee <p4ranlee@...il.com>, Ben Gainey <ben.gainey@....com>,
 linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v1 2/2] perf python: Constify variables and parameters



On 18/09/2024 11:54 pm, Ian Rogers wrote:
> Opportunistically constify variables and parameters when possible.
> 
> Signed-off-by: Ian Rogers <irogers@...gle.com>

Reviewed-by: James Clark <james.clark@...aro.org>

> ---
>   tools/perf/util/python.c | 55 +++++++++++++++++++++-------------------
>   1 file changed, 29 insertions(+), 26 deletions(-)
> 
> diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
> index 02279ab4967c..13dad27169a0 100644
> --- a/tools/perf/util/python.c
> +++ b/tools/perf/util/python.c
> @@ -62,7 +62,7 @@ struct pyrf_event {
>   	sample_member_def(sample_period, period, T_ULONGLONG, "event period"),		 \
>   	sample_member_def(sample_cpu, cpu, T_UINT, "event cpu"),
>   
> -static char pyrf_mmap_event__doc[] = PyDoc_STR("perf mmap event object.");
> +static const char pyrf_mmap_event__doc[] = PyDoc_STR("perf mmap event object.");
>   
>   static PyMemberDef pyrf_mmap_event__members[] = {
>   	sample_members
> @@ -77,7 +77,7 @@ static PyMemberDef pyrf_mmap_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_mmap_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_mmap_event__repr(const struct pyrf_event *pevent)
>   {
>   	PyObject *ret;
>   	char *s;
> @@ -106,7 +106,7 @@ static PyTypeObject pyrf_mmap_event__type = {
>   	.tp_repr	= (reprfunc)pyrf_mmap_event__repr,
>   };
>   
> -static char pyrf_task_event__doc[] = PyDoc_STR("perf task (fork/exit) event object.");
> +static const char pyrf_task_event__doc[] = PyDoc_STR("perf task (fork/exit) event object.");
>   
>   static PyMemberDef pyrf_task_event__members[] = {
>   	sample_members
> @@ -119,7 +119,7 @@ static PyMemberDef pyrf_task_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_task_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_task_event__repr(const struct pyrf_event *pevent)
>   {
>   	return PyUnicode_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, "
>   				   "ptid: %u, time: %" PRI_lu64 "}",
> @@ -141,7 +141,7 @@ static PyTypeObject pyrf_task_event__type = {
>   	.tp_repr	= (reprfunc)pyrf_task_event__repr,
>   };
>   
> -static char pyrf_comm_event__doc[] = PyDoc_STR("perf comm event object.");
> +static const char pyrf_comm_event__doc[] = PyDoc_STR("perf comm event object.");
>   
>   static PyMemberDef pyrf_comm_event__members[] = {
>   	sample_members
> @@ -152,7 +152,7 @@ static PyMemberDef pyrf_comm_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_comm_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_comm_event__repr(const struct pyrf_event *pevent)
>   {
>   	return PyUnicode_FromFormat("{ type: comm, pid: %u, tid: %u, comm: %s }",
>   				   pevent->event.comm.pid,
> @@ -170,7 +170,7 @@ static PyTypeObject pyrf_comm_event__type = {
>   	.tp_repr	= (reprfunc)pyrf_comm_event__repr,
>   };
>   
> -static char pyrf_throttle_event__doc[] = PyDoc_STR("perf throttle event object.");
> +static const char pyrf_throttle_event__doc[] = PyDoc_STR("perf throttle event object.");
>   
>   static PyMemberDef pyrf_throttle_event__members[] = {
>   	sample_members
> @@ -181,9 +181,10 @@ static PyMemberDef pyrf_throttle_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_throttle_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_throttle_event__repr(const struct pyrf_event *pevent)
>   {
> -	struct perf_record_throttle *te = (struct perf_record_throttle *)(&pevent->event.header + 1);
> +	const struct perf_record_throttle *te = (const struct perf_record_throttle *)
> +		(&pevent->event.header + 1);
>   
>   	return PyUnicode_FromFormat("{ type: %sthrottle, time: %" PRI_lu64 ", id: %" PRI_lu64
>   				   ", stream_id: %" PRI_lu64 " }",
> @@ -201,7 +202,7 @@ static PyTypeObject pyrf_throttle_event__type = {
>   	.tp_repr	= (reprfunc)pyrf_throttle_event__repr,
>   };
>   
> -static char pyrf_lost_event__doc[] = PyDoc_STR("perf lost event object.");
> +static const char pyrf_lost_event__doc[] = PyDoc_STR("perf lost event object.");
>   
>   static PyMemberDef pyrf_lost_event__members[] = {
>   	sample_members
> @@ -210,7 +211,7 @@ static PyMemberDef pyrf_lost_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_lost_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_lost_event__repr(const struct pyrf_event *pevent)
>   {
>   	PyObject *ret;
>   	char *s;
> @@ -236,7 +237,7 @@ static PyTypeObject pyrf_lost_event__type = {
>   	.tp_repr	= (reprfunc)pyrf_lost_event__repr,
>   };
>   
> -static char pyrf_read_event__doc[] = PyDoc_STR("perf read event object.");
> +static const char pyrf_read_event__doc[] = PyDoc_STR("perf read event object.");
>   
>   static PyMemberDef pyrf_read_event__members[] = {
>   	sample_members
> @@ -245,7 +246,7 @@ static PyMemberDef pyrf_read_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_read_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_read_event__repr(const struct pyrf_event *pevent)
>   {
>   	return PyUnicode_FromFormat("{ type: read, pid: %u, tid: %u }",
>   				   pevent->event.read.pid,
> @@ -266,7 +267,7 @@ static PyTypeObject pyrf_read_event__type = {
>   	.tp_repr	= (reprfunc)pyrf_read_event__repr,
>   };
>   
> -static char pyrf_sample_event__doc[] = PyDoc_STR("perf sample event object.");
> +static const char pyrf_sample_event__doc[] = PyDoc_STR("perf sample event object.");
>   
>   static PyMemberDef pyrf_sample_event__members[] = {
>   	sample_members
> @@ -274,7 +275,7 @@ static PyMemberDef pyrf_sample_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_sample_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_sample_event__repr(const struct pyrf_event *pevent)
>   {
>   	PyObject *ret;
>   	char *s;
> @@ -289,13 +290,13 @@ static PyObject *pyrf_sample_event__repr(struct pyrf_event *pevent)
>   }
>   
>   #ifdef HAVE_LIBTRACEEVENT
> -static bool is_tracepoint(struct pyrf_event *pevent)
> +static bool is_tracepoint(const struct pyrf_event *pevent)
>   {
>   	return pevent->evsel->core.attr.type == PERF_TYPE_TRACEPOINT;
>   }
>   
>   static PyObject*
> -tracepoint_field(struct pyrf_event *pe, struct tep_format_field *field)
> +tracepoint_field(const struct pyrf_event *pe, struct tep_format_field *field)
>   {
>   	struct tep_handle *pevent = field->event->tep;
>   	void *data = pe->sample.raw_data;
> @@ -384,7 +385,7 @@ static PyTypeObject pyrf_sample_event__type = {
>   	.tp_getattro	= (getattrofunc) pyrf_sample_event__getattro,
>   };
>   
> -static char pyrf_context_switch_event__doc[] = PyDoc_STR("perf context_switch event object.");
> +static const char pyrf_context_switch_event__doc[] = PyDoc_STR("perf context_switch event object.");
>   
>   static PyMemberDef pyrf_context_switch_event__members[] = {
>   	sample_members
> @@ -394,7 +395,7 @@ static PyMemberDef pyrf_context_switch_event__members[] = {
>   	{ .name = NULL, },
>   };
>   
> -static PyObject *pyrf_context_switch_event__repr(struct pyrf_event *pevent)
> +static PyObject *pyrf_context_switch_event__repr(const struct pyrf_event *pevent)
>   {
>   	PyObject *ret;
>   	char *s;
> @@ -474,7 +475,7 @@ static PyTypeObject *pyrf_event__type[] = {
>   	[PERF_RECORD_SWITCH_CPU_WIDE]  = &pyrf_context_switch_event__type,
>   };
>   
> -static PyObject *pyrf_event__new(union perf_event *event)
> +static PyObject *pyrf_event__new(const union perf_event *event)
>   {
>   	struct pyrf_event *pevent;
>   	PyTypeObject *ptype;
> @@ -542,7 +543,7 @@ static PySequenceMethods pyrf_cpu_map__sequence_methods = {
>   	.sq_item   = pyrf_cpu_map__item,
>   };
>   
> -static char pyrf_cpu_map__doc[] = PyDoc_STR("cpu map object.");
> +static const char pyrf_cpu_map__doc[] = PyDoc_STR("cpu map object.");
>   
>   static PyTypeObject pyrf_cpu_map__type = {
>   	PyVarObject_HEAD_INIT(NULL, 0)
> @@ -611,7 +612,7 @@ static PySequenceMethods pyrf_thread_map__sequence_methods = {
>   	.sq_item   = pyrf_thread_map__item,
>   };
>   
> -static char pyrf_thread_map__doc[] = PyDoc_STR("thread map object.");
> +static const char pyrf_thread_map__doc[] = PyDoc_STR("thread map object.");
>   
>   static PyTypeObject pyrf_thread_map__type = {
>   	PyVarObject_HEAD_INIT(NULL, 0)
> @@ -795,7 +796,7 @@ static PyMethodDef pyrf_evsel__methods[] = {
>   	{ .ml_name = NULL, }
>   };
>   
> -static char pyrf_evsel__doc[] = PyDoc_STR("perf event selector list object.");
> +static const char pyrf_evsel__doc[] = PyDoc_STR("perf event selector list object.");
>   
>   static PyTypeObject pyrf_evsel__type = {
>   	PyVarObject_HEAD_INIT(NULL, 0)
> @@ -1078,7 +1079,7 @@ static PySequenceMethods pyrf_evlist__sequence_methods = {
>   	.sq_item   = pyrf_evlist__item,
>   };
>   
> -static char pyrf_evlist__doc[] = PyDoc_STR("perf event selector list object.");
> +static const char pyrf_evlist__doc[] = PyDoc_STR("perf event selector list object.");
>   
>   static PyTypeObject pyrf_evlist__type = {
>   	PyVarObject_HEAD_INIT(NULL, 0)
> @@ -1100,10 +1101,12 @@ static int pyrf_evlist__setup_types(void)
>   
>   #define PERF_CONST(name) { #name, PERF_##name }
>   
> -static struct {
> +struct perf_constant {
>   	const char *name;
>   	int	    value;
> -} perf__constants[] = {
> +};
> +
> +static const struct perf_constant perf__constants[] = {
>   	PERF_CONST(TYPE_HARDWARE),
>   	PERF_CONST(TYPE_SOFTWARE),
>   	PERF_CONST(TYPE_TRACEPOINT),


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ