[Xenomai-git] Philippe Gerum : rtdm: convert to vfile

2010-07-04 Thread GIT version control
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

2010-07-04 Thread GIT version control
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

2010-07-03 Thread GIT version control
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

2010-06-27 Thread GIT version control
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

2010-06-18 Thread GIT version control
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

2010-06-17 Thread GIT version control
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