diff options
Diffstat (limited to 'src/sim/fd_entry.cc')
-rw-r--r-- | src/sim/fd_entry.cc | 133 |
1 files changed, 71 insertions, 62 deletions
diff --git a/src/sim/fd_entry.cc b/src/sim/fd_entry.cc index 72975a7a6..65bf7a81c 100644 --- a/src/sim/fd_entry.cc +++ b/src/sim/fd_entry.cc @@ -1,91 +1,100 @@ /* - * Copyright (c) 2015 Advanced Micro Devices, Inc. - * Copyright (c) 2001-2005 The Regents of The University of Michigan + * Copyright (c) 2016 Advanced Micro Devices, Inc. + * All rights reserved. + * + * For use for simulation and test purposes only * * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. * - * Authors: Nathan Binkert - * Steve Reinhardt + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * Author: Brandon Potter */ -#include "base/misc.hh" -#include "fd_entry.hh" +#include "sim/fd_entry.hh" -using namespace std; +#include "sim/serialize.hh" void FDEntry::serialize(CheckpointOut &cp) const { - SERIALIZE_SCALAR(fd); - if (fd != -1) { - SERIALIZE_SCALAR(mode); - SERIALIZE_SCALAR(flags); - SERIALIZE_SCALAR(isPipe); - SERIALIZE_SCALAR(readPipeSource); - SERIALIZE_SCALAR(fileOffset); - SERIALIZE_SCALAR(filename); - } - if (driver) - warn("EmulatedDriver objects do not currently support checkpoints"); + SERIALIZE_SCALAR(_closeOnExec); } void FDEntry::unserialize(CheckpointIn &cp) { - UNSERIALIZE_SCALAR(fd); - if (fd != -1) { - UNSERIALIZE_SCALAR(mode); - UNSERIALIZE_SCALAR(flags); - UNSERIALIZE_SCALAR(isPipe); - UNSERIALIZE_SCALAR(readPipeSource); - UNSERIALIZE_SCALAR(fileOffset); - UNSERIALIZE_SCALAR(filename); - } - driver = NULL; + UNSERIALIZE_SCALAR(_closeOnExec); } -bool -FDEntry::isFree() +void +FileFDEntry::serialize(CheckpointOut &cp) const +{ + SERIALIZE_SCALAR(_closeOnExec); + SERIALIZE_SCALAR(_flags); + SERIALIZE_SCALAR(_fileName); + SERIALIZE_SCALAR(_fileOffset); +} + +void +FileFDEntry::unserialize(CheckpointIn &cp) +{ + UNSERIALIZE_SCALAR(_closeOnExec); + UNSERIALIZE_SCALAR(_flags); + UNSERIALIZE_SCALAR(_fileName); + UNSERIALIZE_SCALAR(_fileOffset); +} + +void +PipeFDEntry::serialize(CheckpointOut &cp) const +{ + SERIALIZE_SCALAR(_closeOnExec); + SERIALIZE_SCALAR(_flags); + //SERIALIZE_SCALAR(_pipeEndType); +} + +void +PipeFDEntry::unserialize(CheckpointIn &cp) { - return (fd == -1 && driver == NULL); + UNSERIALIZE_SCALAR(_closeOnExec); + UNSERIALIZE_SCALAR(_flags); + //UNSERIALIZE_SCALAR(_pipeEndType); } void -FDEntry::set(int sim_fd, const string name, int flags, int mode, bool pipe) +DeviceFDEntry::serialize(CheckpointOut &cp) const { - fd = sim_fd; - filename = name; - this->flags = flags; - this->mode = mode; - isPipe = pipe; - fileOffset = 0; - readPipeSource = 0; - driver = NULL; + SERIALIZE_SCALAR(_closeOnExec); + //SERIALIZE_SCALAR(_driver); + SERIALIZE_SCALAR(_fileName); } void -FDEntry::reset() +DeviceFDEntry::unserialize(CheckpointIn &cp) { - set(-1, "", 0, 0, false); + UNSERIALIZE_SCALAR(_closeOnExec); + //UNSERIALIZE_SCALAR(_driver); + UNSERIALIZE_SCALAR(_fileName); } |