#ifdef CONFIG_SYSFS
 /**
- * sysfs_show_current_clocksources - sysfs interface for current clocksource
+ * current_clocksource_show - sysfs interface for current clocksource
  * @dev:       unused
  * @attr:      unused
  * @buf:       char buffer to be filled with clocksource list
  *
  * Provides sysfs interface for listing current clocksource.
  */
-static ssize_t
-sysfs_show_current_clocksources(struct device *dev,
-                               struct device_attribute *attr, char *buf)
+static ssize_t current_clocksource_show(struct device *dev,
+                                       struct device_attribute *attr,
+                                       char *buf)
 {
        ssize_t count = 0;
 
 }
 
 /**
- * sysfs_override_clocksource - interface for manually overriding clocksource
+ * current_clocksource_store - interface for manually overriding clocksource
  * @dev:       unused
  * @attr:      unused
  * @buf:       name of override clocksource
  * Takes input from sysfs interface for manually overriding the default
  * clocksource selection.
  */
-static ssize_t sysfs_override_clocksource(struct device *dev,
-                                         struct device_attribute *attr,
-                                         const char *buf, size_t count)
+static ssize_t current_clocksource_store(struct device *dev,
+                                        struct device_attribute *attr,
+                                        const char *buf, size_t count)
 {
        ssize_t ret;
 
 
        return ret;
 }
+static DEVICE_ATTR_RW(current_clocksource);
 
 /**
- * sysfs_unbind_current_clocksource - interface for manually unbinding clocksource
+ * unbind_clocksource_store - interface for manually unbinding clocksource
  * @dev:       unused
  * @attr:      unused
  * @buf:       unused
  *
  * Takes input from sysfs interface for manually unbinding a clocksource.
  */
-static ssize_t sysfs_unbind_clocksource(struct device *dev,
+static ssize_t unbind_clocksource_store(struct device *dev,
                                        struct device_attribute *attr,
                                        const char *buf, size_t count)
 {
 
        return ret ? ret : count;
 }
+static DEVICE_ATTR_WO(unbind_clocksource);
 
 /**
- * sysfs_show_available_clocksources - sysfs interface for listing clocksource
+ * available_clocksource_show - sysfs interface for listing clocksource
  * @dev:       unused
  * @attr:      unused
  * @buf:       char buffer to be filled with clocksource list
  *
  * Provides sysfs interface for listing registered clocksources
  */
-static ssize_t
-sysfs_show_available_clocksources(struct device *dev,
-                                 struct device_attribute *attr,
-                                 char *buf)
+static ssize_t available_clocksource_show(struct device *dev,
+                                         struct device_attribute *attr,
+                                         char *buf)
 {
        struct clocksource *src;
        ssize_t count = 0;
 
        return count;
 }
-
-/*
- * Sysfs setup bits:
- */
-static DEVICE_ATTR(current_clocksource, 0644, sysfs_show_current_clocksources,
-                  sysfs_override_clocksource);
-
-static DEVICE_ATTR(unbind_clocksource, 0200, NULL, sysfs_unbind_clocksource);
-
-static DEVICE_ATTR(available_clocksource, 0444,
-                  sysfs_show_available_clocksources, NULL);
+static DEVICE_ATTR_RO(available_clocksource);
 
 static struct bus_type clocksource_subsys = {
        .name = "clocksource",