cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

common.h (1422B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/* Copyright (c) 2021 Intel Corporation */
      3
      4#include <linux/mutex.h>
      5#include <linux/types.h>
      6
      7#ifndef __PECI_HWMON_COMMON_H
      8#define __PECI_HWMON_COMMON_H
      9
     10#define PECI_HWMON_UPDATE_INTERVAL	HZ
     11
     12/**
     13 * struct peci_sensor_state - PECI state information
     14 * @valid: flag to indicate the sensor value is valid
     15 * @last_updated: time of the last update in jiffies
     16 * @lock: mutex to protect sensor access
     17 */
     18struct peci_sensor_state {
     19	bool valid;
     20	unsigned long last_updated;
     21	struct mutex lock; /* protect sensor access */
     22};
     23
     24/**
     25 * struct peci_sensor_data - PECI sensor information
     26 * @value: sensor value in milli units
     27 * @state: sensor update state
     28 */
     29
     30struct peci_sensor_data {
     31	s32 value;
     32	struct peci_sensor_state state;
     33};
     34
     35/**
     36 * peci_sensor_need_update() - check whether sensor update is needed or not
     37 * @sensor: pointer to sensor data struct
     38 *
     39 * Return: true if update is needed, false if not.
     40 */
     41
     42static inline bool peci_sensor_need_update(struct peci_sensor_state *state)
     43{
     44	return !state->valid ||
     45	       time_after(jiffies, state->last_updated + PECI_HWMON_UPDATE_INTERVAL);
     46}
     47
     48/**
     49 * peci_sensor_mark_updated() - mark the sensor is updated
     50 * @sensor: pointer to sensor data struct
     51 */
     52static inline void peci_sensor_mark_updated(struct peci_sensor_state *state)
     53{
     54	state->valid = true;
     55	state->last_updated = jiffies;
     56}
     57
     58#endif /* __PECI_HWMON_COMMON_H */