gem5 v24.0.0.0
Loading...
Searching...
No Matches
shared_memory_server.hh
Go to the documentation of this file.
1/*
2 * Copyright 2022 Google, Inc.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met: redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer;
8 * redistributions in binary form must reproduce the above copyright
9 * notice, this list of conditions and the following disclaimer in the
10 * documentation and/or other materials provided with the distribution;
11 * neither the name of the copyright holders nor the names of its
12 * contributors may be used to endorse or promote products derived from
13 * this software without specific prior written permission.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#ifndef __MEM_SHARED_MEMORY_SERVER_HH__
29#define __MEM_SHARED_MEMORY_SERVER_HH__
30
31#include <memory>
32#include <string>
33#include <unordered_map>
34
35#include "base/pollevent.hh"
36#include "base/socket.hh"
37#include "params/SharedMemoryServer.hh"
38#include "sim/sim_object.hh"
39#include "sim/system.hh"
40
41namespace gem5
42{
43namespace memory
44{
45
47{
48 public:
49 enum class RequestType : int
50 {
51 kGetPhysRange = 0,
52 };
53
54 explicit SharedMemoryServer(const SharedMemoryServerParams& params);
56
57 private:
59 {
60 public:
61 BaseShmPollEvent(int fd, SharedMemoryServer* shm_server);
62
63 const std::string& name() const;
64
65 protected:
66 bool tryReadAll(void* buffer, size_t size);
67
69 std::string eventName;
70 };
71
73 {
74 public:
76 void process(int revent) override;
77 };
78
80 {
81 public:
83 void process(int revent) override;
84 };
85
87
89
90 std::unique_ptr<ListenSocketEvent> listenSocketEvent;
91 std::unordered_map<int, std::unique_ptr<ClientSocketEvent>>
93};
94
95} // namespace memory
96} // namespace gem5
97
98#endif // __MEM_SHARED_MEMORY_SERVER_HH__
Abstract superclass for simulation objects.
BaseShmPollEvent(int fd, SharedMemoryServer *shm_server)
SharedMemoryServer(const SharedMemoryServerParams &params)
std::unique_ptr< ListenSocketEvent > listenSocketEvent
std::unordered_map< int, std::unique_ptr< ClientSocketEvent > > clientSocketEvents
const Params & params() const
Bitfield< 14, 12 > fd
Definition types.hh:150
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
std::unique_ptr< ListenSocket > ListenSocketPtr
Definition socket.hh:112
Definition mem.h:38

Generated on Tue Jun 18 2024 16:24:05 for gem5 by doxygen 1.11.0