mbox series

[v3,0/4] tools/thermal: thermal library and tools

Message ID 20220420160933.347088-1-daniel.lezcano@linaro.org
Headers show
Series tools/thermal: thermal library and tools | expand

Message

Daniel Lezcano April 20, 2022, 4:09 p.m. UTC
These changes are providing the following tools and library:

 - A thermal library doing the netlink abstraction from the kernel in
   order to make the userspace thermal implementation easier. Having
   the library integrated with the kernel tree is also a guarantee to
   keep the message format and their encoding/decoding aligned
                                                                                                                                                                                                                                                                               
 - A thermal tools library providing a set of functions to deal with
   usual features like the log, the mainloop and the time. This
   library is used by the provided tools below

 - An data acquisition program to capture the temperature of the
   different thermal zone during an amount of time or during the
   execution of an application. The output is formated to be easily
   parsed by gnuplot, a spreadsheet program or a statistical command
   line utility. The timestamp is based on the system uptime, thus
   giving an indication of when a thermal event happened, that can
   help to spot or reproduce thermal issue in the long run

 - A thermal monitoring program based on the thermal library. It gives
   a skeleton to build any logic on top of it and shows how to use the
   thermal library. It does nothing except discovering the thermal
   zones, their trip points and listening for events like cooling
   devices state changes or trip point crossed

 Changelog:

 v3:

  - Fixed NULL pointer reference when there is no thermal zones, trip
    points or cooling device
  - Kill the child process when the duration ends or if there is an
    interruption in the thermometer
  - Add error messages in the main body for the thermal-engine

 v2:

  - Fixed all trailing whitespaces and some other checkpatch
    warnings. Some warnings remain but they can be considered as false
    positive

  - Added in the thermometer tool:
    - Usage/help option as well as a man page
    - The ability to execute a program
    - The capture duration
    - Create the output directory if it does not exist

  - Add in the thermal-engine tool:
    - A usage/help option
    - A message telling the userspace it is waiting for events
    - A daemonize option

  - Minor bug fixes here and there, as well as typos

 v1: Initial post after a RFC

