Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-23 Thread Arnaldo Carvalho de Melo
Em Wed, Oct 22, 2014 at 04:00:12PM +0900, Namhyung Kim escreveu:
> On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
> > When 'perf record' write headers, it calls write_xxx in
> > tools/perf/util/header.c, and check return value. It rolls back all
> > working only when return value is negative.
> >
> > This patch ensures write_cpudesc() and write_total_mem() return negative 
> > number
> > when error. Without this patch, headers reported by 'perf report' header is
> > error in some platform. Following output is caputured on ARM, which doesn't
> > contain "Processor" field in /proc/cpuinfo. See "cpudesc", "total memory" 
> > and
> > "cmdline" field.
> >
> >bash-4.2# perf record ls
> >...
> >[ perf record: Woken up 1 times to write data ]
> >[ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
> >bash-4.2# perf report --stdio --header
> >Error:
> >The perf.data file has no samples!
> ># 
> ># captured on: Fri Sep 12 10:09:10 2014
> ># hostname : arma15el
> ># os release : 3.17.0+
> ># perf version : 3.10.53
> ># arch : armv7l
> ># nrcpus online : 4
> ># nrcpus avail : 1
> ># cpudesc : (null)
> ># total memory : 0 kB
> ># cmdline :
> ># event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 
> > = 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, 
> > precise_ip = 0
> ># pmu mappings: not available
> ># 
> >#
> >
> > Signed-off-by: Wang Nan 
> 
> I guess the total_memory, cmdline and pmu mappings are somehow affected
> by the broken cpudesc.  Do they have their own problem on ARM?
> 
> Anyway I think it's good to check the result properly, so
> 
> Acked-by: Namhyung Kim 

Thanks, applied

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-23 Thread Arnaldo Carvalho de Melo
Em Wed, Oct 22, 2014 at 04:00:12PM +0900, Namhyung Kim escreveu:
 On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
  When 'perf record' write headers, it calls write_xxx in
  tools/perf/util/header.c, and check return value. It rolls back all
  working only when return value is negative.
 
  This patch ensures write_cpudesc() and write_total_mem() return negative 
  number
  when error. Without this patch, headers reported by 'perf report' header is
  error in some platform. Following output is caputured on ARM, which doesn't
  contain Processor field in /proc/cpuinfo. See cpudesc, total memory 
  and
  cmdline field.
 
 bash-4.2# perf record ls
 ...
 [ perf record: Woken up 1 times to write data ]
 [ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
 bash-4.2# perf report --stdio --header
 Error:
 The perf.data file has no samples!
 # 
 # captured on: Fri Sep 12 10:09:10 2014
 # hostname : arma15el
 # os release : 3.17.0+
 # perf version : 3.10.53
 # arch : armv7l
 # nrcpus online : 4
 # nrcpus avail : 1
 # cpudesc : (null)
 # total memory : 0 kB
 # cmdline :
 # event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 
  = 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, 
  precise_ip = 0
 # pmu mappings: not available
 # 
 #
 
  Signed-off-by: Wang Nan wangn...@huawei.com
 
 I guess the total_memory, cmdline and pmu mappings are somehow affected
 by the broken cpudesc.  Do they have their own problem on ARM?
 
 Anyway I think it's good to check the result properly, so
 
 Acked-by: Namhyung Kim namhy...@kernel.org

Thanks, applied

- Arnaldo
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-22 Thread Wang Nan
Hi Ingo,

Could you please collect this patch which fixes a perf problem?

Thanks.

On 2014/10/22 15:00, Namhyung Kim wrote:
> On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
>> When 'perf record' write headers, it calls write_xxx in
>> tools/perf/util/header.c, and check return value. It rolls back all
>> working only when return value is negative.
>>
>> This patch ensures write_cpudesc() and write_total_mem() return negative 
>> number
>> when error. Without this patch, headers reported by 'perf report' header is
>> error in some platform. Following output is caputured on ARM, which doesn't
>> contain "Processor" field in /proc/cpuinfo. See "cpudesc", "total memory" and
>> "cmdline" field.
>>
>>bash-4.2# perf record ls
>>...
>>[ perf record: Woken up 1 times to write data ]
>>[ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
>>bash-4.2# perf report --stdio --header
>>Error:
>>The perf.data file has no samples!
>># 
>># captured on: Fri Sep 12 10:09:10 2014
>># hostname : arma15el
>># os release : 3.17.0+
>># perf version : 3.10.53
>># arch : armv7l
>># nrcpus online : 4
>># nrcpus avail : 1
>># cpudesc : (null)
>># total memory : 0 kB
>># cmdline :
>># event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
>> 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip 
>> = 0
>># pmu mappings: not available
>># 
>>#
>>
>> Signed-off-by: Wang Nan 
> 
> I guess the total_memory, cmdline and pmu mappings are somehow affected
> by the broken cpudesc.  Do they have their own problem on ARM?
> 
> Anyway I think it's good to check the result properly, so
> 
> Acked-by: Namhyung Kim 
> 
> Thanks,
> Namhyung
> 
> 
>> ---
>>  tools/perf/util/header.c | 7 +--
>>  1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
>> index ce0de00..39b80ac 100644
>> --- a/tools/perf/util/header.c
>> +++ b/tools/perf/util/header.c
>> @@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
>> __maybe_unused,
>>  break;
>>  }
>>  
>> -if (ret)
>> +if (ret) {
>> +ret = -1;
>>  goto done;
>> +}
>>  
>>  s = buf;
>>  
>> @@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
>> __maybe_unused,
>>  n = sscanf(buf, "%*s %"PRIu64, );
>>  if (n == 1)
>>  ret = do_write(fd, , sizeof(mem));
>> -}
>> +} else
>> +ret = -1;
>>  free(buf);
>>  fclose(fp);
>>  return ret;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-22 Thread Wang Nan
On 2014/10/22 15:00, Namhyung Kim wrote:
> On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
>> When 'perf record' write headers, it calls write_xxx in
>> tools/perf/util/header.c, and check return value. It rolls back all
>> working only when return value is negative.
>>
>> This patch ensures write_cpudesc() and write_total_mem() return negative 
>> number
>> when error. Without this patch, headers reported by 'perf report' header is
>> error in some platform. Following output is caputured on ARM, which doesn't
>> contain "Processor" field in /proc/cpuinfo. See "cpudesc", "total memory" and
>> "cmdline" field.
>>
>>bash-4.2# perf record ls
>>...
>>[ perf record: Woken up 1 times to write data ]
>>[ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
>>bash-4.2# perf report --stdio --header
>>Error:
>>The perf.data file has no samples!
>># 
>># captured on: Fri Sep 12 10:09:10 2014
>># hostname : arma15el
>># os release : 3.17.0+
>># perf version : 3.10.53
>># arch : armv7l
>># nrcpus online : 4
>># nrcpus avail : 1
>># cpudesc : (null)
>># total memory : 0 kB
>># cmdline :
>># event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
>> 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip 
>> = 0
>># pmu mappings: not available
>># 
>>#
>>
>> Signed-off-by: Wang Nan 
> 
> I guess the total_memory, cmdline and pmu mappings are somehow affected
> by the broken cpudesc.  Do they have their own problem on ARM?
> 

The buggy output is caused by cpudesc's problem. I didn't trigger their own 
problem on ARM because
'total memory' and cmdline are always success. I find the error in 
write_total_mem() by checking
code by hand.

Thanks.

> Anyway I think it's good to check the result properly, so
> 
> Acked-by: Namhyung Kim 
> 
> Thanks,
> Namhyung
> 
> 
>> ---
>>  tools/perf/util/header.c | 7 +--
>>  1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
>> index ce0de00..39b80ac 100644
>> --- a/tools/perf/util/header.c
>> +++ b/tools/perf/util/header.c
>> @@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
>> __maybe_unused,
>>  break;
>>  }
>>  
>> -if (ret)
>> +if (ret) {
>> +ret = -1;
>>  goto done;
>> +}
>>  
>>  s = buf;
>>  
>> @@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
>> __maybe_unused,
>>  n = sscanf(buf, "%*s %"PRIu64, );
>>  if (n == 1)
>>  ret = do_write(fd, , sizeof(mem));
>> -}
>> +} else
>> +ret = -1;
>>  free(buf);
>>  fclose(fp);
>>  return ret;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-22 Thread Namhyung Kim
On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
> When 'perf record' write headers, it calls write_xxx in
> tools/perf/util/header.c, and check return value. It rolls back all
> working only when return value is negative.
>
> This patch ensures write_cpudesc() and write_total_mem() return negative 
> number
> when error. Without this patch, headers reported by 'perf report' header is
> error in some platform. Following output is caputured on ARM, which doesn't
> contain "Processor" field in /proc/cpuinfo. See "cpudesc", "total memory" and
> "cmdline" field.
>
>bash-4.2# perf record ls
>...
>[ perf record: Woken up 1 times to write data ]
>[ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
>bash-4.2# perf report --stdio --header
>Error:
>The perf.data file has no samples!
># 
># captured on: Fri Sep 12 10:09:10 2014
># hostname : arma15el
># os release : 3.17.0+
># perf version : 3.10.53
># arch : armv7l
># nrcpus online : 4
># nrcpus avail : 1
># cpudesc : (null)
># total memory : 0 kB
># cmdline :
># event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
> 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip = > 0
># pmu mappings: not available
># 
>#
>
> Signed-off-by: Wang Nan 

I guess the total_memory, cmdline and pmu mappings are somehow affected
by the broken cpudesc.  Do they have their own problem on ARM?

Anyway I think it's good to check the result properly, so

Acked-by: Namhyung Kim 

Thanks,
Namhyung


> ---
>  tools/perf/util/header.c | 7 +--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
> index ce0de00..39b80ac 100644
> --- a/tools/perf/util/header.c
> +++ b/tools/perf/util/header.c
> @@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
> __maybe_unused,
>   break;
>   }
>  
> - if (ret)
> + if (ret) {
> + ret = -1;
>   goto done;
> + }
>  
>   s = buf;
>  
> @@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
> __maybe_unused,
>   n = sscanf(buf, "%*s %"PRIu64, );
>   if (n == 1)
>   ret = do_write(fd, , sizeof(mem));
> - }
> + } else
> + ret = -1;
>   free(buf);
>   fclose(fp);
>   return ret;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-22 Thread Wang Nan
Hi Ingo,

