Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1440079 > unrolled thread
| Started by | Jiri Olsa <jolsa@kernel.org> |
|---|---|
| First post | 2016-07-10 13:10 +0200 |
| Last post | 2016-07-13 11:10 +0200 |
| Articles | 11 — 4 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 10/10] perf script python: Fix string vs byte array resolving Jiri Olsa <jolsa@kernel.org> - 2016-07-10 13:10 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Steven Rostedt <rostedt@goodmis.org> - 2016-07-11 18:00 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Jiri Olsa <jolsa@redhat.com> - 2016-07-12 10:20 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 14:40 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Jiri Olsa <jolsa@redhat.com> - 2016-07-12 15:00 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 15:10 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Jiri Olsa <jolsa@redhat.com> - 2016-07-12 15:40 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 15:50 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-07-12 21:30 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 21:50 +0200
Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving Jiri Olsa <jolsa@redhat.com> - 2016-07-13 11:10 +0200
| From | Jiri Olsa <jolsa@kernel.org> |
|---|---|
| Date | 2016-07-10 13:10 +0200 |
| Subject | [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rTkMy-8fe-35@gated-at.bofh.it> |
Jirka reported that python code returns all arrays as strings.
This makes impossible to get all items for byte array tracepoint
field containing 0x00 value item.
Fixing this by scanning full length of the array and returning
it as PyByteArray object in case non printable byte is found.
Cc: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Reported-and-tested-by: Jiri Pirko <jiri@mellanox.com>
Link: http://lkml.kernel.org/n/tip-22f4vhhz5uytegkggy1on8u3@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
.../util/scripting-engines/trace-event-python.c | 34 ++++++++++++++++++----
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index ff134700bf30..75e9790ebb96 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -386,6 +386,16 @@ exit:
return pylist;
}
+static int is_printable_array(char *p, unsigned int len)
+{
+ unsigned int i;
+
+ for (i = 0; i < len; i++)
+ if (!isprint(p[i]) && !isspace(p[i]))
+ return 0;
+
+ return 1;
+}
static void python_process_tracepoint(struct perf_sample *sample,
struct perf_evsel *evsel,
@@ -457,14 +467,26 @@ static void python_process_tracepoint(struct perf_sample *sample,
pydict_set_item_string_decref(dict, "common_callchain", callchain);
}
for (field = event->format.fields; field; field = field->next) {
- if (field->flags & FIELD_IS_STRING) {
- int offset;
+ unsigned int offset, len;
+ unsigned long long val;
+
+ if (field->flags & FIELD_IS_ARRAY) {
+ offset = field->offset;
+ len = field->size;
if (field->flags & FIELD_IS_DYNAMIC) {
- offset = *(int *)(data + field->offset);
+ val = pevent_read_number(scripting_context->pevent,
+ data + offset, len);
+ offset = val;
+ len = offset >> 16;
offset &= 0xffff;
- } else
- offset = field->offset;
- obj = PyString_FromString((char *)data + offset);
+ }
+ if (field->flags & FIELD_IS_STRING &&
+ is_printable_array(data + offset, len)) {
+ obj = PyString_FromString((char *) data + offset);
+ } else {
+ obj = PyByteArray_FromStringAndSize((const char *) data + offset, len);
+ field->flags &= ~FIELD_IS_STRING;
+ }
} else { /* FIELD_IS_NUMERIC */
obj = get_field_numeric_entry(event, field, data);
}
--
2.4.11
[toc] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-11 18:00 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rTLMK-CQ-29@gated-at.bofh.it> |
| In reply to | #1440079 |
On Sun, 10 Jul 2016 13:08:02 +0200
Jiri Olsa <jolsa@kernel.org> wrote:
> Jirka reported that python code returns all arrays as strings.
> This makes impossible to get all items for byte array tracepoint
> field containing 0x00 value item.
>
> Fixing this by scanning full length of the array and returning
> it as PyByteArray object in case non printable byte is found.
>
> Cc: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
> Reported-and-tested-by: Jiri Pirko <jiri@mellanox.com>
> Link: http://lkml.kernel.org/n/tip-22f4vhhz5uytegkggy1on8u3@git.kernel.org
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
> .../util/scripting-engines/trace-event-python.c | 34 ++++++++++++++++++----
> 1 file changed, 28 insertions(+), 6 deletions(-)
>
> diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
> index ff134700bf30..75e9790ebb96 100644
> --- a/tools/perf/util/scripting-engines/trace-event-python.c
> +++ b/tools/perf/util/scripting-engines/trace-event-python.c
> @@ -386,6 +386,16 @@ exit:
> return pylist;
> }
>
> +static int is_printable_array(char *p, unsigned int len)
> +{
> + unsigned int i;
> +
> + for (i = 0; i < len; i++)
> + if (!isprint(p[i]) && !isspace(p[i]))
> + return 0;
I believe this will return the wrong result if you pass in a string
that has '\0' in it. Try it out:
char a[] = "hello";
printf("a=%s is %d\n", a, is_printable_array(a, sizeof(a)));
and see what you get?
-- Steve
> +
> + return 1;
> +}
>
> static void python_process_tracepoint(struct perf_sample *sample,
> struct perf_evsel *evsel,
> @@ -457,14 +467,26 @@ static void python_process_tracepoint(struct perf_sample *sample,
> pydict_set_item_string_decref(dict, "common_callchain", callchain);
> }
> for (field = event->format.fields; field; field = field->next) {
> - if (field->flags & FIELD_IS_STRING) {
> - int offset;
> + unsigned int offset, len;
> + unsigned long long val;
> +
> + if (field->flags & FIELD_IS_ARRAY) {
> + offset = field->offset;
> + len = field->size;
> if (field->flags & FIELD_IS_DYNAMIC) {
> - offset = *(int *)(data + field->offset);
> + val = pevent_read_number(scripting_context->pevent,
> + data + offset, len);
> + offset = val;
> + len = offset >> 16;
> offset &= 0xffff;
> - } else
> - offset = field->offset;
> - obj = PyString_FromString((char *)data + offset);
> + }
> + if (field->flags & FIELD_IS_STRING &&
> + is_printable_array(data + offset, len)) {
> + obj = PyString_FromString((char *) data + offset);
> + } else {
> + obj = PyByteArray_FromStringAndSize((const char *) data + offset, len);
> + field->flags &= ~FIELD_IS_STRING;
> + }
> } else { /* FIELD_IS_NUMERIC */
> obj = get_field_numeric_entry(event, field, data);
> }
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2016-07-12 10:20 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rU158-2lZ-19@gated-at.bofh.it> |
| In reply to | #1440730 |
On Mon, Jul 11, 2016 at 11:54:52AM -0400, Steven Rostedt wrote:
> On Sun, 10 Jul 2016 13:08:02 +0200
> Jiri Olsa <jolsa@kernel.org> wrote:
>
> > Jirka reported that python code returns all arrays as strings.
> > This makes impossible to get all items for byte array tracepoint
> > field containing 0x00 value item.
> >
> > Fixing this by scanning full length of the array and returning
> > it as PyByteArray object in case non printable byte is found.
> >
> > Cc: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
> > Reported-and-tested-by: Jiri Pirko <jiri@mellanox.com>
> > Link: http://lkml.kernel.org/n/tip-22f4vhhz5uytegkggy1on8u3@git.kernel.org
> > Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> > ---
> > .../util/scripting-engines/trace-event-python.c | 34 ++++++++++++++++++----
> > 1 file changed, 28 insertions(+), 6 deletions(-)
> >
> > diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
> > index ff134700bf30..75e9790ebb96 100644
> > --- a/tools/perf/util/scripting-engines/trace-event-python.c
> > +++ b/tools/perf/util/scripting-engines/trace-event-python.c
> > @@ -386,6 +386,16 @@ exit:
> > return pylist;
> > }
> >
> > +static int is_printable_array(char *p, unsigned int len)
> > +{
> > + unsigned int i;
> > +
> > + for (i = 0; i < len; i++)
> > + if (!isprint(p[i]) && !isspace(p[i]))
> > + return 0;
>
> I believe this will return the wrong result if you pass in a string
> that has '\0' in it. Try it out:
>
> char a[] = "hello";
>
> printf("a=%s is %d\n", a, is_printable_array(a, sizeof(a)));
>
> and see what you get?
ugh, forgot the last 0 byte.. how about attached change?
I wonder it'd be less pain to present all arrays as
PyByteArray, it might be no difference for python
users anyway ;-)
thanks,
jirka
---
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
index 75e9790ebb96..9f810e6c739a 100644
--- a/tools/perf/util/scripting-engines/trace-event-python.c
+++ b/tools/perf/util/scripting-engines/trace-event-python.c
@@ -390,11 +390,13 @@ static int is_printable_array(char *p, unsigned int len)
{
unsigned int i;
- for (i = 0; i < len; i++)
+ /* Exclude the last zero byte of string.. */
+ for (i = 0; i < len - 1; i++)
if (!isprint(p[i]) && !isspace(p[i]))
return 0;
- return 1;
+ /* ... and check its presence in the last byte. */
+ return p[i] == 0;
}
static void python_process_tracepoint(struct perf_sample *sample,
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 14:40 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rU58K-4Sa-15@gated-at.bofh.it> |
| In reply to | #1441129 |
On Tue, 12 Jul 2016 10:11:56 +0200
Jiri Olsa <jolsa@redhat.com> wrote:
> ---
> diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
> index 75e9790ebb96..9f810e6c739a 100644
> --- a/tools/perf/util/scripting-engines/trace-event-python.c
> +++ b/tools/perf/util/scripting-engines/trace-event-python.c
> @@ -390,11 +390,13 @@ static int is_printable_array(char *p, unsigned int len)
> {
> unsigned int i;
>
> - for (i = 0; i < len; i++)
> + /* Exclude the last zero byte of string.. */
> + for (i = 0; i < len - 1; i++)
> if (!isprint(p[i]) && !isspace(p[i]))
> return 0;
>
> - return 1;
> + /* ... and check its presence in the last byte. */
> + return p[i] == 0;
> }
>
Of course this fails on:
is_printable_array(a, strlen(a));
because the last byte wont be 0. What about:
for (i = 0; i < len; i++)
if (!isprint(p[i]) && !isspace(p[i]))
break;
return i == len ||
(i == len - 1 && p[i] == 0);
-- Steve
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2016-07-12 15:00 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rU5s5-51i-9@gated-at.bofh.it> |
| In reply to | #1441312 |
On Tue, Jul 12, 2016 at 08:37:28AM -0400, Steven Rostedt wrote:
> On Tue, 12 Jul 2016 10:11:56 +0200
> Jiri Olsa <jolsa@redhat.com> wrote:
>
>
> > ---
> > diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c
> > index 75e9790ebb96..9f810e6c739a 100644
> > --- a/tools/perf/util/scripting-engines/trace-event-python.c
> > +++ b/tools/perf/util/scripting-engines/trace-event-python.c
> > @@ -390,11 +390,13 @@ static int is_printable_array(char *p, unsigned int len)
> > {
> > unsigned int i;
> >
> > - for (i = 0; i < len; i++)
> > + /* Exclude the last zero byte of string.. */
> > + for (i = 0; i < len - 1; i++)
> > if (!isprint(p[i]) && !isspace(p[i]))
> > return 0;
> >
> > - return 1;
> > + /* ... and check its presence in the last byte. */
> > + return p[i] == 0;
> > }
> >
>
> Of course this fails on:
>
> is_printable_array(a, strlen(a));
hum, so string is not passed to trace buffer with 0 at the end?
I'll check the option of passing everything as PyByteArray.
If it's the same for user, we'll have simpler code in here.
>
> because the last byte wont be 0. What about:
>
> for (i = 0; i < len; i++)
> if (!isprint(p[i]) && !isspace(p[i]))
> break;
>
> return i == len ||
> (i == len - 1 && p[i] == 0);
thanks,
jirka
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 15:10 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rU5BM-5k0-51@gated-at.bofh.it> |
| In reply to | #1441325 |
On Tue, 12 Jul 2016 14:52:45 +0200 Jiri Olsa <jolsa@redhat.com> wrote: > hum, so string is not passed to trace buffer with 0 at the end? strlen() returns only the length of the string (minus the \0 at the end). > > I'll check the option of passing everything as PyByteArray. > If it's the same for user, we'll have simpler code in here. > > > > > because the last byte wont be 0. What about: > > > > for (i = 0; i < len; i++) > > if (!isprint(p[i]) && !isspace(p[i])) > > break; > > > > return i == len || > > (i == len - 1 && p[i] == 0); Or you can do: if (p[len - 1] == 0) len--; for (i = 0; i < len; i++) if (!isprint(p[i]) && !isspace(p[i])) return 0; return 1; -- Steve
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2016-07-12 15:40 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rU64N-5xF-23@gated-at.bofh.it> |
| In reply to | #1441336 |
On Tue, Jul 12, 2016 at 09:00:01AM -0400, Steven Rostedt wrote: > On Tue, 12 Jul 2016 14:52:45 +0200 > Jiri Olsa <jolsa@redhat.com> wrote: > > > > hum, so string is not passed to trace buffer with 0 at the end? > > strlen() returns only the length of the string (minus the \0 at the > end). yea, is_printable_array is called here on tracepoint data that's why I asked.. is 0 part of the string data when stored within tracepoint? > > > > > I'll check the option of passing everything as PyByteArray. > > If it's the same for user, we'll have simpler code in here. > > > > > > > > because the last byte wont be 0. What about: > > > > > > for (i = 0; i < len; i++) > > > if (!isprint(p[i]) && !isspace(p[i])) > > > break; > > > > > > return i == len || > > > (i == len - 1 && p[i] == 0); > > Or you can do: > > if (p[len - 1] == 0) > len--; > > for (i = 0; i < len; i++) > if (!isprint(p[i]) && !isspace(p[i])) > return 0; > return 1; yep, seems good.. thanks jirka
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 15:50 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rU6eu-5CJ-7@gated-at.bofh.it> |
| In reply to | #1441352 |
On Tue, 12 Jul 2016 15:35:52 +0200 Jiri Olsa <jolsa@redhat.com> wrote: > On Tue, Jul 12, 2016 at 09:00:01AM -0400, Steven Rostedt wrote: > > On Tue, 12 Jul 2016 14:52:45 +0200 > > Jiri Olsa <jolsa@redhat.com> wrote: > > > > > > > hum, so string is not passed to trace buffer with 0 at the end? > > > > strlen() returns only the length of the string (minus the \0 at the > > end). > > yea, is_printable_array is called here on tracepoint > data that's why I asked.. is 0 part of the string data > when stored within tracepoint? Good question. It may or may not (haven't looked at the code), but we probably want to make sure that the function is robust enough for either case. > > > > > > > > > I'll check the option of passing everything as PyByteArray. > > > If it's the same for user, we'll have simpler code in here. > > > > > > > > > > > because the last byte wont be 0. What about: > > > > > > > > for (i = 0; i < len; i++) > > > > if (!isprint(p[i]) && !isspace(p[i])) > > > > break; > > > > > > > > return i == len || > > > > (i == len - 1 && p[i] == 0); > > > > Or you can do: > > > > if (p[len - 1] == 0) > > len--; > > > > for (i = 0; i < len; i++) > > if (!isprint(p[i]) && !isspace(p[i])) > > return 0; > > return 1; > > yep, seems good.. thanks > OK, great! -- Steve
[toc] | [prev] | [next] | [standalone]
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Date | 2016-07-12 21:30 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rUbxv-Oh-13@gated-at.bofh.it> |
| In reply to | #1441365 |
Em Tue, Jul 12, 2016 at 09:48:36AM -0400, Steven Rostedt escreveu: > On Tue, 12 Jul 2016 15:35:52 +0200 > Jiri Olsa <jolsa@redhat.com> wrote: > > > On Tue, Jul 12, 2016 at 09:00:01AM -0400, Steven Rostedt wrote: > > > On Tue, 12 Jul 2016 14:52:45 +0200 > > > Jiri Olsa <jolsa@redhat.com> wrote: > > > > > > > > > > hum, so string is not passed to trace buffer with 0 at the end? > > > > > > strlen() returns only the length of the string (minus the \0 at the > > > end). > > > > yea, is_printable_array is called here on tracepoint > > data that's why I asked.. is 0 part of the string data > > when stored within tracepoint? > > Good question. It may or may not (haven't looked at the code), but we > probably want to make sure that the function is robust enough for > either case. Ok, applied and tested up to patch 9, waiting for this discussion to come to an end to consider 10. - Arnaldo > > > > > > > > > > > > > I'll check the option of passing everything as PyByteArray. > > > > If it's the same for user, we'll have simpler code in here. > > > > > > > > > > > > > > because the last byte wont be 0. What about: > > > > > > > > > > for (i = 0; i < len; i++) > > > > > if (!isprint(p[i]) && !isspace(p[i])) > > > > > break; > > > > > > > > > > return i == len || > > > > > (i == len - 1 && p[i] == 0); > > > > > > Or you can do: > > > > > > if (p[len - 1] == 0) > > > len--; > > > > > > for (i = 0; i < len; i++) > > > if (!isprint(p[i]) && !isspace(p[i])) > > > return 0; > > > return 1; > > > > yep, seems good.. thanks > > > > OK, great! > > -- Steve
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 21:50 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rUbQR-Xn-1@gated-at.bofh.it> |
| In reply to | #1441673 |
On Tue, 12 Jul 2016 16:27:16 -0300 Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Em Tue, Jul 12, 2016 at 09:48:36AM -0400, Steven Rostedt escreveu: > > On Tue, 12 Jul 2016 15:35:52 +0200 > > Jiri Olsa <jolsa@redhat.com> wrote: > > > > > On Tue, Jul 12, 2016 at 09:00:01AM -0400, Steven Rostedt wrote: > > > > On Tue, 12 Jul 2016 14:52:45 +0200 > > > > Jiri Olsa <jolsa@redhat.com> wrote: > > > > > > > > > > > > > hum, so string is not passed to trace buffer with 0 at the end? > > > > > > > > strlen() returns only the length of the string (minus the \0 at the > > > > end). > > > > > > yea, is_printable_array is called here on tracepoint > > > data that's why I asked.. is 0 part of the string data > > > when stored within tracepoint? > > > > Good question. It may or may not (haven't looked at the code), but we > > probably want to make sure that the function is robust enough for > > either case. > > Ok, applied and tested up to patch 9, waiting for this discussion to > come to an end to consider 10. > > - Arnaldo > > > > > Or you can do: > > > > > > > > if (p[len - 1] == 0) > > > > len--; > > > > > > > > for (i = 0; i < len; i++) > > > > if (!isprint(p[i]) && !isspace(p[i])) > > > > return 0; > > > > return 1; > > > > > > yep, seems good.. thanks > > > > > > > OK, great! I think Jiri is going to implement the above. -- Steve
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2016-07-13 11:10 +0200 |
| Subject | Re: [PATCH 10/10] perf script python: Fix string vs byte array resolving |
| Message-ID | <rUol4-VT-19@gated-at.bofh.it> |
| In reply to | #1441689 |
On Tue, Jul 12, 2016 at 03:48:10PM -0400, Steven Rostedt wrote: > On Tue, 12 Jul 2016 16:27:16 -0300 > Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > > Em Tue, Jul 12, 2016 at 09:48:36AM -0400, Steven Rostedt escreveu: > > > On Tue, 12 Jul 2016 15:35:52 +0200 > > > Jiri Olsa <jolsa@redhat.com> wrote: > > > > > > > On Tue, Jul 12, 2016 at 09:00:01AM -0400, Steven Rostedt wrote: > > > > > On Tue, 12 Jul 2016 14:52:45 +0200 > > > > > Jiri Olsa <jolsa@redhat.com> wrote: > > > > > > > > > > > > > > > > hum, so string is not passed to trace buffer with 0 at the end? > > > > > > > > > > strlen() returns only the length of the string (minus the \0 at the > > > > > end). > > > > > > > > yea, is_printable_array is called here on tracepoint > > > > data that's why I asked.. is 0 part of the string data > > > > when stored within tracepoint? > > > > > > Good question. It may or may not (haven't looked at the code), but we > > > probably want to make sure that the function is robust enough for > > > either case. > > > > Ok, applied and tested up to patch 9, waiting for this discussion to > > come to an end to consider 10. > > > > - Arnaldo > > > > > > > > > Or you can do: > > > > > > > > > > if (p[len - 1] == 0) > > > > > len--; > > > > > > > > > > for (i = 0; i < len; i++) > > > > > if (!isprint(p[i]) && !isspace(p[i])) > > > > > return 0; > > > > > return 1; > > > > > > > > yep, seems good.. thanks > > > > > > > > > > OK, great! > > I think Jiri is going to implement the above. yep ;-) jirka
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web