changeset 30aada507f03 in /z/repo/gem5 details: http://repo.gem5.org/gem5?cmd=changeset;node=30aada507f03 description: sim: Patch to fix the statfs build
See developers mailing list. Trying to unbreak statfs. Testing Done: Builds on FreeBSD now. Reviewed at http://reviews.gem5.org/r/3803/ Signed-off-by: Jason Lowe-Power <ja...@lowepower.com> diffstat: src/sim/syscall_emul.hh | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) diffs (54 lines): diff -r 83677ded6358 -r 30aada507f03 src/sim/syscall_emul.hh --- a/src/sim/syscall_emul.hh Thu Feb 09 19:00:00 2017 -0500 +++ b/src/sim/syscall_emul.hh Thu Feb 09 19:03:55 2017 -0500 @@ -70,6 +70,8 @@ #include <sys/stat.h> #if (NO_STATFS == 0) #include <sys/statfs.h> +#else +#include <sys/mount.h> #endif #include <sys/time.h> #include <sys/uio.h> @@ -527,21 +529,37 @@ { TypedBufferArg<typename OS::tgt_statfs> tgt(addr); -#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD__) - tgt->f_type = 0; + tgt->f_type = TheISA::htog(host->f_type); +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) + tgt->f_bsize = TheISA::htog(host->f_iosize); #else - tgt->f_type = TheISA::htog(host->f_type); + tgt->f_bsize = TheISA::htog(host->f_bsize); #endif - tgt->f_bsize = TheISA::htog(host->f_bsize); tgt->f_blocks = TheISA::htog(host->f_blocks); tgt->f_bfree = TheISA::htog(host->f_bfree); tgt->f_bavail = TheISA::htog(host->f_bavail); tgt->f_files = TheISA::htog(host->f_files); tgt->f_ffree = TheISA::htog(host->f_ffree); memcpy(&tgt->f_fsid, &host->f_fsid, sizeof(host->f_fsid)); +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) + tgt->f_namelen = TheISA::htog(host->f_namemax); + tgt->f_frsize = TheISA::htog(host->f_bsize); +#elif defined(__APPLE__) + tgt->f_namelen = 0; + tgt->f_frsize = 0; +#else tgt->f_namelen = TheISA::htog(host->f_namelen); tgt->f_frsize = TheISA::htog(host->f_frsize); +#endif +#if defined(__linux__) memcpy(&tgt->f_spare, &host->f_spare, sizeof(host->f_spare)); +#else + /* + * The fields are different sizes per OS. Don't bother with + * f_spare or f_reserved on non-Linux for now. + */ + memset(&tgt->f_spare, 0, sizeof(tgt->f_spare)); +#endif tgt.copyOut(mem); } _______________________________________________ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev