From aa56ed4dc50255869e72b9399c671c21d88e88d4 Mon Sep 17 00:00:00 2001 From: Brandon Potter Date: Wed, 18 Apr 2018 14:42:31 -0400 Subject: [PATCH] syscall_emul: style changes and FDArray refactor Some members were defined as public when they should have been privately declared so these were moved to the appropriate spot. The operator[] had inline specified for for an in-class definition which is redundant since inline definitions are always implicitly inline. Private members had the leading underscore applied to them to denote that they're private (consistent with style guide). Changed static const defined class variable into a constexpr with brace-list initialization. Change-Id: If3054416b57827d1542e9ebab428d67d0e767723 Reviewed-on: https://gem5-review.googlesource.com/12110 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power --- src/sim/fd_array.cc | 30 +++++++++++++------------- src/sim/fd_array.hh | 51 ++++++++++++++++++++++++--------------------- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/src/sim/fd_array.cc b/src/sim/fd_array.cc index 174236e3e..0600e9ffe 100644 --- a/src/sim/fd_array.cc +++ b/src/sim/fd_array.cc @@ -48,15 +48,15 @@ FDArray::FDArray(std::string const& input, std::string const& output, std::string const& errout) - : _input(input), _output(output), _errout(errout), _fdArray(), - imap {{"", -1}, - {"cin", STDIN_FILENO}, - {"stdin", STDIN_FILENO}}, - oemap{{"", -1}, - {"cout", STDOUT_FILENO}, - {"stdout", STDOUT_FILENO}, - {"cerr", STDERR_FILENO}, - {"stderr", STDERR_FILENO}} + : _fdArray(), _input(input), _output(output), _errout(errout), + _imap {{"", -1}, + {"cin", STDIN_FILENO}, + {"stdin", STDIN_FILENO}}, + _oemap{{"", -1}, + {"cout", STDOUT_FILENO}, + {"stdout", STDOUT_FILENO}, + {"cerr", STDERR_FILENO}, + {"stderr", STDERR_FILENO}} { int sim_fd; std::map::iterator it; @@ -65,7 +65,7 @@ FDArray::FDArray(std::string const& input, std::string const& output, * Search through the input options and setup the default fd if match is * found; otherwise, open an input file and seek to location. */ - if ((it = imap.find(input)) != imap.end()) + if ((it = _imap.find(input)) != _imap.end()) sim_fd = it->second; else sim_fd = openInputFile(input); @@ -77,7 +77,7 @@ FDArray::FDArray(std::string const& input, std::string const& output, * Search through the output/error options and setup the default fd if * match is found; otherwise, open an output file and seek to location. */ - if ((it = oemap.find(output)) != oemap.end()) + if ((it = _oemap.find(output)) != _oemap.end()) sim_fd = it->second; else sim_fd = openOutputFile(output); @@ -88,7 +88,7 @@ FDArray::FDArray(std::string const& input, std::string const& output, if (output == errout) ; /* Reuse the same file descriptor if these match. */ - else if ((it = oemap.find(errout)) != oemap.end()) + else if ((it = _oemap.find(errout)) != _oemap.end()) sim_fd = it->second; else sim_fd = openOutputFile(errout); @@ -156,7 +156,7 @@ FDArray::restoreFileOffsets() stdin_ffd->setFileOffset(0); } - if ((it = imap.find(stdin_ffd->getFileName())) != imap.end()) { + if ((it = _imap.find(stdin_ffd->getFileName())) != _imap.end()) { stdin_ffd->setSimFD(it->second); } else { stdin_ffd->setSimFD(openInputFile(stdin_ffd->getFileName())); @@ -180,7 +180,7 @@ FDArray::restoreFileOffsets() stdout_ffd->setFileOffset(0); } - if ((it = oemap.find(stdout_ffd->getFileName())) != oemap.end()) { + if ((it = _oemap.find(stdout_ffd->getFileName())) != _oemap.end()) { stdout_ffd->setSimFD(it->second); } else { stdout_ffd->setSimFD(openOutputFile(stdout_ffd->getFileName())); @@ -207,7 +207,7 @@ FDArray::restoreFileOffsets() if (stdout_ffd->getFileName() == stderr_ffd->getFileName()) { /* Reuse the same sim_fd file descriptor if these match. */ stderr_ffd->setSimFD(stdout_ffd->getSimFD()); - } else if ((it = oemap.find(stderr_ffd->getFileName())) != oemap.end()) { + } else if ((it = _oemap.find(stderr_ffd->getFileName())) != _oemap.end()) { stderr_ffd->setSimFD(it->second); } else { stderr_ffd->setSimFD(openOutputFile(stderr_ffd->getFileName())); diff --git a/src/sim/fd_array.hh b/src/sim/fd_array.hh index 70a7f47da..ac6c07f95 100644 --- a/src/sim/fd_array.hh +++ b/src/sim/fd_array.hh @@ -44,9 +44,6 @@ class FDArray { - private: - static const int NUM_FDS = 1024; - public: /** * Initialize the file descriptor array and set the standard file @@ -59,10 +56,6 @@ class FDArray FDArray(std::string const& input, std::string const& output, std::string const& errout); - std::string _input; - std::string _output; - std::string _errout; - /** * Figure out the file offsets for all currently open files and save them * the offsets during the calls to drain by the owning process. @@ -75,17 +68,30 @@ class FDArray */ void restoreFileOffsets(); + /** + * Put the pointer specified by fdep into the _fdArray entry indexed + * by tgt_fd. + * @param tgt_fd Use target file descriptors to index the array. + * @param fdep Incoming pointer used to set the entry pointed to by tgt_fd. + */ + void setFDEntry(int tgt_fd, std::shared_ptr fdep); + /** * Treat this object like a normal array in using the subscript operator * to pull entries out of it. * @param tgt_fd Use target file descriptors to index the array. */ - inline std::shared_ptr + std::shared_ptr operator[](int tgt_fd) { return getFDEntry(tgt_fd); } + /** + * Return the size of the _fdArray field + */ + int getSize() const { return _fdArray.size(); } + /** * Step through the file descriptor array and find the first available * entry which is denoted as being free by being a 'nullptr'. That file @@ -98,19 +104,6 @@ class FDArray */ int allocFD(std::shared_ptr fdp); - /** - * Return the size of the _fdArray field - */ - int getSize() const { return _fdArray.size(); } - - /** - * Put the pointer specified by fdep into the _fdArray entry indexed - * by tgt_fd. - * @param tgt_fd Use target file descriptors to index the array. - * @param fdep Incoming pointer used to set the entry pointed to by tgt_fd. - */ - void setFDEntry(int tgt_fd, std::shared_ptr fdep); - /** * Try to close the host file descriptor. If successful, set the * specified file descriptor entry object pointer to nullptr. @@ -141,7 +134,17 @@ class FDArray * Hold pointers to the file descriptor entries. The array size is * statically defined by the operating system. */ - std::array, NUM_FDS> _fdArray; + static constexpr size_t _numFDs {1024}; + std::array, _numFDs> _fdArray; + + /** + * Hold param strings passed from the Process class which indicate + * the filename for each of the corresponding files or some keyword + * indicating the use of standard file descriptors. + */ + std::string _input; + std::string _output; + std::string _errout; /** * Hold strings which represent the default values which are checked @@ -149,8 +152,8 @@ class FDArray * provided doesn't hit against these maps, then a file is opened on the * host instead of using the host's standard file descriptors. */ - std::map imap; - std::map oemap; + std::map _imap; + std::map _oemap; }; #endif // __FD_ARRAY_HH__ -- 2.30.2