cooperative-computing-lab/cctools — pull request #595 by batrick (2014-11-07 18:33:17+00:00)
Title: Include full dirent information for getdents.

Also fixes the kernel structure definition and d_reclen.

From #593:

Parrot currently discards information returned in the dirent structure by readdir, for the local service. Right now, it only cares about dirent.d_name.

This causes a problem for glibc's implementation of
sysconf(_SC_NPROCESSORS_CONF) in __get_nprocs_conf. __get_nprocs_conf relies on
the sysfs file system returning the file type in dirent.d_type, specifically
looking for CPU directories like cpu0. Because all entries returned by Parrot
look like regular files, glibc thinks there are 0 cpus and returns 0.

This causes OpenCL to fail to run because it depends on this value for scheduling. This has caused problems for Dan Bradley, reported in [1].

The fix for this will be to save all of the dirent information we can and pass that on to applications.

[1] https://listserv.nd.edu/cgi-bin/wa?A2=ind1410&L=CCTOOLS&F=&S=&P=5902

Fixes #593.