forked from MatiasBjorling/flashsim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ssd_ram.cpp
70 lines (57 loc) · 1.83 KB
/
ssd_ram.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* Copyright 2009, 2010 Brendan Tauras */
/* ssd_ram.cpp is part of FlashSim. */
/* FlashSim is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version. */
/* FlashSim is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. */
/* You should have received a copy of the GNU General Public License
* along with FlashSim. If not, see <http://www.gnu.org/licenses/>. */
/****************************************************************************/
/* Ram class
*
* Brendan Tauras 2009-06-03
*
* This is a basic implementation that only provides delay updates to events
* based on a delay value multiplied by the size (number of pages) needed to
* be read or written.
*/
#include <assert.h>
#include <stdio.h>
#include "ssd.h"
using namespace ssd;
Ram::Ram(double read_delay, double write_delay):
read_delay(read_delay),
write_delay(write_delay)
{
if(read_delay <= 0)
{
fprintf(stderr, "RAM: %s: constructor received negative read delay value\n\tsetting read delay to 0.0\n", __func__);
read_delay = 0.0;
}
if(write_delay <= 0)
{
fprintf(stderr, "RAM: %s: constructor received negative write delay value\n\tsetting write delay to 0.0\n", __func__);
write_delay = 0.0;
}
return;
}
Ram::~Ram(void)
{
return;
}
enum status Ram::read(Event &event)
{
assert(read_delay >= 0.0);
(void) event.incr_time_taken(read_delay * event.get_size());
return SUCCESS;
}
enum status Ram::write(Event &event)
{
assert(write_delay >= 0.0);
(void) event.incr_time_taken(write_delay * event.get_size());
return SUCCESS;
}