Chameleon

Chameleon Svn Source Tree

Root/branches/cparm/i386/libsa/libsa.h

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 __BOOT_LIBSA_H
26#define __BOOT_LIBSA_H
27
28/* Exported API for standalone library */
29
30#include <mach-o/loader.h>
31#include <stdarg.h>
32#include <stddef.h>
33#include <stdbool.h>
34#include <setjmp.h>
35#include "ctype.h"
36
37typedefunsigned charu_char;
38typedefunsigned shortu_short;
39typedefunsigned intu_int;
40typedefunsigned longu_long;
41
42#include "quad.h"
43/*
44 * This macro casts away the qualifier from the variable
45 *
46 * Note: use at your own risk, removing qualifiers can result in
47 * catastrophic run-time failures.
48 */
49#ifndef __CAST_AWAY_QUALIFIER
50#define __CAST_AWAY_QUALIFIER(variable, qualifier, type) (type) (long)(variable)
51#endif
52
53typedef char* caddr_t;
54
55
56/*
57 * iloop
58 */
59#define ever ;;
60
61__attribute__ ((__unused__)) static void iloop (void)
62{
63for (ever) {}
64}
65
66/*
67 * string.c
68 */
69
70extern char * strbreak(const char *str, char **next, long *len);
71extern int ptol(const char * str);
72
73extern voidbcopy(const void *, void *, size_t);
74extern voidbzero(void *, size_t);
75
76extern void*memcpy(void *, const void *, size_t);
77extern intmemcmp(const void *, const void *, size_t);
78extern void*memmove(void *, const void *, size_t);
79extern void*memset(void *, int, size_t);
80
81extern size_tstrlen(const char *);
82extern size_tstrnlen(const char *, size_t);
83
84/* strcpy() is being deprecated. Please use strlcpy() instead. */
85extern char*strcpy(char *, const char *);
86extern char*strncpy(char *, const char *, size_t);
87
88extern size_tstrlcat(char *, const char *, size_t);
89extern size_tstrlcpy(char *, const char *, size_t);
90
91/* strcat() is being deprecated. Please use strlcat() instead. */
92extern char*strcat(char *, const char *);
93extern char * strncat(char * s1, const char * s2, size_t n);
94
95/* strcmp() is being deprecated. Please use strncmp() instead. */
96extern intstrcmp(const char *, const char *);
97extern intstrncmp(const char *,const char *, size_t);
98
99#if STRNCASECMP
100extern intstrcasecmp(const char *s1, const char *s2);
101extern intstrncasecmp(const char *s1, const char *s2, size_t n);
102#endif
103extern char*strdup(const char *);
104extern char*strchr(const char *s, int c);
105extern int atoi(const char *);
106extern char *itoa(int,char*);
107extern const char *strstr(const char *, const char *);
108extern void * memchr(const void *, int , size_t );
109extern unsigned long
110local_adler32( unsigned char * buffer, long length );
111extern void * bsearch(register const void *key,const void *base0,size_t nmemb,register size_t size,register int (*compar)(const void *, const void *));
112/*
113 * strtol.c
114 */
115extern long strtol(const char * nptr, char ** endptr, int base);
116extern unsigned long strtoul(const char * nptr, char ** endptr, int base);
117extern unsigned long long strtouq(const char *nptr, char ** endptr, int base);
118
119/*
120 * printf.c
121 */
122extern int sprintf(char *s, const char * format, ...);
123extern int snprintf(char *str, size_t size, const char *format, ...);
124extern int vsnprintf(char *str, size_t size, const char *format, va_list ap);
125extern void
126_doprnt(
127 register const char *fmt,
128 va_list argp,
129 /* character output routine */
130 void (*putc)(char),
131 int radix); /* default radix - for '%r' */
132
133extern int
134prf(
135 const char*fmt,
136 va_listap,
137 /* character output routine */
138 void(*putc)(char));
139
140extern int
141__doprnt(
142 const char*fmt,
143 va_listargp,
144 /* character output routine */
145 void(*putc)(int ch, void *arg),
146 void *arg,
147 intradix);
148
149
150/*
151 * __printf.c
152 */
153void __printf_init(void (*print_fn)(char*));
154void __printf(const char * format, ...);
155
156/*
157 * qsort.c
158 */
159extern void qsort(void *a,size_t n,size_t es, int (*cmp)());
160
161
162/*
163 * sbrk.c
164 */
165extern caddr_t sbrk(int size);
166extern caddr_t brk(caddr_t x);
167
168/*
169 * jemalloc.c
170 */
171extern void free(void * start);
172extern void * realloc(void * ptr, size_t size);
173#if 0
174extern void * reallocf(void * ptr, size_t size);
175#endif
176extern void * malloc(size_t size);
177extern void * calloc(size_t number, size_t size);
178
179extern size_t malloc_usable_size(const void *ptr);
180extern int posix_memalign(void **memptr, size_t alignment, size_t size);
181extern voidmalloc_print_stats(void);
182
183extern int ffs(int);
184
185#endif /* !__BOOT_LIBSA_H */
186

Archive Download this file

Revision: 2182