Could you please collect this patch which fixes a perf problem?

Thanks.

On 2014/10/22 15:00, Namhyung Kim wrote:
 On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
 When 'perf record' write headers, it calls write_xxx in
 tools/perf/util/header.c, and check return value. It rolls back all
 working only when return value is negative.

 This patch ensures write_cpudesc() and write_total_mem() return negative 
 number
 when error. Without this patch, headers reported by 'perf report' header is
 error in some platform. Following output is caputured on ARM, which doesn't
 contain Processor field in /proc/cpuinfo. See cpudesc, total memory and
 cmdline field.

bash-4.2# perf record ls
...
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
bash-4.2# perf report --stdio --header
Error:
The perf.data file has no samples!
# 
# captured on: Fri Sep 12 10:09:10 2014
# hostname : arma15el
# os release : 3.17.0+
# perf version : 3.10.53
# arch : armv7l
# nrcpus online : 4
# nrcpus avail : 1
# cpudesc : (null)
# total memory : 0 kB
# cmdline :
# event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip 
 = 0
# pmu mappings: not available
# 
#

 Signed-off-by: Wang Nan wangn...@huawei.com
 
 I guess the total_memory, cmdline and pmu mappings are somehow affected
 by the broken cpudesc.  Do they have their own problem on ARM?
 
 Anyway I think it's good to check the result properly, so
 
 Acked-by: Namhyung Kim namhy...@kernel.org
 
 Thanks,
 Namhyung
 
 
 ---
  tools/perf/util/header.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

 diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
 index ce0de00..39b80ac 100644
 --- a/tools/perf/util/header.c
 +++ b/tools/perf/util/header.c
 @@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
 __maybe_unused,
  break;
  }
  
 -if (ret)
 +if (ret) {
 +ret = -1;
  goto done;
 +}
  
  s = buf;
  
 @@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
 __maybe_unused,
  n = sscanf(buf, %*s %PRIu64, mem);
  if (n == 1)
  ret = do_write(fd, mem, sizeof(mem));
 -}
 +} else
 +ret = -1;
  free(buf);
  fclose(fp);
  return ret;


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-22 Thread Namhyung Kim
On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
 When 'perf record' write headers, it calls write_xxx in
 tools/perf/util/header.c, and check return value. It rolls back all
 working only when return value is negative.

 This patch ensures write_cpudesc() and write_total_mem() return negative 
 number
 when error. Without this patch, headers reported by 'perf report' header is
 error in some platform. Following output is caputured on ARM, which doesn't
 contain Processor field in /proc/cpuinfo. See cpudesc, total memory and
 cmdline field.

