process.hh (5183:b4decf133fe4) process.hh (5282:2dba627b6646)
1/*
2 * Copyright (c) 2001-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 130 unchanged lines hidden (view full) ---

139
140 public:
141 PageTable *pTable;
142
143 //This id is assigned by m5 and is used to keep process' tlb entries
144 //separated.
145 uint64_t M5_pid;
146
1/*
2 * Copyright (c) 2001-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 130 unchanged lines hidden (view full) ---

139
140 public:
141 PageTable *pTable;
142
143 //This id is assigned by m5 and is used to keep process' tlb entries
144 //separated.
145 uint64_t M5_pid;
146
147 class FdMap
148 {
149 public:
150 int fd;
151 std::string filename;
152 int mode;
153 int flags;
154 bool isPipe;
155 int readPipeSource;
156 uint64_t fileOffset;
157
158
159 FdMap()
160 {
161 fd = -1;
162 filename = "NULL";
163 mode = 0;
164 flags = 0;
165 isPipe = false;
166 readPipeSource = 0;
167 fileOffset = 0;
168
169 }
170
171 void serialize(std::ostream &os);
172 void unserialize(Checkpoint *cp, const std::string &section);
173
174 };
175
147 private:
148 // file descriptor remapping support
176 private:
177 // file descriptor remapping support
149 static const int MAX_FD = 256; // max legal fd value
150 int fd_map[MAX_FD+1];
178 static const int MAX_FD = 256; // max legal fd value
179 FdMap fd_map[MAX_FD+1];
151
180
181
152 public:
153 // static helper functions to generate file descriptors for constructor
154 static int openInputFile(const std::string &filename);
155 static int openOutputFile(const std::string &filename);
156
157 // override of virtual SimObject method: register statistics
158 virtual void regStats();
159
160 // register a thread context for this process.
161 // returns tc's cpu number (index into threadContexts[])
162 int registerThreadContext(ThreadContext *tc);
163
164
165 void replaceThreadContext(ThreadContext *tc, int tcIndex);
166
167 // map simulator fd sim_fd to target fd tgt_fd
168 void dup_fd(int sim_fd, int tgt_fd);
169
170 // generate new target fd for sim_fd
182 public:
183 // static helper functions to generate file descriptors for constructor
184 static int openInputFile(const std::string &filename);
185 static int openOutputFile(const std::string &filename);
186
187 // override of virtual SimObject method: register statistics
188 virtual void regStats();
189
190 // register a thread context for this process.
191 // returns tc's cpu number (index into threadContexts[])
192 int registerThreadContext(ThreadContext *tc);
193
194
195 void replaceThreadContext(ThreadContext *tc, int tcIndex);
196
197 // map simulator fd sim_fd to target fd tgt_fd
198 void dup_fd(int sim_fd, int tgt_fd);
199
200 // generate new target fd for sim_fd
171 int alloc_fd(int sim_fd);
201 int alloc_fd(int sim_fd, std::string filename, int flags, int mode, bool pipe);
172
173 // free target fd (e.g., after close)
174 void free_fd(int tgt_fd);
175
176 // look up simulator fd for given target fd
177 int sim_fd(int tgt_fd);
178
202
203 // free target fd (e.g., after close)
204 void free_fd(int tgt_fd);
205
206 // look up simulator fd for given target fd
207 int sim_fd(int tgt_fd);
208
209 // look up simulator fd_map object for a given target fd
210 FdMap * sim_fd_obj(int tgt_fd);
211
212 // fix all offsets for currently open files and save them
213 void fix_file_offsets();
214
215 // find all offsets for currently open files and save them
216 void find_file_offsets();
217
218 // set the source of this read pipe for a checkpoint resume
219 void setReadPipeSource(int read_pipe_fd, int source_fd);
220
179 virtual void syscall(int64_t callnum, ThreadContext *tc) = 0;
180
181 // check if the this addr is on the next available page and allocate it
182 // if it's not we'll panic
183 bool checkAndAllocNextPage(Addr vaddr);
184
185 void serialize(std::ostream &os);
186 void unserialize(Checkpoint *cp, const std::string &section);

--- 91 unchanged lines hidden ---
221 virtual void syscall(int64_t callnum, ThreadContext *tc) = 0;
222
223 // check if the this addr is on the next available page and allocate it
224 // if it's not we'll panic
225 bool checkAndAllocNextPage(Addr vaddr);
226
227 void serialize(std::ostream &os);
228 void unserialize(Checkpoint *cp, const std::string &section);

--- 91 unchanged lines hidden ---