1 #ifndef _SYSLINUX_FIRMWARE_H 2 #define _SYSLINUX_FIRMWARE_H 3 4 #include <inttypes.h> 5 #include <stdbool.h> 6 7 struct term_state; 8 9 struct output_ops { 10 void (*erase) (int, int, int, int, uint8_t); 11 void (*write_char) (uint8_t, uint8_t); 12 void (*showcursor) (const struct term_state *); 13 void (*scroll_up) (uint8_t, uint8_t, uint8_t); 14 void (*set_cursor) (int, int, bool); 15 void (*beep) (void); 16 void (*get_mode)(int *, int *); 17 void (*text_mode)(void); 18 void (*get_cursor)(uint8_t *, uint8_t *); 19 }; 20 21 struct input_ops { 22 char (*getchar)(char *); 23 int (*pollchar)(void); 24 uint8_t (*shiftflags)(void); 25 }; 26 27 struct adv_ops { 28 void (*init)(void); 29 int (*write)(void); 30 }; 31 32 struct vesa_info; 33 enum vesa_pixel_format; 34 struct win_info; 35 36 struct vesa_ops { 37 int (*set_mode)(struct vesa_info *, int *, int *, enum vesa_pixel_format *); 38 void (*screencpy)(size_t, const uint32_t *, size_t, struct win_info *); 39 int (*font_query)(uint8_t **); 40 }; 41 42 enum heap; 43 struct mem_ops { 44 void *(*malloc)(size_t, enum heap, size_t); 45 void *(*realloc)(void *, size_t); 46 void (*free)(void *); 47 }; 48 49 struct initramfs; 50 struct setup_data; 51 52 struct firmware { 53 void (*init)(void); 54 void (*adjust_screen)(void); 55 void (*cleanup)(void); 56 struct disk *(*disk_init)(void *); 57 struct output_ops *o_ops; 58 struct input_ops *i_ops; 59 void (*get_serial_console_info)(uint16_t *, uint16_t *, uint16_t *); 60 struct adv_ops *adv_ops; 61 int (*boot_linux)(void *, size_t, struct initramfs *, 62 struct setup_data *, char *); 63 struct vesa_ops *vesa; 64 struct mem_ops *mem; 65 }; 66 67 extern struct firmware *firmware; 68 69 extern void syslinux_register_bios(void); 70 extern void init(void); 71 72 #endif /* _SYSLINUX_FIRMWARE_H */ 73