bash-4.2# perf record ls
...
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
bash-4.2# perf report --stdio --header
Error:
The perf.data file has no samples!
# 
# captured on: Fri Sep 12 10:09:10 2014
# hostname : arma15el
# os release : 3.17.0+
# perf version : 3.10.53
# arch : armv7l
# nrcpus online : 4
# nrcpus avail : 1
# cpudesc : (null)
# total memory : 0 kB
# cmdline :
# event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip =  0
# pmu mappings: not available
# 
#

 Signed-off-by: Wang Nan wangn...@huawei.com

I guess the total_memory, cmdline and pmu mappings are somehow affected
by the broken cpudesc.  Do they have their own problem on ARM?

Anyway I think it's good to check the result properly, so

Acked-by: Namhyung Kim namhy...@kernel.org

Thanks,
Namhyung


 ---
  tools/perf/util/header.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

 diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
 index ce0de00..39b80ac 100644
 --- a/tools/perf/util/header.c
 +++ b/tools/perf/util/header.c
 @@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
 __maybe_unused,
   break;
   }
  
 - if (ret)
 + if (ret) {
 + ret = -1;
   goto done;
 + }
  
   s = buf;
  
 @@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
 __maybe_unused,
   n = sscanf(buf, %*s %PRIu64, mem);
   if (n == 1)
   ret = do_write(fd, mem, sizeof(mem));
 - }
 + } else
 + ret = -1;
   free(buf);
   fclose(fp);
   return ret;
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] perf tools: ensure return negitive value when write header error

