• Daniel Lezcano's avatar
    thermal: core: genetlink support for events/cmd/sampling · 1ce50e7d
    Daniel Lezcano authored
    Initially the thermal framework had a very simple notification
    mechanism to send generic netlink messages to the userspace.
    
    The notification function was never called from anywhere and the
    corresponding dead code was removed. It was probably a first attempt
    to introduce the netlink notification.
    
    At LPC2018, the presentation "Linux thermal: User kernel interface",
    proposed to create the notifications to the userspace via a kfifo.
    
    The advantage of the kfifo is the performance. It is usually used from
    a 1:1 communication channel where a driver captures data and sends it
    as fast as possible to a userspace process.
    
    The drawback is that only one process uses the notification channel
    exclusively, thus no other process is allowed to use the channel to
    get temperature or notifications.
    
    This patch defines a generic netlink API to discover the current
    thermal setup and adds event notifications as well as temperature
    sampling. As any genetlink protocol, it can evolve and the versioning
    allows to keep the backward compatibility.
    
    In order to prevent the user from getting flooded with data on a
    single channel, there are two multicast channels, one for the
    temperature sampling when the thermal zone is updated and another one
    for the events, so the user can get the events only without the
    thermal zone temperature sampling.
    
    Also, a list of commands to discover the thermal setup is added and
    can be extended when needed.
    Reviewed-by: default avatarAmit Kucheria <amit.kucheria@linaro.org>
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Acked-by: default avatarZhang Rui <rui.zhang@intel.com>
    Link: https://lore.kernel.org/r/20200706105538.2159-3-daniel.lezcano@linaro.org
    1ce50e7d
thermal_netlink.c 15.9 KB