The regulator_init function does no longer use the global defined function.
Signed-off-by: Daniel Lezcano <daniel.lezc...@free.fr> --- powerdebug.c | 5 ++++- regulator.c | 18 ++++++------------ regulator.h | 2 +- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/powerdebug.c b/powerdebug.c index 81875eb..5f23e0c 100644 --- a/powerdebug.c +++ b/powerdebug.c @@ -353,8 +353,11 @@ int main(int argc, char **argv) return 1; } - if (regulator_init()) + regulators_info = regulator_init(&numregulators); + if (!regulators_info) { + printf("not enough memory to allocate regulators info\n"); return 1; + } if (mainloop(options)) return 1; diff --git a/regulator.c b/regulator.c index 91c3903..ddbeea3 100644 --- a/regulator.c +++ b/regulator.c @@ -17,15 +17,17 @@ #define SYSFS_REGULATOR "/sys/class/regulator" -int regulator_init(void) +struct regulator_info *regulator_init(int *nr_regulators) { DIR *regdir; struct dirent *item; + *nr_regulators = 0; + regdir = opendir(SYSFS_REGULATOR); if (!regdir) { fprintf(stderr, "failed to open '%s': %m\n", SYSFS_REGULATOR); - return -1; + return NULL; } while ((item = readdir(regdir))) { @@ -36,20 +38,12 @@ int regulator_init(void) if (!strcmp(item->d_name, "..")) continue; - numregulators++; + (*nr_regulators)++; } closedir(regdir); - regulators_info = (struct regulator_info *)malloc(numregulators* - sizeof(struct regulator_info)); - if (!regulators_info) { - fprintf(stderr, "init_regulator_ds: Not enough memory to " - "read information for %d regulators!\n", numregulators); - return(1); - } - - return(0); + return malloc(*nr_regulators * sizeof(struct regulator_info)); } static void print_string_val(char *name, char *val) diff --git a/regulator.h b/regulator.h index d46114a..a753299 100644 --- a/regulator.h +++ b/regulator.h @@ -40,6 +40,6 @@ struct regulator_info { int num_users; } *regulators_info; -extern int regulator_init(void); +extern struct regulator_info *regulator_init(int *nr_regulators); extern int regulator_read_info(void); extern void regulator_print_info(struct regulator_info *reg_info, int verbose); -- 1.7.1 _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev