REpsp2
PSP2 OS reverse engineering
Loading...
Searching...
No Matches
sysclib.h
Go to the documentation of this file.
1
2#ifndef _SCE_KERNEL_SYSMEM_SYSCLIB_H_
3#define _SCE_KERNEL_SYSMEM_SYSCLIB_H_
4
5#include <stddef.h> // size_t
6#include <stdarg.h> // va_list
7#include <scetypes.h>
8
9#pragma region C standard library functions
10 // ctype.h
12int tolower(int ch);
13
15int toupper(int ch);
16
17#define CTYPE_UPPER 0x01 /* uppercase letter */
18#define CTYPE_LOWER 0x02 /* lowercase letter */
19#define CTYPE_DIGIT 0x04 /* digit */
20#define CTYPE_SPACE 0x08 /* space */
21#define CTYPE_PUNCT 0x10 /* punctuation */
22#define CTYPE_CONTROL 0x20 /* control codes (incl. DEL) */
23#define CTYPE_HEXDIGIT 0x40 /* hexadecimal digit (A~F/a~f)*/
24#define CTYPE_UNK_0x80 0x80 /* never used */
25
32unsigned look_ctype_table(int ch);
33
34//THESE SHOULD BE DOUBLE-CHECKED (need to find more code using them...)
35//In old FW, there was NID 0x0614B013 "get_ctype_table()" instead - might be useful
36#define __isxx(ch, msk) ((look_ctype_table(ch) & (msk)) != 0)
37#define iscntrl(ch) __isxx(ch, CTYPE_CONTROL)
38#define isprint(ch) __isxx(ch, CTYPE_UNK_0x80 | CTYPE_PUNCT | CTYPE_DIGIT | CTYPE_LOWER | CTYPE_UPPER)
39#define isspace(ch) __isxx(ch, CTYPE_SPACE)
40//#define isblank(ch) -- not provided?
41//#define isgraph(ch) -- not provided?
42#define ispunct(ch) __isxx(ch, CTYPE_PUNCT) //SHOULD NOT INCLUDE SPACE!
43#define isalnum(ch) __isxx(ch, CTYPE_DIGIT | CTYPE_LOWER | CTYPE_UPPER)
44#define isalpha(ch) __isxx(ch, CTYPE_LOWER | CTYPE_UPPER)
45#define isupper(ch) __isxx(ch, CTYPE_UPPER)
46#define islower(ch) __isxx(ch, CTYPE_LOWER)
47#define isdigit(ch) __isxx(ch, CTYPE_DIGIT)
48#define isxdigit(ch) __isxx(ch, CTYPE_HEXDIGIT | CTYPE_DIGIT)
49
50 //string.h
52void *memset(void *dest, int ch, size_t count);
53
55int strcmp(const char *lhs, const char *rhs);
56
58int memcmp(const void *lhs, const void *rhs, size_t count);
59
61char *strstr(const char *str, const char *substr);
62
64char* strchr(const char* str, int ch);
65
67void *memcpy(void *dest, const void *src, size_t count);
68
70void *memchr(const void* ptr, int ch, size_t count);
71
73void *memmove(void *dest, const void *src, size_t size);
74
76char *strncpy(char *dest, const char *src, size_t count);
77
79char *strrchr(const char *str, int ch);
80
82char *strncat(char *dest, const char *src, size_t count);
83
85int strnlen(const char *s, size_t maxlen);
86
88int strlen(const char *s);
89
91int memcmp(const void *lhs, const void *rhs, size_t count);
92
93 // stdio.h
95int vsnprintf(char *s, size_t n, const char *fmt, va_list arg);
96
98int snprintf(char *buffer, size_t bufsz, const char *format, ...);
99
100 // stdlib.h
102unsigned long strtoul(const char *str, char **str_end, int base);
103
105long long strtoll(const char *str, char **str_end, int base);
106
108long strtol(const char *str, char **str_end, int base);
109#pragma endregion
110
111#pragma region C library extensions
113int strlcat(char *dst, const char *src, size_t dstsize);
114
116size_t strlcpy(char *dst, const char *src, size_t dstsize);
117
119int timingsafe_bcmp(const void *b1, const void *b2, size_t len);
120#pragma endregion
121
122#pragma region Checked C library functions
124void *__memset_chk(void *dest, int c, size_t len, size_t destlen);
125
127void *__strlcat_chk(char *dst, const char *src, size_t dstsize, size_t dstlen);
128
130char *__strncat_chk(char *dest, const char *src, size_t count, size_t dstlen);
131
133void *__memmove_chk(void *dest, const void *src, size_t len, size_t destlen);
134
136char *__strcpy_chk(char *dest, const char *src, size_t destlen);
137
139int __snprintf_chk(char *str, size_t maxlen, int flag, size_t strlen, const char *format, ...);
140
142void *__memcpy_chk(void *dest, const void *src, size_t len, size_t destlen);
143
145char *__strncpy_chk(char *s1, const char *s2, size_t n, size_t s1len);
146
148char *__strlcpy_chk(char *s1, const char *s2, size_t n, size_t s1len);
149
151char *__strcat_chk(char *dest, const char *src, size_t destlen);
152#pragma endregion
153
182int __prnt(void (*cb)(void *argp, int ch), void *argp, const char *fmt, va_list ap);
183
192char *SceSysclibForDriver_FE39AEAC(char *dst, const char *src, size_t dstsize);
193
194#pragma region Stack canary
196extern unsigned int __stack_chk_guard;
197
200#pragma endregion
201
202#pragma region ARM AEABI functions
203typedef struct {
204 int quot;
205 int rem;
207
208typedef struct {
209 unsigned quot;
210 unsigned rem;
212
213/* Should come from C stdlib headers */
214typedef struct lldiv_t {
215 long long quot;
216 long long rem;
218
219typedef struct ulldiv_t {
220 unsigned long long quot;
221 unsigned long long rem;
223
225long long __aeabi_lmul(long long, long long);
226
228lldiv_t __aeabi_ldivmod(long long n, long long d);
229
231ulldiv_t __aeabi_uldivmod(unsigned long long n, unsigned long long d);
232
234long long __aeabi_llsl(long long, int);
235
237long long __aeabi_llsr(long long, int);
238
240long long __aeabi_lasr(long long, int);
241
243int __aeabi_lcmp(long long, long long);
244
246int __aeabi_ulcmp(unsigned long long, unsigned long long);
247
249int __aeabi_idiv(int numerator, int denominator);
250
252unsigned __aeabi_uidiv(unsigned numerator, unsigned denominator);
253
255idiv_return __aeabi_idivmod(int numerator, int denominator);
256
258udiv_return __aeabi_uidivmod(unsigned numerator, unsigned denominator);
259#pragma endregion
260
261#endif /* _SCE_KERNEL_SYSMEM_SYSCLIB_H_ */
#define noreturn
Definition scetypes.h:253
long long rem
Definition sysclib.h:216
long long quot
Definition sysclib.h:215
unsigned quot
Definition sysclib.h:209
unsigned rem
Definition sysclib.h:210
unsigned long long quot
Definition sysclib.h:220
unsigned long long rem
Definition sysclib.h:221
long long __aeabi_llsr(long long, int)
char * __strcpy_chk(char *dest, const char *src, size_t destlen)
char * strncpy(char *dest, const char *src, size_t count)
int vsnprintf(char *s, size_t n, const char *fmt, va_list arg)
int strlen(const char *s)
unsigned int __stack_chk_guard
int strcmp(const char *lhs, const char *rhs)
int __snprintf_chk(char *str, size_t maxlen, int flag, size_t strlen, const char *format,...)
char * __strncpy_chk(char *s1, const char *s2, size_t n, size_t s1len)
void * __memset_chk(void *dest, int c, size_t len, size_t destlen)
long long strtoll(const char *str, char **str_end, int base)
void * memset(void *dest, int ch, size_t count)
noreturn void __stack_chk_fail(void)
void * __memmove_chk(void *dest, const void *src, size_t len, size_t destlen)
long strtol(const char *str, char **str_end, int base)
long long __aeabi_llsl(long long, int)
char * strrchr(const char *str, int ch)
char * strncat(char *dest, const char *src, size_t count)
int __prnt(void(*cb)(void *argp, int ch), void *argp, const char *fmt, va_list ap)
Generic formatted output processing function.
void * __strlcat_chk(char *dst, const char *src, size_t dstsize, size_t dstlen)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
long long __aeabi_lmul(long long, long long)
char * strstr(const char *str, const char *substr)
int strlcat(char *dst, const char *src, size_t dstsize)
char * __strcat_chk(char *dest, const char *src, size_t destlen)
unsigned long strtoul(const char *str, char **str_end, int base)
char * __strncat_chk(char *dest, const char *src, size_t count, size_t dstlen)
char * strchr(const char *str, int ch)
void * memchr(const void *ptr, int ch, size_t count)
unsigned look_ctype_table(int ch)
Definition sysclib.c:158
lldiv_t __aeabi_ldivmod(long long n, long long d)
int memcmp(const void *lhs, const void *rhs, size_t count)
int timingsafe_bcmp(const void *b1, const void *b2, size_t len)
char * __strlcpy_chk(char *s1, const char *s2, size_t n, size_t s1len)
int __aeabi_ulcmp(unsigned long long, unsigned long long)
unsigned __aeabi_uidiv(unsigned numerator, unsigned denominator)
long long __aeabi_lasr(long long, int)
int tolower(int ch)
Definition sysclib.c:144
int toupper(int ch)
Definition sysclib.c:151
int __aeabi_idiv(int numerator, int denominator)
void * __memcpy_chk(void *dest, const void *src, size_t len, size_t destlen)
void * memmove(void *dest, const void *src, size_t size)
void * memcpy(void *dest, const void *src, size_t count)
int __aeabi_lcmp(long long, long long)
int strnlen(const char *s, size_t maxlen)
ulldiv_t __aeabi_uldivmod(unsigned long long n, unsigned long long d)
udiv_return __aeabi_uidivmod(unsigned numerator, unsigned denominator)
idiv_return __aeabi_idivmod(int numerator, int denominator)
char * SceSysclibForDriver_FE39AEAC(char *dst, const char *src, size_t dstsize)
int snprintf(char *buffer, size_t bufsz, const char *format,...)