[Xenomai-git] Philippe Gerum : rtdm: convert to vfile
Module: xenomai-head Branch: master Commit: e5185de4c85dac2a6dbe79ba35d11a28e6bec839 URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=e5185de4c85dac2a6dbe79ba35d11a28e6bec839 Author: Philippe Gerum Date: Thu Jun 17 12:27:42 2010 +0200 rtdm: convert to vfile --- include/rtdm/rtdm_driver.h |8 +- ksrc/skins/rtdm/device.c | 17 +- ksrc/skins/rtdm/internal.h | 24 ++- ksrc/skins/rtdm/module.c | 10 - ksrc/skins/rtdm/proc.c | 523 ++-- 5 files changed, 343 insertions(+), 239 deletions(-) diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h index fd41690..4b1d054 100644 --- a/include/rtdm/rtdm_driver.h +++ b/include/rtdm/rtdm_driver.h @@ -39,6 +39,7 @@ #include #include #include +#include #include /* debug support */ @@ -517,8 +518,11 @@ struct rtdm_device { /** Name of /proc entry for the device, must not be NULL */ const char *proc_name; - /** Set to device's /proc root entry after registration, do not modify */ - struct proc_dir_entry *proc_entry; +#ifdef CONFIG_PROC_FS + /** Set to device's vfile data after registration, do not modify */ + struct xnvfile_directory vfroot; + struct xnvfile_regular info_vfile; +#endif /** Driver definable device ID */ int device_id; diff --git a/ksrc/skins/rtdm/device.c b/ksrc/skins/rtdm/device.c index 3acc5ee..af097fb 100644 --- a/ksrc/skins/rtdm/device.c +++ b/ksrc/skins/rtdm/device.c @@ -213,7 +213,7 @@ int rtdm_dev_register(struct rtdm_device *device) /* Sanity check: proc_name specified? */ XENO_ASSERT(RTDM, device->proc_name, - xnlogerr("RTDM: no /proc entry name specified\n"); + xnlogerr("RTDM: no vfile (/proc) name specified\n"); return -EINVAL;); switch (device->device_flags & RTDM_DEVICE_TYPE_MASK) { @@ -310,10 +310,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -350,10 +349,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -443,10 +441,7 @@ int rtdm_dev_unregister(struct rtdm_device *device, unsigned int poll_delay) xnlock_put_irqrestore(&rt_dev_lock, s); -#ifdef CONFIG_PROC_FS - remove_proc_entry("information", device->proc_entry); - remove_proc_entry(device->proc_name, rtdm_proc_root); -#endif /* CONFIG_PROC_FS */ + rtdm_proc_unregister_device(device); up(&nrt_dev_lock); diff --git a/ksrc/skins/rtdm/internal.h b/ksrc/skins/rtdm/internal.h index a05cd7d..74abed2 100644 --- a/ksrc/skins/rtdm/internal.h +++ b/ksrc/skins/rtdm/internal.h @@ -61,7 +61,6 @@ extern unsigned int devname_hashtab_size; extern unsigned int protocol_hashtab_size; extern struct list_head *rtdm_named_devices; extern struct list_head *rtdm_protocol_devices; -extern struct proc_dir_entry *rtdm_proc_root; #ifdef MODULE #define rtdm_initialised 1 @@ -82,9 +81,28 @@ static inline void rtdm_dereference_device(struct rtdm_device *device) int __init rtdm_dev_init(void); void rtdm_dev_cleanup(void); -int rtdm_proc_register_device(struct rtdm_device *device); -int __init rtdm_proc_init(void); +#ifdef CONFIG_PROC_FS +int rtdm_proc_init(void); void rtdm_proc_cleanup(void); +int rtdm_proc_register_device(struct rtdm_device *device); +void rtdm_proc_unregister_device(struct rtdm_device *device); +#else +static inline int rtdm_proc_init(void) +{ + return 0; +} +void rtdm_proc_cleanup(void) +{ +} +static int rtdm_proc_register_device(struct rtdm_device *device) +{ + return 0; +} +static void rtdm_proc_unregister_device(struct rtdm_device *device) +{ +} +#endif + void rtdm_apc_handler(void *cookie); #endif /* _RTDM_INTERNAL_H */ diff --git a/ksrc/skins/rtdm/module.c b/ksrc/skins/rtdm/module.c index b5120e4..2ff8d7a 100644 --- a/ksrc/skins/rtdm/module.c +++ b/ksrc/skins/rtdm/module.c @@ -48,11 +48,7 @@ MODULE_PARM_DESC(tick_arg, "Fixed clock tick value (us), 0 for tick-less mode"); static void __exit rtdm_skin_shutdown(int xtype) { rtdm_dev_cleanup(); - -#ifdef CONFIG_PROC_FS rtdm_proc_cleanup(); -#endif /* CONFIG_PROC_FS */ - #ifdef CONFIG_XENO_OPT_PERVASIVE rtdm_syscall_c
[Xenomai-git] Philippe Gerum : rtdm: convert to vfile
Module: xenomai-rpm Branch: queue/rtipc Commit: e5185de4c85dac2a6dbe79ba35d11a28e6bec839 URL: http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=e5185de4c85dac2a6dbe79ba35d11a28e6bec839 Author: Philippe Gerum Date: Thu Jun 17 12:27:42 2010 +0200 rtdm: convert to vfile --- include/rtdm/rtdm_driver.h |8 +- ksrc/skins/rtdm/device.c | 17 +- ksrc/skins/rtdm/internal.h | 24 ++- ksrc/skins/rtdm/module.c | 10 - ksrc/skins/rtdm/proc.c | 523 ++-- 5 files changed, 343 insertions(+), 239 deletions(-) diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h index fd41690..4b1d054 100644 --- a/include/rtdm/rtdm_driver.h +++ b/include/rtdm/rtdm_driver.h @@ -39,6 +39,7 @@ #include #include #include +#include #include /* debug support */ @@ -517,8 +518,11 @@ struct rtdm_device { /** Name of /proc entry for the device, must not be NULL */ const char *proc_name; - /** Set to device's /proc root entry after registration, do not modify */ - struct proc_dir_entry *proc_entry; +#ifdef CONFIG_PROC_FS + /** Set to device's vfile data after registration, do not modify */ + struct xnvfile_directory vfroot; + struct xnvfile_regular info_vfile; +#endif /** Driver definable device ID */ int device_id; diff --git a/ksrc/skins/rtdm/device.c b/ksrc/skins/rtdm/device.c index 3acc5ee..af097fb 100644 --- a/ksrc/skins/rtdm/device.c +++ b/ksrc/skins/rtdm/device.c @@ -213,7 +213,7 @@ int rtdm_dev_register(struct rtdm_device *device) /* Sanity check: proc_name specified? */ XENO_ASSERT(RTDM, device->proc_name, - xnlogerr("RTDM: no /proc entry name specified\n"); + xnlogerr("RTDM: no vfile (/proc) name specified\n"); return -EINVAL;); switch (device->device_flags & RTDM_DEVICE_TYPE_MASK) { @@ -310,10 +310,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -350,10 +349,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -443,10 +441,7 @@ int rtdm_dev_unregister(struct rtdm_device *device, unsigned int poll_delay) xnlock_put_irqrestore(&rt_dev_lock, s); -#ifdef CONFIG_PROC_FS - remove_proc_entry("information", device->proc_entry); - remove_proc_entry(device->proc_name, rtdm_proc_root); -#endif /* CONFIG_PROC_FS */ + rtdm_proc_unregister_device(device); up(&nrt_dev_lock); diff --git a/ksrc/skins/rtdm/internal.h b/ksrc/skins/rtdm/internal.h index a05cd7d..74abed2 100644 --- a/ksrc/skins/rtdm/internal.h +++ b/ksrc/skins/rtdm/internal.h @@ -61,7 +61,6 @@ extern unsigned int devname_hashtab_size; extern unsigned int protocol_hashtab_size; extern struct list_head *rtdm_named_devices; extern struct list_head *rtdm_protocol_devices; -extern struct proc_dir_entry *rtdm_proc_root; #ifdef MODULE #define rtdm_initialised 1 @@ -82,9 +81,28 @@ static inline void rtdm_dereference_device(struct rtdm_device *device) int __init rtdm_dev_init(void); void rtdm_dev_cleanup(void); -int rtdm_proc_register_device(struct rtdm_device *device); -int __init rtdm_proc_init(void); +#ifdef CONFIG_PROC_FS +int rtdm_proc_init(void); void rtdm_proc_cleanup(void); +int rtdm_proc_register_device(struct rtdm_device *device); +void rtdm_proc_unregister_device(struct rtdm_device *device); +#else +static inline int rtdm_proc_init(void) +{ + return 0; +} +void rtdm_proc_cleanup(void) +{ +} +static int rtdm_proc_register_device(struct rtdm_device *device) +{ + return 0; +} +static void rtdm_proc_unregister_device(struct rtdm_device *device) +{ +} +#endif + void rtdm_apc_handler(void *cookie); #endif /* _RTDM_INTERNAL_H */ diff --git a/ksrc/skins/rtdm/module.c b/ksrc/skins/rtdm/module.c index b5120e4..2ff8d7a 100644 --- a/ksrc/skins/rtdm/module.c +++ b/ksrc/skins/rtdm/module.c @@ -48,11 +48,7 @@ MODULE_PARM_DESC(tick_arg, "Fixed clock tick value (us), 0 for tick-less mode"); static void __exit rtdm_skin_shutdown(int xtype) { rtdm_dev_cleanup(); - -#ifdef CONFIG_PROC_FS rtdm_proc_cleanup(); -#endif /* CONFIG_PROC_FS */ - #ifdef CONFIG_XENO_OPT_PERVASIVE rtdm_syscal
[Xenomai-git] Philippe Gerum : rtdm: convert to vfile
Module: xenomai-rpm Branch: queue/vfile Commit: e5185de4c85dac2a6dbe79ba35d11a28e6bec839 URL: http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=e5185de4c85dac2a6dbe79ba35d11a28e6bec839 Author: Philippe Gerum Date: Thu Jun 17 12:27:42 2010 +0200 rtdm: convert to vfile --- include/rtdm/rtdm_driver.h |8 +- ksrc/skins/rtdm/device.c | 17 +- ksrc/skins/rtdm/internal.h | 24 ++- ksrc/skins/rtdm/module.c | 10 - ksrc/skins/rtdm/proc.c | 523 ++-- 5 files changed, 343 insertions(+), 239 deletions(-) diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h index fd41690..4b1d054 100644 --- a/include/rtdm/rtdm_driver.h +++ b/include/rtdm/rtdm_driver.h @@ -39,6 +39,7 @@ #include #include #include +#include #include /* debug support */ @@ -517,8 +518,11 @@ struct rtdm_device { /** Name of /proc entry for the device, must not be NULL */ const char *proc_name; - /** Set to device's /proc root entry after registration, do not modify */ - struct proc_dir_entry *proc_entry; +#ifdef CONFIG_PROC_FS + /** Set to device's vfile data after registration, do not modify */ + struct xnvfile_directory vfroot; + struct xnvfile_regular info_vfile; +#endif /** Driver definable device ID */ int device_id; diff --git a/ksrc/skins/rtdm/device.c b/ksrc/skins/rtdm/device.c index 3acc5ee..af097fb 100644 --- a/ksrc/skins/rtdm/device.c +++ b/ksrc/skins/rtdm/device.c @@ -213,7 +213,7 @@ int rtdm_dev_register(struct rtdm_device *device) /* Sanity check: proc_name specified? */ XENO_ASSERT(RTDM, device->proc_name, - xnlogerr("RTDM: no /proc entry name specified\n"); + xnlogerr("RTDM: no vfile (/proc) name specified\n"); return -EINVAL;); switch (device->device_flags & RTDM_DEVICE_TYPE_MASK) { @@ -310,10 +310,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -350,10 +349,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -443,10 +441,7 @@ int rtdm_dev_unregister(struct rtdm_device *device, unsigned int poll_delay) xnlock_put_irqrestore(&rt_dev_lock, s); -#ifdef CONFIG_PROC_FS - remove_proc_entry("information", device->proc_entry); - remove_proc_entry(device->proc_name, rtdm_proc_root); -#endif /* CONFIG_PROC_FS */ + rtdm_proc_unregister_device(device); up(&nrt_dev_lock); diff --git a/ksrc/skins/rtdm/internal.h b/ksrc/skins/rtdm/internal.h index a05cd7d..74abed2 100644 --- a/ksrc/skins/rtdm/internal.h +++ b/ksrc/skins/rtdm/internal.h @@ -61,7 +61,6 @@ extern unsigned int devname_hashtab_size; extern unsigned int protocol_hashtab_size; extern struct list_head *rtdm_named_devices; extern struct list_head *rtdm_protocol_devices; -extern struct proc_dir_entry *rtdm_proc_root; #ifdef MODULE #define rtdm_initialised 1 @@ -82,9 +81,28 @@ static inline void rtdm_dereference_device(struct rtdm_device *device) int __init rtdm_dev_init(void); void rtdm_dev_cleanup(void); -int rtdm_proc_register_device(struct rtdm_device *device); -int __init rtdm_proc_init(void); +#ifdef CONFIG_PROC_FS +int rtdm_proc_init(void); void rtdm_proc_cleanup(void); +int rtdm_proc_register_device(struct rtdm_device *device); +void rtdm_proc_unregister_device(struct rtdm_device *device); +#else +static inline int rtdm_proc_init(void) +{ + return 0; +} +void rtdm_proc_cleanup(void) +{ +} +static int rtdm_proc_register_device(struct rtdm_device *device) +{ + return 0; +} +static void rtdm_proc_unregister_device(struct rtdm_device *device) +{ +} +#endif + void rtdm_apc_handler(void *cookie); #endif /* _RTDM_INTERNAL_H */ diff --git a/ksrc/skins/rtdm/module.c b/ksrc/skins/rtdm/module.c index b5120e4..2ff8d7a 100644 --- a/ksrc/skins/rtdm/module.c +++ b/ksrc/skins/rtdm/module.c @@ -48,11 +48,7 @@ MODULE_PARM_DESC(tick_arg, "Fixed clock tick value (us), 0 for tick-less mode"); static void __exit rtdm_skin_shutdown(int xtype) { rtdm_dev_cleanup(); - -#ifdef CONFIG_PROC_FS rtdm_proc_cleanup(); -#endif /* CONFIG_PROC_FS */ - #ifdef CONFIG_XENO_OPT_PERVASIVE rtdm_syscal
[Xenomai-git] Philippe Gerum : rtdm: convert to vfile
Module: xenomai-rpm Branch: queue/vfile Commit: d24fecc8b62c18cb53ec8d7fc088d4dcad0fb14a URL: http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=d24fecc8b62c18cb53ec8d7fc088d4dcad0fb14a Author: Philippe Gerum Date: Thu Jun 17 12:27:42 2010 +0200 rtdm: convert to vfile --- include/rtdm/rtdm_driver.h |8 +- ksrc/skins/rtdm/device.c | 17 +- ksrc/skins/rtdm/internal.h | 24 ++- ksrc/skins/rtdm/module.c | 10 - ksrc/skins/rtdm/proc.c | 523 ++-- 5 files changed, 343 insertions(+), 239 deletions(-) diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h index fd41690..4b1d054 100644 --- a/include/rtdm/rtdm_driver.h +++ b/include/rtdm/rtdm_driver.h @@ -39,6 +39,7 @@ #include #include #include +#include #include /* debug support */ @@ -517,8 +518,11 @@ struct rtdm_device { /** Name of /proc entry for the device, must not be NULL */ const char *proc_name; - /** Set to device's /proc root entry after registration, do not modify */ - struct proc_dir_entry *proc_entry; +#ifdef CONFIG_PROC_FS + /** Set to device's vfile data after registration, do not modify */ + struct xnvfile_directory vfroot; + struct xnvfile_regular info_vfile; +#endif /** Driver definable device ID */ int device_id; diff --git a/ksrc/skins/rtdm/device.c b/ksrc/skins/rtdm/device.c index 3acc5ee..af097fb 100644 --- a/ksrc/skins/rtdm/device.c +++ b/ksrc/skins/rtdm/device.c @@ -213,7 +213,7 @@ int rtdm_dev_register(struct rtdm_device *device) /* Sanity check: proc_name specified? */ XENO_ASSERT(RTDM, device->proc_name, - xnlogerr("RTDM: no /proc entry name specified\n"); + xnlogerr("RTDM: no vfile (/proc) name specified\n"); return -EINVAL;); switch (device->device_flags & RTDM_DEVICE_TYPE_MASK) { @@ -310,10 +310,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -350,10 +349,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -443,10 +441,7 @@ int rtdm_dev_unregister(struct rtdm_device *device, unsigned int poll_delay) xnlock_put_irqrestore(&rt_dev_lock, s); -#ifdef CONFIG_PROC_FS - remove_proc_entry("information", device->proc_entry); - remove_proc_entry(device->proc_name, rtdm_proc_root); -#endif /* CONFIG_PROC_FS */ + rtdm_proc_unregister_device(device); up(&nrt_dev_lock); diff --git a/ksrc/skins/rtdm/internal.h b/ksrc/skins/rtdm/internal.h index a05cd7d..74abed2 100644 --- a/ksrc/skins/rtdm/internal.h +++ b/ksrc/skins/rtdm/internal.h @@ -61,7 +61,6 @@ extern unsigned int devname_hashtab_size; extern unsigned int protocol_hashtab_size; extern struct list_head *rtdm_named_devices; extern struct list_head *rtdm_protocol_devices; -extern struct proc_dir_entry *rtdm_proc_root; #ifdef MODULE #define rtdm_initialised 1 @@ -82,9 +81,28 @@ static inline void rtdm_dereference_device(struct rtdm_device *device) int __init rtdm_dev_init(void); void rtdm_dev_cleanup(void); -int rtdm_proc_register_device(struct rtdm_device *device); -int __init rtdm_proc_init(void); +#ifdef CONFIG_PROC_FS +int rtdm_proc_init(void); void rtdm_proc_cleanup(void); +int rtdm_proc_register_device(struct rtdm_device *device); +void rtdm_proc_unregister_device(struct rtdm_device *device); +#else +static inline int rtdm_proc_init(void) +{ + return 0; +} +void rtdm_proc_cleanup(void) +{ +} +static int rtdm_proc_register_device(struct rtdm_device *device) +{ + return 0; +} +static void rtdm_proc_unregister_device(struct rtdm_device *device) +{ +} +#endif + void rtdm_apc_handler(void *cookie); #endif /* _RTDM_INTERNAL_H */ diff --git a/ksrc/skins/rtdm/module.c b/ksrc/skins/rtdm/module.c index b5120e4..2ff8d7a 100644 --- a/ksrc/skins/rtdm/module.c +++ b/ksrc/skins/rtdm/module.c @@ -48,11 +48,7 @@ MODULE_PARM_DESC(tick_arg, "Fixed clock tick value (us), 0 for tick-less mode"); static void __exit rtdm_skin_shutdown(int xtype) { rtdm_dev_cleanup(); - -#ifdef CONFIG_PROC_FS rtdm_proc_cleanup(); -#endif /* CONFIG_PROC_FS */ - #ifdef CONFIG_XENO_OPT_PERVASIVE rtdm_syscal
[Xenomai-git] Philippe Gerum : rtdm: convert to vfile
Module: xenomai-rpm Branch: queue/vfile Commit: c655437a44acd176c0fc44ae96032e342be77438 URL: http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=c655437a44acd176c0fc44ae96032e342be77438 Author: Philippe Gerum Date: Thu Jun 17 12:27:42 2010 +0200 rtdm: convert to vfile --- include/rtdm/rtdm_driver.h |8 +- ksrc/skins/rtdm/device.c | 17 +- ksrc/skins/rtdm/internal.h | 24 ++- ksrc/skins/rtdm/module.c | 10 - ksrc/skins/rtdm/proc.c | 523 ++-- 5 files changed, 343 insertions(+), 239 deletions(-) diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h index fd41690..4b1d054 100644 --- a/include/rtdm/rtdm_driver.h +++ b/include/rtdm/rtdm_driver.h @@ -39,6 +39,7 @@ #include #include #include +#include #include /* debug support */ @@ -517,8 +518,11 @@ struct rtdm_device { /** Name of /proc entry for the device, must not be NULL */ const char *proc_name; - /** Set to device's /proc root entry after registration, do not modify */ - struct proc_dir_entry *proc_entry; +#ifdef CONFIG_PROC_FS + /** Set to device's vfile data after registration, do not modify */ + struct xnvfile_directory vfroot; + struct xnvfile_regular info_vfile; +#endif /** Driver definable device ID */ int device_id; diff --git a/ksrc/skins/rtdm/device.c b/ksrc/skins/rtdm/device.c index 3acc5ee..af097fb 100644 --- a/ksrc/skins/rtdm/device.c +++ b/ksrc/skins/rtdm/device.c @@ -213,7 +213,7 @@ int rtdm_dev_register(struct rtdm_device *device) /* Sanity check: proc_name specified? */ XENO_ASSERT(RTDM, device->proc_name, - xnlogerr("RTDM: no /proc entry name specified\n"); + xnlogerr("RTDM: no vfile (/proc) name specified\n"); return -EINVAL;); switch (device->device_flags & RTDM_DEVICE_TYPE_MASK) { @@ -310,10 +310,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -350,10 +349,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -443,10 +441,7 @@ int rtdm_dev_unregister(struct rtdm_device *device, unsigned int poll_delay) xnlock_put_irqrestore(&rt_dev_lock, s); -#ifdef CONFIG_PROC_FS - remove_proc_entry("information", device->proc_entry); - remove_proc_entry(device->proc_name, rtdm_proc_root); -#endif /* CONFIG_PROC_FS */ + rtdm_proc_unregister_device(device); up(&nrt_dev_lock); diff --git a/ksrc/skins/rtdm/internal.h b/ksrc/skins/rtdm/internal.h index a05cd7d..74abed2 100644 --- a/ksrc/skins/rtdm/internal.h +++ b/ksrc/skins/rtdm/internal.h @@ -61,7 +61,6 @@ extern unsigned int devname_hashtab_size; extern unsigned int protocol_hashtab_size; extern struct list_head *rtdm_named_devices; extern struct list_head *rtdm_protocol_devices; -extern struct proc_dir_entry *rtdm_proc_root; #ifdef MODULE #define rtdm_initialised 1 @@ -82,9 +81,28 @@ static inline void rtdm_dereference_device(struct rtdm_device *device) int __init rtdm_dev_init(void); void rtdm_dev_cleanup(void); -int rtdm_proc_register_device(struct rtdm_device *device); -int __init rtdm_proc_init(void); +#ifdef CONFIG_PROC_FS +int rtdm_proc_init(void); void rtdm_proc_cleanup(void); +int rtdm_proc_register_device(struct rtdm_device *device); +void rtdm_proc_unregister_device(struct rtdm_device *device); +#else +static inline int rtdm_proc_init(void) +{ + return 0; +} +void rtdm_proc_cleanup(void) +{ +} +static int rtdm_proc_register_device(struct rtdm_device *device) +{ + return 0; +} +static void rtdm_proc_unregister_device(struct rtdm_device *device) +{ +} +#endif + void rtdm_apc_handler(void *cookie); #endif /* _RTDM_INTERNAL_H */ diff --git a/ksrc/skins/rtdm/module.c b/ksrc/skins/rtdm/module.c index b5120e4..2ff8d7a 100644 --- a/ksrc/skins/rtdm/module.c +++ b/ksrc/skins/rtdm/module.c @@ -48,11 +48,7 @@ MODULE_PARM_DESC(tick_arg, "Fixed clock tick value (us), 0 for tick-less mode"); static void __exit rtdm_skin_shutdown(int xtype) { rtdm_dev_cleanup(); - -#ifdef CONFIG_PROC_FS rtdm_proc_cleanup(); -#endif /* CONFIG_PROC_FS */ - #ifdef CONFIG_XENO_OPT_PERVASIVE rtdm_syscal
[Xenomai-git] Philippe Gerum : rtdm: convert to vfile
Module: xenomai-rpm Branch: queue/vfile Commit: fec358aee6a6e19aaa14656cfc195a366ab834ec URL: http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=fec358aee6a6e19aaa14656cfc195a366ab834ec Author: Philippe Gerum Date: Thu Jun 17 12:27:42 2010 +0200 rtdm: convert to vfile --- include/rtdm/rtdm_driver.h |8 +- ksrc/skins/rtdm/device.c | 17 +- ksrc/skins/rtdm/internal.h | 24 ++- ksrc/skins/rtdm/module.c | 10 - ksrc/skins/rtdm/proc.c | 523 ++-- 5 files changed, 343 insertions(+), 239 deletions(-) diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h index fd41690..4b1d054 100644 --- a/include/rtdm/rtdm_driver.h +++ b/include/rtdm/rtdm_driver.h @@ -39,6 +39,7 @@ #include #include #include +#include #include /* debug support */ @@ -517,8 +518,11 @@ struct rtdm_device { /** Name of /proc entry for the device, must not be NULL */ const char *proc_name; - /** Set to device's /proc root entry after registration, do not modify */ - struct proc_dir_entry *proc_entry; +#ifdef CONFIG_PROC_FS + /** Set to device's vfile data after registration, do not modify */ + struct xnvfile_directory vfroot; + struct xnvfile_regular info_vfile; +#endif /** Driver definable device ID */ int device_id; diff --git a/ksrc/skins/rtdm/device.c b/ksrc/skins/rtdm/device.c index 3acc5ee..af097fb 100644 --- a/ksrc/skins/rtdm/device.c +++ b/ksrc/skins/rtdm/device.c @@ -213,7 +213,7 @@ int rtdm_dev_register(struct rtdm_device *device) /* Sanity check: proc_name specified? */ XENO_ASSERT(RTDM, device->proc_name, - xnlogerr("RTDM: no /proc entry name specified\n"); + xnlogerr("RTDM: no vfile (/proc) name specified\n"); return -EINVAL;); switch (device->device_flags & RTDM_DEVICE_TYPE_MASK) { @@ -310,10 +310,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -350,10 +349,9 @@ int rtdm_dev_register(struct rtdm_device *device) } } -#ifdef CONFIG_PROC_FS - if ((ret = rtdm_proc_register_device(device)) < 0) + ret = rtdm_proc_register_device(device); + if (ret) goto err; -#endif /* CONFIG_PROC_FS */ xnlock_get_irqsave(&rt_dev_lock, s); list_add_tail(&device->reserved.entry, @@ -443,10 +441,7 @@ int rtdm_dev_unregister(struct rtdm_device *device, unsigned int poll_delay) xnlock_put_irqrestore(&rt_dev_lock, s); -#ifdef CONFIG_PROC_FS - remove_proc_entry("information", device->proc_entry); - remove_proc_entry(device->proc_name, rtdm_proc_root); -#endif /* CONFIG_PROC_FS */ + rtdm_proc_unregister_device(device); up(&nrt_dev_lock); diff --git a/ksrc/skins/rtdm/internal.h b/ksrc/skins/rtdm/internal.h index a05cd7d..74abed2 100644 --- a/ksrc/skins/rtdm/internal.h +++ b/ksrc/skins/rtdm/internal.h @@ -61,7 +61,6 @@ extern unsigned int devname_hashtab_size; extern unsigned int protocol_hashtab_size; extern struct list_head *rtdm_named_devices; extern struct list_head *rtdm_protocol_devices; -extern struct proc_dir_entry *rtdm_proc_root; #ifdef MODULE #define rtdm_initialised 1 @@ -82,9 +81,28 @@ static inline void rtdm_dereference_device(struct rtdm_device *device) int __init rtdm_dev_init(void); void rtdm_dev_cleanup(void); -int rtdm_proc_register_device(struct rtdm_device *device); -int __init rtdm_proc_init(void); +#ifdef CONFIG_PROC_FS +int rtdm_proc_init(void); void rtdm_proc_cleanup(void); +int rtdm_proc_register_device(struct rtdm_device *device); +void rtdm_proc_unregister_device(struct rtdm_device *device); +#else +static inline int rtdm_proc_init(void) +{ + return 0; +} +void rtdm_proc_cleanup(void) +{ +} +static int rtdm_proc_register_device(struct rtdm_device *device) +{ + return 0; +} +static void rtdm_proc_unregister_device(struct rtdm_device *device) +{ +} +#endif + void rtdm_apc_handler(void *cookie); #endif /* _RTDM_INTERNAL_H */ diff --git a/ksrc/skins/rtdm/module.c b/ksrc/skins/rtdm/module.c index b5120e4..2ff8d7a 100644 --- a/ksrc/skins/rtdm/module.c +++ b/ksrc/skins/rtdm/module.c @@ -48,11 +48,7 @@ MODULE_PARM_DESC(tick_arg, "Fixed clock tick value (us), 0 for tick-less mode"); static void __exit rtdm_skin_shutdown(int xtype) { rtdm_dev_cleanup(); - -#ifdef CONFIG_PROC_FS rtdm_proc_cleanup(); -#endif /* CONFIG_PROC_FS */ - #ifdef CONFIG_XENO_OPT_PERVASIVE rtdm_syscal