1 | /*␊ |
2 | * Copyright (c) 1999-2003 Apple Computer, Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights␊ |
7 | * Reserved. This file contains Original Code and/or Modifications of␊ |
8 | * Original Code as defined in and that are subject to the Apple Public␊ |
9 | * Source License Version 2.0 (the "License"). You may not use this file␊ |
10 | * except in compliance with the License. Please obtain a copy of the␊ |
11 | * License at http://www.apple.com/publicsource and read it before using␊ |
12 | * this file.␊ |
13 | * ␊ |
14 | * The Original Code and all software distributed under the License are␊ |
15 | * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
16 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
17 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
18 | * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the␊ |
19 | * License for the specific language governing rights and limitations␊ |
20 | * under the License.␊ |
21 | * ␊ |
22 | * @APPLE_LICENSE_HEADER_END@␊ |
23 | */␊ |
24 | ␊ |
25 | #ifndef __LIBSAIO_SAIO_INTERNAL_H␊ |
26 | #define __LIBSAIO_SAIO_INTERNAL_H␊ |
27 | ␊ |
28 | #include "saio_types.h"␊ |
29 | ␊ |
30 | /* arc4random.c */␊ |
31 | extern void arc4_init(void);␊ |
32 | extern void arc4random_buf(void *_buf, size_t n);␊ |
33 | extern u_int32_t arc4random_uniform(u_int32_t upper_bound);␊ |
34 | extern u_int32_t arc4random(void);␊ |
35 | extern void arc4random_addrandom(u_char *dat, int datlen);␊ |
36 | extern void arc4random_stir(void);␊ |
37 | #define arc4random_unirange(lo,hi) arc4random_uniform(hi - lo + 1) + lo␊ |
38 | #define arc4random_range(lo,hi) (arc4random() % (hi - lo + 1)) + lo␊ |
39 | ␊ |
40 | /* asm.s */␊ |
41 | extern void real_to_prot(void);␊ |
42 | extern void prot_to_real(void);␊ |
43 | extern void halt(void);␊ |
44 | extern void startprog(unsigned int address, void *arg);␊ |
45 | #ifdef NBP_SUPPORT␊ |
46 | extern void loader(UInt32 code, UInt32 cmdptr);␊ |
47 | #endif␊ |
48 | ␊ |
49 | /* bios.s */␊ |
50 | extern void bios(biosBuf_t *bb);␊ |
51 | ␊ |
52 | /* biosfn.c */␊ |
53 | #ifdef EISA_SUPPORT␊ |
54 | extern bool eisa_present(void);␊ |
55 | #endif␊ |
56 | extern int bgetc(void);␊ |
57 | extern int biosread(int dev, int cyl, int head, int sec, int num);␊ |
58 | extern int ebiosread(int dev, unsigned long long sec, int count);␊ |
59 | extern int ebioswrite(int dev, long sec, int count);␊ |
60 | extern int get_drive_info(int drive, struct driveInfo *dp);␊ |
61 | extern int ebiosEjectMedia(int biosdev);␊ |
62 | extern void putc(int ch);␊ |
63 | extern void putca(int ch, int attr, int repeat);␊ |
64 | extern int getc(void);␊ |
65 | extern int readKeyboardStatus(void);␊ |
66 | extern int readKeyboardShiftFlags(void);␊ |
67 | extern unsigned int time18(void);␊ |
68 | extern void delay(int ms);␊ |
69 | extern unsigned int get_diskinfo(int dev);␊ |
70 | #if APM_SUPPORT␊ |
71 | extern int APMPresent(void);␊ |
72 | extern int APMConnect32(void);␊ |
73 | #endif␊ |
74 | extern int memsize(int i);␊ |
75 | extern void video_mode(int mode);␊ |
76 | extern void setCursorPosition(int x, int y, int page);␊ |
77 | extern void setCursorType(int type);␊ |
78 | extern void getCursorPositionAndType(int *x, int *y, int *type);␊ |
79 | extern void scollPage(int x1, int y1, int x2, int y2, int attr, int rows, int dir);␊ |
80 | extern void clearScreenRows(int y1, int y2);␊ |
81 | extern void setActiveDisplayPage( int page );␊ |
82 | extern unsigned long getMemoryMap(struct MemoryRange * rangeArray, unsigned long maxRangeCount,␊ |
83 | unsigned long * conMemSizePtr, unsigned long * extMemSizePtr);␊ |
84 | extern unsigned long getExtendedMemorySize(void);␊ |
85 | extern unsigned long getConventionalMemorySize(void);␊ |
86 | extern void sleep(int n);␊ |
87 | extern time_t time(time_t *t);␊ |
88 | extern int is_no_emulation(int drive);␊ |
89 | ␊ |
90 | /* bootstruct.c */␊ |
91 | extern void initKernBootStruct(void);␊ |
92 | extern void copyKernBootStruct(void);␊ |
93 | extern void finalizeBootStruct(void);␊ |
94 | extern void reserveKernLegacyBootStruct(void);␊ |
95 | extern void reserveKernBootStruct(void);␊ |
96 | extern void setBootArgsVideoMode(int mode);␊ |
97 | extern void setBootArgsVideoStruct(Boot_Video␉*Video);␊ |
98 | extern uint32_t getVideoMode(void);␊ |
99 | extern boot_args * getBootArgs(void);␊ |
100 | ␊ |
101 | ␊ |
102 | /* cache.c */␊ |
103 | extern void CacheReset(void);␊ |
104 | extern void CacheInit(CICell ih, long blockSize);␊ |
105 | extern long CacheRead(CICell ih, char *buffer, long long offset,␊ |
106 | long length, long cache);␊ |
107 | ␊ |
108 | /* console.c */␊ |
109 | extern void initBooterLog(void);␊ |
110 | extern void setupBooterLog(void);␊ |
111 | extern void putchar(char ch);␊ |
112 | extern void debug_putc(char c);␊ |
113 | extern int getchar(void);␊ |
114 | extern int localVPrintf(const char *format, va_list ap, int flag);␊ |
115 | extern int reallyVPrint(const char *format, va_list ap, int flag);␊ |
116 | extern void msglog(const char * format, ...);␊ |
117 | extern int printf(const char *format, ...);␊ |
118 | extern int error(const char *format, ...);␊ |
119 | extern int verbose(const char *format, ...);␊ |
120 | extern void stop(const char *format, ...);␊ |
121 | extern char * newStringWithFormat(const char * fmt, ...);␊ |
122 | extern char *getConsoleMsg(void);␊ |
123 | extern char *getConsoleCursor(void);␊ |
124 | extern void setConsoleMsg(char *p);␊ |
125 | extern void setConsoleCursor(char *p);␊ |
126 | extern void pause(void); ␊ |
127 | ␊ |
128 | /* disk.c */␊ |
129 | extern void rescanBIOSDevice(int biosdev);␊ |
130 | extern struct DiskBVMap* diskResetBootVolumes(int biosdev);␊ |
131 | extern void diskFreeMap(struct DiskBVMap *map);␊ |
132 | extern int testBiosread( int biosdev, unsigned long long secno );␊ |
133 | extern BVRef diskScanBootVolumes(int biosdev, int *count);␊ |
134 | extern void diskSeek(BVRef bvr, long long position);␊ |
135 | extern int diskRead(BVRef bvr, long addr, long length);␊ |
136 | extern int diskIsCDROM(BVRef bvr);␊ |
137 | extern int biosDevIsCDROM(int biosdev);␊ |
138 | extern BVRef getBVChainForBIOSDev(int biosdev);␊ |
139 | extern BVRef newFilteredBVChain(int minBIOSDev, int maxBIOSDev, unsigned int allowFlags, unsigned int denyFlags, int *count);␊ |
140 | extern int freeFilteredBVChain(const BVRef chain);␊ |
141 | extern int rawDiskRead(BVRef bvr, unsigned int secno, void *buffer, unsigned int len);␊ |
142 | extern int rawDiskWrite(BVRef bvr, unsigned int secno, void *buffer, unsigned int len);␊ |
143 | extern int readBootSector(int biosdev, unsigned int secno, void *buffer);␊ |
144 | extern int␉ testFAT32EFIBootSector( int biosdev, unsigned int secno, void * buffer );␊ |
145 | ␊ |
146 | /* hfs_compare.c */␊ |
147 | extern int32_t FastUnicodeCompare(u_int16_t *uniStr1, u_int32_t len1,␊ |
148 | ␉␉␉␉␉␉␉␉ u_int16_t *uniStr2, u_int32_t len2, int byte_order);␊ |
149 | extern void utf_encodestr( const u_int16_t * ucsp, int ucslen,␊ |
150 | ␉␉␉␉␉␉ u_int8_t * utf8p, u_int32_t bufsize, int byte_order );␊ |
151 | extern void utf_decodestr(const u_int8_t *utf8p, u_int16_t *ucsp,␊ |
152 | ␉␉␉␉␉␉ u_int16_t *ucslen, u_int32_t bufsize, int byte_order );␊ |
153 | ␊ |
154 | /* load.c */␊ |
155 | extern long ThinFatFile(void **binary, unsigned long *length);␊ |
156 | extern long DecodeMachO(void *binary, entry_t *rentry, char **raddr, int *rsize);␊ |
157 | ␊ |
158 | /*␊ |
159 | * lzss.c␊ |
160 | */␊ |
161 | extern int decompress_lzss(u_int8_t *dst, u_int8_t *src, u_int32_t srclen);␊ |
162 | ␊ |
163 | /* lib.c */␊ |
164 | extern int bcd2dec(int b);␊ |
165 | extern int dec2bcd(int d);␊ |
166 | #define abs(x) ((x) < 0 ? - (x) : (x))␊ |
167 | ␊ |
168 | /* memory.c */␊ |
169 | extern long AllocateKernelMemory( long inSize );␊ |
170 | ␊ |
171 | extern long␊ |
172 | AllocateMemoryRange(const char * rangeName, long start, long length);␊ |
173 | ␊ |
174 | /* misc.c */␊ |
175 | extern void enableA20(void);␊ |
176 | extern void turnOffFloppy(void);␊ |
177 | ␊ |
178 | extern void getPlatformName(char *nameBuf, int size);␊ |
179 | ␊ |
180 | #ifdef NBP_SUPPORT␊ |
181 | /* nbp.c */␊ |
182 | extern UInt32 nbpUnloadBaseCode();␊ |
183 | extern BVRef nbpScanBootVolumes(int biosdev, int *count);␊ |
184 | #endif␊ |
185 | ␊ |
186 | ␊ |
187 | ␊ |
188 | /* platform.c */␊ |
189 | extern void scan_platform(void);␊ |
190 | extern void SetgRootDevice(const char * str);␊ |
191 | extern void Setgboardproduct(const char * str);␊ |
192 | extern void SetgPlatformName(const char * str);␊ |
193 | extern char * GetgPlatformName(void);␊ |
194 | extern char * Getgboardproduct(void);␊ |
195 | extern char * GetgRootDevice(void);␊ |
196 | ␊ |
197 | #ifdef rootpath␊ |
198 | extern void SetgRootPath(const char * str);␊ |
199 | extern char * GetgRootPath(void);␊ |
200 | #endif␊ |
201 | ␊ |
202 | extern void re_set_env_ptr(const char *name , void* ptr,size_t size);␊ |
203 | extern void set_env(const char *name, unsigned long long value );␊ |
204 | extern int set_env_ptr(const char *name, void * ptr, size_t size );␊ |
205 | extern unsigned long long get_env_value(const char *name);␊ |
206 | extern unsigned long long get_env(const char *name);␊ |
207 | extern void * get_env_ptr(const char *name);␊ |
208 | extern int safe_set_env_ptr(const char *name , void * ptr, size_t size );␊ |
209 | extern void safe_set_env(const char *name , unsigned long long value);␊ |
210 | extern void re_set_env(const char *name , unsigned long long value) ;␊ |
211 | extern void unset_env(const char *name);␊ |
212 | extern void free_platform_env(void);␊ |
213 | void showError(void);␊ |
214 | ␊ |
215 | void debug_platform_env(void);␊ |
216 | ␊ |
217 | /* stringTable.c */␊ |
218 | extern char * newStringFromList(char **list, int *size);␊ |
219 | extern int stringLength(const char *table, int compress);␊ |
220 | extern bool getValueForConfigTableKey(config_file_t *config, const char *key, const char **val, int *size);␊ |
221 | extern bool removeKeyFromTable(const char *key, char *table);␊ |
222 | extern char * newStringForStringTableKey(config_file_t *config, char *key);␊ |
223 | extern char * newStringForKey(char *key, config_file_t *configBuff);␊ |
224 | extern bool getValueForBootKey(const char *line, const char *match, const char **matchval, int *len);␊ |
225 | extern bool getValueForKey(const char *key, const char **val, int *size, config_file_t *configBuff);␊ |
226 | extern const char * getStringForKey(const char * key, config_file_t *config);␊ |
227 | extern bool getBoolForKey(const char *key, bool *val, config_file_t *configBuff);␊ |
228 | extern bool getIntForKey(const char *key, int *val, config_file_t *configBuff);␊ |
229 | extern config_file_t *resolveConfig(config_file_t *config);␊ |
230 | #if UNUSED␊ |
231 | extern bool getColorForKey(const char *key, unsigned int *val, config_file_t *configBuff);␊ |
232 | extern bool␉ getDimensionForKey( const char *key, unsigned int *value, config_file_t *config, unsigned int dimension_max, unsigned int object_size );␊ |
233 | #endif␊ |
234 | extern int loadConfigFile(const char *configFile, config_file_t *configBuff);␊ |
235 | extern int loadBooterConfig(void);␊ |
236 | extern int loadSystemConfig(void);␊ |
237 | #ifdef BOOT_HELPER_SUPPORT␊ |
238 | extern int loadHelperConfig(void);␊ |
239 | #endif␊ |
240 | extern int loadOverrideConfig(void);␊ |
241 | extern char * newString(const char *oldString);␊ |
242 | extern char * newEmptyStringWithLength(int len);␊ |
243 | extern char * newStringWithLength(const char * oldString, int len);␊ |
244 | ␊ |
245 | extern char * getNextArg(char ** ptr, char * val);␊ |
246 | extern int␉ ParseXMLFile( char * buffer, TagPtr * dict );␊ |
247 | ␊ |
248 | /* sys.c */␊ |
249 | extern BVRef getBootVolumeRef( const char * path, const char ** outPath );␊ |
250 | extern long LoadVolumeFile(BVRef bvr, const char *fileSpec);␊ |
251 | extern long LoadFile(const char *fileSpec);␊ |
252 | extern long ReadFileAtOffset(const char * fileSpec, void *buffer, uint64_t offset, uint64_t length);␊ |
253 | extern long␉ LoadThinFatFile(const char *fileSpec, void **binary);␊ |
254 | extern long GetDirEntry(const char *dirSpec, long long *dirIndex, const char **name,␊ |
255 | long *flags, long *time);␊ |
256 | extern long GetFileInfo(const char *dirSpec, const char *name,␊ |
257 | long *flags, long *time);␊ |
258 | extern long GetFileBlock(const char *fileSpec, unsigned long long *firstBlock);␊ |
259 | extern long GetFSUUID(char *spec, char *uuidStr, long strMaxLen);␊ |
260 | extern long CreateUUIDString(uint8_t uubytes[], int nbytes, char *uuidStr, long strMaxLen);␊ |
261 | extern int openmem(char *buf, int len);␊ |
262 | ␊ |
263 | extern int open(const char *path ,int mode);␊ |
264 | extern int open_bvdev(const char *bvd, const char *path);␊ |
265 | ␊ |
266 | extern int close(int fdesc);␊ |
267 | extern int file_size(int fdesc);␊ |
268 | extern int read(int fdesc, char *buf, int count);␊ |
269 | extern int write(int fdesc, const char *buf, int count);␊ |
270 | extern int writebyte(int fdesc, char value);␊ |
271 | extern int writeint(int fdesc, int value);␊ |
272 | extern struct iob * iob_from_fdesc(int fdesc);␊ |
273 | extern int lseek(int fdesc, int addr, int ptr);␊ |
274 | extern int tell(int fdesc);␊ |
275 | extern const char * systemConfigDir(void);␊ |
276 | extern struct dirstuff * opendir(const char *path);␊ |
277 | extern struct dirstuff * vol_opendir(BVRef bvr, const char *path);␊ |
278 | extern int closedir(struct dirstuff *dirp);␊ |
279 | extern int readdir(struct dirstuff *dirp, const char **name, long *flags, long *time);␊ |
280 | extern int readdir_ext(struct dirstuff * dirp, const char ** name, long * flags,␊ |
281 | long * time, FinderInfo *finderInfo, long *infoValid);␊ |
282 | extern void flushdev(void);␊ |
283 | extern void scanBootVolumes(int biosdev, int *count);␊ |
284 | ␊ |
285 | extern void scanDisks(void);␊ |
286 | ␊ |
287 | extern BVRef selectBootVolume(BVRef chain);␊ |
288 | extern void getBootVolumeDescription(BVRef bvr, char *str, long strMaxLen, bool verbose);␊ |
289 | extern void setRootVolume(BVRef volume);␊ |
290 | extern void setBootGlobals(BVRef chain);␊ |
291 | extern int getDeviceDescription(BVRef volume, char *str, long strMaxLen);␊ |
292 | ␊ |
293 | /* rtc.c */␊ |
294 | extern void rtc_read_clock(struct tm *time) ;␊ |
295 | ␊ |
296 | /* smp.c */␊ |
297 | extern void * getMPSTable();␊ |
298 | ␊ |
299 | /* time.c */␊ |
300 | extern int gettimeofday(struct timeval *tv, void *tz);␊ |
301 | ␊ |
302 | /* uterror.c */␊ |
303 | extern jmp_buf uterror;␊ |
304 | extern void init_ut_fnc(void);␊ |
305 | ␊ |
306 | //#define LOCALIZE␊ |
307 | //extern int localVPrintf(const char *format, va_list ap);␊ |
308 | ␊ |
309 | #endif /* !__LIBSAIO_SAIO_INTERNAL_H */␊ |
310 | |