Skip to content
Snippets Groups Projects
Commit 00e69c8a authored by Riana Tauro's avatar Riana Tauro Committed by Ashutosh Dixit
Browse files

lib/igt_hwmon: Introduce library igt_hwmon


igt_hwmon exposes methods to open hwmon directories identified by name

v2: Add license(Petri)

Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: default avatarRiana Tauro <riana.tauro@intel.com>
Reviewed-by: default avatarAshutosh Dixit <ashutosh.dixit@intel.com>
parent 193c8bdd
No related branches found
No related tags found
No related merge requests found
// SPDX-License-Identifier: MIT
/*
* Copyright © 2022 Intel Corporation
*/
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <dirent.h>
#include <fcntl.h>
#include <inttypes.h>
#include <unistd.h>
#include "drmtest.h"
#include "igt_core.h"
#include "igt_hwmon.h"
#include "igt_sysfs.h"
static char *igt_hwmon_path(int device, char *path, const char *name)
{
char buf[80];
int path_offset;
struct dirent *entry;
struct stat st;
DIR *dir;
if (igt_debug_on(device < 0))
return NULL;
if (igt_debug_on(fstat(device, &st)) || igt_debug_on(!S_ISCHR(st.st_mode)))
return NULL;
path_offset = snprintf(path, PATH_MAX, "/sys/dev/char/%d:%d/device/hwmon",
major(st.st_rdev), minor(st.st_rdev));
dir = opendir(path);
if (!dir)
return NULL;
while ((entry = readdir(dir))) {
if (entry->d_name[0] == '.')
continue;
snprintf(path + path_offset, PATH_MAX - path_offset, "/%s/name", entry->d_name);
igt_sysfs_scanf(dirfd(dir), path, "%s", buf);
if (strncmp(buf, name, strlen(name)) == 0) {
snprintf(path + path_offset, PATH_MAX - path_offset, "/%s", entry->d_name);
closedir(dir);
return path;
}
}
closedir(dir);
return NULL;
}
/**
* igt_hwmon_open:
* @device: fd of the device
*
* Opens the hwmon directory corresponding to device
*
* Returns:
* The directory fd, or -1 on failure.
*/
int igt_hwmon_open(int device)
{
char path[PATH_MAX];
if (!is_i915_device(device) || !igt_hwmon_path(device, path, "i915"))
return -1;
return open(path, O_RDONLY);
}
/* SPDX-License-Identifier: MIT */
/*
* Copyright © 2022 Intel Corporation
*/
#ifndef IGT_HWMON_H
#define IGT_HWMON_H
#include <stdbool.h>
int igt_hwmon_open(int device);
#endif /* IGT_HWMON_H */
......@@ -24,6 +24,7 @@ lib_sources = [
'igt_aux.c',
'igt_gt.c',
'igt_halffloat.c',
'igt_hwmon.c',
'igt_io.c',
'igt_matrix.c',
'igt_os.c',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment