The Pedigree Project  0.1
IoPort.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 KERNEL_PROCESSOR_IOPORT_H
21 #define KERNEL_PROCESSOR_IOPORT_H
22 
23 #include "pedigree/kernel/compiler.h"
24 #include "pedigree/kernel/processor/IoBase.h"
25 #include "pedigree/kernel/processor/types.h"
26 
30 #if !defined(KERNEL_PROCESSOR_NO_PORT_IO)
31 
35 {
36  public:
38  IoPort(const char *name);
40  virtual ~IoPort();
41 
42  //
43  // IoBase Interface
44  //
45  virtual size_t size() const;
46  virtual uint8_t read8(size_t offset = 0);
47  virtual uint16_t read16(size_t offset = 0);
48  virtual uint32_t read32(size_t offset = 0);
49 #if defined(BITS_64)
50  virtual uint64_t read64(size_t offset = 0);
51 #endif
52  virtual void write8(uint8_t value, size_t offset = 0);
53  virtual void write16(uint16_t value, size_t offset = 0);
54  virtual void write32(uint32_t value, size_t offset = 0);
55 #if defined(BITS_64)
56  virtual void write64(uint64_t value, size_t offset = 0);
57 #endif
58  virtual operator bool() const;
59 
61  io_port_t base() const;
64  const char *name() const;
66  void free();
71  bool allocate(io_port_t ioPort, size_t size);
72 
73  private:
76  IoPort(const IoPort &);
79  IoPort &operator=(const IoPort &);
80 
82  io_port_t m_IoPort;
84  size_t m_Size;
86  const char *m_Name;
87 };
88 
89 #endif
90 
93 #endif
io_port_t m_IoPort
Definition: IoPort.h:82
IoBase & operator=(const IoBase &)
virtual size_t size() const =0
virtual void write8(uint8_t value, size_t offset=0)=0
virtual uint64_t read64(size_t offset=0)=0
const char * m_Name
Definition: IoPort.h:86
virtual uint16_t read16(size_t offset=0)=0
Abstrace base class for hardware I/O capabilities.
Definition: IoBase.h:31
virtual void write16(uint16_t value, size_t offset=0)=0
I/O port range.
Definition: IoPort.h:34
virtual uint32_t read32(size_t offset=0)=0
virtual uint8_t read8(size_t offset=0)=0
virtual void write64(uint64_t value, size_t offset=0)=0
virtual void write32(uint32_t value, size_t offset=0)=0
size_t m_Size
Definition: IoPort.h:84