diff options
author | stekloff <stekloff> | 2005-04-06 20:57:01 +0000 |
---|---|---|
committer | stekloff <stekloff> | 2005-04-06 20:57:01 +0000 |
commit | dd8c511d725f816bc64592028ff178616fcde607 (patch) | |
tree | 55250e02ac67ceeb3c2bac3b1e29a78c22be1ac2 /test/get_classdev_parent.c | |
parent | 855a337e54321d9aa2b97c38ffa4787d3105257c (diff) | |
download | sysfsutils-master.tar.gz |
Diffstat (limited to 'test/get_classdev_parent.c')
-rw-r--r-- | test/get_classdev_parent.c | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/get_classdev_parent.c b/test/get_classdev_parent.c new file mode 100644 index 0000000..56be44d --- /dev/null +++ b/test/get_classdev_parent.c @@ -0,0 +1,78 @@ +/* + * get_classdev_parent.c + * + * Utility to get a given class device as well as its parent if available + * + * Copyright (C) IBM Corp. 2003 + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include <stdio.h> +#include <stdlib.h> + +#include "libsysfs.h" + +int main(int argc, char *argv[]) +{ + struct sysfs_class_device *cdev = NULL, *parent = NULL; + struct sysfs_attribute *attr = NULL; + struct dlist *attrlist = NULL; + struct sysfs_device *device = NULL; + struct sysfs_driver *driver = NULL; + + /* FIXME: edit this path to any valid path on your system to test */ + cdev = sysfs_open_class_device_path("/sys/block/sda/sda1"); + if (cdev == NULL) { + fprintf(stdout, "Class device not found\n"); + return 1; + } + + fprintf(stdout, "Class device \"%s\"\n", cdev->name); + + attrlist = sysfs_get_classdev_attributes(cdev); + if (attrlist != NULL) { + dlist_for_each_data(attrlist, attr, struct sysfs_attribute) + fprintf(stdout, "\t%-20s : %s", + attr->name, attr->value); + } + fprintf(stdout, "\n"); + + device = sysfs_get_classdev_device(cdev); + if (device) + fprintf(stdout, "\tDevice : \"%s\"\n", cdev->sysdevice->bus_id); + driver = sysfs_get_classdev_driver(cdev); + if (driver) + fprintf(stdout, "\tDriver : \"%s\"\n", cdev->driver->name); + + parent = sysfs_get_classdev_parent(cdev); + if (parent != NULL) { + fprintf(stdout, "Device \"%s\"'s parent is \"%s\"\n", + cdev->name, parent->name); + attrlist = sysfs_get_classdev_attributes(parent); + if (attrlist != NULL) { + dlist_for_each_data(attrlist, attr, + struct sysfs_attribute) + fprintf(stdout, "\t%-20s : %s", + attr->name, attr->value); + } + fprintf(stdout, "\n"); + } else + fprintf(stdout, "No parent device found\n"); + + sysfs_close_class_device(cdev); + return 0; +} + |