serenity/Kernel/Debug.h.in
Liav A c4463cb5df Kernel: Add basic AHCI functionality
The hierarchy is AHCIController, AHCIPortHandler, AHCIPort and
SATADiskDevice. Each AHCIController has at least one AHCIPortHandler.

An AHCIPortHandler is an interrupt handler that takes care of
enumeration of handled AHCI ports when an interrupt occurs. Each
AHCIPort takes care of one SATADiskDevice, and later on we can add
support for Port multiplier.

When we implement support of Message signalled interrupts, we can spawn
many AHCIPortHandlers, and allow each one of them to be responsible for
a set of AHCIPorts.
2021-03-05 11:29:34 +01:00

320 lines
5.6 KiB
C

/*
* Copyright (c) 2021, Paul Scharnofske
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#ifndef ACPI_DEBUG
#cmakedefine01 ACPI_DEBUG
#endif
#ifndef APIC_DEBUG
#cmakedefine01 APIC_DEBUG
#endif
#ifndef APIC_SMP_DEBUG
#cmakedefine01 APIC_SMP_DEBUG
#endif
#ifndef ARP_DEBUG
#cmakedefine01 ARP_DEBUG
#endif
#ifndef BBFS_DEBUG
#cmakedefine01 BBFS_DEBUG
#endif
#ifndef BXVGA_DEBUG
#cmakedefine01 BXVGA_DEBUG
#endif
#ifndef COMMIT_DEBUG
#cmakedefine01 COMMIT_DEBUG
#endif
#ifndef CONTEXT_SWITCH_DEBUG
#cmakedefine01 CONTEXT_SWITCH_DEBUG
#endif
#ifndef CONTIGUOUS_VMOBJECT_DEBUG
#cmakedefine01 CONTIGUOUS_VMOBJECT_DEBUG
#endif
#ifndef E1000_DEBUG
#cmakedefine01 E1000_DEBUG
#endif
#ifndef ETHERNET_DEBUG
#cmakedefine01 ETHERNET_DEBUG
#endif
#ifndef ETHERNET_VERY_DEBUG
#cmakedefine01 ETHERNET_VERY_DEBUG
#endif
#ifndef EXEC_DEBUG
#cmakedefine01 EXEC_DEBUG
#endif
#ifndef EXT2_DEBUG
#cmakedefine01 EXT2_DEBUG
#endif
#ifndef EXT2_VERY_DEBUG
#cmakedefine01 EXT2_VERY_DEBUG
#endif
#ifndef FIFO_DEBUG
#cmakedefine01 FIFO_DEBUG
#endif
#ifndef FILEDESCRIPTION_DEBUG
#cmakedefine01 FILEDESCRIPTION_DEBUG
#endif
#ifndef FORK_DEBUG
#cmakedefine01 FORK_DEBUG
#endif
#ifndef FUTEX_DEBUG
#cmakedefine01 FUTEX_DEBUG
#endif
#ifndef FUTEXQUEUE_DEBUG
#cmakedefine01 FUTEXQUEUE_DEBUG
#endif
#ifndef GPT_DEBUG
#cmakedefine01 GPT_DEBUG
#endif
#ifndef HPET_COMPARATOR_DEBUG
#cmakedefine01 HPET_COMPARATOR_DEBUG
#endif
#ifndef HPET_DEBUG
#cmakedefine01 HPET_DEBUG
#endif
#ifndef ICMP_DEBUG
#cmakedefine01 ICMP_DEBUG
#endif
#ifndef INTERRUPT_DEBUG
#cmakedefine01 INTERRUPT_DEBUG
#endif
#ifndef IOAPIC_DEBUG
#cmakedefine01 IOAPIC_DEBUG
#endif
#ifndef IO_DEBUG
#cmakedefine01 IO_DEBUG
#endif
#ifndef IPV4_DEBUG
#cmakedefine01 IPV4_DEBUG
#endif
#ifndef IPV4_SOCKET_DEBUG
#cmakedefine01 IPV4_SOCKET_DEBUG
#endif
#ifndef IRQ_DEBUG
#cmakedefine01 IRQ_DEBUG
#endif
#ifndef KEYBOARD_DEBUG
#cmakedefine01 KEYBOARD_DEBUG
#endif
#ifndef LOCAL_SOCKET_DEBUG
#cmakedefine01 LOCAL_SOCKET_DEBUG
#endif
#ifndef LOCK_DEBUG
#cmakedefine01 LOCK_DEBUG
#endif
#ifndef LOCK_RESTORE_DEBUG
#cmakedefine01 LOCK_RESTORE_DEBUG
#endif
#ifndef LOCK_TRACE_DEBUG
#cmakedefine01 LOCK_TRACE_DEBUG
#endif
#ifndef MASTERPTY_DEBUG
#cmakedefine01 MASTERPTY_DEBUG
#endif
#ifndef MBR_DEBUG
#cmakedefine01 MBR_DEBUG
#endif
#ifndef MULTIPROCESSOR_DEBUG
#cmakedefine01 MULTIPROCESSOR_DEBUG
#endif
#ifndef NE2000_DEBUG
#cmakedefine01 NE2000_DEBUG
#endif
#ifndef NETWORK_TASK_DEBUG
#cmakedefine01 NETWORK_TASK_DEBUG
#endif
#ifndef OFFD_DEBUG
#cmakedefine01 OFFD_DEBUG
#endif
#ifndef PAGE_FAULT_DEBUG
#cmakedefine01 PAGE_FAULT_DEBUG
#endif
#ifndef PATA_DEBUG
#cmakedefine01 PATA_DEBUG
#endif
#ifndef AHCI_DEBUG
#cmakedefine01 AHCI_DEBUG
#endif
#ifndef PCI_DEBUG
#cmakedefine01 PCI_DEBUG
#endif
#ifndef POLL_SELECT_DEBUG
#cmakedefine01 POLL_SELECT_DEBUG
#endif
#ifndef PROCESS_DEBUG
#cmakedefine01 PROCESS_DEBUG
#endif
#ifndef PROCFS_DEBUG
#cmakedefine01 PROCFS_DEBUG
#endif
#ifndef PS2MOUSE_DEBUG
#cmakedefine01 PS2MOUSE_DEBUG
#endif
#ifndef PTMX_DEBUG
#cmakedefine01 PTMX_DEBUG
#endif
#ifndef ROUTING_DEBUG
#cmakedefine01 ROUTING_DEBUG
#endif
#ifndef RTL8139_DEBUG
#cmakedefine01 RTL8139_DEBUG
#endif
#ifndef SB16_DEBUG
#cmakedefine01 SB16_DEBUG
#endif
#ifndef SCHEDULER_DEBUG
#cmakedefine01 SCHEDULER_DEBUG
#endif
#ifndef SCHEDULER_RUNNABLE_DEBUG
#cmakedefine01 SCHEDULER_RUNNABLE_DEBUG
#endif
#ifndef SIGNAL_DEBUG
#cmakedefine01 SIGNAL_DEBUG
#endif
#ifndef SLAVEPTY_DEBUG
#cmakedefine01 SLAVEPTY_DEBUG
#endif
#ifndef SMP_DEBUG
#cmakedefine01 SMP_DEBUG
#endif
#ifndef SOCKET_DEBUG
#cmakedefine01 SOCKET_DEBUG
#endif
#ifndef STORAGE_DEVICE_DEBUG
#cmakedefine01 STORAGE_DEVICE_DEBUG
#endif
#ifndef TCP_DEBUG
#cmakedefine01 TCP_DEBUG
#endif
#ifndef TCP_SOCKET_DEBUG
#cmakedefine01 TCP_SOCKET_DEBUG
#endif
#ifndef THREAD_DEBUG
#cmakedefine01 THREAD_DEBUG
#endif
#ifndef TTY_DEBUG
#cmakedefine01 TTY_DEBUG
#endif
#ifndef UDP_DEBUG
#cmakedefine01 UDP_DEBUG
#endif
#ifndef UHCI_DEBUG
#cmakedefine01 UHCI_DEBUG
#endif
#ifndef UHCI_VERBOSE_DEBUG
#cmakedefine01 UHCI_VERBOSE_DEBUG
#endif
#ifndef VFS_DEBUG
#cmakedefine01 VFS_DEBUG
#endif
#ifndef VMWARE_BACKDOOR_DEBUG
#cmakedefine01 VMWARE_BACKDOOR_DEBUG
#endif
#ifndef VOLATILE_PAGE_RANGES_DEBUG
#cmakedefine01 VOLATILE_PAGE_RANGES_DEBUG
#endif
#ifndef VRA_DEBUG
#cmakedefine01 VRA_DEBUG
#endif
#ifndef WAITBLOCK_DEBUG
#cmakedefine01 WAITBLOCK_DEBUG
#endif
#ifndef WAITQUEUE_DEBUG
#cmakedefine01 WAITQUEUE_DEBUG
#endif