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

gpio-line-name.c (1025B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 * GPIO character device helper for reading line names.
      4 *
      5 * Copyright (C) 2021 Bartosz Golaszewski <brgl@bgdev.pl>
      6 */
      7
      8#include <fcntl.h>
      9#include <linux/gpio.h>
     10#include <stdio.h>
     11#include <stdlib.h>
     12#include <string.h>
     13#include <sys/ioctl.h>
     14#include <sys/types.h>
     15
     16static void print_usage(void)
     17{
     18	printf("usage:\n");
     19	printf("  gpio-line-name <chip path> <line offset>\n");
     20}
     21
     22int main(int argc, char **argv)
     23{
     24	struct gpio_v2_line_info info;
     25	int fd, ret;
     26	char *endp;
     27
     28	if (argc != 3) {
     29		print_usage();
     30		return EXIT_FAILURE;
     31	}
     32
     33	fd = open(argv[1], O_RDWR);
     34	if (fd < 0) {
     35		perror("unable to open the GPIO chip");
     36		return EXIT_FAILURE;
     37	}
     38
     39	memset(&info, 0, sizeof(info));
     40	info.offset = strtoul(argv[2], &endp, 10);
     41	if (*endp != '\0') {
     42		print_usage();
     43		return EXIT_FAILURE;
     44	}
     45
     46	ret = ioctl(fd, GPIO_V2_GET_LINEINFO_IOCTL, &info);
     47	if (ret) {
     48		perror("line info ioctl failed");
     49		return EXIT_FAILURE;
     50	}
     51
     52	printf("%s\n", info.name);
     53
     54	return EXIT_SUCCESS;
     55}