# The config file for libsysfs testsuite
# All values in this file are in relation to the sysfs filesystem only
#
# Values defined here will be used to dynamically build a header file that
# gets used while compiling the testsuite.

# NOTE NOTE NOTE: If you change values in this file, please make sure that
# you run "make clean" and "make" (in the "test" directory) for the changes
# to take effect.


# A valid directory path under sysfs
# A valid link name under a subidirectory of VALID_DIRECTORY_PATH... eg., if
# the VALID_DIRECTORY_PATH is /sys/bus/pci, then enter a pci device name for
# VALID SUBDIR_LINK_NAME
VALID_DIRECTORY_PATH=/sys/bus/pci
VALID_SUBDIR_LINK_NAME=0000:00:00.0

# A valid link path under sysfs - enter the absolute path to a soft-link here
VALID_LINK_PATH=/sys/block/sda/device

# Absolute path to a regular (readable) attribute (a normal file) under sysfs
VALID_FILE_PATH=/sys/block/sda/dev

# A valid subsystem name - an entry under /sys
VALID_SUBSYSTEM=bus

# A valid bus name supported on this system
# A device belonging to the bus
# Absolute path to the device
# A valid attribute defined for this device
VALID_BUS_NAME=pci
VALID_BUS_ID=0000:00:00.0
VALID_DEVICE_PATH=/sys/devices/pci0000:00/0000:00:00.0
VALID_DEVICE_ATTR=vendor

# A valid attribute exported under VALID_BUS_NAME
# NOTE: As of now, no buses export attributes, change this to a valid value
# 	when one becomes avaliable
VALID_BUS_ATTR=online

# A valid directory under /sys/devices
# Its absolute path
# A valid subdirectory under VALID_ROOT_PATH
VALID_ROOT_NAME=pci0000:00
VALID_ROOT_PATH=/sys/devices/pci0000:00
VALID_SUBDIR_NAME=0000:00:00.0

# A valid class - directory under /sys/class
# A valid class_device belonging to the class - a dir under VALID_CLASS
# Abslolute path to the VALID_CLASS_DEVICE
# A valid attribute defined for the VALID_CLASS_DEVICE
VALID_CLASS=net
VALID_CLASS_DEVICE=eth0
VALID_CLASS_DEVICE_PATH=/sys/class/net/eth0
VALID_CLASS_DEV_ATTR=type

# A valid directory path under /sys/block/xxx - preferably a partition
VALID_BLOCK_DEV_PATH=/sys/block/hda/hda1

# A valid driver (preferably a driver that exports readable attributes)
# The absolute path to the driver
# The bus the driver is registered on
# A device that is using it and
# A valid attribute corresponding to the driver
VALID_DRIVER=e100
VALID_DRIVER_PATH=/sys/bus/pci/drivers/e100
VALID_DRIVER_BUS=pci
VALID_DRIVER_DEVICE=0000:02:08.0
VALID_DRIVER_ATTR=new_id

# Another valid driver - but one that is not being used by any device
# Absolute path to the driver
# The bus the driver is registered
VALID_DRIVER1=usbfs
VALID_DRIVER1_PATH=/sys/bus/usb/drivers/usbfs
VALID_DRIVER1_BUS=usb

# Path to a writable attribute - make sure that the tester has permission to
# "write" to the file at VALID_WRITE_ATTR_PATH
VALID_WRITE_ATTR_PATH=/sys/class/net/eth0/tx_queue_len

VALID_MODULE_PATH=/sys/module/usbcore
VALID_MODULE=usbcore
VALID_MODULE_ATTRIBUTE=refcnt
VALID_MODULE_PARAM=blinkenlights
VALID_MODULE_SECTION=__versions