2014-10-22 Thread Wang Nan
On 2014/10/22 15:00, Namhyung Kim wrote:
 On Thu, 16 Oct 2014 11:08:29 +0800, Wang Nan wrote:
 When 'perf record' write headers, it calls write_xxx in
 tools/perf/util/header.c, and check return value. It rolls back all
 working only when return value is negative.

 This patch ensures write_cpudesc() and write_total_mem() return negative 
 number
 when error. Without this patch, headers reported by 'perf report' header is
 error in some platform. Following output is caputured on ARM, which doesn't
 contain Processor field in /proc/cpuinfo. See cpudesc, total memory and
 cmdline field.

bash-4.2# perf record ls
...
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
bash-4.2# perf report --stdio --header
Error:
The perf.data file has no samples!
# 
# captured on: Fri Sep 12 10:09:10 2014
# hostname : arma15el
# os release : 3.17.0+
# perf version : 3.10.53
# arch : armv7l
# nrcpus online : 4
# nrcpus avail : 1
# cpudesc : (null)
# total memory : 0 kB
# cmdline :
# event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip 
 = 0
# pmu mappings: not available
# 
#

 Signed-off-by: Wang Nan wangn...@huawei.com
 
 I guess the total_memory, cmdline and pmu mappings are somehow affected
 by the broken cpudesc.  Do they have their own problem on ARM?
 

The buggy output is caused by cpudesc's problem. I didn't trigger their own 
problem on ARM because
'total memory' and cmdline are always success. I find the error in 
write_total_mem() by checking
code by hand.

