Message ID | 1462460762-19028-1-git-send-email-robert@sixbynine.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, May 05, 2016 at 04:06:02PM +0100, Robert Bragg wrote: > Fixed a rebase mistake where I dropped the use of the igt_ioctl wrapper in > do_ioctl(). > > I'm not entirely sure a.t.m whether the assertion change from ret == 0 to > ret >= 0 will break anything, though comparing run-tests.sh -s -t basic > before/after didn't seem to highlight a problem for me. > > --- >8 --- > > In preparation for testing DRM_IOCTL_I915_PERF_OPEN which returns a file > descriptor this allows us to get the return value of ioctl called by the > do_ioctl() utility. > > Signed-off-by: Robert Bragg <robert@sixbynine.org> > --- > lib/drmtest.h | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/lib/drmtest.h b/lib/drmtest.h > index c391464..b917ecb 100644 > --- a/lib/drmtest.h > +++ b/lib/drmtest.h > @@ -104,11 +104,16 @@ bool is_i915_device(int fd); > * > * This macro wraps drmIoctl() and uses igt_assert to check that it has been > * successfully executed. > + * > + * It's implemented using a gcc statement expression to still be able to > + * assign the ioctl's return value after the assertion too. > */ > -#define do_ioctl(fd, ioc, ioc_data) do { \ > - igt_assert_eq(igt_ioctl((fd), (ioc), (ioc_data)), 0); \ > +#define do_ioctl(fd, ioc, ioc_data) ({ \ > + int _ret = igt_ioctl((fd), (ioc), (ioc_data)); \ > + igt_assert(_ret >= 0); \ And now we have the unhelpful error message !(_ret >= 0) For the single user, just don't use do_ioctl. -Chris
On Thu, May 5, 2016 at 4:59 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote: > On Thu, May 05, 2016 at 04:06:02PM +0100, Robert Bragg wrote: > > Fixed a rebase mistake where I dropped the use of the igt_ioctl wrapper > in > > do_ioctl(). > > > > I'm not entirely sure a.t.m whether the assertion change from ret == 0 to > > ret >= 0 will break anything, though comparing run-tests.sh -s -t basic > > before/after didn't seem to highlight a problem for me. > > > > --- >8 --- > > > > In preparation for testing DRM_IOCTL_I915_PERF_OPEN which returns a file > > descriptor this allows us to get the return value of ioctl called by the > > do_ioctl() utility. > > > > Signed-off-by: Robert Bragg <robert@sixbynine.org> > > --- > > lib/drmtest.h | 11 ++++++++--- > > 1 file changed, 8 insertions(+), 3 deletions(-) > > > > diff --git a/lib/drmtest.h b/lib/drmtest.h > > index c391464..b917ecb 100644 > > --- a/lib/drmtest.h > > +++ b/lib/drmtest.h > > @@ -104,11 +104,16 @@ bool is_i915_device(int fd); > > * > > * This macro wraps drmIoctl() and uses igt_assert to check that it has > been > > * successfully executed. > > + * > > + * It's implemented using a gcc statement expression to still be able to > > + * assign the ioctl's return value after the assertion too. > > */ > > -#define do_ioctl(fd, ioc, ioc_data) do { \ > > - igt_assert_eq(igt_ioctl((fd), (ioc), (ioc_data)), 0); \ > > +#define do_ioctl(fd, ioc, ioc_data) ({ \ > > + int _ret = igt_ioctl((fd), (ioc), (ioc_data)); \ > > + igt_assert(_ret >= 0); \ > > And now we have the unhelpful error message !(_ret >= 0) > > For the single user, just don't use do_ioctl. > Ah, right, not great. I suppose having something like igt_assert((_ret = igt_ioctl((fd), (ioc), (ioc_data))) >= 0); might be a bit better, but adds noise to the simpler cases. Sounds ok to just have a special case ioctl wrapper in tests/perf.c. - Robert > -Chris > > -- > Chris Wilson, Intel Open Source Technology Centre >
diff --git a/lib/drmtest.h b/lib/drmtest.h index c391464..b917ecb 100644 --- a/lib/drmtest.h +++ b/lib/drmtest.h @@ -104,11 +104,16 @@ bool is_i915_device(int fd); * * This macro wraps drmIoctl() and uses igt_assert to check that it has been * successfully executed. + * + * It's implemented using a gcc statement expression to still be able to + * assign the ioctl's return value after the assertion too. */ -#define do_ioctl(fd, ioc, ioc_data) do { \ - igt_assert_eq(igt_ioctl((fd), (ioc), (ioc_data)), 0); \ +#define do_ioctl(fd, ioc, ioc_data) ({ \ + int _ret = igt_ioctl((fd), (ioc), (ioc_data)); \ + igt_assert(_ret >= 0); \ errno = 0; \ -} while (0) + _ret; \ +}) /** * do_ioctl_err:
Fixed a rebase mistake where I dropped the use of the igt_ioctl wrapper in do_ioctl(). I'm not entirely sure a.t.m whether the assertion change from ret == 0 to ret >= 0 will break anything, though comparing run-tests.sh -s -t basic before/after didn't seem to highlight a problem for me. --- >8 --- In preparation for testing DRM_IOCTL_I915_PERF_OPEN which returns a file descriptor this allows us to get the return value of ioctl called by the do_ioctl() utility. Signed-off-by: Robert Bragg <robert@sixbynine.org> --- lib/drmtest.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)