Skip to contentSkip to conversation

Staging: iio: Replace const char * with const char []

PATCH In review Cristina Opriceana 2 participants 2 messages Mar 16, 2015

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Staging: iio: Replace const char * with const char []

Replace const char * with const char [] as the first one is represented in memory as a pointer which points to a string and the second one only as a single variable in which it copies the contents.

---
This can be tested by generating assembly code for the two cases; This platform also offers a simple view: http://assembly.ynh.io/.

 drivers/staging/iio/Documentation/iio_utils.h | 2 +-
 drivers/staging/iio/Documentation/lsiio.c     | 4 ++--
 drivers/staging/iio/iio_dummy_evgen.c         | 2 +-
 drivers/staging/iio/iio_simple_dummy.c        | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)
drivers/staging/iio/Documentation/iio_utils.h +1 -1
index bd6982c..aa9570a 100644
@@ -23,7 +23,7 @@
 #define FORMAT_SCAN_ELEMENTS_DIR "%s/scan_elements"
 #define FORMAT_TYPE_FILE "%s_type"
 
-const char *iio_dir = "/sys/bus/iio/devices/";
+const char iio_dir[] = "/sys/bus/iio/devices/";
 
 /**
  * iioutils_break_up_name() - extract generic name from full channel name
drivers/staging/iio/Documentation/lsiio.c +2 -2
index 98a0de0..50b0c70 100644
@@ -26,8 +26,8 @@ static enum verbosity {
 	VERBLEVEL_SENSORS,	/* 1 lists sensors */
 } verblevel = VERBLEVEL_DEFAULT;
 
-const char *type_device = "iio:device";
-const char *type_trigger = "trigger";
+const char type_device[] = "iio:device";
+const char type_trigger[] = "trigger";
 
 
 static inline int check_prefix(const char *str, const char *prefix)
drivers/staging/iio/iio_dummy_evgen.c +1 -1
index 59ad5a3..866e366 100644
@@ -47,7 +47,7 @@ struct iio_dummy_eventgen {
 
 /* We can only ever have one instance of this 'device' */
 static struct iio_dummy_eventgen *iio_evgen;
-static const char *iio_evgen_name = "iio_dummy_evgen";
+static const char iio_evgen_name[] = "iio_dummy_evgen";
 
 static void iio_dummy_event_irqmask(struct irq_data *d)
 {
drivers/staging/iio/iio_simple_dummy.c +1 -1
index 8341dce..4fe1073 100644
@@ -36,7 +36,7 @@ module_param(instances, int, 0);
 static struct iio_dev **iio_dummy_devs;
 
 /* Fake a name for the part number, usually obtained from the id table */
-static const char *iio_dummy_part_number = "iio_dummy_part_no";
+static const char iio_dummy_part_number[] = "iio_dummy_part_no";
 
 /**
  * struct iio_dummy_accel_calibscale - realworld to register mapping
Signature · 1 line
1.9.1
#1 lore raw
Quoted 33 lines · Cristina Opriceana

Replace const char * with const char [] as the first one is represented in memory as a pointer which points to a string and the second one only as a single variable in which it copies the contents.

---
This can be tested by generating assembly code for the two cases; This platform also offers a simple view: http://assembly.ynh.io/.

 drivers/staging/iio/Documentation/iio_utils.h | 2 +-
 drivers/staging/iio/Documentation/lsiio.c     | 4 ++--
 drivers/staging/iio/iio_dummy_evgen.c         | 2 +-
 drivers/staging/iio/iio_simple_dummy.c        | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)
drivers/staging/iio/Documentation/iio_utils.h +1 -1
index bd6982c..aa9570a 100644
@@ -23,7 +23,7 @@
 #define FORMAT_SCAN_ELEMENTS_DIR "%s/scan_elements"
 #define FORMAT_TYPE_FILE "%s_type"
 
-const char *iio_dir = "/sys/bus/iio/devices/";
+const char iio_dir[] = "/sys/bus/iio/devices/";
 
 /**
  * iioutils_break_up_name() - extract generic name from full channel name
drivers/staging/iio/Documentation/lsiio.c +0 -0
index 98a0de0..50b0c70 100644

drivers/staging/iio/Documentation/lsiio.c static enum verbosity { · line 30

Quoted 7 lines
drivers/staging/iio/Documentation/lsiio.c +2 -2
@@ -26,8 +26,8 @@ static enum verbosity {
        VERBLEVEL_SENSORS,      /* 1 lists sensors */
 } verblevel = VERBLEVEL_DEFAULT;
 
-const char *type_device = "iio:device";
-const char *type_trigger = "trigger";
+const char type_device[] = "iio:device";
+const char type_trigger[] = "trigger";

This will generate a conflict when merged with IIO tree, since parts of Documentation/
(e.g lsiio.c iio_utils.h) were moved out of stating.

https://git.kernel.org/cgit/linux/kernel/git/jic23/iio.git/commit/?h=testing&id=817020cfb3a2649064a1e14e083934234e2c208d

Quoted 21 lines
drivers/staging/iio/Documentation/lsiio.c +0 -0
 static inline int check_prefix(const char *str, const char *prefix)
drivers/staging/iio/iio_dummy_evgen.c +1 -1
index 59ad5a3..866e366 100644
@@ -47,7 +47,7 @@ struct iio_dummy_eventgen {
 
 /* We can only ever have one instance of this 'device' */
 static struct iio_dummy_eventgen *iio_evgen;
-static const char *iio_evgen_name = "iio_dummy_evgen";
+static const char iio_evgen_name[] = "iio_dummy_evgen";
 
 static void iio_dummy_event_irqmask(struct irq_data *d)
 {
drivers/staging/iio/iio_simple_dummy.c +0 -0
index 8341dce..4fe1073 100644

drivers/staging/iio/iio_simple_dummy.c module_param(instances, int, 0); · line 42

Quoted 8 lines
drivers/staging/iio/iio_simple_dummy.c +1 -1
@@ -36,7 +36,7 @@ module_param(instances, int, 0);
 static struct iio_dev **iio_dummy_devs;
 
 /* Fake a name for the part number, usually obtained from the id table */
-static const char *iio_dummy_part_number = "iio_dummy_part_no";
+static const char iio_dummy_part_number[] = "iio_dummy_part_no";
 
 /**
  * struct iio_dummy_accel_calibscale - realworld to register mapping

I'm not sure I see the benefit of this patch.

Any other opinions?

Daniel.