Messages in this thread | | | From | Ian Rogers <> | Date | Mon, 27 Nov 2023 12:41:32 -0800 | Subject | Re: [PATCH v4 07/53] tools api fs: Avoid reading whole file for a 1 byte bool |
| |
On Sun, Nov 5, 2023 at 7:56 PM Namhyung Kim <namhyung@kernel.org> wrote: > > On Thu, Nov 2, 2023 at 10:58 AM Ian Rogers <irogers@google.com> wrote: > > > > sysfs__read_bool used the first byte from a fully read file into a > > string. It then looked at the first byte's value. Avoid doing this and > > just read the first byte. > > > > Signed-off-by: Ian Rogers <irogers@google.com> > > --- > > tools/lib/api/fs/fs.c | 18 +++++++++--------- > > 1 file changed, 9 insertions(+), 9 deletions(-) > > > > diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c > > index 496812b5f1d2..4c35a689d1fc 100644 > > --- a/tools/lib/api/fs/fs.c > > +++ b/tools/lib/api/fs/fs.c > > @@ -447,15 +447,16 @@ int sysfs__read_str(const char *entry, char **buf, size_t *sizep) > > > > int sysfs__read_bool(const char *entry, bool *value) > > { > > - char *buf; > > - size_t size; > > - int ret; > > + struct io io; > > + char bf[16]; > > + int ret = 0; > > > > - ret = sysfs__read_str(entry, &buf, &size); > > - if (ret < 0) > > - return ret; > > + io.fd = open(entry, O_RDONLY); > > The entry is a name in sysfs, so you need to get the full name. > > Thanks, > Namhyung
Thanks, added in v5.
Ian
> > > + if (io.fd < 0) > > + return -errno; > > > > - switch (buf[0]) { > > + io__init(&io, io.fd, bf, sizeof(bf)); > > + switch (io__get_char(&io)) { > > case '1': > > case 'y': > > case 'Y': > > @@ -469,8 +470,7 @@ int sysfs__read_bool(const char *entry, bool *value) > > default: > > ret = -1; > > } > > - > > - free(buf); > > + close(io.fd); > > > > return ret; > > } > > -- > > 2.42.0.869.gea05f2083d-goog > >
| |