Daniel Lezcano (4):
  tools/lib/thermal: Add a thermal library
  tools/thermal: Add util library
  tools/thermal: Add a temperature capture tool
  tools/thermal: Add thermal daemon skeleton

 MAINTAINERS                                   |   1 +
 tools/Makefile                                |  36 +-
 tools/lib/thermal/.gitignore                  |   2 +
 tools/lib/thermal/Build                       |   5 +
 tools/lib/thermal/Makefile                    | 165 +++++
 tools/lib/thermal/commands.c                  | 349 +++++++++++
 tools/lib/thermal/events.c                    | 164 +++++
 tools/lib/thermal/include/thermal.h           | 142 +++++
 tools/lib/thermal/libthermal.map              |  25 +
 tools/lib/thermal/libthermal.pc.template      |  12 +
 tools/lib/thermal/sampling.c                  |  75 +++
 tools/lib/thermal/thermal.c                   | 135 +++++
 tools/lib/thermal/thermal_nl.c                | 215 +++++++
 tools/lib/thermal/thermal_nl.h                |  46 ++
 tools/thermal/lib/Build                       |   3 +
 tools/thermal/lib/Makefile                    | 158 +++++
 .../thermal/lib/libthermal_tools.pc.template  |  12 +
 tools/thermal/lib/log.c                       |  77 +++
 tools/thermal/lib/log.h                       |  31 +
 tools/thermal/lib/mainloop.c                  | 120 ++++
 tools/thermal/lib/mainloop.h                  |  15 +
 tools/thermal/lib/thermal-tools.h             |  10 +
 tools/thermal/lib/uptimeofday.c               |  40 ++
 tools/thermal/lib/uptimeofday.h               |  12 +
 tools/thermal/thermal-engine/Build            |   2 +
 tools/thermal/thermal-engine/Makefile         |  28 +
 tools/thermal/thermal-engine/thermal-engine.c | 341 +++++++++++
 tools/thermal/thermometer/Build               |   2 +
 tools/thermal/thermometer/Makefile            |  26 +
 tools/thermal/thermometer/thermometer.8       |  93 +++
 tools/thermal/thermometer/thermometer.c       | 573 ++++++++++++++++++
 tools/thermal/thermometer/thermometer.conf    |   5 +
 32 files changed, 2917 insertions(+), 3 deletions(-)
 create mode 100644 tools/lib/thermal/.gitignore
 create mode 100644 tools/lib/thermal/Build
 create mode 100644 tools/lib/thermal/Makefile
 create mode 100644 tools/lib/thermal/commands.c
 create mode 100644 tools/lib/thermal/events.c
 create mode 100644 tools/lib/thermal/include/thermal.h
 create mode 100644 tools/lib/thermal/libthermal.map
 create mode 100644 tools/lib/thermal/libthermal.pc.template
 create mode 100644 tools/lib/thermal/sampling.c
 create mode 100644 tools/lib/thermal/thermal.c
 create mode 100644 tools/lib/thermal/thermal_nl.c
 create mode 100644 tools/lib/thermal/thermal_nl.h
 create mode 100644 tools/thermal/lib/Build
 create mode 100644 tools/thermal/lib/Makefile
 create mode 100644 tools/thermal/lib/libthermal_tools.pc.template
 create mode 100644 tools/thermal/lib/log.c
 create mode 100644 tools/thermal/lib/log.h
 create mode 100644 tools/thermal/lib/mainloop.c
 create mode 100644 tools/thermal/lib/mainloop.h
 create mode 100644 tools/thermal/lib/thermal-tools.h
 create mode 100644 tools/thermal/lib/uptimeofday.c
 create mode 100644 tools/thermal/lib/uptimeofday.h
 create mode 100644 tools/thermal/thermal-engine/Build
 create mode 100644 tools/thermal/thermal-engine/Makefile
 create mode 100644 tools/thermal/thermal-engine/thermal-engine.c
 create mode 100644 tools/thermal/thermometer/Build
 create mode 100644 tools/thermal/thermometer/Makefile
 create mode 100644 tools/thermal/thermometer/thermometer.8
 create mode 100644 tools/thermal/thermometer/thermometer.c
 create mode 100644 tools/thermal/thermometer/thermometer.conf

Comments

Srinivas Pandruvada April 21, 2022, 3:59 a.m. UTC | #1
On Wed, 2022-04-20 at 18:09 +0200, Daniel Lezcano wrote:
> These changes are providing the following tools and library:
> 
>  - A thermal library doing the netlink abstraction from the kernel in
>    order to make the userspace thermal implementation easier. Having
>    the library integrated with the kernel tree is also a guarantee to
>    keep the message format and their encoding/decoding aligned
>                                                                        
>                                                                        
>                                                                        
>                                                          
>  - A thermal tools library providing a set of functions to deal with
>    usual features like the log, the mainloop and the time. This
>    library is used by the provided tools below
> 
>  - An data acquisition program to capture the temperature of the
>    different thermal zone during an amount of time or during the
>    execution of an application. The output is formated to be easily
>    parsed by gnuplot, a spreadsheet program or a statistical command
>    line utility. The timestamp is based on the system uptime, thus
>    giving an indication of when a thermal event happened, that can
>    help to spot or reproduce thermal issue in the long run
> 
>  - A thermal monitoring program based on the thermal library. It gives
>    a skeleton to build any logic on top of it and shows how to use the
>    thermal library. It does nothing except discovering the thermal
>    zones, their trip points and listening for events like cooling
>    devices state changes or trip point crossed
> 

Tested-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>


But I still see these errors in applying patches:

Applying: tools/lib/thermal: Add a thermal library
Applying: tools/thermal: Add util library
Applying: tools/thermal: Add a temperature capture tool
.git/rebase-apply/patch:809: space before tab in indent.
	      	polling = 100; }
.git/rebase-apply/patch:90: new blank line at EOF.
+
.git/rebase-apply/patch:221: new blank line at EOF.
+
warning: 3 lines add whitespace errors.
Applying: tools/thermal: Add thermal daemon skeleton
.git/rebase-apply/patch:86: new blank line at EOF.
+
warning: 1 line adds whitespace errors.

Thanks,
Srinivas



>  Changelog:
> 
>  v3:
> 
>   - Fixed NULL pointer reference when there is no thermal zones, trip
>     points or cooling device
>   - Kill the child process when the duration ends or if there is an
>     interruption in the thermometer
>   - Add error messages in the main body for the thermal-engine
> 
>  v2:
> 
>   - Fixed all trailing whitespaces and some other checkpatch
>     warnings. Some warnings remain but they can be considered as false
>     positive
> 
>   - Added in the thermometer tool:
>     - Usage/help option as well as a man page
>     - The ability to execute a program
>     - The capture duration
>     - Create the output directory if it does not exist
> 
>   - Add in the thermal-engine tool:
>     - A usage/help option
>     - A message telling the userspace it is waiting for events
>     - A daemonize option
> 
>   - Minor bug fixes here and there, as well as typos
> 
>  v1: Initial post after a RFC
> 
> Daniel Lezcano (4):
>   tools/lib/thermal: Add a thermal library
>   tools/thermal: Add util library
>   tools/thermal: Add a temperature capture tool
>   tools/thermal: Add thermal daemon skeleton
> 
>  MAINTAINERS                                   |   1 +
>  tools/Makefile                                |  36 +-
>  tools/lib/thermal/.gitignore                  |   2 +
>  tools/lib/thermal/Build                       |   5 +
>  tools/lib/thermal/Makefile                    | 165 +++++
>  tools/lib/thermal/commands.c                  | 349 +++++++++++
>  tools/lib/thermal/events.c                    | 164 +++++
>  tools/lib/thermal/include/thermal.h           | 142 +++++
>  tools/lib/thermal/libthermal.map              |  25 +
>  tools/lib/thermal/libthermal.pc.template      |  12 +
>  tools/lib/thermal/sampling.c                  |  75 +++
>  tools/lib/thermal/thermal.c                   | 135 +++++
>  tools/lib/thermal/thermal_nl.c                | 215 +++++++
>  tools/lib/thermal/thermal_nl.h                |  46 ++
>  tools/thermal/lib/Build                       |   3 +
>  tools/thermal/lib/Makefile                    | 158 +++++
>  .../thermal/lib/libthermal_tools.pc.template  |  12 +
>  tools/thermal/lib/log.c                       |  77 +++
>  tools/thermal/lib/log.h                       |  31 +
>  tools/thermal/lib/mainloop.c                  | 120 ++++
>  tools/thermal/lib/mainloop.h                  |  15 +
>  tools/thermal/lib/thermal-tools.h             |  10 +
>  tools/thermal/lib/uptimeofday.c               |  40 ++
>  tools/thermal/lib/uptimeofday.h               |  12 +
>  tools/thermal/thermal-engine/Build            |   2 +
>  tools/thermal/thermal-engine/Makefile         |  28 +
>  tools/thermal/thermal-engine/thermal-engine.c | 341 +++++++++++
>  tools/thermal/thermometer/Build               |   2 +
>  tools/thermal/thermometer/Makefile            |  26 +
>  tools/thermal/thermometer/thermometer.8       |  93 +++
>  tools/thermal/thermometer/thermometer.c       | 573 ++++++++++++++++++
>  tools/thermal/thermometer/thermometer.conf    |   5 +
>  32 files changed, 2917 insertions(+), 3 deletions(-)
>  create mode 100644 tools/lib/thermal/.gitignore
>  create mode 100644 tools/lib/thermal/Build
>  create mode 100644 tools/lib/thermal/Makefile
>  create mode 100644 tools/lib/thermal/commands.c
>  create mode 100644 tools/lib/thermal/events.c
>  create mode 100644 tools/lib/thermal/include/thermal.h
>  create mode 100644 tools/lib/thermal/libthermal.map
>  create mode 100644 tools/lib/thermal/libthermal.pc.template
>  create mode 100644 tools/lib/thermal/sampling.c
>  create mode 100644 tools/lib/thermal/thermal.c
>  create mode 100644 tools/lib/thermal/thermal_nl.c
>  create mode 100644 tools/lib/thermal/thermal_nl.h
>  create mode 100644 tools/thermal/lib/Build
>  create mode 100644 tools/thermal/lib/Makefile
>  create mode 100644 tools/thermal/lib/libthermal_tools.pc.template
>  create mode 100644 tools/thermal/lib/log.c
>  create mode 100644 tools/thermal/lib/log.h
>  create mode 100644 tools/thermal/lib/mainloop.c
>  create mode 100644 tools/thermal/lib/mainloop.h
>  create mode 100644 tools/thermal/lib/thermal-tools.h
>  create mode 100644 tools/thermal/lib/uptimeofday.c
>  create mode 100644 tools/thermal/lib/uptimeofday.h
>  create mode 100644 tools/thermal/thermal-engine/Build
>  create mode 100644 tools/thermal/thermal-engine/Makefile
>  create mode 100644 tools/thermal/thermal-engine/thermal-engine.c
>  create mode 100644 tools/thermal/thermometer/Build
>  create mode 100644 tools/thermal/thermometer/Makefile
>  create mode 100644 tools/thermal/thermometer/thermometer.8
>  create mode 100644 tools/thermal/thermometer/thermometer.c
>  create mode 100644 tools/thermal/thermometer/thermometer.conf
>
Daniel Lezcano April 21, 2022, 3:05 p.m. UTC | #2
On 21/04/2022 05:59, srinivas pandruvada wrote:
> On Wed, 2022-04-20 at 18:09 +0200, Daniel Lezcano wrote:

