]> git.buserror.net Git - polintos/scott/priv.git/blob - kernel/include/kern/libc.h
1867a6da9d9602f79e909aec21f4fb837b4b6bd1
[polintos/scott/priv.git] / kernel / include / kern / libc.h
1 #ifndef _KERN_LIBC_H
2 #define _KERN_LIBC_H
3
4 #include <kern/types.h>
5 #include <stdarg.h>
6
7 extern "C" {
8         size_t vsnprintf(char *buf, size_t size, const char *str, va_list args);
9         size_t snprintf(char *buf, size_t size, const char *str, ...)
10         __attribute__((format(printf, 3, 4)));
11         size_t sprintf(char *buf, const char *str, ...)
12         __attribute__((format(printf, 2, 3)));
13         size_t printf(const char *str, ...)
14         __attribute__((format(printf, 1, 2)));
15
16         // FIXME: template/alignof versions
17         void *memcpy(void *dest, const void *src, size_t len);
18         void *memmove(void *dest, const void *src, size_t len);
19         int memcmp(const void *b1, const void *b2, size_t len);
20         void *memset(void *b, int ch, size_t len);
21
22         size_t strnlen(const char *s, size_t n);
23         size_t strlen(const char *s);
24
25         char *strcpy(char *dest, const char *src);
26         char *strncpy(char *dest, const char *src, size_t len);
27         char *strcat(char *dest, const char *src);
28         char *strncat(char *dest, const char *src, size_t len);
29
30         void bzero(void *b, size_t len);
31         
32         void *malloc(size_t size);
33         void free(void *ptr);
34         void abort();
35 }
36
37 void run_ctors();
38
39 // Placement new operators
40
41 inline void *operator new(size_t len, void *addr)
42 {
43         return addr;
44 }
45
46 inline void *operator new[](size_t len, void *addr)
47 {
48         return addr;
49 }
50
51 #endif