1 // SPDX-License-Identifier: GPL-2.0-only
3 * user_space.c - A simple user space Thermal events notifier
5 * Copyright (C) 2012 Intel Corp
6 * Copyright (C) 2012 Durgadoss R <durgadoss.r@intel.com>
8 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 #include <linux/slab.h>
14 #include <linux/thermal.h>
16 #include "thermal_core.h"
19 * notify_user_space - Notifies user space about thermal events
20 * @tz: thermal_zone_device
21 * @trip: trip point index
23 * This function notifies the user space through UEvents.
25 static int notify_user_space(struct thermal_zone_device
*tz
, int trip
)
27 char *thermal_prop
[5];
30 mutex_lock(&tz
->lock
);
31 thermal_prop
[0] = kasprintf(GFP_KERNEL
, "NAME=%s", tz
->type
);
32 thermal_prop
[1] = kasprintf(GFP_KERNEL
, "TEMP=%d", tz
->temperature
);
33 thermal_prop
[2] = kasprintf(GFP_KERNEL
, "TRIP=%d", trip
);
34 thermal_prop
[3] = kasprintf(GFP_KERNEL
, "EVENT=%d", tz
->notify_event
);
35 thermal_prop
[4] = NULL
;
36 kobject_uevent_env(&tz
->device
.kobj
, KOBJ_CHANGE
, thermal_prop
);
37 for (i
= 0; i
< 4; ++i
)
38 kfree(thermal_prop
[i
]);
39 mutex_unlock(&tz
->lock
);
43 static struct thermal_governor thermal_gov_user_space
= {
45 .throttle
= notify_user_space
,
47 THERMAL_GOVERNOR_DECLARE(thermal_gov_user_space
);