[ ... ]

> But I still see these errors in applying patches:
> 
> Applying: tools/lib/thermal: Add a thermal library
> Applying: tools/thermal: Add util library
> Applying: tools/thermal: Add a temperature capture tool
> .git/rebase-apply/patch:809: space before tab in indent.
> 	      	polling = 100; }
> .git/rebase-apply/patch:90: new blank line at EOF.
> +
> .git/rebase-apply/patch:221: new blank line at EOF.
> +
> warning: 3 lines add whitespace errors.
> Applying: tools/thermal: Add thermal daemon skeleton
> .git/rebase-apply/patch:86: new blank line at EOF.
> +
> warning: 1 line adds whitespace errors.

Ok, I'll apply it with --whitespace=fix

I did a try and it fixes the trailing whitespace

Is ok for you Rafael ?
Rafael J. Wysocki April 21, 2022, 3:12 p.m. UTC | #3
On Thu, Apr 21, 2022 at 5:05 PM Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
>
> On 21/04/2022 05:59, srinivas pandruvada wrote:
> > On Wed, 2022-04-20 at 18:09 +0200, Daniel Lezcano wrote:
>
> [ ... ]
>
> > But I still see these errors in applying patches:
> >
> > Applying: tools/lib/thermal: Add a thermal library
> > Applying: tools/thermal: Add util library
> > Applying: tools/thermal: Add a temperature capture tool
> > .git/rebase-apply/patch:809: space before tab in indent.
> >               polling = 100; }
> > .git/rebase-apply/patch:90: new blank line at EOF.
> > +
> > .git/rebase-apply/patch:221: new blank line at EOF.
> > +
> > warning: 3 lines add whitespace errors.
> > Applying: tools/thermal: Add thermal daemon skeleton
> > .git/rebase-apply/patch:86: new blank line at EOF.
> > +
> > warning: 1 line adds whitespace errors.
>
> Ok, I'll apply it with --whitespace=fix
>
> I did a try and it fixes the trailing whitespace
>
> Is ok for you Rafael ?

Sounds good.