DirectoryMemory.hh (10522:13312d6e1caf) | DirectoryMemory.hh (11025:4872dbdea907) |
---|---|
1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 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; --- 33 unchanged lines hidden (view full) --- 42{ 43 public: 44 typedef RubyDirectoryMemoryParams Params; 45 DirectoryMemory(const Params *p); 46 ~DirectoryMemory(); 47 48 void init(); 49 | 1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 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; --- 33 unchanged lines hidden (view full) --- 42{ 43 public: 44 typedef RubyDirectoryMemoryParams Params; 45 DirectoryMemory(const Params *p); 46 ~DirectoryMemory(); 47 48 void init(); 49 |
50 uint64 mapAddressToLocalIdx(PhysAddress address); 51 static uint64 mapAddressToDirectoryVersion(PhysAddress address); | 50 uint64_t mapAddressToLocalIdx(Addr address); 51 static uint64_t mapAddressToDirectoryVersion(Addr address); |
52 | 52 |
53 uint64 getSize() { return m_size_bytes; } | 53 uint64_t getSize() { return m_size_bytes; } |
54 | 54 |
55 bool isPresent(PhysAddress address); 56 AbstractEntry* lookup(PhysAddress address); 57 AbstractEntry* allocate(const PhysAddress& address, 58 AbstractEntry* new_entry); | 55 bool isPresent(Addr address); 56 AbstractEntry *lookup(Addr address); 57 AbstractEntry *allocate(Addr address, AbstractEntry* new_entry); |
59 60 void print(std::ostream& out) const; 61 void recordRequestType(DirectoryRequestType requestType); 62 63 private: 64 // Private copy constructor and assignment operator 65 DirectoryMemory(const DirectoryMemory& obj); 66 DirectoryMemory& operator=(const DirectoryMemory& obj); 67 68 private: 69 const std::string m_name; 70 AbstractEntry **m_entries; 71 // int m_size; // # of memory module blocks this directory is 72 // responsible for | 58 59 void print(std::ostream& out) const; 60 void recordRequestType(DirectoryRequestType requestType); 61 62 private: 63 // Private copy constructor and assignment operator 64 DirectoryMemory(const DirectoryMemory& obj); 65 DirectoryMemory& operator=(const DirectoryMemory& obj); 66 67 private: 68 const std::string m_name; 69 AbstractEntry **m_entries; 70 // int m_size; // # of memory module blocks this directory is 71 // responsible for |
73 uint64 m_size_bytes; 74 uint64 m_size_bits; 75 uint64 m_num_entries; | 72 uint64_t m_size_bytes; 73 uint64_t m_size_bits; 74 uint64_t m_num_entries; |
76 int m_version; 77 78 static int m_num_directories; 79 static int m_num_directories_bits; 80 static uint64_t m_total_size_bytes; 81 static int m_numa_high_bit; 82}; 83 84inline std::ostream& 85operator<<(std::ostream& out, const DirectoryMemory& obj) 86{ 87 obj.print(out); 88 out << std::flush; 89 return out; 90} 91 92#endif // __MEM_RUBY_STRUCTURES_DIRECTORYMEMORY_HH__ | 75 int m_version; 76 77 static int m_num_directories; 78 static int m_num_directories_bits; 79 static uint64_t m_total_size_bytes; 80 static int m_numa_high_bit; 81}; 82 83inline std::ostream& 84operator<<(std::ostream& out, const DirectoryMemory& obj) 85{ 86 obj.print(out); 87 out << std::flush; 88 return out; 89} 90 91#endif // __MEM_RUBY_STRUCTURES_DIRECTORYMEMORY_HH__ |