summaryrefslogtreecommitdiff
path: root/include/user/kernel/libkernel.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/user/kernel/libkernel.h')
-rw-r--r--include/user/kernel/libkernel.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/include/user/kernel/libkernel.h b/include/user/kernel/libkernel.h
new file mode 100644
index 0000000..7367686
--- /dev/null
+++ b/include/user/kernel/libkernel.h
@@ -0,0 +1,92 @@
+#ifndef _PSP2_KERNEL_CLIB_H_
+#define _PSP2_KERNEL_CLIB_H_
+
+#include <psp2/types.h>
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Run bkpt #0x88 and end the process in state -1
+ *
+ * @return none
+ */
+__attribute__((__noreturn__))
+void sceClibAbort(void);
+
+char sceClibLookCtypeTable(char ch);
+
+int sceClibTolower(char ch);
+int sceClibToupper(char ch);
+
+__attribute__((__format__(__printf__, 1, 2)))
+int sceClibPrintf(const char *fmt, ...);
+
+int sceClibVprintf(const char *fmt, va_list args);
+
+__attribute__((__format__(__printf__, 3, 4)))
+int sceClibSnprintf(char *dst, SceSize dst_max_size, const char *fmt, ...);
+
+int sceClibVsnprintf(char *dst, SceSize dst_max_size, const char *fmt, va_list args);
+
+char *sceClibStrncpy(char *dst, const char *src, SceSize len);
+char *sceClibStrncat(char *dst, const char *src, SceSize len);
+
+char *sceClibStrrchr(const char *src, int ch);
+char *sceClibStrstr(const char *s1, const char *s2);
+
+int sceClibStrcmp(const char *s1, const char *s2);
+int sceClibStrncmp(const char *s1, const char *s2, SceSize len);
+int sceClibStrncasecmp(const char *s1, const char *s2, SceSize len);
+
+SceSize sceClibStrnlen(const char *s1, SceSize max_len);
+
+void *sceClibMemset(void *dst, int ch, SceSize len);
+void *sceClibMemcpy(void *dst, const void *src, SceSize len);
+void *sceClibMemcpy_safe(void *dst, const void *src, SceSize len);
+void *sceClibMemmove(void *dst, const void *src, SceSize len);
+
+int sceClibMemcmp(const void *s1, const void *s2, SceSize len);
+
+void *sceClibMemchr(const void *src, int ch, SceSize len);
+
+long long sceClibStrtoll(const char *str, char **endptr, int base);
+
+/* mspace functions */
+
+typedef void* SceClibMspace;
+
+typedef struct SceClibMspaceStats {
+ SceSize maxSystemSize;
+ SceSize currentSystemSize;
+ SceSize maxInUseSize;
+ SceSize currentInUseSize;
+ SceSize reserved[4];
+} SceClibMspaceStats;
+
+/* create and destroy mspace */
+SceClibMspace sceClibMspaceCreate(void *base, SceSize capacity);
+SceInt32 sceClibMspaceDestroy(SceClibMspace msp);
+
+/* allocator and deallocator */
+void *sceClibMspaceMalloc(SceClibMspace msp, SceSize size);
+void sceClibMspaceFree(SceClibMspace msp, void *ptr);
+void *sceClibMspaceCalloc(SceClibMspace msp, SceSize nelem, SceSize size);
+void *sceClibMspaceMemalign(SceClibMspace msp, SceSize boundary, SceSize size);
+void *sceClibMspaceRealloc(SceClibMspace msp, void *ptr, SceSize size);
+void *sceClibMspaceReallocalign(SceClibMspace msp, void *ptr, SceSize size, SceSize boundary);
+
+/* utility */
+SceSize sceClibMspaceMallocUsableSize(void *p);
+SceInt32 sceClibMspaceMallocStats(SceClibMspace msp, SceClibMspaceStats *buf);
+SceInt32 sceClibMspaceMallocStatsFast(SceClibMspace msp, SceClibMspaceStats *buf);
+SceInt32 sceClibMspaceIsHeapEmpty(SceClibMspace msp);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PSP2_KERNEL_CLIB_H_ */
+