Quoting Andi Shyti (2020-02-28 23:51:24) > > > > +void dyn_sysfs_engines(int i915, int engines, const char *file, > > > > + void (*test)(int, int)) > > > > +{ > > > > + char buf[512]; > > > > + int len; > > > > + > > > > + lseek(engines, 0, SEEK_SET); > > > > + while ((len = syscall(SYS_getdents64, engines, buf, sizeof(buf))) > 0) { > > > > + void *ptr = buf; > > > > + > > > > + while (len) { > > > > + struct linux_dirent64 { > > > > + ino64_t d_ino; > > > > + off64_t d_off; > > > > + unsigned short d_reclen; > > > > + unsigned char d_type; > > > > + char d_name[]; > > > > + } *de = ptr; > > > > > > what is the need for having your own linux_dirent64? > > > > fdopendir() takes ownership of the fd, preventing reuse. And > > fdopendir(dup()) is getting ridiculous. > > why not using dirent64? It's still the same problem that it takes a DIR, assuming ownership of the fd. Why using linux_dirent64 because the manpage says so -- if you are going to use the syscall, you need to match it's calling conventions, not a middleman's. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx