]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/spl-device.h
SLES10 Fixes (part 6)
[FreeBSD/FreeBSD.git] / include / spl-device.h
1 #ifndef _SPL_DEVICE_H
2 #define _SPL_DEVICE_H
3
4 #include <linux/device.h>
5
6 /*
7  * Preferred API from 2.6.18 to 2.6.26+
8  */
9 #ifdef HAVE_DEVICE_CREATE
10
11 typedef struct class                    spl_class;
12 typedef struct device                   spl_device;
13
14 #define spl_class_create(mod, name)     class_create(mod, name)
15 #define spl_class_destroy(cls)          class_destroy(cls)
16
17 # ifdef HAVE_5ARGS_DEVICE_CREATE
18 # define spl_device_create(cls, parent, devt, drvdata, fmt, args...)          \
19         device_create(cls, parent, devt, drvdata, fmt, ## args)
20 # else
21 # define spl_device_create(cls, parent, devt, drvdata, fmt, args...)          \
22         device_create(cls, parent, devt, fmt, ## args)
23 # endif
24
25 #define spl_device_destroy(cls, cls_dev, devt)                                \
26         device_destroy(cls, devt)
27
28 /*
29  * Preferred API from 2.6.13 to 2.6.17
30  * Depricated in 2.6.18
31  * Removed in 2.6.26
32  */
33 #else
34 #ifdef HAVE_CLASS_DEVICE_CREATE
35
36 typedef struct class                    spl_class;
37 typedef struct class_device             spl_device;
38
39 #define spl_class_create(mod, name)     class_create(mod, name)
40 #define spl_class_destroy(cls)          class_destroy(cls)
41 #define spl_device_create(cls, parent, devt, device, fmt, args...)            \
42         class_device_create(cls, parent, devt, device, fmt, ## args)
43 #define spl_device_destroy(cls, cls_dev, devt)                                \
44         class_device_unregister(cls_dev)
45
46 /*
47  * Prefered API from 2.6.0 to 2.6.12
48  * Depricated in 2.6.13
49  * Removed in 2.6.13
50  */
51 #else /* Legacy API */
52
53 typedef struct class_simple             spl_class;
54 typedef struct class_device             spl_class_device;
55
56 #define spl_class_create(mod, name)     class_simple_create(mod, name)
57 #define spl_class_destroy(cls)          class_simple_destroy(cls)
58 #define spl_device_create(cls, parent, devt, device, fmt, args...)            \
59         class_simple_device_add(cls, devt, device, fmt, ## args)
60 #define spl_device_destroy(cls, cls_dev, devt)                                \
61         class_simple_device_remove(devt)
62
63 #endif /* HAVE_CLASS_DEVICE_CREATE */
64 #endif /* HAVE_DEVICE_CREATE */
65
66 #endif /* _SPL_DEVICE_H */