mirror of
https://github.com/tailix/libkernaux.git
synced 2025-02-24 15:55:41 -05:00
Packed structs
This commit is contained in:
parent
c40e69b73e
commit
29066eda8d
1 changed files with 99 additions and 75 deletions
|
@ -10,14 +10,16 @@ extern "C" {
|
||||||
*********************/
|
*********************/
|
||||||
|
|
||||||
struct KernAux_Multiboot2 {
|
struct KernAux_Multiboot2 {
|
||||||
unsigned int total_size;
|
unsigned int total_size : 32;
|
||||||
unsigned int reserved1;
|
unsigned int reserved1 : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_TagBase {
|
struct KernAux_Multiboot2_TagBase {
|
||||||
unsigned int type;
|
unsigned int type : 32;
|
||||||
unsigned int size;
|
unsigned int size : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
/******************
|
/******************
|
||||||
* Tag structures *
|
* Tag structures *
|
||||||
|
@ -29,7 +31,8 @@ struct KernAux_Multiboot2_Tag_BootCmdLine {
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
char cmdline[];
|
char cmdline[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_BootLoaderName {
|
struct KernAux_Multiboot2_Tag_BootLoaderName {
|
||||||
// type = 2
|
// type = 2
|
||||||
|
@ -37,135 +40,147 @@ struct KernAux_Multiboot2_Tag_BootLoaderName {
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
char name[];
|
char name[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_Module {
|
struct KernAux_Multiboot2_Tag_Module {
|
||||||
// type = 3
|
// type = 3
|
||||||
// size = ?
|
// size = ?
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int mod_start;
|
unsigned int mod_start : 32;
|
||||||
unsigned int mod_end;
|
unsigned int mod_end : 32;
|
||||||
|
|
||||||
char cmdline[];
|
char cmdline[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_BasicMemoryInfo {
|
struct KernAux_Multiboot2_Tag_BasicMemoryInfo {
|
||||||
// type = 4
|
// type = 4
|
||||||
// size = 16
|
// size = 16
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int mem_lower;
|
unsigned int mem_lower : 32;
|
||||||
unsigned int mem_upper;
|
unsigned int mem_upper : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_BIOSBootDevice {
|
struct KernAux_Multiboot2_Tag_BIOSBootDevice {
|
||||||
// type = 5
|
// type = 5
|
||||||
// size = 20
|
// size = 20
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int bios_dev;
|
unsigned int bios_dev : 32;
|
||||||
unsigned int partition;
|
unsigned int partition : 32;
|
||||||
unsigned int sub_partition;
|
unsigned int sub_partition : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_MemoryMap {
|
struct KernAux_Multiboot2_Tag_MemoryMap {
|
||||||
// type = 5
|
// type = 5
|
||||||
// size = ?
|
// size = ?
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int size;
|
unsigned int size : 32;
|
||||||
unsigned int entry_size;
|
unsigned int entry_size : 32;
|
||||||
unsigned int entry_version;
|
unsigned int entry_version : 32;
|
||||||
|
|
||||||
unsigned char data[];
|
unsigned char data[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_VBEInfo {
|
struct KernAux_Multiboot2_Tag_VBEInfo {
|
||||||
// type = 7
|
// type = 7
|
||||||
// size = 784
|
// size = 784
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned short vbe_mode;
|
unsigned short vbe_mode : 16;
|
||||||
unsigned short vbe_interface_seg;
|
unsigned short vbe_interface_seg : 16;
|
||||||
unsigned short vbe_interface_off;
|
unsigned short vbe_interface_off : 16;
|
||||||
unsigned short vbe_interface_len;
|
unsigned short vbe_interface_len : 16;
|
||||||
unsigned char vbe_control_info[512];
|
unsigned char vbe_control_info[512];
|
||||||
unsigned char vbe_mode_info[256];
|
unsigned char vbe_mode_info[256];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_FramebufferInfo {
|
struct KernAux_Multiboot2_Tag_FramebufferInfo {
|
||||||
// type = 8
|
// type = 8
|
||||||
// size = ?
|
// size = ?
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned long long framebuffer_addr;
|
unsigned long long framebuffer_addr : 64;
|
||||||
unsigned int framebuffer_pitch;
|
unsigned int framebuffer_pitch : 32;
|
||||||
unsigned int framebuffer_width;
|
unsigned int framebuffer_width : 32;
|
||||||
unsigned int framebuffer_height;
|
unsigned int framebuffer_height : 32;
|
||||||
unsigned char framebuffer_bpp;
|
unsigned char framebuffer_bpp : 8;
|
||||||
unsigned char framebuffer_type;
|
unsigned char framebuffer_type : 8;
|
||||||
unsigned char reserved1;
|
unsigned char reserved1 : 8;
|
||||||
|
|
||||||
unsigned char data[];
|
unsigned char data[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_ELFSymbols {
|
struct KernAux_Multiboot2_Tag_ELFSymbols {
|
||||||
// type = 9
|
// type = 9
|
||||||
// size = ?
|
// size = ?
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned short num;
|
unsigned short num : 16;
|
||||||
unsigned short ent_size;
|
unsigned short ent_size : 16;
|
||||||
unsigned short shndx;
|
unsigned short shndx : 16;
|
||||||
unsigned short reserved1;
|
unsigned short reserved1 : 16;
|
||||||
|
|
||||||
unsigned char section_headers[];
|
unsigned char section_headers[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_APMTable {
|
struct KernAux_Multiboot2_Tag_APMTable {
|
||||||
// type = 10
|
// type = 10
|
||||||
// size = 20
|
// size = 20
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned short version;
|
unsigned short version : 16;
|
||||||
unsigned short cseg;
|
unsigned short cseg : 16;
|
||||||
unsigned int offset;
|
unsigned int offset : 32;
|
||||||
unsigned short cseg_16;
|
unsigned short cseg_16 : 16;
|
||||||
unsigned short dseg;
|
unsigned short dseg : 16;
|
||||||
unsigned short flags;
|
unsigned short flags : 16;
|
||||||
unsigned short cseg_len;
|
unsigned short cseg_len : 16;
|
||||||
unsigned short cseg_16_len;
|
unsigned short cseg_16_len : 16;
|
||||||
unsigned short dseg_len;
|
unsigned short dseg_len : 16;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_EFI32bitSystemTablePointer {
|
struct KernAux_Multiboot2_Tag_EFI32bitSystemTablePointer {
|
||||||
// type = 11
|
// type = 11
|
||||||
// size = 12
|
// size = 12
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int pointer;
|
unsigned int pointer : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_EFI64bitSystemTablePointer {
|
struct KernAux_Multiboot2_Tag_EFI64bitSystemTablePointer {
|
||||||
// type = 12
|
// type = 12
|
||||||
// size = 16
|
// size = 16
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned long long pointer;
|
unsigned long long pointer : 64;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_SMBIOSTables {
|
struct KernAux_Multiboot2_Tag_SMBIOSTables {
|
||||||
// type = 13
|
// type = 13
|
||||||
// size = ?
|
// size = ?
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned char major;
|
unsigned char major : 8;
|
||||||
unsigned char minor;
|
unsigned char minor : 8;
|
||||||
unsigned char reserved1[6];
|
unsigned char reserved1[6];
|
||||||
|
|
||||||
unsigned char data[];
|
unsigned char data[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_ACPIOldRSDP {
|
struct KernAux_Multiboot2_Tag_ACPIOldRSDP {
|
||||||
// type = 14
|
// type = 14
|
||||||
|
@ -173,7 +188,8 @@ struct KernAux_Multiboot2_Tag_ACPIOldRSDP {
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned char data[];
|
unsigned char data[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_ACPINewRSDP {
|
struct KernAux_Multiboot2_Tag_ACPINewRSDP {
|
||||||
// type = 15
|
// type = 15
|
||||||
|
@ -181,7 +197,8 @@ struct KernAux_Multiboot2_Tag_ACPINewRSDP {
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned char data[];
|
unsigned char data[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_NetworkingInfo {
|
struct KernAux_Multiboot2_Tag_NetworkingInfo {
|
||||||
// type = 16
|
// type = 16
|
||||||
|
@ -189,59 +206,66 @@ struct KernAux_Multiboot2_Tag_NetworkingInfo {
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned char data[];
|
unsigned char data[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_EFIMemoryMap {
|
struct KernAux_Multiboot2_Tag_EFIMemoryMap {
|
||||||
// type = 17
|
// type = 17
|
||||||
// size = ?
|
// size = ?
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int descriptor_size;
|
unsigned int descriptor_size : 32;
|
||||||
unsigned int descriptor_version;
|
unsigned int descriptor_version : 32;
|
||||||
|
|
||||||
unsigned char data[];
|
unsigned char data[];
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_EFIBootServicesNotTerminated {
|
struct KernAux_Multiboot2_Tag_EFIBootServicesNotTerminated {
|
||||||
// type = 18
|
// type = 18
|
||||||
// size = 8
|
// size = 8
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_EFI32bitImageHandlePointer {
|
struct KernAux_Multiboot2_Tag_EFI32bitImageHandlePointer {
|
||||||
// type = 19
|
// type = 19
|
||||||
// size = 12
|
// size = 12
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int pointer;
|
unsigned int pointer : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_EFI64bitImageHandlePointer {
|
struct KernAux_Multiboot2_Tag_EFI64bitImageHandlePointer {
|
||||||
// type = 20
|
// type = 20
|
||||||
// size = 16
|
// size = 16
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned long long pointer;
|
unsigned long long pointer : 64;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_ImageLoadBasePhysAddr {
|
struct KernAux_Multiboot2_Tag_ImageLoadBasePhysAddr {
|
||||||
// type = 21
|
// type = 21
|
||||||
// size = 12
|
// size = 12
|
||||||
struct KernAux_Multiboot2_TagBase base;
|
struct KernAux_Multiboot2_TagBase base;
|
||||||
|
|
||||||
unsigned int load_base_addr;
|
unsigned int load_base_addr : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
* Additional structures *
|
* Additional structures *
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
struct KernAux_Multiboot2_Tag_MemoryMap_EntryBase {
|
struct KernAux_Multiboot2_Tag_MemoryMap_EntryBase {
|
||||||
unsigned long long base_addr;
|
unsigned long long base_addr : 64;
|
||||||
unsigned long long length;
|
unsigned long long length : 64;
|
||||||
unsigned int type;
|
unsigned int type : 32;
|
||||||
unsigned int reserved1;
|
unsigned int reserved1 : 32;
|
||||||
};
|
}
|
||||||
|
__attribute__((packed));
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue