[PATCH 1/2] lib/igt_os: Add igt_get_meminfo

Matthew Brost matthew.brost at intel.com
Tue Apr 29 19:38:25 UTC 2025


On Tue, Apr 29, 2025 at 07:29:55PM +0000, Jonathan Cavitt wrote:
> Add a function, igt_get_meminfo, that allows IGT to query the value of a
> specific meminfo param.  This can have practical use later, E.G. for
> determining if a test can run given the current meminfo settings.
> 
> Signed-off-by: Jonathan Cavitt <jonathan.cavitt at intel.com>

Reviewed-by: Matthew Brost <matthew.brost at intel.com>

> ---
>  lib/igt_os.c | 43 +++++++++++++++++++++++++++++++++++++++++++
>  lib/igt_os.h |  2 ++
>  2 files changed, 45 insertions(+)
> 
> diff --git a/lib/igt_os.c b/lib/igt_os.c
> index ac8960f8b0..0fa10ee750 100644
> --- a/lib/igt_os.c
> +++ b/lib/igt_os.c
> @@ -99,6 +99,49 @@ static uint64_t get_meminfo(const char *info, const char *tag)
>  	return 0;
>  }
>  
> +/**
> + * igt_get_meminfo:
> + * @field: name of meminfo field to get the value of
> + *
> + * Returns:
> + * The value of the meminfo field @field
> + */
> +uint64_t igt_get_meminfo(const char *field)
> +{
> +	uint64_t retval;
> +	char *info;
> +	char *query;
> +	int fd;
> +
> +	fd = open("/proc", O_RDONLY);
> +	info = igt_sysfs_get(fd, "meminfo");
> +	close(fd);
> +
> +	if (!info) {
> +		igt_warn("Could not open /proc/meminfo");
> +		return 0;
> +	}
> +
> +	/*
> +	 * In get_meminfo, it is expected that the provided tag ends in a colon (:).
> +	 * If the colon is missing, the search will fail to find the meminfo field.
> +	 * Userspace should not be required to provide this extra colon in the
> +	 * meminfo field name, so append it silently to the provided name before
> +	 * passing it to get_meminfo.
> +	 */
> +	query = malloc(strlen(field) + 1);
> +	if (!query) {
> +		igt_warn("Failed to alloc search query");
> +		return 0;
> +	}
> +	sprintf(query, "%s:", field);
> +
> +	retval = get_meminfo(info, query);
> +	free(query);
> +
> +	return retval;
> +}
> +
>  /**
>   * igt_get_avail_ram_mb:
>   *
> diff --git a/lib/igt_os.h b/lib/igt_os.h
> index b9af0a4b7c..415895f76a 100644
> --- a/lib/igt_os.h
> +++ b/lib/igt_os.h
> @@ -28,6 +28,8 @@
>  #include <stddef.h>
>  #include <stdint.h>
>  
> +uint64_t igt_get_meminfo(const char *field);
> +
>  /* These are separate to allow easier testing when porting, see the comment at
>   * the bottom of intel_os.c. */
>  uint64_t igt_get_total_ram_mb(void);
> -- 
> 2.43.0
> 


More information about the igt-dev mailing list