aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/boot/gdt.h19
-rw-r--r--kernel/include/boot/interrupts.h26
-rw-r--r--kernel/include/drivers/serial.h11
-rw-r--r--kernel/include/drivers/vga_text_buffer.h15
-rw-r--r--kernel/include/kernel/spinlock.h11
-rw-r--r--kernel/include/libk/liballoc.h5
-rw-r--r--kernel/include/libk/stdio.h8
-rw-r--r--kernel/include/libk/string.h8
-rw-r--r--kernel/include/mm/memory_map.h9
-rw-r--r--kernel/include/mm/multiboot.h8
-rw-r--r--kernel/include/mm/page_table_allocator.h9
-rw-r--r--kernel/include/mm/physical.h2
-rw-r--r--kernel/include/mm/physical_mm.h25
-rw-r--r--kernel/include/mm/virtual_mm.h23
-rw-r--r--kernel/include/stddef.h468
15 files changed, 69 insertions, 578 deletions
diff --git a/kernel/include/boot/gdt.h b/kernel/include/boot/gdt.h
index 49067bd..b104db8 100644
--- a/kernel/include/boot/gdt.h
+++ b/kernel/include/boot/gdt.h
@@ -92,9 +92,6 @@
#define GDT_KERNEL_CODE_OFFSET 0x8
#define GDT_KERNEL_DATA_OFFSET 0x10
-namespace GDT
-{
-
typedef struct {
uint16_t limit_low;
uint16_t base_low;
@@ -102,18 +99,16 @@ typedef struct {
uint8_t access_flags;
uint8_t flags_limit_high;
uint8_t base_high;
-} PACKED entry_t;
+} PACKED gdt_entry_t;
typedef struct {
- uint16_t limit; /* sizeof(GDT) - 1 */
- entry_t *ptr; /* Address of GDT */
-} PACKED descriptor_t;
-
-extern "C" void _GDT_flush(descriptor_t *descriptor);
+ uint16_t limit; /* sizeof(GDT) - 1 */
+ gdt_entry_t *ptr; /* Address of GDT */
+} PACKED gdt_descriptor_t;
-void initialize(void);
-void load(void);
+void _GDT_flush(gdt_descriptor_t *descriptor);
-}
+void gdt_initialize(void);
+void gdt_load(void);
#endif
diff --git a/kernel/include/boot/interrupts.h b/kernel/include/boot/interrupts.h
index 4df66e9..d436d30 100644
--- a/kernel/include/boot/interrupts.h
+++ b/kernel/include/boot/interrupts.h
@@ -21,6 +21,7 @@
#include <boot/gdt.h>
#include <common.h>
+#include <stdbool.h>
#include <stdint.h>
#define IDT_ENTRY(isr, attributes) \
@@ -36,14 +37,11 @@
#define IDT_PRESENT (1 << 7)
#define IDT_KERNEL_PRIVILEGE_LEVEL (0)
#define IDT_USER_PRIVILEGE_LEVEL (3 << 5)
-#define IDT_TASK_GATE (0b0101)
-#define IDT_16BIT_INTERRUPT_GATE (0b0110)
-#define IDT_16BIT_TRAP_GATE (0b0111)
-#define IDT_32BIT_INTERRUPT_GATE (0b1110)
-#define IDT_32BIT_TRAP_GATE (0b1111)
-
-namespace Interrupts
-{
+#define IDT_TASK_GATE (0x05)
+#define IDT_16BIT_INTERRUPT_GATE (0x06)
+#define IDT_16BIT_TRAP_GATE (0x07)
+#define IDT_32BIT_INTERRUPT_GATE (0x0e)
+#define IDT_32BIT_TRAP_GATE (0x0f)
typedef struct {
uint16_t isr_low;
@@ -59,16 +57,14 @@ typedef struct {
} PACKED descriptor_t;
/* Simply loads IDT and enables interrupts */
-void initialize(void);
-void enable(void);
-void disable(void);
+void interrupts_initialize(void);
+void interrupts_enable(void);
+void interrupts_disable(void);
/* IDT */
-void load_idt(void);
+void idt_load(void);
bool idt_loaded(void);
-extern "C" NORETURN void exception_handler(int irq_number);
-
-}
+NORETURN void exception_handler(int irq_number);
#endif
diff --git a/kernel/include/drivers/serial.h b/kernel/include/drivers/serial.h
index 33947eb..48ed75c 100644
--- a/kernel/include/drivers/serial.h
+++ b/kernel/include/drivers/serial.h
@@ -23,13 +23,8 @@
#define PORT 0x3f8 // COM1
-namespace Serial
-{
-
-bool initialize(void);
-void write_char(const char chr);
-void write_string(const char *string);
-
-}
+bool serial_initialize(void);
+void serial_write_char(const char chr);
+void serial_write_string(const char *string);
#endif
diff --git a/kernel/include/drivers/vga_text_buffer.h b/kernel/include/drivers/vga_text_buffer.h
index 389c864..ada5228 100644
--- a/kernel/include/drivers/vga_text_buffer.h
+++ b/kernel/include/drivers/vga_text_buffer.h
@@ -43,9 +43,6 @@
#define vga_entry(character, color) \
((uint16_t) color << 8 | (uint16_t) character)
-namespace VGATextBuffer
-{
-
/* Hardware text mode color constants. */
typedef enum {
COLOR_BLACK = 0,
@@ -64,13 +61,11 @@ typedef enum {
COLOR_LIGHT_MAGENTA = 13,
COLOR_LIGHT_BROWN = 14,
COLOR_WHITE = 15
-} colors;
-
-void initialize(void);
-void write_char(const char);
-void write_string(const char *string);
-void printf(const char *string, ...);
+} vgatb_colors;
-}
+void vgatb_initialize(void);
+void vgatb_write_char(const char);
+void vgatb_write_string(const char *string);
+void vgatb_printf(const char *string, ...);
#endif
diff --git a/kernel/include/kernel/spinlock.h b/kernel/include/kernel/spinlock.h
index bd255ad..70c0303 100644
--- a/kernel/include/kernel/spinlock.h
+++ b/kernel/include/kernel/spinlock.h
@@ -23,14 +23,7 @@
typedef uint8_t spinlock_t;
-class Spinlock
-{
-private:
- spinlock_t m_lock;
-
-public:
- void acquire(void);
- void release(void);
-};
+void spinlock_acquire(spinlock_t *lock);
+void spinlock_release(spinlock_t *lock);
#endif
diff --git a/kernel/include/libk/liballoc.h b/kernel/include/libk/liballoc.h
index b1568e9..82186c4 100644
--- a/kernel/include/libk/liballoc.h
+++ b/kernel/include/libk/liballoc.h
@@ -21,9 +21,6 @@
#include <stddef.h>
-namespace LibAlloc
-{
-
/** This is a boundary tag which is prepended to the
* page or section of a page which we have allocated. It is
* used to identify valid memory blocks that the
@@ -47,6 +44,4 @@ void *krealloc(void *, size_t);
void *kcalloc(size_t, size_t);
void kfree(void *);
-}
-
#endif
diff --git a/kernel/include/libk/stdio.h b/kernel/include/libk/stdio.h
index 44050dd..f944fe4 100644
--- a/kernel/include/libk/stdio.h
+++ b/kernel/include/libk/stdio.h
@@ -22,10 +22,6 @@
#include <stdarg.h>
#include <stddef.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-
typedef int (*_printf_engine_output_func)(const char *str,
size_t len,
void *state);
@@ -43,8 +39,4 @@ int vsnprintf(char *str, size_t len, const char *fmt, va_list ap);
void printk(const char *from, const char *msg, ...);
void printk_raw(const char *msg, ...);
-#ifdef __cplusplus
-}
-#endif
-
#endif
diff --git a/kernel/include/libk/string.h b/kernel/include/libk/string.h
index 8ea5b92..88b9888 100644
--- a/kernel/include/libk/string.h
+++ b/kernel/include/libk/string.h
@@ -21,15 +21,7 @@
#include <stddef.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-
size_t strlen(const char *str);
void *memset(void *s, int c, size_t n);
-#ifdef __cplusplus
-}
-#endif
-
#endif
diff --git a/kernel/include/mm/memory_map.h b/kernel/include/mm/memory_map.h
index de8296b..ec67b64 100644
--- a/kernel/include/mm/memory_map.h
+++ b/kernel/include/mm/memory_map.h
@@ -30,12 +30,7 @@ typedef struct {
multiboot_memory_map_t *region_list[MAX_FREE_REGIONS];
} free_memory_regions_t;
-namespace MemoryMap
-{
-
-void load(multiboot_info_t *mmap);
-free_memory_regions_t *get_free_regions(void);
-
-}
+void mmap_load(multiboot_info_t *mmap);
+free_memory_regions_t *mmap_get_free_regions(void);
#endif
diff --git a/kernel/include/mm/multiboot.h b/kernel/include/mm/multiboot.h
index d95ab55..d7cd8cc 100644
--- a/kernel/include/mm/multiboot.h
+++ b/kernel/include/mm/multiboot.h
@@ -94,10 +94,6 @@
#ifndef ASM_FILE
-#ifdef __cplusplus
-extern "C" {
-#endif
-
typedef uint8_t multiboot_uint8_t;
typedef uint16_t multiboot_uint16_t;
typedef uint32_t multiboot_uint32_t;
@@ -271,10 +267,6 @@ struct multiboot_apm_info {
multiboot_uint16_t dseg_len;
};
-#ifdef __cplusplus
-}
-#endif
-
#endif /* ! ASM_FILE */
#endif /* ! MULTIBOOT_HEADER */
diff --git a/kernel/include/mm/page_table_allocator.h b/kernel/include/mm/page_table_allocator.h
index 4a0b0fb..80de80e 100644
--- a/kernel/include/mm/page_table_allocator.h
+++ b/kernel/include/mm/page_table_allocator.h
@@ -21,12 +21,7 @@
#include <stdint.h>
-namespace PageTableAllocator
-{
-
-uint32_t *allocate(void);
-void initialize(void);
-
-}
+uint32_t *pta_allocate(void);
+void pta_initialize(void);
#endif
diff --git a/kernel/include/mm/physical.h b/kernel/include/mm/physical.h
new file mode 100644
index 0000000..8f79e1c
--- /dev/null
+++ b/kernel/include/mm/physical.h
@@ -0,0 +1,2 @@
+
+pmm_initialize
diff --git a/kernel/include/mm/physical_mm.h b/kernel/include/mm/physical_mm.h
index abdf178..d10b010 100644
--- a/kernel/include/mm/physical_mm.h
+++ b/kernel/include/mm/physical_mm.h
@@ -34,40 +34,35 @@
*/
#define MAX_BLOCKS 1048576
-namespace PhysicalMM
-{
-
/* Initialize the memory map by getting all free regions, setting all blocks to
* used, initializing regions marked free by the memory map provided by
* multiboot, and deinitializing the memory used by the kernel */
-void initialize(void);
+void pmm_initialize(void);
/* Find and allocate a free memory block, returning the physical address of the
* block */
-void *allocate_block(void);
+void *pmm_allocate_block(void);
/* Free an allocated memory block, given the physical address (from
* allocate_block) */
-void free_block(void *physical_address);
+void pmm_free_block(void *physical_address);
/*-- BITMAP --*/
/* Marks the block as 'used' */
-void set_used(const uint32_t bit,
- uint32_t *total_free_blocks,
- uint32_t *memory_map);
+void pmm_set_used(const uint32_t bit,
+ uint32_t *total_free_blocks,
+ uint32_t *memory_map);
/* Marks the block as 'unused' */
-void set_usable(const uint32_t bit,
- uint32_t *total_free_blocks,
- uint32_t *memory_map);
+void pmm_set_usable(const uint32_t bit,
+ uint32_t *total_free_blocks,
+ uint32_t *memory_map);
/* Returns:
* True if the bit is set (block is in use)
* False if the bit is unset (block isn't in use)
*/
-bool test_bit(const uint32_t bit, uint32_t *memory_map);
-
-}
+bool pmm_test_bit(const uint32_t bit, uint32_t *memory_map);
#endif
diff --git a/kernel/include/mm/virtual_mm.h b/kernel/include/mm/virtual_mm.h
index 818ce8b..4583fc0 100644
--- a/kernel/include/mm/virtual_mm.h
+++ b/kernel/include/mm/virtual_mm.h
@@ -69,51 +69,46 @@
#define VIRTUAL_ADDRESS(pd_index, pt_index) \
(((pd_index) << 22) | ((pt_index) << 12))
-namespace VirtualMM
-{
-
-uint32_t *get_page_directory(void);
+uint32_t *vmm_get_page_directory(void);
/*
* Loads a given page directory into CR0
*/
-void load_page_directory(uint32_t *page_directory);
+void vmm_load_page_directory(uint32_t *page_directory);
/*
* Switches the current page directory to a given page directory
*/
-bool switch_page_directory(uint32_t *page_directory);
+bool vmm_switch_page_directory(uint32_t *page_directory);
/*
* Initialize the virtual memory manager
*/
-void initialize(void);
+void vmm_initialize(void);
/*
* Map a physical address to a virtual address
*/
-void map_page(void *physical_address, void *virtual_address);
+void vmm_map_page(void *physical_address, void *virtual_address);
/*
* Unmap a page starting at virtual address
*/
-void unmap_page(void *virtual_address);
+void vmm_unmap_page(void *virtual_address);
/*
* Find a virtual address with n consecutive free addresses.
*/
-void *find_free_pages(uint32_t n_pages);
+void *vmm_find_free_pages(uint32_t n_pages);
/*
* Allocate and map n pages.
*/
-void *alloc_pages(uint32_t n_pages);
+void *vmm_alloc_pages(uint32_t n_pages);
/*
* Free n pages from the starting address.
*/
-void free_pages(void *starting_address, uint32_t n_pages);
-
-}
+void vmm_free_pages(void *starting_address, uint32_t n_pages);
#endif
diff --git a/kernel/include/stddef.h b/kernel/include/stddef.h
index 46341d7..0510010 100644
--- a/kernel/include/stddef.h
+++ b/kernel/include/stddef.h
@@ -1,465 +1,29 @@
-/* Copyright (C) 1989-2025 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* https://github.com/gcc-mirror/gcc/blob/master/gcc/ginclude/stddef.h */
-
-/*
- * ISO C Standard: 7.17 Common definitions <stddef.h>
- */
-#if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \
- && !defined(__STDDEF_H__)) \
- || defined(__need_wchar_t) || defined(__need_size_t) \
- || defined(__need_ptrdiff_t) || defined(__need_NULL) \
- || defined(__need_wint_t)
-
-/* Any one of these symbols __need_* means that GNU libc
- wants us just to define one data type. So don't define
- the symbols that indicate this file's entire job has been done. */
-#if (!defined(__need_wchar_t) && !defined(__need_size_t) \
- && !defined(__need_ptrdiff_t) && !defined(__need_NULL) \
- && !defined(__need_wint_t))
+#ifndef _STDDEF_H
#define _STDDEF_H
-#define _STDDEF_H_
-/* snaroff@next.com says the NeXT needs this. */
-#define _ANSI_STDDEF_H
-#endif
-#ifndef __sys_stdtypes_h
-/* This avoids lossage on SunOS but only if stdtypes.h comes first.
- There's no way to win with the other order! Sun lossage. */
+#ifndef _BITSIZE_STDDEF_H
+#define _BITSIZE_STDDEF_H
-#if defined(__NetBSD__)
-#include <machine/ansi.h>
-#endif
-
-#if defined (__FreeBSD__)
-#include <sys/_types.h>
-#endif
-
-#if defined(__NetBSD__)
-#if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_)
#define _SIZE_T
-#endif
-#if !defined(_PTRDIFF_T_) && !defined(_BSD_PTRDIFF_T_)
-#define _PTRDIFF_T
-#endif
-/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
- instead of _WCHAR_T_. */
-#if !defined(_WCHAR_T_) && !defined(_BSD_WCHAR_T_)
-#ifndef _BSD_WCHAR_T_
-#define _WCHAR_T
-#endif
-#endif
-/* Undef _FOO_T_ if we are supposed to define foo_t. */
-#if defined (__need_ptrdiff_t) || defined (_STDDEF_H_)
-#undef _PTRDIFF_T_
-#undef _BSD_PTRDIFF_T_
-#endif
-#if defined (__need_size_t) || defined (_STDDEF_H_)
-#undef _SIZE_T_
-#undef _BSD_SIZE_T_
-#endif
-#if defined (__need_wchar_t) || defined (_STDDEF_H_)
-#undef _WCHAR_T_
-#undef _BSD_WCHAR_T_
-#endif
-#endif /* defined(__NetBSD__) */
-
-/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
- Just ignore it. */
-#if defined (__sequent__) && defined (_PTRDIFF_T_)
-#undef _PTRDIFF_T_
-#endif
-
-/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
- _TYPE_size_t which will typedef size_t. fixincludes patched the
- vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
- not defined, and so that defining this macro defines _GCC_SIZE_T.
- If we find that the macros are still defined at this point, we must
- invoke them so that the type is defined as expected. */
-#if defined (_TYPE_ptrdiff_t) && (defined (__need_ptrdiff_t) || defined (_STDDEF_H_))
-_TYPE_ptrdiff_t;
-#undef _TYPE_ptrdiff_t
-#endif
-#if defined (_TYPE_size_t) && (defined (__need_size_t) || defined (_STDDEF_H_))
-_TYPE_size_t;
-#undef _TYPE_size_t
-#endif
-#if defined (_TYPE_wchar_t) && (defined (__need_wchar_t) || defined (_STDDEF_H_))
-_TYPE_wchar_t;
-#undef _TYPE_wchar_t
-#endif
-
-/* In case nobody has defined these types, but we aren't running under
- GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
- __WCHAR_TYPE__ have reasonable values. This can happen if the
- parts of GCC is compiled by an older compiler, that actually
- include gstddef.h, such as collect2. */
-
-/* Signed type of difference of two pointers. */
-
-/* Define this type if we are doing the whole job,
- or if we want this type in particular. */
-#if defined (_STDDEF_H) || defined (__need_ptrdiff_t)
-#ifndef _PTRDIFF_T /* in case <sys/types.h> has defined it. */
-#ifndef _T_PTRDIFF_
-#ifndef _T_PTRDIFF
-#ifndef __PTRDIFF_T
-#ifndef _PTRDIFF_T_
-#ifndef _BSD_PTRDIFF_T_
-#ifndef ___int_ptrdiff_t_h
-#ifndef _GCC_PTRDIFF_T
-#ifndef _PTRDIFF_T_DECLARED /* DragonFly */
-#ifndef __DEFINED_ptrdiff_t /* musl libc */
-#define _PTRDIFF_T
-#define _T_PTRDIFF_
-#define _T_PTRDIFF
-#define __PTRDIFF_T
-#define _PTRDIFF_T_
-#define _BSD_PTRDIFF_T_
-#define ___int_ptrdiff_t_h
-#define _GCC_PTRDIFF_T
-#define _PTRDIFF_T_DECLARED
-#define __DEFINED_ptrdiff_t
-#ifndef __PTRDIFF_TYPE__
-#define __PTRDIFF_TYPE__ long int
-#endif
-typedef __PTRDIFF_TYPE__ ptrdiff_t;
-#endif /* __DEFINED_ptrdiff_t */
-#endif /* _PTRDIFF_T_DECLARED */
-#endif /* _GCC_PTRDIFF_T */
-#endif /* ___int_ptrdiff_t_h */
-#endif /* _BSD_PTRDIFF_T_ */
-#endif /* _PTRDIFF_T_ */
-#endif /* __PTRDIFF_T */
-#endif /* _T_PTRDIFF */
-#endif /* _T_PTRDIFF_ */
-#endif /* _PTRDIFF_T */
-
-/* If this symbol has done its job, get rid of it. */
-#undef __need_ptrdiff_t
-
-#endif /* _STDDEF_H or __need_ptrdiff_t. */
-
-/* Unsigned type of `sizeof' something. */
-
-/* Define this type if we are doing the whole job,
- or if we want this type in particular. */
-#if defined (_STDDEF_H) || defined (__need_size_t)
-#ifndef __size_t__ /* BeOS */
-#ifndef __SIZE_T__ /* Cray Unicos/Mk */
-#ifndef _SIZE_T /* in case <sys/types.h> has defined it. */
-#ifndef _SYS_SIZE_T_H
-#ifndef _T_SIZE_
-#ifndef _T_SIZE
-#ifndef __SIZE_T
-#ifndef _SIZE_T_
-#ifndef _BSD_SIZE_T_
-#ifndef _SIZE_T_DEFINED_
-#ifndef _SIZE_T_DEFINED
-#ifndef _BSD_SIZE_T_DEFINED_ /* Darwin */
-#ifndef _SIZE_T_DECLARED /* FreeBSD 5 */
-#ifndef __DEFINED_size_t /* musl libc */
-#ifndef ___int_size_t_h
-#ifndef _GCC_SIZE_T
-#ifndef _SIZET_
-#ifndef __size_t
-#define __size_t__ /* BeOS */
-#define __SIZE_T__ /* Cray Unicos/Mk */
-#define _SIZE_T
-#define _SYS_SIZE_T_H
-#define _T_SIZE_
-#define _T_SIZE
-#define __SIZE_T
-#define _SIZE_T_
-#define _BSD_SIZE_T_
-#define _SIZE_T_DEFINED_
-#define _SIZE_T_DEFINED
-#define _BSD_SIZE_T_DEFINED_ /* Darwin */
-#define _SIZE_T_DECLARED /* FreeBSD 5 */
-#define __DEFINED_size_t /* musl libc */
-#define ___int_size_t_h
-#define _GCC_SIZE_T
-#define _SIZET_
-#if defined (__FreeBSD__) \
- || defined(__DragonFly__) \
- || defined(__FreeBSD_kernel__) \
- || defined(__VMS__)
-/* __size_t is a typedef, must not trash it. */
+#if defined(__s390__) || defined(__cris__)
+typedef unsigned long size_t;
#else
-#define __size_t
-#endif
-#ifndef __SIZE_TYPE__
-#define __SIZE_TYPE__ long unsigned int
-#endif
-#if !(defined (__GNUG__) && defined (size_t))
-typedef __SIZE_TYPE__ size_t;
-#ifdef __BEOS__
-typedef long ssize_t;
-#endif /* __BEOS__ */
-#endif /* !(defined (__GNUG__) && defined (size_t)) */
-#endif /* __size_t */
-#endif /* _SIZET_ */
-#endif /* _GCC_SIZE_T */
-#endif /* ___int_size_t_h */
-#endif /* __DEFINED_size_t */
-#endif /* _SIZE_T_DECLARED */
-#endif /* _BSD_SIZE_T_DEFINED_ */
-#endif /* _SIZE_T_DEFINED */
-#endif /* _SIZE_T_DEFINED_ */
-#endif /* _BSD_SIZE_T_ */
-#endif /* _SIZE_T_ */
-#endif /* __SIZE_T */
-#endif /* _T_SIZE */
-#endif /* _T_SIZE_ */
-#endif /* _SYS_SIZE_T_H */
-#endif /* _SIZE_T */
-#endif /* __SIZE_T__ */
-#endif /* __size_t__ */
-#undef __need_size_t
-#endif /* _STDDEF_H or __need_size_t. */
-
-
-/* Wide character type.
- Locale-writers should change this as necessary to
- be big enough to hold unique values not between 0 and 127,
- and not (wchar_t) -1, for each defined multibyte character. */
-
-/* Define this type if we are doing the whole job,
- or if we want this type in particular. */
-#if defined (_STDDEF_H) || defined (__need_wchar_t)
-#ifndef __wchar_t__ /* BeOS */
-#ifndef __WCHAR_T__ /* Cray Unicos/Mk */
-#ifndef _WCHAR_T
-#ifndef _T_WCHAR_
-#ifndef _T_WCHAR
-#ifndef __WCHAR_T
-#ifndef _WCHAR_T_
-#ifndef _BSD_WCHAR_T_
-#ifndef _BSD_WCHAR_T_DEFINED_ /* Darwin */
-#ifndef _BSD_RUNE_T_DEFINED_ /* Darwin */
-#ifndef _WCHAR_T_DECLARED /* FreeBSD 5 */
-#ifndef __DEFINED_wchar_t /* musl libc */
-#ifndef _WCHAR_T_DEFINED_
-#ifndef _WCHAR_T_DEFINED
-#ifndef _WCHAR_T_H
-#ifndef ___int_wchar_t_h
-#ifndef __INT_WCHAR_T_H
-#ifndef _GCC_WCHAR_T
-#define __wchar_t__ /* BeOS */
-#define __WCHAR_T__ /* Cray Unicos/Mk */
-#define _WCHAR_T
-#define _T_WCHAR_
-#define _T_WCHAR
-#define __WCHAR_T
-#define _WCHAR_T_
-#define _BSD_WCHAR_T_
-#define _WCHAR_T_DEFINED_
-#define _WCHAR_T_DEFINED
-#define _WCHAR_T_H
-#define ___int_wchar_t_h
-#define __INT_WCHAR_T_H
-#define _GCC_WCHAR_T
-#define _WCHAR_T_DECLARED
-#define __DEFINED_wchar_t
-
-/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
- instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
- symbols in the _FOO_T_ family, stays defined even after its
- corresponding type is defined). If we define wchar_t, then we
- must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if
- we undef _WCHAR_T_, then we must also define rune_t, since
- headers like runetype.h assume that if machine/ansi.h is included,
- and _BSD_WCHAR_T_ is not defined, then rune_t is available.
- machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of
- the same type." */
-#ifdef _BSD_WCHAR_T_
-#undef _BSD_WCHAR_T_
-#ifdef _BSD_RUNE_T_
-#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
-typedef _BSD_RUNE_T_ rune_t;
-#define _BSD_WCHAR_T_DEFINED_
-#define _BSD_RUNE_T_DEFINED_ /* Darwin */
-#if defined (__FreeBSD__) && (__FreeBSD__ < 5)
-/* Why is this file so hard to maintain properly? In contrast to
- the comment above regarding BSD/386 1.1, on FreeBSD for as long
- as the symbol has existed, _BSD_RUNE_T_ must not stay defined or
- redundant typedefs will occur when stdlib.h is included after this file. */
-#undef _BSD_RUNE_T_
-#endif
-#endif
-#endif
-#endif
-/* FreeBSD 5 can't be handled well using "traditional" logic above
- since it no longer defines _BSD_RUNE_T_ yet still desires to export
- rune_t in some cases... */
-#if defined (__FreeBSD__) && (__FreeBSD__ >= 5)
-#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE)
-#if __BSD_VISIBLE
-#ifndef _RUNE_T_DECLARED
-typedef __rune_t rune_t;
-#define _RUNE_T_DECLARED
-#endif
-#endif
-#endif
+typedef unsigned int size_t;
#endif
-#ifndef __WCHAR_TYPE__
-#define __WCHAR_TYPE__ int
-#endif
-#ifndef __cplusplus
-typedef __WCHAR_TYPE__ wchar_t;
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif /* __DEFINED_wchar_t */
-#endif /* _WCHAR_T_DECLARED */
-#endif /* _BSD_RUNE_T_DEFINED_ */
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif
-#endif /* __WCHAR_T__ */
-#endif /* __wchar_t__ */
-#undef __need_wchar_t
-#endif /* _STDDEF_H or __need_wchar_t. */
-
-#if defined (__need_wint_t)
-#ifndef _WINT_T
-#define _WINT_T
-
-#ifndef __WINT_TYPE__
-#define __WINT_TYPE__ unsigned int
-#endif
-typedef __WINT_TYPE__ wint_t;
-#endif
-#undef __need_wint_t
-#endif
-
-#if defined(__NetBSD__)
-/* The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_
- are probably typos and should be removed before 2.8 is released. */
-#ifdef _GCC_PTRDIFF_T_
-#undef _PTRDIFF_T_
-#undef _BSD_PTRDIFF_T_
-#endif
-#ifdef _GCC_SIZE_T_
-#undef _SIZE_T_
-#undef _BSD_SIZE_T_
-#endif
-#ifdef _GCC_WCHAR_T_
-#undef _WCHAR_T_
-#undef _BSD_WCHAR_T_
-#endif
-/* The following ones are the real ones. */
-#ifdef _GCC_PTRDIFF_T
-#undef _PTRDIFF_T_
-#undef _BSD_PTRDIFF_T_
-#endif
-#ifdef _GCC_SIZE_T
-#undef _SIZE_T_
-#undef _BSD_SIZE_T_
-#endif
-#ifdef _GCC_WCHAR_T
-#undef _WCHAR_T_
-#undef _BSD_WCHAR_T_
-#endif
-#endif /* __NetBSD__ */
-
-#endif /* __sys_stdtypes_h */
+#define _PTRDIFF_T
+typedef signed int ptrdiff_t;
-/* A null pointer constant. */
+#endif /* _BITSIZE_STDDEF_H */
-#if defined (_STDDEF_H) || defined (__need_NULL)
-#undef NULL /* in case <stdio.h> has defined it. */
-#ifdef __GNUG__
-#define NULL __null
-#else /* G++ */
-#ifndef __cplusplus
-#define NULL ((void *)0)
-#else /* C++ */
+#undef NULL
+#ifdef __cplusplus
#define NULL 0
-#endif /* C++ */
-#endif /* G++ */
-#endif /* NULL not defined and <stddef.h> or need NULL. */
-#undef __need_NULL
-
-#ifdef _STDDEF_H
-
-/* Offset of member MEMBER in a struct of type TYPE. */
-#undef offsetof /* in case a system header has defined it. */
-#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) \
- || (defined(__cplusplus) && __cplusplus >= 201103L)
-#ifndef _GCC_MAX_ALIGN_T
-#define _GCC_MAX_ALIGN_T
-/* Type whose alignment is supported in every context and is at least
- as great as that of any standard type not using alignment
- specifiers. */
-typedef struct {
- long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
- long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
- /* _Float128 is defined as a basic type, so max_align_t must be
- sufficiently aligned for it. This code must work in C++, so we
- use __float128 here; that is only available on some
- architectures, but only on i386 is extra alignment needed for
- __float128. */
-#ifdef __i386__
- __float128 __max_align_f128 __attribute__((__aligned__(__alignof(__float128))));
-#endif
-} max_align_t;
-#endif
-#endif /* C11 or C++11. */
-
-#if defined(__cplusplus) && __cplusplus >= 201103L
-#ifndef _GXX_NULLPTR_T
-#define _GXX_NULLPTR_T
- typedef decltype(nullptr) nullptr_t;
-#endif
-#endif /* C++11. */
-
-#if (defined (__STDC_VERSION__) && __STDC_VERSION__ > 201710L)
-#ifndef _GCC_NULLPTR_T
-#define _GCC_NULLPTR_T
- typedef __typeof__(nullptr) nullptr_t;
-/* ??? This doesn't define __STDC_VERSION_STDDEF_H__ yet. */
-#endif
-#endif /* C23. */
-
-#if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
-#define unreachable() (__builtin_unreachable ())
-#define __STDC_VERSION_STDDEF_H__ 202311L
+#else
+#define NULL ((void *) 0)
#endif
-#endif /* _STDDEF_H was defined this time */
+#undef offsetof
+#define offsetof(t, m) ((size_t) &((t *) 0)->m)
-#endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
- || __need_XXX was not defined before */
+#endif /* _STDDEF_H */