The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include "perl_sysfs.h"

MODULE = Linux::Sysfs::Class	PACKAGE = Linux::Sysfs::Class

struct sysfs_class*
open(class, name)
		const char* name
	CODE:
		RETVAL = sysfs_open_class(name);
	OUTPUT:
		RETVAL

void
close(class)
		struct sysfs_class* class
	CODE:
		sysfs_close_class(class);

struct sysfs_class_device*
get_device(class, name)
		struct sysfs_class* class
		const char* name
	CODE:
		RETVAL = sysfs_get_class_device(class, name);
	OUTPUT:
		RETVAL

void
get_devices(class)
		struct sysfs_class* class
	PREINIT:
		struct dlist* dev_list = NULL;
		struct sysfs_class_device* dev = NULL;
	PPCODE:
		dev_list = sysfs_get_class_devices(class);

		if (dev_list == NULL)
			XSRETURN_EMPTY;

		EXTEND(SP, dev_list->count);
		dlist_for_each_data(dev_list, dev, struct sysfs_class_device) {
			PUSHs(sv_2mortal( perl_sysfs_new_sv_from_ptr(dev, "Linux::Sysfs::ClassDevice") ));
		}

char*
name(class)
		struct sysfs_class* class
	CODE:
		RETVAL = class->name;
	OUTPUT:
		RETVAL

char*
path(class)
		struct sysfs_class* class
	CODE:
		RETVAL = class->path;
	OUTPUT:
		RETVAL