source: bootcd/isolinux/syslinux-6.03/core/include/core.h

Last change on this file was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 3.8 KB
Line 
1#ifndef CORE_H
2#define CORE_H
3
4#include <klibc/compiler.h>
5#include <stddef.h>
6#include <stdlib.h>
7#include <stdbool.h>
8#include <inttypes.h>
9#include <stdio.h>
10#include <dprintf.h>
11#include <com32.h>
12#include <errno.h>
13#include <syslinux/pmapi.h>
14#include <syslinux/sysappend.h>
15#include <kaboom.h>
16#include <timer.h>
17
18extern char core_xfer_buf[65536];
19extern char core_cache_buf[65536];
20extern char trackbuf[];
21extern char CurrentDirName[];
22extern char SubvolName[];
23extern char ConfigName[];
24extern char config_cwd[];
25extern char cmd_line[];
26extern char ConfigFile[];
27extern char syslinux_banner[];
28extern char copyright_str[];
29
30extern const size_t __syslinux_shuffler_size;
31
32static inline size_t syslinux_shuffler_size(void)
33{
34    return __syslinux_shuffler_size;
35}
36
37/*
38 * Mark symbols that are only used by BIOS as __weak until we can move
39 * all references out of the generic (EFI + BIOS) code and into
40 * BIOS-specific code.
41 */
42extern __weak uint16_t BIOSName;
43extern __weak char KernelName[];
44extern __weak char StackBuf[];
45
46extern uint8_t KbdMap[256];
47
48extern const uint16_t IPAppends[];
49extern size_t numIPAppends;
50
51extern uint16_t SerialPort;
52extern uint16_t BaudDivisor;
53extern uint8_t FlowOutput;
54extern uint8_t FlowInput;
55extern uint8_t FlowIgnore;
56
57extern uint8_t ScrollAttribute;
58extern uint16_t DisplayCon;
59
60/* diskstart.inc isolinux.asm*/
61extern void getlinsec(void);
62
63/* pm.inc */
64void core_pm_null_hook(void);
65extern void (*core_pm_hook)(void);
66
67/* getc.inc */
68extern void core_open(void);
69
70/* adv.inc */
71extern void adv_init(void);
72extern void adv_write(void);
73
74/* hello.c */
75extern void myputs(const char*);
76
77/* idle.c */
78extern int (*idle_hook_func)(void);
79extern void __idle(void);
80extern void reset_idle(void);
81
82/* mem/malloc.c, mem/free.c, mem/init.c */
83extern void *lmalloc(size_t);
84extern void *pmapi_lmalloc(size_t);
85extern void *zalloc(size_t);
86extern void free(void *);
87extern void mem_init(void);
88
89/* sysappend.c */
90extern void print_sysappend(void);
91extern const char *sysappend_strings[SYSAPPEND_MAX];
92extern uint32_t SysAppends;
93extern void sysappend_set_uuid(const uint8_t *uuid);
94extern void sysappend_set_fs_uuid(void);
95
96void __cdecl core_intcall(uint8_t, const com32sys_t *, com32sys_t *);
97void __cdecl core_farcall(uint32_t, const com32sys_t *, com32sys_t *);
98int __cdecl core_cfarcall(uint32_t, const void *, uint32_t);
99
100extern const com32sys_t zero_regs;
101void call16(void (*)(void), const com32sys_t *, com32sys_t *);
102
103/*
104 * __lowmem is in the low 1 MB; __bss16 in the low 64K
105 */
106#ifdef __SYSLINUX_CORE__        /* Not supported in modules */
107# define __lowmem __attribute__((nocommon,section(".lowmem")))
108# define __bss16  __attribute__((nocommon,section(".bss16")))
109#endif
110
111/*
112 * Helper routine to return a specific set of flags
113 */
114static inline void set_flags(com32sys_t *regs, uint32_t flags)
115{
116    uint32_t eflags;
117
118    eflags = regs->eflags.l;
119    eflags &= ~(EFLAGS_CF|EFLAGS_PF|EFLAGS_AF|EFLAGS_ZF|EFLAGS_SF|EFLAGS_OF);
120    eflags |= flags;
121    regs->eflags.l = eflags;
122}
123
124extern int start_ldlinux(int argc, char **argv);
125extern int create_args_and_load(char *);
126
127extern void write_serial(char data);
128extern void writestr(char *str);
129extern void writechr(char data);
130extern void crlf(void);
131extern int pollchar(void);
132extern char getchar(char *hi);
133extern uint8_t kbd_shiftflags(void);
134static inline bool shift_is_held(void)
135{
136    return !!(kbd_shiftflags() & 0x5d); /* Caps/Scroll/Alt/Shift */
137}
138static inline bool ctrl_is_held(void)
139{
140    return !!(kbd_shiftflags() & 0x04); /* Only Ctrl */
141}
142
143extern void cleanup_hardware(void);
144extern void sirq_cleanup(void);
145extern void adjust_screen(void);
146
147extern void execute(const char *cmdline, uint32_t type, bool sysappend);
148extern void load_kernel(const char *cmdline);
149
150extern void dmi_init(void);
151
152extern void do_sysappend(char *buf);
153
154extern void load_env32(com32sys_t *regs);
155
156#endif /* CORE_H */
Note: See TracBrowser for help on using the repository browser.