diff options
author | behlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c> | 2008-08-10 03:50:36 +0000 |
---|---|---|
committer | behlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c> | 2008-08-10 03:50:36 +0000 |
commit | 46c685d0c47df8c6271c8914a03d256a5b1f7bd3 (patch) | |
tree | eb73090abdf89ea2aad7699ad5f918e823969105 /include/spl-device.h | |
parent | 877a32e91eb69b15744aa85ad22db385bd522b60 (diff) |
Add class / device portability code. Two autoconf tests
were added to cover the 3 possible APIs from 2.6.9 to
2.6.26. We attempt to use the newest interfaces and if
not available fallback to the oldest. This a rework of
some changes proposed by Ricardo for RHEL4.
git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@150 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
Diffstat (limited to 'include/spl-device.h')
-rw-r--r-- | include/spl-device.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/spl-device.h b/include/spl-device.h new file mode 100644 index 000000000..2bbd299b8 --- /dev/null +++ b/include/spl-device.h @@ -0,0 +1,53 @@ +#ifndef _SPL_DEVICE_H +#define _SPL_DEVICE_H + +#include <linux/device.h> + +/* + * Preferred API from 2.6.18 to 2.6.26+ + */ +#ifdef HAVE_DEVICE_CREATE + +typedef struct class spl_class; + +#define spl_class_create(mod, name) class_create(mod, name) +#define spl_class_destroy(cls) class_destroy(cls) +#define spl_device_create(cls, parent, devt, device, fmt, args...) \ + device_create(cls, parent, devt, fmt, ## args) +#define spl_device_destroy(cls, devt) device_destroy(cls, devt) + +/* + * Preferred API from 2.6.13 to 2.6.17 + * Depricated in 2.6.18 + * Removed in 2.6.26 + */ +#else +#ifdef HAVE_CLASS_DEVICE_CREATE + +typedef struct class spl_class; + +#define spl_class_create(mod, name) class_create(mod, name) +#define spl_class_destroy(cls) class_destroy(cls) +#define spl_device_create(cls, parent, devt, device, fmt, args...) \ + class_device_create(cls, parent, devt, device, fmt, ## args) +#define spl_device_destroy(cls, devt) class_device_destroy(cls, devt) + +/* + * Prefered API from 2.6.0 to 2.6.12 + * Depricated in 2.6.13 + * Removed in 2.6.13 + */ +#else /* Legacy API */ + +typedef struct class_simple spl_class; + +#define spl_class_create(mod, name) class_simple_create(mod, name) +#define spl_class_destroy(cls) class_simple_destroy(cls) +#define spl_device_create(cls, parent, devt, device, fmt, args...) \ + class_simple_device_add(cls, devt, device, fmt, ## args) +#define spl_device_destroy(cls, devt) class_simple_device_remove(devt) + +#endif +#endif + +#endif /* _SPL_DEVICE_H */ |