The Pedigree Project  0.1
Disk.h
1 /*
2  * Copyright (c) 2008-2014, Pedigree Developers
3  *
4  * Please see the CONTRIB file in the root of the source tree for a full
5  * list of contributors.
6  *
7  * Permission to use, copy, modify, and distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 #ifndef MACHINE_DISK_H
21 #define MACHINE_DISK_H
22 
23 #include "pedigree/kernel/compiler.h"
24 #include "pedigree/kernel/machine/Device.h"
25 #include "pedigree/kernel/processor/types.h"
26 
27 class String;
28 
32 class EXPORTED_PUBLIC Disk : public Device
33 {
34  public:
35  enum SubType
36  {
37  ATA = 0,
38  ATAPI
39  };
40 
41  Disk();
42  Disk(Device *p);
43  virtual ~Disk();
44 
45  virtual Type getType();
46 
47  virtual SubType getSubType();
48 
49  virtual void getName(String &str);
50 
51  virtual void dump(String &str);
52 
67  virtual uintptr_t read(uint64_t location);
68 
76  virtual void write(uint64_t location);
77 
93  virtual void align(uint64_t location);
94 
101  virtual size_t getSize() const;
102 
109  virtual size_t getBlockSize() const;
110 
120  virtual void pin(uint64_t location);
121 
125  virtual void unpin(uint64_t location);
126 
147  virtual bool cacheIsCritical();
148 
159  virtual void flush(uint64_t location);
160 };
161 
162 #endif
virtual void dump(String &str)
Definition: Device.h:250
virtual void getName(String &str)
Definition: Device.cc:121
A disk device - a block device in UNIX terms.
Definition: Device.h:54
Definition: String.h:49
Definition: Disk.h:32
Definition: Device.h:43
virtual Type getType()
Definition: Device.h:163
Type
Definition: Device.h:50