Thanks.

 Anyway I think it's good to check the result properly, so
 
 Acked-by: Namhyung Kim namhy...@kernel.org
 
 Thanks,
 Namhyung
 
 
 ---
  tools/perf/util/header.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

 diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
 index ce0de00..39b80ac 100644
 --- a/tools/perf/util/header.c
 +++ b/tools/perf/util/header.c
 @@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
 __maybe_unused,
  break;
  }
  
 -if (ret)
 +if (ret) {
 +ret = -1;
  goto done;
 +}
  
  s = buf;
  
 @@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
 __maybe_unused,
  n = sscanf(buf, %*s %PRIu64, mem);
  if (n == 1)
  ret = do_write(fd, mem, sizeof(mem));
 -}
 +} else
 +ret = -1;
  free(buf);
  fclose(fp);
  return ret;


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] perf tools: ensure return negitive value when write header error

2014-10-15 Thread Wang Nan
When 'perf record' write headers, it calls write_xxx in
tools/perf/util/header.c, and check return value. It rolls back all
working only when return value is negative.

This patch ensures write_cpudesc() and write_total_mem() return negative number
when error. Without this patch, headers reported by 'perf report' header is
error in some platform. Following output is caputured on ARM, which doesn't
contain "Processor" field in /proc/cpuinfo. See "cpudesc", "total memory" and
"cmdline" field.

   bash-4.2# perf record ls
   ...
   [ perf record: Woken up 1 times to write data ]
   [ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
   bash-4.2# perf report --stdio --header
   Error:
   The perf.data file has no samples!
   # 
   # captured on: Fri Sep 12 10:09:10 2014
   # hostname : arma15el
   # os release : 3.17.0+
   # perf version : 3.10.53
   # arch : armv7l
   # nrcpus online : 4
   # nrcpus avail : 1
   # cpudesc : (null)
   # total memory : 0 kB
   # cmdline :
   # event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip = 0
   # pmu mappings: not available
   # 
   #

Signed-off-by: Wang Nan 
---
 tools/perf/util/header.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index ce0de00..39b80ac 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
__maybe_unused,
break;
}
 
-   if (ret)
+   if (ret) {
+   ret = -1;
goto done;
+   }
 
s = buf;
 
@@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
__maybe_unused,
n = sscanf(buf, "%*s %"PRIu64, );
if (n == 1)
ret = do_write(fd, , sizeof(mem));
-   }
+   } else
+   ret = -1;
free(buf);
fclose(fp);
return ret;
-- 
1.8.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] perf tools: ensure return negitive value when write header error

2014-10-15 Thread Wang Nan
When 'perf record' write headers, it calls write_xxx in
tools/perf/util/header.c, and check return value. It rolls back all
working only when return value is negative.

This patch ensures write_cpudesc() and write_total_mem() return negative number
when error. Without this patch, headers reported by 'perf report' header is
error in some platform. Following output is caputured on ARM, which doesn't
contain Processor field in /proc/cpuinfo. See cpudesc, total memory and
cmdline field.

   bash-4.2# perf record ls
   ...
   [ perf record: Woken up 1 times to write data ]
   [ perf record: Captured and wrote 0.001 MB perf.data (~36 samples) ]
   bash-4.2# perf report --stdio --header
   Error:
   The perf.data file has no samples!
   # 
   # captured on: Fri Sep 12 10:09:10 2014
   # hostname : arma15el
   # os release : 3.17.0+
   # perf version : 3.10.53
   # arch : armv7l
   # nrcpus online : 4
   # nrcpus avail : 1
   # cpudesc : (null)
   # total memory : 0 kB
   # cmdline :
   # event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 
0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_guest = 1, precise_ip = 0
   # pmu mappings: not available
   # 
   #

Signed-off-by: Wang Nan wangn...@huawei.com
---
 tools/perf/util/header.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index ce0de00..39b80ac 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -605,8 +605,10 @@ static int write_cpudesc(int fd, struct perf_header *h 
__maybe_unused,
break;
}
 
-   if (ret)
+   if (ret) {
+   ret = -1;
goto done;
+   }
 
s = buf;
 
@@ -950,7 +952,8 @@ static int write_total_mem(int fd, struct perf_header *h 
__maybe_unused,
n = sscanf(buf, %*s %PRIu64, mem);
if (n == 1)
ret = do_write(fd, mem, sizeof(mem));
-   }
+   } else
+   ret = -1;
free(buf);
fclose(fp);
return ret;
-- 
1.8.4

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/