Retro Rocket Kernel
BASIC-Powered Operating System
Data Structures
Here are the data structures with brief descriptions:
 C__attribute__
 Cachi_hba_cmd_tbl_t
 Cachi_hba_fis_t
 Cahci_fis_data_t
 Cahci_fis_dev_bits_t
 Cahci_fis_dma_setup_t
 Cahci_fis_pio_setup_t
 Cahci_fis_reg_d2h_t
 Cahci_fis_reg_h2d_t
 Cahci_hba_cmd_header_t
 Cahci_hba_mem_t
 Cahci_hba_port_t
 Cahci_hba_prdt_entry_t
 Carp_packet
 Carp_table_entry_t
 Cbasic_ctxBASIC program context. Every instance of a BASIC program has one of these,* also certain structures such as functions will clone the context and run on the clone until the function completes. Cloned contexts share variables and you should never call basic_destroy() on them!
 Cbasic_double_fnBuiltin real (double) function
 Cbasic_int_fnBuiltin integer function
 Cbasic_str_fnBuiltin string function
 Cchannel
 Cconsole
 Ccpuid_result_tCPUID instruction result
 Cdatetime_tA representation of date and time
 Cdevname_prefix_t
 Cdhcp_packet_tDefinition of a DHCP packet
 Cdirectory_entry_tA directory entry, e.g. file, volume label, directory, long filename entry
 Cdns_header
 Cdns_request_t
 Cdns_result_t
 Ce1000_rx_desc
 Ce1000_tx_desc
 Cethernet_frameThere is actually more to an ethernet frame than this (see the STD documents!) but we don't have access to it from the software
 Cfat32_fs_info_tFAT32 FSINFO structure
 Cfat32_tFAT32 filesystem information, used internally by the driver. This is a higher level version of FSINFO
 Cfilesystem_tDefines a filesystem driver
 Cfooter_t
 Cfor_stateState for a FOR...NEXT loop
 Cfs_directory_entry_tA VFS directory entry. Files AND directories have these, but internally there is also a tree of fs_tree_t* which is used for faster access and caching the structure to RAM
 Cfs_handle_tThe data for an open file descriptor
 Cfs_tree_tUsed internally by filesystem.c to cache directories to RAM
 Cg_cpuid_vendor_t
 Cgc_str
 Cgpt_entry_t
 Cgpt_header_t
 Cheader_t
 Cheap_t
 Cicmp_echo_packet
 Cicmp_information
 Cicmp_packet
 Cicmp_parameter_problem_packet
 Cicmp_redirect_packet
 Cicmp_timestamp_packet
 Cide_device
 Cidle_timer_tAn idle timer
 Cidt_entry_t
 Cidt_ptr_t
 Cioapic_tDefinition of an IOAPIC
 Cip_fragStructure and bitfields for representing IP fragmentation. Used within an ip_packet_t
 Cip_fragmented_packet_parts_t
 Cip_packetStructure for an IP packet
 Cip_packet_frag_t
 Ciso9660
 Clfn_tLong filename entry, overlays a directory_entry_t. These entries repeat before a non-lfn entry, each holding up to 13 UCS-2 characters. Note that they are not stored in order, the 'order' attribute indicates which order they go in
 Cmt_rand_t
 Cnet_address_tRepresents an address that is bound to a protocol on an interface. This is kept as flexible as possible, to represent potentially different protocol's forms of addresses, e.g. IPv4, IPv6, IPX, Econet etc. The length indicates the number of bytes in the address, and the bytes field contains the actual address in host byte order. For example in IPv4, length would be 4 and bytes would essentially point at a uint32_t. The name is purely a human readable label for use in commands. The label might be 'ip.address', 'ip.gateway' etc
 Cnetdev_tAn ethernet network device, this relates directly to a physical network card in the machine. A device may have zero or more attached protocols, each protocol intercepts an ethernet id number. Where a protocol requires another protocol to be of use, e.g. ARP with IPv4, the dependency will be added automatically by other protocols that require it
 Cnetproto_tRepresents a protocol, or group of related protocols, that can be attached to an interface and can have addresses. At present only ethernet devices are supported, this covers 99% of the scenarios we might see in the wild on consumer machines
 Cpacket_queue_item_t
 Cparameter_block_tFAT32 BIOS parameter block (BPB), stored in the boot sector of the drive
 Cpartition_tA disk partition on a storage device
 Cpartition_table_tA disk partition table consisiting of four partition_t
 Cpci_dev_t
 Cpci_subclass
 Cproc_id_tProcess identifier struct. Used to identify processes by ID in the hash map only, contains the id and a pointer to the actual process_t struct
 Cprocess_t
 Cresource_record
 CResourceRecord
 Crsdp_tACPI Root System Description Pointer (RSDP)
 Crsdt_tRoot System Description Table
 Crtl8139_dev_tPCI device configuration
 Csdt_header_tSystem Description Table Header
 Cshared_interrupt_tAn entry in a linked list of handlers attached to an ISR
 Cstack_frame_t
 Cstorage_device_tRepresents a block storage device e.g. a hard disk, DVD-ROM drive, etc
 Csymbol_t
 Ctcp_conn_t
 Ctcp_ip_pseudo_header_t
 Ctcp_options_t
 Ctcp_ordered_list_t
 Ctcp_segment
 Ctcp_segment_flags_t
 Ctos_flags
 Ctx_desc_tTransfer description
 Cub_line_refLine reference in program. Each program has a hashmap of these so it can find a line number in O(1) time
 Cub_paramFN/PROC parameter
 Cub_proc_fn_defProcedure or function definition Each has a name, a type, a starting line and a parameter list
 Cub_var_doubleA real (double) variable
 Cub_var_double_arrayAn array of real (double)
 Cub_var_generic_arrayA generic array, we can use this to represent any array regardless of its contained type
 Cub_var_intAn integer variable
 Cub_var_int_arrayAn array of integers
 Cub_var_stringA string variable
 Cub_var_string_arrayAn array of strings
 Cudp_packetRaw structure for UDP