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

dio-sysfs.c (2250B)


      1/*
      2 *  File Attributes for DIO Devices
      3 *
      4 *  Copyright (C) 2004 Jochen Friedrich
      5 *
      6 *  Loosely based on drivers/pci/pci-sysfs.c and drivers/zorro/zorro-sysfs.c
      7 *
      8 *  This file is subject to the terms and conditions of the GNU General Public
      9 *  License.  See the file COPYING in the main directory of this archive
     10 *  for more details.
     11 */
     12
     13
     14#include <linux/kernel.h>
     15#include <linux/dio.h>
     16#include <linux/stat.h>
     17
     18/* show configuration fields */
     19
     20static ssize_t dio_show_id(struct device *dev, struct device_attribute *attr, char *buf)
     21{
     22	struct dio_dev *d;
     23
     24	d = to_dio_dev(dev);
     25	return sprintf(buf, "0x%02x\n", (d->id & 0xff));
     26}
     27static DEVICE_ATTR(id, S_IRUGO, dio_show_id, NULL);
     28
     29static ssize_t dio_show_ipl(struct device *dev, struct device_attribute *attr, char *buf)
     30{
     31	struct dio_dev *d;
     32
     33	d = to_dio_dev(dev);
     34	return sprintf(buf, "0x%02x\n", d->ipl);
     35}
     36static DEVICE_ATTR(ipl, S_IRUGO, dio_show_ipl, NULL);
     37
     38static ssize_t dio_show_secid(struct device *dev, struct device_attribute *attr, char *buf)
     39{
     40	struct dio_dev *d;
     41
     42	d = to_dio_dev(dev);
     43	return sprintf(buf, "0x%02x\n", ((d->id >> 8)& 0xff));
     44}
     45static DEVICE_ATTR(secid, S_IRUGO, dio_show_secid, NULL);
     46
     47static ssize_t dio_show_name(struct device *dev, struct device_attribute *attr, char *buf)
     48{
     49	struct dio_dev *d;
     50
     51	d = to_dio_dev(dev);
     52	return sprintf(buf, "%s\n", d->name);
     53}
     54static DEVICE_ATTR(name, S_IRUGO, dio_show_name, NULL);
     55
     56static ssize_t dio_show_resource(struct device *dev, struct device_attribute *attr, char *buf)
     57{
     58	struct dio_dev *d = to_dio_dev(dev);
     59
     60	return sprintf(buf, "0x%08lx 0x%08lx 0x%08lx\n",
     61		       (unsigned long)dio_resource_start(d),
     62		       (unsigned long)dio_resource_end(d),
     63		       dio_resource_flags(d));
     64}
     65static DEVICE_ATTR(resource, S_IRUGO, dio_show_resource, NULL);
     66
     67int dio_create_sysfs_dev_files(struct dio_dev *d)
     68{
     69	struct device *dev = &d->dev;
     70	int error;
     71
     72	/* current configuration's attributes */
     73	if ((error = device_create_file(dev, &dev_attr_id)) ||
     74	    (error = device_create_file(dev, &dev_attr_ipl)) ||
     75	    (error = device_create_file(dev, &dev_attr_secid)) ||
     76	    (error = device_create_file(dev, &dev_attr_name)) ||
     77	    (error = device_create_file(dev, &dev_attr_resource)))
     78		return error;
     79
     80	return 0;
     81}
     82