56a3c35273
* Move sysfs class and device files management into dahdi-sysfs-chan.c * This does not change functionality, just a preparation for later code cleanups and improvements. Signed-off-by: Oron Peled <oron.peled@xorcom.com> Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com> Acked-by: Shaun Ruffell <sruffell@digium.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@10463 a0bf4364-ded3-4de4-8d8a-66a801d63aff
107 lines
3.2 KiB
C
107 lines
3.2 KiB
C
#ifndef DAHDI_SYSFS_H
|
|
#define DAHDI_SYSFS_H
|
|
|
|
/*
|
|
* Very old hotplug support
|
|
*/
|
|
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 9)
|
|
#define OLD_HOTPLUG_SUPPORT /* for older kernels */
|
|
#define OLD_HOTPLUG_SUPPORT_269
|
|
#endif
|
|
|
|
#ifdef OLD_HOTPLUG_SUPPORT_269
|
|
/* Copy from new kernels lib/kobject_uevent.c */
|
|
enum kobject_action {
|
|
KOBJ_ADD,
|
|
KOBJ_REMOVE,
|
|
KOBJ_CHANGE,
|
|
KOBJ_MOUNT,
|
|
KOBJ_UMOUNT,
|
|
KOBJ_OFFLINE,
|
|
KOBJ_ONLINE,
|
|
};
|
|
#endif
|
|
|
|
/*
|
|
* Hotplug replaced with uevent in 2.6.16
|
|
*/
|
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16)
|
|
#define OLD_HOTPLUG_SUPPORT /* for older kernels */
|
|
#endif
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14)
|
|
#define DEVICE_ATTR_READER(name, dev, buf) \
|
|
ssize_t name(struct device *dev, \
|
|
struct device_attribute *attr, \
|
|
char *buf)
|
|
#define DEVICE_ATTR_WRITER(name, dev, buf, count) \
|
|
ssize_t name(struct device *dev, \
|
|
struct device_attribute *attr, \
|
|
const char *buf, size_t count)
|
|
#define BUS_ATTR_READER(name, dev, buf) \
|
|
ssize_t name(struct device *dev, \
|
|
struct device_attribute *attr, \
|
|
char *buf)
|
|
#define BUS_ATTR_WRITER(name, dev, buf, count) \
|
|
ssize_t name(struct device *dev, \
|
|
struct device_attribute *attr, \
|
|
const char *buf, size_t count)
|
|
#else
|
|
#define DEVICE_ATTR_READER(name, dev, buf) \
|
|
ssize_t name(struct device *dev, char *buf)
|
|
#define DEVICE_ATTR_WRITER(name, dev, buf, count) \
|
|
ssize_t name(struct device *dev, const char *buf, size_t count)
|
|
#define BUS_ATTR_READER(name, dev, buf) \
|
|
ssize_t name(struct device *dev, char *buf)
|
|
#define BUS_ATTR_WRITER(name, dev, buf, count) \
|
|
ssize_t name(struct device *dev, const char *buf, size_t count)
|
|
#endif
|
|
|
|
#define DRIVER_ATTR_READER(name, drv, buf) \
|
|
ssize_t name(struct device_driver *drv, char * buf)
|
|
|
|
/* Device file creation macros */
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
|
|
#define CLASS_DEV_CREATE(class, devt, device, name) \
|
|
device_create(class, device, devt, NULL, "%s", name)
|
|
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)
|
|
#define CLASS_DEV_CREATE(class, devt, device, name) \
|
|
device_create(class, device, devt, name)
|
|
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15)
|
|
#define CLASS_DEV_CREATE(class, devt, device, name) \
|
|
class_device_create(class, NULL, devt, device, name)
|
|
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
|
#define CLASS_DEV_CREATE(class, devt, device, name) \
|
|
class_device_create(class, devt, device, name)
|
|
#else
|
|
#define CLASS_DEV_CREATE(class, devt, device, name) \
|
|
class_simple_device_add(class, devt, device, name)
|
|
#endif
|
|
|
|
/* Device file destruction macros */
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)
|
|
#define CLASS_DEV_DESTROY(class, devt) \
|
|
device_destroy(class, devt)
|
|
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
|
#define CLASS_DEV_DESTROY(class, devt) \
|
|
class_device_destroy(class, devt)
|
|
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 9)
|
|
#define CLASS_DEV_DESTROY(class, devt) \
|
|
class_simple_device_remove(devt)
|
|
#else
|
|
#define CLASS_DEV_DESTROY(class, devt) \
|
|
class_simple_device_remove(class, devt)
|
|
#endif
|
|
|
|
/* Global */
|
|
int __init dahdi_sysfs_chan_init(const struct file_operations *fops);
|
|
void dahdi_sysfs_chan_exit(void);
|
|
|
|
/* Channel Handling */
|
|
int chan_sysfs_create(struct dahdi_chan *chan);
|
|
void chan_sysfs_remove(struct dahdi_chan *chan);
|
|
|
|
#endif /* DAHDI_SYSFS_H */
|