diff --git a/DtsodC/Makefile b/DtsodC/Makefile index aff39b5..42db5e5 100644 --- a/DtsodC/Makefile +++ b/DtsodC/Makefile @@ -3,7 +3,6 @@ OUTDIR=bin/ OUTFILE=dtsodc.com CMP=gcc all: clear_c build test -std: clear_c std_build std_test clear_c: clear @@ -15,22 +14,10 @@ clear_bin: clang: CMP=clang clang: all -# using sdlib -STDARGS=-D STDLIB -O -std_build: - @echo "\e[36m-------------[std_build]---------------\e[0m" - $(CMP) $(STDARGS) $(SRC) -o $(OUTDIR)std_$(OUTFILE) -std_test: - @echo "\e[36m-------------[std_test]----------------\e[0m" - $(OUTDIR)std_$(OUTFILE) - -# using cosmopolitan -COSMARGS_PRE=-g -O -static -fno-pie -no-pie -mno-red-zone -nostdlib -nostdinc -D COSMOPOLITAN -COSMARGS_POST=-Wl,--oformat=binary -Wl,--gc-sections -Wl,-z,max-page-size=0x1000 -fuse-ld=bfd -Wl,-T,cosmopolitan/ape.lds \ - -include cosmopolitan/cosmopolitan.h cosmopolitan/crt.o ./cosmopolitan/ape.o cosmopolitan/cosmopolitan.a -build: - @echo "\e[36m----------------[build]----------------\e[0m" - $(CMP) $(COSMARGS_PRE) $(SRC) $(COSMARGS_POST) -o $(OUTDIR)$(OUTFILE) +CMPARGS=-O -static +build: + @echo "\e[36m-------------[build]---------------\e[0m" + $(CMP) $(CMPARGS) $(SRC) -o $(OUTDIR)$(OUTFILE) test: - @echo "\e[36m-----------------[test]----------------\e[0m" + @echo "\e[36m-------------[test]----------------\e[0m" $(OUTDIR)$(OUTFILE) diff --git a/DtsodC/README.md b/DtsodC/README.md index 9654ece..b33d8b8 100644 --- a/DtsodC/README.md +++ b/DtsodC/README.md @@ -5,20 +5,9 @@ DtsodV23 parser in C# works too slow, so i wrote V24 parser in C
-## Compiling on Linux +## Building on Linux **Required packages:** gcc -Compile with glibc: -```bash -make std_build -```` - -Compile with cosmopolitan (crossplatform libc implementation): ```bash make build -``` - -If you see the `run-detectors: unable to find an interpreter` error, just execute this command: -```bash -sudo echo ':APE:M::MZqFpD::/bin/sh:' >/proc/sys/fs/binfmt_misc/register -``` \ No newline at end of file +```` diff --git a/DtsodC/cosmopolitan/ape-no-modify-self.o b/DtsodC/cosmopolitan/ape-no-modify-self.o deleted file mode 100644 index 73f6d34..0000000 Binary files a/DtsodC/cosmopolitan/ape-no-modify-self.o and /dev/null differ diff --git a/DtsodC/cosmopolitan/ape.lds b/DtsodC/cosmopolitan/ape.lds deleted file mode 100644 index dfba37a..0000000 --- a/DtsodC/cosmopolitan/ape.lds +++ /dev/null @@ -1,343 +0,0 @@ -ENTRY(_start) -PHDRS { - Head PT_LOAD FLAGS(5); - Rom PT_LOAD FLAGS(5); - Ram PT_LOAD FLAGS(6); - stack PT_GNU_STACK FLAGS(6); -} -SECTIONS { - .head SEGMENT_START("text-segment", 0x400000) : AT(0x2000) { - HIDDEN(_base = .); - KEEP(*(.head)) - KEEP(*(.text.head)) - . = ALIGN(8); - HIDDEN(ape_phdrs = .); - KEEP(*(.elf.phdrs)) - HIDDEN(ape_phdrs_end = .); - . = ALIGN(8); - HIDDEN(ape_note = .); - KEEP(*(.note.openbsd.ident)) - KEEP(*(.note.netbsd.ident)) - HIDDEN(ape_note_end = .); - KEEP(*(.pe.header)) - HIDDEN(ape_pe_sections = .); - KEEP(*(.pe.sections)) - HIDDEN(ape_pe_sections_end = .); - KEEP(*(.macho)) - . = ALIGN(8); - HIDDEN(ape_macho_end = .); - KEEP(*(.ape.pad.head)) - . = ALIGN(((255 & 4) == 4) || ((255 & 2) == 2) ? 0x1000 : 16); - HIDDEN(_ehead = .); - } :Head - .text . : { - *(.text.real) - KEEP(*(SORT_BY_NAME(.sort.text.real.*))) - HIDDEN(_ereal = .); - . += 1; - *(.start) - KEEP(*(.initprologue)) - KEEP(*(SORT_BY_NAME(.init.*))) - KEEP(*(.init)) - KEEP(*(.initepilogue)) - KEEP(*(.pltprologue)) - *(.plt) - KEEP(*(.pltepilogue)) - KEEP(*(.pltgotprologue)) - *(.plt.got) - KEEP(*(.pltgotepilogue)) - *(.text.startup .text.startup.*) - *(.text.exit .text.exit.*) - *(.text.unlikely .text.*_unlikely .text.unlikely.*) - *(SORT_BY_ALIGNMENT(.text.antiquity)) - *(SORT_BY_ALIGNMENT(.text.antiquity.*)) - KEEP(*(.textwindowsprologue)) - *(.text.windows) - KEEP(*(.textwindowsepilogue)) - *(SORT_BY_ALIGNMENT(.text.modernity)) - *(SORT_BY_ALIGNMENT(.text.modernity.*)) - *(SORT_BY_ALIGNMENT(.text.hot)) - *(SORT_BY_ALIGNMENT(.text.hot.*)) - KEEP(*(.keep.text)) - *(.text .stub .text.*) - KEEP(*(SORT_BY_NAME(.sort.text.*))) - KEEP(*(.ape.pad.test)); - *(.test.unlikely) - *(.test .test.*) - KEEP(*(.ape.pad.privileged)); - . += . > 0 ? 1 : 0; - HIDDEN(__privileged_start = .); - . += . > 0 ? 1 : 0; - *(.privileged) - HIDDEN(__privileged_end = .); - . += . > 0 ? 1 : 0; - KEEP(*(.ape.pad.rodata)); - *(.rodata .rodata.*) - *(.ubsan.types) - *(.ubsan.data) - KEEP(*(.commentprologue)) - KEEP(*(.comment)) - KEEP(*(.commentepilogue)) - KEEP(*(.idata.ro)); - KEEP(*(SORT_BY_NAME(.idata.ro.*))) - . = ALIGN(8); - PROVIDE_HIDDEN(__init_array_start = .); - KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) - SORT_BY_INIT_PRIORITY(.ctors.*))) - KEEP(*(.ctors)) - KEEP(*(.init_array)) - KEEP(*(.preinit_array)) - PROVIDE_HIDDEN(__init_array_end = .); - . = ALIGN(8); - PROVIDE_HIDDEN(__fini_array_start = .); - KEEP(*(SORT_BY_INIT_PRIORITY(.fini_array.*) - SORT_BY_INIT_PRIORITY(.dtors.*))) - KEEP(*(.dtors)) - PROVIDE_HIDDEN(__fini_array_end = .); - KEEP(*(.initroprologue)) - KEEP(*(SORT_BY_NAME(.initro.*))) - KEEP(*(.initroepilogue)) - KEEP(*(SORT_BY_NAME(.sort.rodata.*))) - KEEP(*(.ape.pad.text)) - . = ALIGN(0x1000); - HIDDEN(_etext = .); - PROVIDE_HIDDEN(etext = .); - } :Rom - .data . : { - KEEP(*(.dataprologue)) - *(.data .data.*) - KEEP(*(SORT_BY_NAME(.sort.data.*))) - . += . > 0 ? 1 : 0; - KEEP(*(.gotprologue)) - *(.got) - KEEP(*(.gotepilogue)) - KEEP(*(.gotpltprologue)) - *(.got.plt) - KEEP(*(.gotpltepilogue)) - . = ALIGN(8); - KEEP(*(SORT_BY_NAME(.piro.relo.sort.*))) - PROVIDE_HIDDEN(__relo_end = .); - . = ALIGN(8); - KEEP(*(SORT_BY_NAME(.piro.data.sort.*))) - KEEP(*(.piro.pad.data)) - . = ALIGN(0x1000); - HIDDEN(_edata = .); - PROVIDE_HIDDEN(edata = .); - } :Ram - .zip . : { - KEEP(*(SORT_BY_NAME(.zip.*))) - HIDDEN(_ezip = .); - } - .bss ALIGN(8) : { - KEEP(*(SORT_BY_NAME(.piro.bss.init.*))) - *(.piro.bss) - KEEP(*(SORT_BY_NAME(.piro.bss.sort.*))) - HIDDEN(__piro_end = .); - . += . > 0 ? 1 : 0; - *(SORT_BY_ALIGNMENT(.bss)) - *(SORT_BY_ALIGNMENT(.bss.*)) - *(COMMON) - KEEP(*(SORT_BY_NAME(.sort.bss.*))) - . = ALIGN(0x10000); - HIDDEN(_end = .); - PROVIDE_HIDDEN(end = .); - } - .shstrtab : { *(.shstrtab) } - .strtab : { *(.strtab) } - .symtab : { *(.symtab) } - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .debug_pubtypes 0 : { *(.debug_pubtypes) } - .debug_ranges 0 : { *(.debug_ranges) } - .debug_macro 0 : { *(.debug_macro) } - .debug_addr 0 : { *(.debug_addr) } - .gnu.attributes 0 : { KEEP(*(.gnu.attributes)) } - .GCC.command.line 0 : { *(.GCC.command.line) } - /DISCARD/ : { - *(__mcount_loc) - *(.discard) - *(.yoink) - *(.*) - } -} -HIDDEN(ape_elf_entry = (_start)); HIDDEN(ape_elf_entry_bcs0 = (((((((_start) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs1 = (((((((_start) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs2 = (((((((_start) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs3 = (((((((_start) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs4 = (((((((_start) >> ((4)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((4)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((4)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs5 = (((((((_start) >> ((5)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((5)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((5)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs6 = (((((((_start) >> ((6)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((6)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((6)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_entry_bcs7 = (((((((_start) >> ((7)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((_start) >> ((7)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((_start) >> ((7)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); -HIDDEN(ape_elf_phoff = (((ape_phdrs) - (0x400000)))); HIDDEN(ape_elf_phoff_bcs0 = (((((((((ape_phdrs) - (0x400000))) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs1 = (((((((((ape_phdrs) - (0x400000))) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs2 = (((((((((ape_phdrs) - (0x400000))) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs3 = (((((((((ape_phdrs) - (0x400000))) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs4 = (((((((((ape_phdrs) - (0x400000))) >> ((4)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((4)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((4)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs5 = (((((((((ape_phdrs) - (0x400000))) >> ((5)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((5)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((5)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs6 = (((((((((ape_phdrs) - (0x400000))) >> ((6)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((6)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((6)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phoff_bcs7 = (((((((((ape_phdrs) - (0x400000))) >> ((7)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((((ape_phdrs) - (0x400000))) >> ((7)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((((ape_phdrs) - (0x400000))) >> ((7)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); -HIDDEN(ape_elf_shoff = (0)); HIDDEN(ape_elf_shoff_bcs0 = (((((((0) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs1 = (((((((0) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs2 = (((((((0) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs3 = (((((((0) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs4 = (((((((0) >> ((4)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((4)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((4)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs5 = (((((((0) >> ((5)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((5)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((5)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs6 = (((((((0) >> ((6)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((6)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((6)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shoff_bcs7 = (((((((0) >> ((7)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((7)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((7)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); -HIDDEN(ape_elf_phnum = ((ape_phdrs_end - ape_phdrs) / 56)); HIDDEN(ape_elf_phnum_bcs0 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phnum_bcs1 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phnum_bcs2 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_phnum_bcs3 = ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | (((((((ape_phdrs_end - ape_phdrs) / 56) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | ((((((((ape_phdrs_end - ape_phdrs) / 56) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); -HIDDEN(ape_elf_shnum = (0)); HIDDEN(ape_elf_shnum_bcs0 = (((((((0) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shnum_bcs1 = (((((((0) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shnum_bcs2 = (((((((0) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shnum_bcs3 = (((((((0) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); -HIDDEN(ape_elf_shstrndx = (0)); HIDDEN(ape_elf_shstrndx_bcs0 = (((((((0) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shstrndx_bcs1 = (((((((0) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shstrndx_bcs2 = (((((((0) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_elf_shstrndx_bcs3 = (((((((0) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((0) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((0) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); -HIDDEN(__privileged_addr = ((__privileged_start) & -(0x1000))); -HIDDEN(__privileged_size = ((((__privileged_end) + (0x1000)-1) & -(0x1000)) - - ((__privileged_start) & -(0x1000)))); -HIDDEN(ape_rom_offset = 0); -HIDDEN(ape_rom_vaddr = ADDR(.head)); -HIDDEN(ape_rom_paddr = LOADADDR(.head)); -HIDDEN(ape_rom_filesz = LOADADDR(.data) - ape_rom_paddr); -HIDDEN(ape_rom_memsz = ADDR(.data) - ADDR(.head)); -HIDDEN(ape_rom_align = 0x1000); -HIDDEN(ape_rom_rva = ((ape_rom_vaddr) - (0x400000))); -HIDDEN(ape_ram_offset = ape_rom_offset + ape_rom_filesz); -HIDDEN(ape_ram_vaddr = ADDR(.data)); -HIDDEN(ape_ram_paddr = LOADADDR(.data)); -HIDDEN(ape_ram_filesz = SIZEOF(.data)); -HIDDEN(ape_ram_memsz = ADDR(.bss) + SIZEOF(.bss) - ape_ram_vaddr); -HIDDEN(ape_ram_align = 0x1000); -HIDDEN(ape_ram_rva = ((ape_ram_vaddr) - (0x400000))); -HIDDEN(ape_stack_offset = ape_ram_offset + ape_ram_filesz); -HIDDEN(ape_stack_vaddr = 0x700000000000 - 0x100000); -HIDDEN(ape_stack_paddr = ape_ram_paddr + ape_ram_filesz); -HIDDEN(ape_stack_filesz = 0); -HIDDEN(ape_stack_memsz = 0x100000); -HIDDEN(ape_stack_align = 16); -HIDDEN(ape_note_offset = ape_rom_offset + (ape_note - ape_rom_vaddr)); -HIDDEN(ape_note_vaddr = ape_note); -HIDDEN(ape_note_paddr = ape_rom_paddr + ape_note_offset); -HIDDEN(ape_note_filesz = ape_note_end - ape_note); -HIDDEN(ape_note_memsz = ape_note_filesz); -HIDDEN(ape_note_align = 8); -HIDDEN(ape_text_offset = ape_rom_offset + LOADADDR(.text) - ape_rom_paddr); -HIDDEN(ape_text_paddr = LOADADDR(.text)); -HIDDEN(ape_text_vaddr = ADDR(.text)); -HIDDEN(ape_text_filesz = SIZEOF(.text)); -HIDDEN(ape_text_memsz = SIZEOF(.text)); -HIDDEN(ape_text_align = 0x1000); -HIDDEN(ape_text_rva = ((ape_text_vaddr) - (0x400000))); -HIDDEN(ape_data_offset = ape_ram_offset + LOADADDR(.data) - ape_ram_paddr); -HIDDEN(ape_data_paddr = LOADADDR(.data)); -HIDDEN(ape_data_vaddr = ADDR(.data)); -HIDDEN(ape_data_filesz = SIZEOF(.data)); -HIDDEN(ape_data_memsz = SIZEOF(.data)); -HIDDEN(ape_data_align = 0x1000); -HIDDEN(ape_data_rva = ((ape_data_vaddr) - (0x400000))); -HIDDEN(ape_bss_offset = ape_ram_offset + LOADADDR(.bss) - ape_ram_paddr); -HIDDEN(ape_bss_paddr = LOADADDR(.bss)); -HIDDEN(ape_bss_vaddr = ADDR(.bss)); -HIDDEN(ape_bss_filesz = 0); -HIDDEN(ape_bss_memsz = SIZEOF(.bss)); -HIDDEN(ape_bss_align = 0x1000); -HIDDEN(ape_macho_dd_skip_bcs0 = ((((ape_macho) - (0x400000)) / 8) < 10000 ? 0x20202020 : (((ape_macho) - (0x400000)) / 8) < 100000 ? 0x30202020 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) : (((ape_macho) - (0x400000)) / 8) < 1000000 ? 0x30302020 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 100000 % 10) << 16) : (((ape_macho) - (0x400000)) / 8) < 10000000 ? 0x30303020 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 100000 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 1000000 % 10) << 8) : (((ape_macho) - (0x400000)) / 8) < 100000000 ? 0x30303030 + (((((ape_macho) - (0x400000)) / 8) / 10000 % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 100000 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 1000000 % 10) << 8) + (((((ape_macho) - (0x400000)) / 8) / 10000000 % 10) << 0) : 0xffffffffffffffff)); HIDDEN(ape_macho_dd_skip_bcs1 = ((((ape_macho) - (0x400000)) / 8) == 0 ? 0x20202030 : (((ape_macho) - (0x400000)) / 8) < 10 ? 0x30202020 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) : (((ape_macho) - (0x400000)) / 8) < 100 ? 0x30302020 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 10 % 10) << 16) : (((ape_macho) - (0x400000)) / 8) < 1000 ? 0x30303020 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 10 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 100 % 10) << 8) : 0x30303030 + (((((ape_macho) - (0x400000)) / 8) % 10) << 24) + (((((ape_macho) - (0x400000)) / 8) / 10 % 10) << 16) + (((((ape_macho) - (0x400000)) / 8) / 100 % 10) << 8) + (((((ape_macho) - (0x400000)) / 8) / 1000 % 10) << 0))); -HIDDEN(ape_macho_dd_count_bcs0 = (((ape_macho_end - ape_macho) / 8) < 10000 ? 0x20202020 : ((ape_macho_end - ape_macho) / 8) < 100000 ? 0x30202020 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) : ((ape_macho_end - ape_macho) / 8) < 1000000 ? 0x30302020 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 100000 % 10) << 16) : ((ape_macho_end - ape_macho) / 8) < 10000000 ? 0x30303020 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 100000 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 1000000 % 10) << 8) : ((ape_macho_end - ape_macho) / 8) < 100000000 ? 0x30303030 + ((((ape_macho_end - ape_macho) / 8) / 10000 % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 100000 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 1000000 % 10) << 8) + ((((ape_macho_end - ape_macho) / 8) / 10000000 % 10) << 0) : 0xffffffffffffffff)); HIDDEN(ape_macho_dd_count_bcs1 = (((ape_macho_end - ape_macho) / 8) == 0 ? 0x20202030 : ((ape_macho_end - ape_macho) / 8) < 10 ? 0x30202020 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) : ((ape_macho_end - ape_macho) / 8) < 100 ? 0x30302020 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 10 % 10) << 16) : ((ape_macho_end - ape_macho) / 8) < 1000 ? 0x30303020 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 10 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 100 % 10) << 8) : 0x30303030 + ((((ape_macho_end - ape_macho) / 8) % 10) << 24) + ((((ape_macho_end - ape_macho) / 8) / 10 % 10) << 16) + ((((ape_macho_end - ape_macho) / 8) / 100 % 10) << 8) + ((((ape_macho_end - ape_macho) / 8) / 1000 % 10) << 0))); -HIDDEN(ape_pe_offset = (ape_pe - ape_mz)); HIDDEN(ape_pe_offset_bcs0 = (((((((ape_pe - ape_mz) >> ((0)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((0)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((0)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_pe_offset_bcs1 = (((((((ape_pe - ape_mz) >> ((1)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((1)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((1)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_pe_offset_bcs2 = (((((((ape_pe - ape_mz) >> ((2)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((2)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((2)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); HIDDEN(ape_pe_offset_bcs3 = (((((((ape_pe - ape_mz) >> ((3)*8)) >> 0)&0x7) + 0x30) << 24) | ((((((ape_pe - ape_mz) >> ((3)*8)) >> 3)&0x7) + 0x30) << 16) | (((((((ape_pe - ape_mz) >> ((3)*8))&0xff) >> 6)&0x7) + 0x30) << 8) | 0x5c)); -HIDDEN(ape_pe_optsz = ape_pe_sections - (ape_pe + 24)); -HIDDEN(ape_pe_shnum = (ape_pe_sections_end - ape_pe_sections) / 40); -HIDDEN(ape_pe_base = 0x400000); -HIDDEN(ape_idata = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ((ape_idata_iat) - (0x400000)) : 0); -HIDDEN(ape_idata_iatsize = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ape_idata_iatend - ape_idata_iat : 0); -HIDDEN(ape_idata = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ((ape_idata_idt) - (0x400000)) : 0); -HIDDEN(ape_idata_idtsize = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? ape_idata_idtend - ape_idata_idt : 0); -HIDDEN(v_ntversion = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? 6 : 1); -HIDDEN(v_ntdllchar = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? 288 : 0); -HIDDEN(v_ntsubversion = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? 6 : 5); -HIDDEN(v_ntsubsystem = ((((255 & 4) == 4) && !DEFINED(EfiMain)) - ? (DEFINED(GetMessage) - ? 2 - : 3) - : 10)); -HIDDEN(ape_pe_entry = (((255 & 4) == 4) && !DEFINED(EfiMain)) ? WinMain : EfiMain); -HIDDEN(v_ape_realsectors = - (((((((_edata) - (0x400000))) + (4096)-1) & -(4096))) > (0x70000 - 0x2000) ? (0x70000 - 0x2000) : ((((((_edata) - (0x400000))) + (4096)-1) & -(4096)))) / 512); -HIDDEN(v_ape_realpages = v_ape_realsectors / (4096 / 512)); -HIDDEN(v_ape_highsectors = - ((((((_edata) - (0x400000))) + (512)-1) & -(512)) / 512) - v_ape_realsectors); -HIDDEN(v_zip_cdoffset = DEFINED(__zip_start) ? __zip_start - 0x400000 : 0);; -HIDDEN(v_zip_cdirsize = DEFINED(__zip_start) ? __zip_end - __zip_start : 0);; -ASSERT(v_zip_cdirsize % (((46 + 248) + (2)-1) & -(2)) == 0, "bad zip cdir"); -HIDDEN(v_zip_records = DEFINED(__zip_start) ? v_zip_cdirsize / (((46 + 248) + (2)-1) & -(2)) : 0);; -HIDDEN(v_zip_commentsize = DEFINED(__zip_start) ? _ezip - __zip_end - 22 : 0);; -HIDDEN(ape_uuid1 = 88172645463325252); -HIDDEN(ape_uuid2 = 88172645463325252); -ape_uuid1 = ((ape_uuid1 | (ape_bss_align >> 12)) - (ape_uuid1 & (ape_bss_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_align << 25)) - (ape_uuid1 & (ape_bss_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_align >> 27)) - (ape_uuid1 & (ape_bss_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_align >> 12)) - (ape_uuid2 & (ape_bss_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_align << 25)) - (ape_uuid2 & (ape_bss_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_align >> 27)) - (ape_uuid2 & (ape_bss_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_bss_filesz >> 12)) - (ape_uuid1 & (ape_bss_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_filesz << 25)) - (ape_uuid1 & (ape_bss_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_filesz >> 27)) - (ape_uuid1 & (ape_bss_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_filesz >> 12)) - (ape_uuid2 & (ape_bss_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_filesz << 25)) - (ape_uuid2 & (ape_bss_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_filesz >> 27)) - (ape_uuid2 & (ape_bss_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_bss_memsz >> 12)) - (ape_uuid1 & (ape_bss_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_memsz << 25)) - (ape_uuid1 & (ape_bss_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_memsz >> 27)) - (ape_uuid1 & (ape_bss_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_memsz >> 12)) - (ape_uuid2 & (ape_bss_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_memsz << 25)) - (ape_uuid2 & (ape_bss_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_memsz >> 27)) - (ape_uuid2 & (ape_bss_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_bss_offset >> 12)) - (ape_uuid1 & (ape_bss_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_offset << 25)) - (ape_uuid1 & (ape_bss_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_offset >> 27)) - (ape_uuid1 & (ape_bss_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_offset >> 12)) - (ape_uuid2 & (ape_bss_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_offset << 25)) - (ape_uuid2 & (ape_bss_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_offset >> 27)) - (ape_uuid2 & (ape_bss_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_bss_paddr >> 12)) - (ape_uuid1 & (ape_bss_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_bss_paddr << 25)) - (ape_uuid1 & (ape_bss_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_bss_paddr >> 27)) - (ape_uuid1 & (ape_bss_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_bss_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_bss_paddr >> 12)) - (ape_uuid2 & (ape_bss_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_bss_paddr << 25)) - (ape_uuid2 & (ape_bss_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_bss_paddr >> 27)) - (ape_uuid2 & (ape_bss_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_bss_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_data_filesz >> 12)) - (ape_uuid1 & (ape_data_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_filesz << 25)) - (ape_uuid1 & (ape_data_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_filesz >> 27)) - (ape_uuid1 & (ape_data_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_filesz >> 12)) - (ape_uuid2 & (ape_data_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_filesz << 25)) - (ape_uuid2 & (ape_data_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_filesz >> 27)) - (ape_uuid2 & (ape_data_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_data_memsz >> 12)) - (ape_uuid1 & (ape_data_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_memsz << 25)) - (ape_uuid1 & (ape_data_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_memsz >> 27)) - (ape_uuid1 & (ape_data_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_memsz >> 12)) - (ape_uuid2 & (ape_data_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_memsz << 25)) - (ape_uuid2 & (ape_data_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_memsz >> 27)) - (ape_uuid2 & (ape_data_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_data_offset >> 12)) - (ape_uuid1 & (ape_data_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_offset << 25)) - (ape_uuid1 & (ape_data_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_offset >> 27)) - (ape_uuid1 & (ape_data_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_offset >> 12)) - (ape_uuid2 & (ape_data_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_offset << 25)) - (ape_uuid2 & (ape_data_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_offset >> 27)) - (ape_uuid2 & (ape_data_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_data_paddr >> 12)) - (ape_uuid1 & (ape_data_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_paddr << 25)) - (ape_uuid1 & (ape_data_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_paddr >> 27)) - (ape_uuid1 & (ape_data_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_paddr >> 12)) - (ape_uuid2 & (ape_data_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_paddr << 25)) - (ape_uuid2 & (ape_data_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_paddr >> 27)) - (ape_uuid2 & (ape_data_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_data_rva >> 12)) - (ape_uuid1 & (ape_data_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_rva << 25)) - (ape_uuid1 & (ape_data_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_rva >> 27)) - (ape_uuid1 & (ape_data_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_rva >> 12)) - (ape_uuid2 & (ape_data_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_rva << 25)) - (ape_uuid2 & (ape_data_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_rva >> 27)) - (ape_uuid2 & (ape_data_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_data_vaddr >> 12)) - (ape_uuid1 & (ape_data_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_data_vaddr << 25)) - (ape_uuid1 & (ape_data_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_data_vaddr >> 27)) - (ape_uuid1 & (ape_data_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_data_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_data_vaddr >> 12)) - (ape_uuid2 & (ape_data_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_data_vaddr << 25)) - (ape_uuid2 & (ape_data_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_data_vaddr >> 27)) - (ape_uuid2 & (ape_data_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_data_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_elf_entry >> 12)) - (ape_uuid1 & (ape_elf_entry >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_entry << 25)) - (ape_uuid1 & (ape_elf_entry << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_entry >> 27)) - (ape_uuid1 & (ape_elf_entry >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_entry >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_entry >> 12)) - (ape_uuid2 & (ape_elf_entry >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_entry << 25)) - (ape_uuid2 & (ape_elf_entry << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_entry >> 27)) - (ape_uuid2 & (ape_elf_entry >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_entry >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_elf_phnum >> 12)) - (ape_uuid1 & (ape_elf_phnum >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phnum << 25)) - (ape_uuid1 & (ape_elf_phnum << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phnum >> 27)) - (ape_uuid1 & (ape_elf_phnum >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_phnum >> 12)) - (ape_uuid2 & (ape_elf_phnum >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phnum << 25)) - (ape_uuid2 & (ape_elf_phnum << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phnum >> 27)) - (ape_uuid2 & (ape_elf_phnum >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_elf_phoff >> 12)) - (ape_uuid1 & (ape_elf_phoff >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phoff << 25)) - (ape_uuid1 & (ape_elf_phoff << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_phoff >> 27)) - (ape_uuid1 & (ape_elf_phoff >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_phoff >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_phoff >> 12)) - (ape_uuid2 & (ape_elf_phoff >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phoff << 25)) - (ape_uuid2 & (ape_elf_phoff << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_phoff >> 27)) - (ape_uuid2 & (ape_elf_phoff >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_phoff >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_elf_shnum >> 12)) - (ape_uuid1 & (ape_elf_shnum >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shnum << 25)) - (ape_uuid1 & (ape_elf_shnum << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shnum >> 27)) - (ape_uuid1 & (ape_elf_shnum >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_shnum >> 12)) - (ape_uuid2 & (ape_elf_shnum >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shnum << 25)) - (ape_uuid2 & (ape_elf_shnum << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shnum >> 27)) - (ape_uuid2 & (ape_elf_shnum >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_elf_shoff >> 12)) - (ape_uuid1 & (ape_elf_shoff >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shoff << 25)) - (ape_uuid1 & (ape_elf_shoff << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shoff >> 27)) - (ape_uuid1 & (ape_elf_shoff >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shoff >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_shoff >> 12)) - (ape_uuid2 & (ape_elf_shoff >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shoff << 25)) - (ape_uuid2 & (ape_elf_shoff << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shoff >> 27)) - (ape_uuid2 & (ape_elf_shoff >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shoff >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_elf_shstrndx >> 12)) - (ape_uuid1 & (ape_elf_shstrndx >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shstrndx << 25)) - (ape_uuid1 & (ape_elf_shstrndx << 25))); ape_uuid1 = ((ape_uuid1 | (ape_elf_shstrndx >> 27)) - (ape_uuid1 & (ape_elf_shstrndx >> 27))); ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_elf_shstrndx >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_elf_shstrndx >> 12)) - (ape_uuid2 & (ape_elf_shstrndx >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shstrndx << 25)) - (ape_uuid2 & (ape_elf_shstrndx << 25))); ape_uuid2 = ((ape_uuid2 | (ape_elf_shstrndx >> 27)) - (ape_uuid2 & (ape_elf_shstrndx >> 27))); ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_elf_shstrndx >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_macho_end >> 12)) - (ape_uuid1 & (ape_macho_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_macho_end << 25)) - (ape_uuid1 & (ape_macho_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_macho_end >> 27)) - (ape_uuid1 & (ape_macho_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_macho_end >> 12)) - (ape_uuid2 & (ape_macho_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_macho_end << 25)) - (ape_uuid2 & (ape_macho_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_macho_end >> 27)) - (ape_uuid2 & (ape_macho_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note >> 12)) - (ape_uuid1 & (ape_note >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note << 25)) - (ape_uuid1 & (ape_note << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note >> 27)) - (ape_uuid1 & (ape_note >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note >> 12)) - (ape_uuid2 & (ape_note >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note << 25)) - (ape_uuid2 & (ape_note << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note >> 27)) - (ape_uuid2 & (ape_note >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note_align >> 12)) - (ape_uuid1 & (ape_note_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_align << 25)) - (ape_uuid1 & (ape_note_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_align >> 27)) - (ape_uuid1 & (ape_note_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_align >> 12)) - (ape_uuid2 & (ape_note_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_align << 25)) - (ape_uuid2 & (ape_note_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_align >> 27)) - (ape_uuid2 & (ape_note_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note_end >> 12)) - (ape_uuid1 & (ape_note_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_end << 25)) - (ape_uuid1 & (ape_note_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_end >> 27)) - (ape_uuid1 & (ape_note_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_end >> 12)) - (ape_uuid2 & (ape_note_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_end << 25)) - (ape_uuid2 & (ape_note_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_end >> 27)) - (ape_uuid2 & (ape_note_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note_filesz >> 12)) - (ape_uuid1 & (ape_note_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_filesz << 25)) - (ape_uuid1 & (ape_note_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_filesz >> 27)) - (ape_uuid1 & (ape_note_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_filesz >> 12)) - (ape_uuid2 & (ape_note_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_filesz << 25)) - (ape_uuid2 & (ape_note_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_filesz >> 27)) - (ape_uuid2 & (ape_note_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note_memsz >> 12)) - (ape_uuid1 & (ape_note_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_memsz << 25)) - (ape_uuid1 & (ape_note_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_memsz >> 27)) - (ape_uuid1 & (ape_note_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_memsz >> 12)) - (ape_uuid2 & (ape_note_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_memsz << 25)) - (ape_uuid2 & (ape_note_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_memsz >> 27)) - (ape_uuid2 & (ape_note_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note_offset >> 12)) - (ape_uuid1 & (ape_note_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_offset << 25)) - (ape_uuid1 & (ape_note_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_offset >> 27)) - (ape_uuid1 & (ape_note_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_offset >> 12)) - (ape_uuid2 & (ape_note_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_offset << 25)) - (ape_uuid2 & (ape_note_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_offset >> 27)) - (ape_uuid2 & (ape_note_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note_paddr >> 12)) - (ape_uuid1 & (ape_note_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_paddr << 25)) - (ape_uuid1 & (ape_note_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_paddr >> 27)) - (ape_uuid1 & (ape_note_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_paddr >> 12)) - (ape_uuid2 & (ape_note_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_paddr << 25)) - (ape_uuid2 & (ape_note_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_paddr >> 27)) - (ape_uuid2 & (ape_note_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_note_vaddr >> 12)) - (ape_uuid1 & (ape_note_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_note_vaddr << 25)) - (ape_uuid1 & (ape_note_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_note_vaddr >> 27)) - (ape_uuid1 & (ape_note_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_note_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_note_vaddr >> 12)) - (ape_uuid2 & (ape_note_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_note_vaddr << 25)) - (ape_uuid2 & (ape_note_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_note_vaddr >> 27)) - (ape_uuid2 & (ape_note_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_note_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_ram_align >> 12)) - (ape_uuid1 & (ape_ram_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_align << 25)) - (ape_uuid1 & (ape_ram_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_align >> 27)) - (ape_uuid1 & (ape_ram_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_align >> 12)) - (ape_uuid2 & (ape_ram_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_align << 25)) - (ape_uuid2 & (ape_ram_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_align >> 27)) - (ape_uuid2 & (ape_ram_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_ram_filesz >> 12)) - (ape_uuid1 & (ape_ram_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_filesz << 25)) - (ape_uuid1 & (ape_ram_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_filesz >> 27)) - (ape_uuid1 & (ape_ram_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_filesz >> 12)) - (ape_uuid2 & (ape_ram_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_filesz << 25)) - (ape_uuid2 & (ape_ram_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_filesz >> 27)) - (ape_uuid2 & (ape_ram_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_ram_memsz >> 12)) - (ape_uuid1 & (ape_ram_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_memsz << 25)) - (ape_uuid1 & (ape_ram_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_memsz >> 27)) - (ape_uuid1 & (ape_ram_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_memsz >> 12)) - (ape_uuid2 & (ape_ram_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_memsz << 25)) - (ape_uuid2 & (ape_ram_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_memsz >> 27)) - (ape_uuid2 & (ape_ram_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_ram_offset >> 12)) - (ape_uuid1 & (ape_ram_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_offset << 25)) - (ape_uuid1 & (ape_ram_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_offset >> 27)) - (ape_uuid1 & (ape_ram_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_offset >> 12)) - (ape_uuid2 & (ape_ram_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_offset << 25)) - (ape_uuid2 & (ape_ram_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_offset >> 27)) - (ape_uuid2 & (ape_ram_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_ram_paddr >> 12)) - (ape_uuid1 & (ape_ram_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_paddr << 25)) - (ape_uuid1 & (ape_ram_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_paddr >> 27)) - (ape_uuid1 & (ape_ram_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_paddr >> 12)) - (ape_uuid2 & (ape_ram_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_paddr << 25)) - (ape_uuid2 & (ape_ram_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_paddr >> 27)) - (ape_uuid2 & (ape_ram_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_ram_rva >> 12)) - (ape_uuid1 & (ape_ram_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_rva << 25)) - (ape_uuid1 & (ape_ram_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_rva >> 27)) - (ape_uuid1 & (ape_ram_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_rva >> 12)) - (ape_uuid2 & (ape_ram_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_rva << 25)) - (ape_uuid2 & (ape_ram_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_rva >> 27)) - (ape_uuid2 & (ape_ram_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_ram_vaddr >> 12)) - (ape_uuid1 & (ape_ram_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_ram_vaddr << 25)) - (ape_uuid1 & (ape_ram_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_ram_vaddr >> 27)) - (ape_uuid1 & (ape_ram_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_ram_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_ram_vaddr >> 12)) - (ape_uuid2 & (ape_ram_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_ram_vaddr << 25)) - (ape_uuid2 & (ape_ram_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_ram_vaddr >> 27)) - (ape_uuid2 & (ape_ram_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_ram_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_rom_align >> 12)) - (ape_uuid1 & (ape_rom_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_align << 25)) - (ape_uuid1 & (ape_rom_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_align >> 27)) - (ape_uuid1 & (ape_rom_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_align >> 12)) - (ape_uuid2 & (ape_rom_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_align << 25)) - (ape_uuid2 & (ape_rom_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_align >> 27)) - (ape_uuid2 & (ape_rom_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_rom_filesz >> 12)) - (ape_uuid1 & (ape_rom_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_filesz << 25)) - (ape_uuid1 & (ape_rom_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_filesz >> 27)) - (ape_uuid1 & (ape_rom_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_filesz >> 12)) - (ape_uuid2 & (ape_rom_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_filesz << 25)) - (ape_uuid2 & (ape_rom_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_filesz >> 27)) - (ape_uuid2 & (ape_rom_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_rom_memsz >> 12)) - (ape_uuid1 & (ape_rom_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_memsz << 25)) - (ape_uuid1 & (ape_rom_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_memsz >> 27)) - (ape_uuid1 & (ape_rom_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_memsz >> 12)) - (ape_uuid2 & (ape_rom_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_memsz << 25)) - (ape_uuid2 & (ape_rom_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_memsz >> 27)) - (ape_uuid2 & (ape_rom_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_rom_offset >> 12)) - (ape_uuid1 & (ape_rom_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_offset << 25)) - (ape_uuid1 & (ape_rom_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_offset >> 27)) - (ape_uuid1 & (ape_rom_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_offset >> 12)) - (ape_uuid2 & (ape_rom_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_offset << 25)) - (ape_uuid2 & (ape_rom_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_offset >> 27)) - (ape_uuid2 & (ape_rom_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_rom_paddr >> 12)) - (ape_uuid1 & (ape_rom_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_paddr << 25)) - (ape_uuid1 & (ape_rom_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_paddr >> 27)) - (ape_uuid1 & (ape_rom_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_paddr >> 12)) - (ape_uuid2 & (ape_rom_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_paddr << 25)) - (ape_uuid2 & (ape_rom_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_paddr >> 27)) - (ape_uuid2 & (ape_rom_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_rom_rva >> 12)) - (ape_uuid1 & (ape_rom_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_rva << 25)) - (ape_uuid1 & (ape_rom_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_rva >> 27)) - (ape_uuid1 & (ape_rom_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_rva >> 12)) - (ape_uuid2 & (ape_rom_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_rva << 25)) - (ape_uuid2 & (ape_rom_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_rva >> 27)) - (ape_uuid2 & (ape_rom_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_rom_vaddr >> 12)) - (ape_uuid1 & (ape_rom_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_rom_vaddr << 25)) - (ape_uuid1 & (ape_rom_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_rom_vaddr >> 27)) - (ape_uuid1 & (ape_rom_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_rom_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_rom_vaddr >> 12)) - (ape_uuid2 & (ape_rom_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_rom_vaddr << 25)) - (ape_uuid2 & (ape_rom_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_rom_vaddr >> 27)) - (ape_uuid2 & (ape_rom_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_rom_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_text_align >> 12)) - (ape_uuid1 & (ape_text_align >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_align << 25)) - (ape_uuid1 & (ape_text_align << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_align >> 27)) - (ape_uuid1 & (ape_text_align >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_align >> 12)) - (ape_uuid2 & (ape_text_align >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_align << 25)) - (ape_uuid2 & (ape_text_align << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_align >> 27)) - (ape_uuid2 & (ape_text_align >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_align >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_align >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_align >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_align >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_text_filesz >> 12)) - (ape_uuid1 & (ape_text_filesz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_filesz << 25)) - (ape_uuid1 & (ape_text_filesz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_filesz >> 27)) - (ape_uuid1 & (ape_text_filesz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_filesz >> 12)) - (ape_uuid2 & (ape_text_filesz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_filesz << 25)) - (ape_uuid2 & (ape_text_filesz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_filesz >> 27)) - (ape_uuid2 & (ape_text_filesz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_filesz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_text_memsz >> 12)) - (ape_uuid1 & (ape_text_memsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_memsz << 25)) - (ape_uuid1 & (ape_text_memsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_memsz >> 27)) - (ape_uuid1 & (ape_text_memsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_memsz >> 12)) - (ape_uuid2 & (ape_text_memsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_memsz << 25)) - (ape_uuid2 & (ape_text_memsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_memsz >> 27)) - (ape_uuid2 & (ape_text_memsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_memsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_text_offset >> 12)) - (ape_uuid1 & (ape_text_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_offset << 25)) - (ape_uuid1 & (ape_text_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_offset >> 27)) - (ape_uuid1 & (ape_text_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_offset >> 12)) - (ape_uuid2 & (ape_text_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_offset << 25)) - (ape_uuid2 & (ape_text_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_offset >> 27)) - (ape_uuid2 & (ape_text_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_text_paddr >> 12)) - (ape_uuid1 & (ape_text_paddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_paddr << 25)) - (ape_uuid1 & (ape_text_paddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_paddr >> 27)) - (ape_uuid1 & (ape_text_paddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_paddr >> 12)) - (ape_uuid2 & (ape_text_paddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_paddr << 25)) - (ape_uuid2 & (ape_text_paddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_paddr >> 27)) - (ape_uuid2 & (ape_text_paddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_paddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_text_rva >> 12)) - (ape_uuid1 & (ape_text_rva >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_rva << 25)) - (ape_uuid1 & (ape_text_rva << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_rva >> 27)) - (ape_uuid1 & (ape_text_rva >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_rva >> 12)) - (ape_uuid2 & (ape_text_rva >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_rva << 25)) - (ape_uuid2 & (ape_text_rva << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_rva >> 27)) - (ape_uuid2 & (ape_text_rva >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_rva >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_text_vaddr >> 12)) - (ape_uuid1 & (ape_text_vaddr >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_text_vaddr << 25)) - (ape_uuid1 & (ape_text_vaddr << 25))); ape_uuid1 = ((ape_uuid1 | (ape_text_vaddr >> 27)) - (ape_uuid1 & (ape_text_vaddr >> 27))); ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_text_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_text_vaddr >> 12)) - (ape_uuid2 & (ape_text_vaddr >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_text_vaddr << 25)) - (ape_uuid2 & (ape_text_vaddr << 25))); ape_uuid2 = ((ape_uuid2 | (ape_text_vaddr >> 27)) - (ape_uuid2 & (ape_text_vaddr >> 27))); ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_text_vaddr >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ADDR(.bss) >> 12)) - (ape_uuid1 & (ADDR(.bss) >> 12))); ape_uuid1 = ((ape_uuid1 | (ADDR(.bss) << 25)) - (ape_uuid1 & (ADDR(.bss) << 25))); ape_uuid1 = ((ape_uuid1 | (ADDR(.bss) >> 27)) - (ape_uuid1 & (ADDR(.bss) >> 27))); ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ADDR(.bss) >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ADDR(.bss) >> 12)) - (ape_uuid2 & (ADDR(.bss) >> 12))); ape_uuid2 = ((ape_uuid2 | (ADDR(.bss) << 25)) - (ape_uuid2 & (ADDR(.bss) << 25))); ape_uuid2 = ((ape_uuid2 | (ADDR(.bss) >> 27)) - (ape_uuid2 & (ADDR(.bss) >> 27))); ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ADDR(.bss) >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (_start >> 12)) - (ape_uuid1 & (_start >> 12))); ape_uuid1 = ((ape_uuid1 | (_start << 25)) - (ape_uuid1 & (_start << 25))); ape_uuid1 = ((ape_uuid1 | (_start >> 27)) - (ape_uuid1 & (_start >> 27))); ape_uuid1 = (ape_uuid1 + (_start >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (_start >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (_start >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (_start >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (_start >> 12)) - (ape_uuid2 & (_start >> 12))); ape_uuid2 = ((ape_uuid2 | (_start << 25)) - (ape_uuid2 & (_start << 25))); ape_uuid2 = ((ape_uuid2 | (_start >> 27)) - (ape_uuid2 & (_start >> 27))); ape_uuid2 = (ape_uuid2 + (_start >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (_start >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (_start >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (_start >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_phdrs >> 12)) - (ape_uuid1 & (ape_phdrs >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs << 25)) - (ape_uuid1 & (ape_phdrs << 25))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs >> 27)) - (ape_uuid1 & (ape_phdrs >> 27))); ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_phdrs >> 12)) - (ape_uuid2 & (ape_phdrs >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs << 25)) - (ape_uuid2 & (ape_phdrs << 25))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs >> 27)) - (ape_uuid2 & (ape_phdrs >> 27))); ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (v_ape_realsectors >> 12)) - (ape_uuid1 & (v_ape_realsectors >> 12))); ape_uuid1 = ((ape_uuid1 | (v_ape_realsectors << 25)) - (ape_uuid1 & (v_ape_realsectors << 25))); ape_uuid1 = ((ape_uuid1 | (v_ape_realsectors >> 27)) - (ape_uuid1 & (v_ape_realsectors >> 27))); ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (v_ape_realsectors >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (v_ape_realsectors >> 12)) - (ape_uuid2 & (v_ape_realsectors >> 12))); ape_uuid2 = ((ape_uuid2 | (v_ape_realsectors << 25)) - (ape_uuid2 & (v_ape_realsectors << 25))); ape_uuid2 = ((ape_uuid2 | (v_ape_realsectors >> 27)) - (ape_uuid2 & (v_ape_realsectors >> 27))); ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (v_ape_realsectors >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_macho >> 12)) - (ape_uuid1 & (ape_macho >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_macho << 25)) - (ape_uuid1 & (ape_macho << 25))); ape_uuid1 = ((ape_uuid1 | (ape_macho >> 27)) - (ape_uuid1 & (ape_macho >> 27))); ape_uuid1 = (ape_uuid1 + (ape_macho >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_macho >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_macho >> 12)) - (ape_uuid2 & (ape_macho >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_macho << 25)) - (ape_uuid2 & (ape_macho << 25))); ape_uuid2 = ((ape_uuid2 | (ape_macho >> 27)) - (ape_uuid2 & (ape_macho >> 27))); ape_uuid2 = (ape_uuid2 + (ape_macho >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_macho >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_mz >> 12)) - (ape_uuid1 & (ape_mz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_mz << 25)) - (ape_uuid1 & (ape_mz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_mz >> 27)) - (ape_uuid1 & (ape_mz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_mz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_mz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_mz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_mz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_mz >> 12)) - (ape_uuid2 & (ape_mz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_mz << 25)) - (ape_uuid2 & (ape_mz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_mz >> 27)) - (ape_uuid2 & (ape_mz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_mz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_mz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_mz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_mz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_pe >> 12)) - (ape_uuid1 & (ape_pe >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe << 25)) - (ape_uuid1 & (ape_pe << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe >> 27)) - (ape_uuid1 & (ape_pe >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe >> 12)) - (ape_uuid2 & (ape_pe >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe << 25)) - (ape_uuid2 & (ape_pe << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe >> 27)) - (ape_uuid2 & (ape_pe >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_pe_offset >> 12)) - (ape_uuid1 & (ape_pe_offset >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_offset << 25)) - (ape_uuid1 & (ape_pe_offset << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_offset >> 27)) - (ape_uuid1 & (ape_pe_offset >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_offset >> 12)) - (ape_uuid2 & (ape_pe_offset >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_offset << 25)) - (ape_uuid2 & (ape_pe_offset << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_offset >> 27)) - (ape_uuid2 & (ape_pe_offset >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_offset >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_pe_optsz >> 12)) - (ape_uuid1 & (ape_pe_optsz >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_optsz << 25)) - (ape_uuid1 & (ape_pe_optsz << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_optsz >> 27)) - (ape_uuid1 & (ape_pe_optsz >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_optsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_optsz >> 12)) - (ape_uuid2 & (ape_pe_optsz >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_optsz << 25)) - (ape_uuid2 & (ape_pe_optsz << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_optsz >> 27)) - (ape_uuid2 & (ape_pe_optsz >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_optsz >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_pe_sections >> 12)) - (ape_uuid1 & (ape_pe_sections >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections << 25)) - (ape_uuid1 & (ape_pe_sections << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections >> 27)) - (ape_uuid1 & (ape_pe_sections >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_sections >> 12)) - (ape_uuid2 & (ape_pe_sections >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections << 25)) - (ape_uuid2 & (ape_pe_sections << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections >> 27)) - (ape_uuid2 & (ape_pe_sections >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_pe_sections_end >> 12)) - (ape_uuid1 & (ape_pe_sections_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections_end << 25)) - (ape_uuid1 & (ape_pe_sections_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_sections_end >> 27)) - (ape_uuid1 & (ape_pe_sections_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_sections_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_sections_end >> 12)) - (ape_uuid2 & (ape_pe_sections_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections_end << 25)) - (ape_uuid2 & (ape_pe_sections_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_sections_end >> 27)) - (ape_uuid2 & (ape_pe_sections_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_sections_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_pe_shnum >> 12)) - (ape_uuid1 & (ape_pe_shnum >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_pe_shnum << 25)) - (ape_uuid1 & (ape_pe_shnum << 25))); ape_uuid1 = ((ape_uuid1 | (ape_pe_shnum >> 27)) - (ape_uuid1 & (ape_pe_shnum >> 27))); ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_pe_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_pe_shnum >> 12)) - (ape_uuid2 & (ape_pe_shnum >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_pe_shnum << 25)) - (ape_uuid2 & (ape_pe_shnum << 25))); ape_uuid2 = ((ape_uuid2 | (ape_pe_shnum >> 27)) - (ape_uuid2 & (ape_pe_shnum >> 27))); ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_pe_shnum >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (ape_phdrs_end >> 12)) - (ape_uuid1 & (ape_phdrs_end >> 12))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs_end << 25)) - (ape_uuid1 & (ape_phdrs_end << 25))); ape_uuid1 = ((ape_uuid1 | (ape_phdrs_end >> 27)) - (ape_uuid1 & (ape_phdrs_end >> 27))); ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (ape_phdrs_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (ape_phdrs_end >> 12)) - (ape_uuid2 & (ape_phdrs_end >> 12))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs_end << 25)) - (ape_uuid2 & (ape_phdrs_end << 25))); ape_uuid2 = ((ape_uuid2 | (ape_phdrs_end >> 27)) - (ape_uuid2 & (ape_phdrs_end >> 27))); ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (ape_phdrs_end >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ape_uuid1 = ((ape_uuid1 | (WinMain >> 12)) - (ape_uuid1 & (WinMain >> 12))); ape_uuid1 = ((ape_uuid1 | (WinMain << 25)) - (ape_uuid1 & (WinMain << 25))); ape_uuid1 = ((ape_uuid1 | (WinMain >> 27)) - (ape_uuid1 & (WinMain >> 27))); ape_uuid1 = (ape_uuid1 + (WinMain >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (WinMain >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (WinMain >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid1 = (ape_uuid1 + (WinMain >> 030) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = ((ape_uuid2 | (WinMain >> 12)) - (ape_uuid2 & (WinMain >> 12))); ape_uuid2 = ((ape_uuid2 | (WinMain << 25)) - (ape_uuid2 & (WinMain << 25))); ape_uuid2 = ((ape_uuid2 | (WinMain >> 27)) - (ape_uuid2 & (WinMain >> 27))); ape_uuid2 = (ape_uuid2 + (WinMain >> 000) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (WinMain >> 010) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (WinMain >> 020) & 0xFF) * 0x9e3779b9925d4c17; ape_uuid2 = (ape_uuid2 + (WinMain >> 030) & 0xFF) * 0x9e3779b9925d4c17; -ASSERT(DEFINED(ape_mz) ? ape_mz == 0x400000 : 1, "linker panic"); -ASSERT((DEFINED(__init_bss_end) ? __init_bss_end : 0) % 8 == 0, - "__init_bss misalign"); -ASSERT(((DEFINED(__init_rodata_end) ? __init_rodata_end : 0) % - 8 == 0), - "__init_rodata misalign"); -ASSERT((!DEFINED(ape_grub) ? 1 : ((ape_grub) - (0x400000)) < 8192), - "grub stub needs to be in first 8kb of image"); -ASSERT(DEFINED(_start) || DEFINED(_start16), - "please link a _start() or _start16() entrypoint"); -ASSERT(!DEFINED(_start16) || ((_end) - (0x400000 - 0x2000)) < 65536, - "ape won't support non-tiny real mode programs"); diff --git a/DtsodC/cosmopolitan/ape.o b/DtsodC/cosmopolitan/ape.o deleted file mode 100644 index 058be36..0000000 Binary files a/DtsodC/cosmopolitan/ape.o and /dev/null differ diff --git a/DtsodC/cosmopolitan/cosmopolitan.a b/DtsodC/cosmopolitan/cosmopolitan.a deleted file mode 100644 index 98a04db..0000000 Binary files a/DtsodC/cosmopolitan/cosmopolitan.a and /dev/null differ diff --git a/DtsodC/cosmopolitan/cosmopolitan.h b/DtsodC/cosmopolitan/cosmopolitan.h deleted file mode 100644 index 1e2d2c5..0000000 --- a/DtsodC/cosmopolitan/cosmopolitan.h +++ /dev/null @@ -1,31028 +0,0 @@ -#ifndef COSMOPOLITAN_H_ -#define COSMOPOLITAN_H_ - - -/*!BEGIN libc/integral/normalize.inc */ - -#define __COSMOPOLITAN__ 1 - -#ifndef __COUNTER__ -#define __COUNTER__ __LINE__ -#endif - -#if __GNUC__ + 0 < 2 -#undef __GNUC__ -#elif defined(__GNUC__) && defined(SWIG) /* lool */ -#undef __GNUC__ -#elif defined(__GNUC__) && defined(__NVCC__) /* lool */ -#undef __GNUC__ -#elif !defined(__GNUC__) && defined(__APPLE__) /* modesty */ -#define __GNUC__ 4 -#define __GNUC_MINOR__ 2 -#define __GNUC_PATCHLEVEL__ 1 -#elif !defined(__GNUC__) && defined(__TINYC__) -#define __GNUC__ 2 -#define __GNUC_MINOR__ 0 -#define __GNUC_PATCHLEVEL__ 0 -#endif - -#if !defined(__x86_64__) && \ - (defined(__amd64__) || (defined(_M_AMD64) && defined(_M_X64))) -#define __x86_64__ 1 -#elif !defined(__i386__) && ((defined(__i486__) || defined(__i586__) || \ - defined(__i686__) || defined(__i786__)) || \ - _M_IX86 + 0 >= 400) -#define __i386__ 1 -#elif !defined(__ia16__) && (defined(__MSDOS__) || defined(__BCC__)) -#define __ia16__ 1 -#endif -#if __ia16__ + __i386__ + __x86_64__ + 0 -#define __x86__ 1 -#endif - -#ifdef _MSC_VER -#define __STRICT_ANSI__ -#ifndef __STDC__ -#define __STDC__ -#endif -#endif - -#ifndef __has_attribute -#define __has_attribute(x) 0 -#endif -#ifndef __has_builtin -#define __has_builtin(x) 0 -#endif -#ifndef __has_cpp_attribute -#define __has_cpp_attribute(x) 0 -#endif - -#ifdef unix -#undef unix -#endif - -#ifdef linux -#undef linux -#endif - -#ifndef __BIGGEST_ALIGNMENT__ -#define __BIGGEST_ALIGNMENT__ 16 -#endif - -#define BIGPAGESIZE 0x200000 -#define STACKSIZE 0x100000 -#define FRAMESIZE 0x10000 /* 8086 */ -#define PAGESIZE 0x1000 /* i386+ */ -#define BUFSIZ 0x1000 /* best stdio default */ -#define CACHELINE 0x40 /* nexgen32e */ -#define CHAR_BIT 8 /* b/c von neumann */ -#define ARG_MAX 0x8000 /* b/c windows */ -#define PATH_MAX 248 /* b/c win32 apis limit ~248..260 */ -#define NAME_MAX 63 /* b/c dns */ -#define CHILD_MAX 25 /* only if malloc isn't linked */ -#define OPEN_MAX 16 /* only if malloc isn't linked */ -#define ATEXIT_MAX 32 /* only if malloc isn't linked */ -#define NSIG 128 /* it's complicated */ - -#if defined(__LP64__) && !defined(__INT64_TYPE__) - - -/*!BEGIN libc/integral/lp64.inc */ - -#define __INT8_MAX__ 0x7f -#define __UINT8_MAX__ 0xff -#define __INT16_MAX__ 0x7fff -#define __UINT16_MAX__ 0xffff -#define __SHRT_MAX__ 0x7fff -#define __INT_MAX__ 0x7fffffff -#define __INT32_MAX__ 0x7fffffff -#define __UINT32_MAX__ 0xffffffffu -#define __INT64_MAX__ 0x7fffffffffffffffl -#define __UINT64_MAX__ 0xfffffffffffffffful -#define __SIZE_MAX__ 0xfffffffffffffffful -#define __INTPTR_MAX__ 0x7fffffffffffffffl -#define __UINTPTR_MAX__ 0xfffffffffffffffful -#define __WINT_MAX__ 0xffffffffu - -#define __SIZEOF_SHORT__ 2 -#define __SIZEOF_INT__ 4 -#define __SIZEOF_LONG__ 8 -#define __SIZEOF_LONG_LONG__ 8 -#define __SIZEOF_POINTER__ 8 -#define __SIZEOF_PTRDIFF_T__ 8 -#define __SIZEOF_SIZE_T__ 8 -#define __SIZEOF_WCHAR_T__ 4 -#define __SIZEOF_WINT_T__ 4 -#define __SIZEOF_FLOAT__ 4 -#define __SIZEOF_FLOAT128__ 16 -#define __SIZEOF_DOUBLE__ 8 -#define __SIZEOF_FLOAT80__ 16 -#define __SIZEOF_LONG_DOUBLE__ 16 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define __INT8_TYPE__ signed char -#define __UINT8_TYPE__ unsigned char -#define __INT16_TYPE__ short int -#define __UINT16_TYPE__ short unsigned int -#define __INT32_TYPE__ int -#define __UINT32_TYPE__ unsigned int -#define __INT64_TYPE__ long int -#define __UINT64_TYPE__ long unsigned int -#define __INTPTR_TYPE__ long int -#define __UINTPTR_TYPE__ long unsigned int -#define __PTRDIFF_TYPE__ long int -#define __SIZE_TYPE__ long unsigned int -#define __WCHAR_TYPE__ int -#define __CHAR16_TYPE__ short unsigned int -#define __CHAR32_TYPE__ unsigned int -#define __WINT_TYPE__ unsigned int - -#define __INT_LEAST8_TYPE__ __INT8_TYPE__ -#define __UINT_LEAST8_TYPE__ __UINT8_TYPE__ -#define __INT_LEAST16_TYPE__ __INT32_TYPE__ -#define __UINT_LEAST16_TYPE__ __UINT16_TYPE__ -#define __INT_LEAST32_TYPE__ __INT16_TYPE__ -#define __UINT_LEAST32_TYPE__ __UINT32_TYPE__ -#define __INT_LEAST64_TYPE__ __INT64_TYPE__ -#define __UINT_LEAST64_TYPE__ __UINT64_TYPE__ -#define __INT_FAST8_TYPE__ __INT8_TYPE__ -#define __UINT_FAST8_TYPE__ __UINT8_TYPE__ -#define __INT_FAST16_TYPE__ __INT32_TYPE__ -#define __UINT_FAST16_TYPE__ __UINT32_TYPE__ -#define __INT_FAST32_TYPE__ __INT32_TYPE__ -#define __UINT_FAST32_TYPE__ __UINT32_TYPE__ -#define __INT_FAST64_TYPE__ __INT64_TYPE__ -#define __UINT_FAST64_TYPE__ __UINT64_TYPE__ - -#endif -#elif defined(_MSC_VER) && !defined(__INT64_TYPE__) - - -/*!BEGIN libc/integral/llp64.inc */ - -#define __INT8_MAX__ 0x7f -#define __UINT8_MAX__ 0xff -#define __INT16_MAX__ 0x7fff -#define __UINT16_MAX__ 0xffff -#define __SHRT_MAX__ 0x7fff -#define __INT_MAX__ 0x7fffffff -#define __INT32_MAX__ 0x7fffffff -#define __UINT32_MAX__ 0xffffffffu -#define __INT64_MAX__ 0x7fffffffffffffffl -#define __UINT64_MAX__ 0xffffffffffffffffull -#define __SIZE_MAX__ 0xffffffffffffffffull -#define __INTPTR_MAX__ 0x7fffffffffffffffll -#define __UINTPTR_MAX__ 0xffffffffffffffffull -#define __WINT_MAX__ 0xffffffffu - -#define __SIZEOF_SHORT__ 2 -#define __SIZEOF_INT__ 4 -#define __SIZEOF_LONG__ 4 -#define __SIZEOF_LONG_LONG__ 8 -#define __SIZEOF_POINTER__ 8 -#define __SIZEOF_PTRDIFF_T__ 8 -#define __SIZEOF_SIZE_T__ 4 -#define __SIZEOF_WCHAR_T__ 4 -#define __SIZEOF_WINT_T__ 4 -#define __SIZEOF_FLOAT__ 4 -#define __SIZEOF_FLOAT128__ 16 -#define __SIZEOF_DOUBLE__ 8 -#define __SIZEOF_FLOAT80__ 16 -#define __SIZEOF_LONG_DOUBLE__ 16 - -#define __INT8_C(c) c -#define __UINT8_C(c) c -#define __INT16_C(c) c -#define __UINT16_C(c) c -#define __INT32_C(c) c -#define __UINT32_C(c) c##U -#define __INT64_C(c) c##LL -#define __UINT64_C(c) c##ULL - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define __INT8_TYPE__ signed char -#define __UINT8_TYPE__ unsigned char -#define __INT16_TYPE__ short int -#define __UINT16_TYPE__ short unsigned int -#define __INT32_TYPE__ int -#define __UINT32_TYPE__ unsigned int -#define __INT64_TYPE__ long long int -#define __UINT64_TYPE__ long long unsigned int -#define __INTPTR_TYPE__ long long int -#define __UINTPTR_TYPE__ long long unsigned int -#define __PTRDIFF_TYPE__ long long int -#define __SIZE_TYPE__ unsigned int -#define __WCHAR_TYPE__ int -#define __CHAR16_TYPE__ short unsigned int -#define __CHAR32_TYPE__ unsigned int -#define __WINT_TYPE__ unsigned int - -#define __INT_LEAST8_TYPE__ __INT8_TYPE__ -#define __UINT_LEAST8_TYPE__ __UINT8_TYPE__ -#define __INT_LEAST16_TYPE__ __INT32_TYPE__ -#define __UINT_LEAST16_TYPE__ __UINT16_TYPE__ -#define __INT_LEAST32_TYPE__ __INT16_TYPE__ -#define __UINT_LEAST32_TYPE__ __UINT32_TYPE__ -#define __INT_LEAST64_TYPE__ __INT64_TYPE__ -#define __UINT_LEAST64_TYPE__ __UINT64_TYPE__ -#define __INT_FAST8_TYPE__ __INT8_TYPE__ -#define __UINT_FAST8_TYPE__ __UINT8_TYPE__ -#define __INT_FAST16_TYPE__ __INT32_TYPE__ -#define __UINT_FAST16_TYPE__ __UINT32_TYPE__ -#define __INT_FAST32_TYPE__ __INT32_TYPE__ -#define __UINT_FAST32_TYPE__ __UINT32_TYPE__ -#define __INT_FAST64_TYPE__ __INT64_TYPE__ -#define __UINT_FAST64_TYPE__ __UINT64_TYPE__ - -#endif -#endif - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -#ifdef __STDC__ - - -/*!BEGIN libc/integral/c.inc */ - -#if __GNUC__ + 0 < 2 -#define __attribute__(x) -#endif - -#ifndef __cplusplus -#define COSMOPOLITAN_C_START_ -#define COSMOPOLITAN_C_END_ -#define COSMOPOLITAN_CXX_START_ -#define COSMOPOLITAN_CXX_END_ -#define COSMOPOLITAN_CXX_USING_ -#endif - -#ifndef __ia16__ -#define __far -#endif - -#if !defined(__GNUC__) && __cplusplus + 0 >= 201103L -#define typeof(x) decltype(x) -#elif (defined(__STRICT_ANSI__) || !defined(__GNUC__)) && \ - __STDC_VERSION__ + 0 < 201112 -#define typeof(x) __typeof(x) -#endif - -#ifdef __cplusplus -#if __cplusplus >= 201103L -#define _Alignof(x) alignof(x) -#endif /* C++11 */ -#else /* __cplusplus */ -#define alignof(x) _Alignof(x) -#if __STDC_VERSION__ + 0 < 201112 -#if __GNUC__ + _MSC_VER + 0 && !defined(__STRICT_ANSI__) -#define _Alignof(x) __alignof(x) -#else -#define _Alignof(x) /* basically all it ever did lool */ sizeof(x) -#endif /* GNU/MSVC/!ANSI */ -#endif /* C11 */ -#endif /* __cplusplus */ - -#if !defined(__cplusplus) && !defined(inline) && __STDC_VERSION__ + 0 < 199901 -#if !defined(__STRICT_ANSI__) && (defined(__GNUC__) || defined(_MSC_VER)) -#define inline __inline -#else -#define inline -#define __inline -#endif -#endif - -#if __STDC_VERSION__ + 0 < 201112 -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define _Alignas(x) __attribute__((__aligned__(x))) -#elif defined(_MSC_VER) -#define _Alignas(x) __declspec(align(x)) -#endif -#endif - -#if defined(__STRICT_ANSI__) || \ - (!defined(__GNUC__) && !__has_builtin(unreachable)) -#define __builtin_unreachable() \ - for (;;) { \ - } -#endif - -#if defined(__STRICT_ANSI__) || (!defined(__llvm__) && !__has_builtin(assume)) -#define __builtin_assume(x) \ - do { \ - if (!(x)) __builtin_unreachable(); \ - } while (0) -#endif - -#if __STDC_VERSION__ + 0 < 201112 && defined(__x86__) -#define _Atomic(TYPE) TYPE -#endif - -#ifdef __llvm__ -#define __gnu_printf__ __printf__ -#define __gnu_scanf__ __scanf__ -#endif - -#if __cplusplus + 0 >= 201103L -#define NULL nullptr -#elif !defined(__cplusplus) -#define NULL ((void *)0) -#else -#define NULL 0 -#endif - -#ifndef __cplusplus -#if __STDC_VERSION__ + 0 >= 201112 -typedef _Bool bool; -#define true ((bool)+1) -#define false ((bool)+0) -#else -#define bool int -#define true 1 -#define false 0 -#endif -#endif - -#ifndef __cplusplus -typedef __WCHAR_TYPE__ wchar_t; -typedef __CHAR16_TYPE__ char16_t; -typedef __CHAR32_TYPE__ char32_t; -#endif - -typedef int errno_t; -typedef __SIZE_TYPE__ size_t; -typedef __PTRDIFF_TYPE__ ssize_t; -typedef __INTPTR_TYPE__ intptr_t; -typedef __UINTPTR_TYPE__ uintptr_t; -typedef __PTRDIFF_TYPE__ ptrdiff_t; -typedef __WINT_TYPE__ wint_t; /* uint32_t on linux but int32_t on xnu */ -typedef __INT32_TYPE__ bool32; -typedef __INT8_TYPE__ int8_t; -typedef __UINT8_TYPE__ uint8_t; -typedef __INT16_TYPE__ int16_t; -typedef __UINT16_TYPE__ uint16_t; -typedef __INT32_TYPE__ int32_t; -typedef __UINT32_TYPE__ uint32_t; -typedef __INT64_TYPE__ int64_t; -typedef __UINT64_TYPE__ uint64_t; - -typedef struct { - intptr_t ax, dx; -} axdx_t; - -#ifdef __SIZEOF_INTMAX__ -#undef __SIZEOF_INTMAX__ -#endif -#if !defined(__STRICT_ANSI__) && __SIZEOF_POINTER__ == 8 && \ - ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 406 || defined(__llvm__)) -#define __SIZEOF_INTMAX__ 16 -#else -#define __SIZEOF_INTMAX__ __SIZEOF_POINTER__ -#endif -#if __SIZEOF_INTMAX__ == 16 -typedef signed __int128 int128_t; -typedef unsigned __int128 uint128_t; -typedef int128_t intmax_t; -typedef uint128_t uintmax_t; -#elif __SIZEOF_INTMAX__ == 8 -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; -#endif - -#ifndef __chibicc__ -#define va_list __builtin_va_list -#define va_arg(ap, type) __builtin_va_arg(ap, type) -#define va_copy(dest, src) __builtin_va_copy(dest, src) -#define va_end(ap) __builtin_va_end(ap) -#define va_start(ap, last) __builtin_va_start(ap, last) -#else - - -/*!BEGIN libc/integral/lp64arg.inc */ - - - -/*!BEGIN libc/runtime/valist.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_VALIST_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct __va_list { - uint32_t gp_offset; - uint32_t fp_offset; - void *overflow_arg_area; - void *reg_save_area; -}; - -void *__va_arg(struct __va_list *, size_t, unsigned, unsigned); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define __GNUC_VA_LIST 1 -#define __gnuc_va_list va_list - -#define va_end(AP) -#define va_copy(DST, SRC) ((DST)[0] = (SRC)[0]) -#define va_start(AP, LAST) \ - do { \ - *(AP) = *(struct __va_list *)__va_area__; \ - } while (0) - -#define va_arg(AP, TYPE) \ - (*(TYPE *)__va_arg(AP, sizeof(TYPE), _Alignof(TYPE), \ - __builtin_reg_class(TYPE))) - -typedef struct __va_list va_list[1]; -#endif - -#define libcesque nothrow nocallback -#define memcpyesque libcesque -#define strlenesque libcesque nosideeffect paramsnonnull() -#define vallocesque \ - libcesque nodiscard returnsaligned((PAGESIZE)) returnspointerwithnoaliases -#define reallocesque libcesque returnsaligned((__BIGGEST_ALIGNMENT__)) -#define mallocesque reallocesque returnspointerwithnoaliases -#define interruptfn nocallersavedregisters forcealignargpointer - -#ifndef pureconst -#ifndef __STRICT_ANSI__ -#define pureconst __attribute__((__const__)) -#else -#define pureconst -#endif -#endif - -#ifndef forcealign -#ifndef __STRICT_ANSI__ -#define forcealign(bytes) __attribute__((__aligned__(bytes))) -#else -#define forcealign(bytes) -#endif -#endif - -#ifndef __STRICT_ANSI__ -#define thatispacked __attribute__((__packed__)) -#else -#define thatispacked -#endif - -#ifndef __STRICT_ANSI__ -#define printfesque(n) __attribute__((__format__(__gnu_printf__, n, n + 1))) -#define scanfesque(n) __attribute__((__format__(__gnu_scanf__, n, n + 1))) -#define strftimeesque(n) __attribute__((__format__(__strftime__, n, 0))) -#else -#define printfesque(n) -#define scanfesque(n) -#define strftimeesque(n) -#endif - -#ifndef hidden -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__visibility__) || defined(__GNUC__)) && !defined(_WIN32) -#define hidden __attribute__((__visibility__("hidden"))) -#else -#define hidden -#endif -#endif - -#ifndef privileged -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__visibility__) || defined(__GNUC__)) -#define privileged _Section(".privileged") noinstrument -#else -#define privileged _Section(".privileged") noinstrument -#endif -#endif - -#ifndef noinstrument -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__no_instrument_function__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 204) -#define noinstrument __attribute__((__no_instrument_function__)) -#else -#define noinstrument -#endif -#endif - -#ifndef wontreturn -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__noreturn__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 208) -#define wontreturn __attribute__((__noreturn__)) -#else -#define wontreturn -#endif -#endif - -#ifndef nosideeffect -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__pure__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 296) -#define nosideeffect __attribute__((__pure__)) -#else -#define nosideeffect -#endif -#endif - -#ifndef noinline -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__noinline__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 301) -#define noinline __attribute__((__noinline__)) -#else -#define noinline -#endif -#endif - -#ifndef noclone -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__noclone__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 405) -#define noclone __attribute__((__noclone__)) -#else -#define noclone -#endif -#endif - -#ifndef forceinline -#ifdef __cplusplus -#define forceinline inline -#else -#if !defined(__STRICT_ANSI__) && \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 302 -#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403 || \ - !defined(__cplusplus) || \ - (defined(__clang__) && \ - (defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__))) -#if defined(__GNUC_STDC_INLINE__) || defined(__cplusplus) -#define forceinline \ - static __inline __attribute__((__always_inline__, __gnu_inline__, \ - __no_instrument_function__, __unused__)) -#else -#define forceinline \ - static __inline __attribute__( \ - (__always_inline__, __no_instrument_function__, __unused__)) -#endif /* __GNUC_STDC_INLINE__ */ -#endif /* GCC >= 4.3 */ -#elif defined(_MSC_VER) -#define forceinline __forceinline -#else -#define forceinline static inline -#endif /* !ANSI && GCC >= 3.2 */ -#endif /* __cplusplus */ -#endif /* forceinline */ - -#ifndef mayalias -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__may_alias__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 303) -#define mayalias __attribute__((__may_alias__)) -#else -#define mayalias -#endif -#endif - -#ifndef nodiscard -#if !defined(__STRICT_ANSI__) && \ - ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 304 || \ - __has_attribute(__warn_unused_result__)) -#define nodiscard __attribute__((__warn_unused_result__)) -#else -#define nodiscard -#endif -#endif - -#ifndef nullterminated -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__sentinel__) || __GNUC__ + 0 >= 4) -#define nullterminated(x) __attribute__((__sentinel__ x)) -#else -#define nullterminated(x) -#endif -#endif - -#ifndef flattenout -#if __has_attribute(__flatten__) || \ - ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 401 && !defined(__llvm__)) -#define flattenout __attribute__((__flatten__)) -#else -#define flattenout -#endif -#endif - -#ifndef externinline -#if !defined(__STRICT_ANSI__) && \ - (!defined(__cplusplus) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403 || \ - (defined(__clang__) && \ - (defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__)))) -#if defined(__GNUC_STDC_INLINE__) || defined(__cplusplus) -#define externinline extern __inline __attribute__((__gnu_inline__)) -#else -#define externinline extern __inline __attribute__((__always_inline__)) -#endif -#else -#define externinline inline -#endif -#endif - -#ifndef relegated -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__cold__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403) -#define relegated __attribute__((__cold__)) -#else -#define relegated -#endif -#endif - -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__warning__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403) -#define warnifused(s) __attribute__((__warning__(s))) -#else -#define warnifused(s) -#endif - -#ifndef firstclass -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__hot__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403) -#define firstclass __attribute__((__hot__)) -#else -#define firstclass -#endif -#endif - -#ifndef paramsnonnull -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__nonnull__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403) -#define paramsnonnull(opt_1idxs) __attribute__((__nonnull__ opt_1idxs)) -#else -#define paramsnonnull(opt_1idxs) -#endif -#endif - -#if __STDC_VERSION__ + 0 >= 199901L -#define hasatleast static -#else -#define hasatleast -#endif - -#if __STDC_VERSION__ + 0 < 199901L && !defined(restrict) -#if !defined(__STRICT_ANSI__) && !defined(__cplusplus) && \ - ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 301 || defined(_MSC_VER)) -#define restrict __restrict__ -#else -#define restrict -#define __restrict -#endif -#endif - -#ifndef nocallback -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__leaf__) || \ - (!defined(__llvm__) && \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 406)) -#define nocallback __attribute__((__leaf__)) -#else -#define nocallback -#endif -#endif - -#ifndef nothrow -#if defined(__cplusplus) && !defined(__STRICT_ANSI__) && \ - (__has_attribute(nothrow) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 303) -#define nothrow __attribute__((__nothrow__)) -#elif defined(_MSC_VER) -#define nothrow __declspec(nothrow) -#else -#define nothrow -#endif -#endif - -#ifndef nooptimize -#ifndef __STRICT_ANSI__ -#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 407 || \ - __has_attribute(__optimize__) -#define nooptimize __attribute__((__optimize__(1))) -#elif defined(__llvm__) || __has_attribute(__optnone__) -#define nooptimize __attribute__((__optnone__)) -#endif -#else -#define nooptimize -#endif -#endif - -#ifndef optimizesize -#ifndef __STRICT_ANSI__ -#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 407 || \ - __has_attribute(__optimize__) -#define optimizesize __attribute__((__optimize__("s"))) -#elif defined(__llvm__) || __has_attribute(__optnone__) -#define optimizesize __attribute__((__optnone__)) -#endif -#else -#define optimizesize -#endif -#endif - -#ifndef optimizespeed -#if !defined(__STRICT_ANSI__) && \ - ((__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 407 || \ - __has_attribute(__optimize__)) -#define optimizespeed __attribute__((__optimize__(3))) -#else -#define optimizespeed -#endif -#endif - -#ifndef returnstwice -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__returns_twice__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 402) -#define returnstwice __attribute__((__returns_twice__)) -#else -#define returnstwice -#endif -#endif - -#ifndef nodebuginfo -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__nodebug__) || defined(__llvm__)) -#define nodebuginfo __attribute__((__nodebug__)) -#else -#define nodebuginfo -#endif -#endif - -#ifndef artificial -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__artificial__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 403) -#define artificial __attribute__((__artificial__)) -#else -#define artificial -#endif -#endif - -#ifndef microarchitecture -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__target__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 404) -#define microarchitecture(march) __attribute__((__target__(march))) -#else -#define microarchitecture(march) -#endif -#endif - -#ifndef targetclones -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__target_clones__) || __GNUC__ >= 6) -#define targetclones(archs) __attribute__((__target_clones__(archs))) -#else -#define targetclones(archs) -#endif -#endif - -#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 408 || \ - __has_attribute(__force_align_arg_pointer__) -#define forcealignargpointer __attribute__((__force_align_arg_pointer__)) -#else -#define forcealignargpointer "need modern compiler" -#endif - -#ifndef returnsnonnull -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__returns_nonnull__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409) -#define returnsnonnull __attribute__((__returns_nonnull__)) -#else -#define returnsnonnull -#endif -#endif - -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__assume_aligned__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409) -#define returnsaligned(x) __attribute__((__assume_aligned__ x)) -#else -#define returnsaligned(x) -#endif - -#ifndef returnspointerwithnoaliases -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__malloc__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409) -#define returnspointerwithnoaliases __attribute__((__malloc__)) -#elif defined(_MSC_VER) -#define returnspointerwithnoaliases __declspec(allocator) -#else -#define returnspointerwithnoaliases -#endif -#endif - -#ifndef attributeallocsize -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__alloc_size__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409) -#define attributeallocsize(x) __attribute__((__alloc_size__ x)) -#else -#define attributeallocsize(x) -#endif -#endif - -#ifndef attributeallocalign -#if !defined(__STRICT_ANSI__) && \ - (__has_attribute(__alloc_align__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409) -#define attributeallocalign(x) __attribute__((__alloc_align__ x)) -#else -#define attributeallocalign(x) -#endif -#endif - -#if __cplusplus + 0 >= 201103L -#define autotype(x) auto -#elif ((__has_builtin(auto_type) || defined(__llvm__) || \ - (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 409) && \ - !defined(__chibicc__)) -#define autotype(x) __auto_type -#else -#define autotype(x) typeof(x) -#endif - -#if __GNUC__ >= 7 || __has_attribute(__no_caller_saved_registers__) -#define nocallersavedregisters __attribute__((__no_caller_saved_registers__)) -#else -#define nocallersavedregisters "need modern compiler" -#endif - -#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 408 || \ - __has_attribute(__no_sanitize_address__) -#define noasan __attribute__((__no_sanitize_address__)) -#else -#define noasan -#endif - -#if (__GNUC__ + 0) * 100 + (__GNUC_MINOR__ + 0) >= 408 || \ - __has_attribute(__no_sanitize_undefined__) -#define noubsan __attribute__((__no_sanitize_undefined__)) -#else -#define noubsan -#endif - -#ifndef unreachable -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define unreachable __builtin_unreachable() -#else -#define unreachable \ - do { \ - } while (1) -#endif -#endif - -#define donothing \ - do { \ - } while (0) - -#ifndef __STRICT_ANSI__ -#define testonly noinline _Section(".test") -#define textstartup _Section(".text.startup") noinstrument -#define textexit _Section(".text.exit") noinstrument -#define textreal _Section(".text.real") -#define texthead _Section(".text.head") -#define textwindows _Section(".text.windows") -#define antiquity _Section(".text.antiquity") -#else -#define testonly -#define textstartup -#define textexit -#define textreal -#define texthead -#define textwindows -#define antiquity -#endif - -#ifndef compatfn -#define compatfn -#endif - -#ifndef frownedupon -#define frownedupon(alternative) -#endif - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define _Vector_size(k) __attribute__((__vector_size__(k))) -#else -#define _Vector_size(k) [k] -#endif - -#if defined(__STRICT_ANSI__) || \ - (!defined(__GNUC__) && !defined(__builtin_offsetof)) -#define offsetof(type, member) ((unsigned long)&((type *)0)->member) -#else -#define offsetof(type, member) __builtin_offsetof(type, member) -#endif - -#ifndef _Section -#if !defined(__STRICT_ANSI__) && !defined(__APPLE__) -#define _Section(s) __attribute__((__section__(s))) -#else -#define _Section(s) -#endif -#endif - -#ifndef __llvm__ -#define initarray _Section(".init_array,\"a\",@init_array #") -#else -#define initarray _Section(".init_array") -#endif - -#ifndef __STRICT_ANSI__ -#if defined(__GNUC__) || defined(__llvm__) -#pragma GCC diagnostic ignored "-Wsign-compare" /* lint needs to change */ -#pragma GCC diagnostic ignored "-Wtype-limits" /* makes macros unsafe */ -#pragma GCC diagnostic ignored "-Woverflow" /* also breaks macros */ -#pragma GCC diagnostic ignored "-Wformat" /* forces only gnu pf */ -#pragma GCC diagnostic ignored "-Wunused-parameter" /* extreme prejudice */ -#pragma GCC diagnostic ignored "-Wunused-function" /* contradicts dce! */ -#pragma GCC diagnostic ignored "-Wunused-const-variable" /* let me dce */ -#pragma GCC diagnostic ignored "-Wunused-variable" /* belongs in tidy */ -#pragma GCC diagnostic ignored "-Wformat-extra-args" /* is also broken */ -#pragma GCC diagnostic ignored "-Wparentheses" /* annoying tidy */ -#pragma GCC diagnostic ignored "-Wdangling-else" /* come on tidy */ -#pragma GCC diagnostic ignored "-Wformat-security" /* come on tidy */ -#pragma GCC diagnostic ignored "-Wunused-value" /* breaks macros */ -#ifndef __cplusplus -#pragma GCC diagnostic ignored "-Wimplicit-int" -#endif /* C++ */ -#endif /* GCC || LLVM */ -#if defined(__GNUC__) && !defined(__llvm__) -/* why we need authorization to name a variable `yn' */ -#pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch" -#pragma GCC diagnostic ignored "-Wfree-nonheap-object" /* broken #54202 */ -#ifndef __cplusplus -#if __GNUC__ >= 6 -#pragma GCC diagnostic ignored /* wut */ "-Wdiscarded-qualifiers" -#pragma GCC diagnostic ignored /* tidy */ "-Wunused-but-set-variable" -#pragma GCC diagnostic ignored /* tidy */ "-Wunused-but-set-parameter" -#endif /* GCC6+ */ -#if __GNUC__ >= 8 -#pragma GCC diagnostic ignored "-Wstringop-truncation" -#pragma GCC diagnostic ignored "-Wstringop-overflow" /* breaks strndup */ -#endif /* GCC8+ */ -#if __GNUC__ + 0 >= 9 -#pragma GCC diagnostic ignored /* "always true" breaks dce */ "-Waddress" -#endif /* GCC9+ */ -#endif /* !C++ */ -#endif /* GCC && !LLVM */ -#ifdef __llvm__ -#pragma clang diagnostic ignored \ - "-Wincompatible-pointer-types-discards-qualifiers" -#pragma clang diagnostic ignored "-Wbuiltin-requires-header" -#pragma clang diagnostic ignored "-Wparentheses-equality" /*-save-temps*/ -#pragma clang diagnostic ignored "-Wunused-value" /*({-save-temps})*/ -#pragma clang diagnostic ignored "-Wstring-plus-int" /* special ed */ -#pragma clang diagnostic ignored "-Wunused-value" /* extreme prejudice */ -#pragma clang diagnostic ignored "-Wbuiltin-requires-header" -#pragma clang diagnostic ignored \ - "-Wincompatible-pointer-types-discards-qualifiers" -#endif /* !GCC && LLVM */ -#endif /* ANSI */ - -#ifndef __W__ -#ifndef __STRICT_ANSI__ -#if defined(__GNUC__) || defined(__llvm__) -#pragma GCC diagnostic error "-Wpointer-arith" -#pragma GCC diagnostic error "-Wnonnull" -#pragma GCC diagnostic error "-Wunused-result" -#pragma GCC diagnostic error "-Wuninitialized" -#pragma GCC diagnostic error "-Wstrict-aliasing" -#pragma GCC diagnostic error "-Wshift-negative-value" -#ifndef __cplusplus -#pragma GCC diagnostic error "-Wimplicit-function-declaration" -#if __GNUC__ >= 6 -#pragma GCC diagnostic error "-Wincompatible-pointer-types" -#if __GNUC__ >= 8 -#pragma GCC diagnostic error "-Wmultistatement-macros" -#pragma GCC diagnostic error "-Wpacked-not-aligned" -#pragma GCC diagnostic error "-Wcast-align=strict" -#pragma GCC diagnostic error "-Wif-not-aligned" -#endif /* GCC 8+ */ -#endif /* GCC 6+ */ -#endif /* __cplusplus */ -#endif /* GCC || LLVM */ -#if defined(__GNUC__) && !defined(__llvm__) -#pragma GCC diagnostic error "-Wwrite-strings" -#pragma GCC diagnostic error "-Wtrampolines" -#pragma GCC diagnostic error "-Wmaybe-uninitialized" -#pragma GCC diagnostic error "-Wredundant-decls" -#if __GNUC__ >= 6 -#pragma GCC diagnostic error "-Wnonnull-compare" -#if defined(COSMO) && !defined(MODE_DBG) && !defined(STACK_FRAME_UNLIMITED) -#pragma GCC diagnostic error "-Wframe-larger-than=4096" -#if __GNUC__ >= 9 -#pragma GCC diagnostic error "-Walloca-larger-than=1024" -#pragma GCC diagnostic error "-Wvla-larger-than=1024" -#endif /* GCC 9+ */ -#endif /* STACK_FRAME_UNLIMITED */ -#elif __GNUC__ >= 9 -#pragma GCC diagnostic error /* e.g. fabs not abs */ "-Wabsolute-value" -#endif /* GCC 6+ */ -#endif /* GCC && !LLVM */ -#ifdef __llvm__ -#pragma clang diagnostic error "-Wassume" -#endif /* !GCC && LLVM */ -#endif /* ANSI */ -#endif /* -w */ - -#ifndef __STRICT_ANSI__ -#define DebugBreak() asm("int3") -#else -#define DebugBreak() (void)0 -#endif - -#ifndef __STRICT_ANSI__ -#define VEIL(CONSTRAINT, EXPRESSION) \ - ({ \ - autotype(EXPRESSION) VeiledValue = (EXPRESSION); \ - asm("" : "=" CONSTRAINT ""(VeiledValue) : "0"(VeiledValue)); \ - VeiledValue; \ - }) -#else -#define VEIL(CONSTRAINT, EXPRESSION) (EXPRESSION) -#endif - -#ifndef __STRICT_ANSI__ -#define CONCEAL(CONSTRAINT, EXPRESSION) \ - ({ \ - autotype(EXPRESSION) VeiledValue = (EXPRESSION); \ - asm volatile("" : "=" CONSTRAINT ""(VeiledValue) : "0"(VeiledValue)); \ - VeiledValue; \ - }) -#else -#define CONCEAL(CONSTRAINT, EXPRESSION) (EXPRESSION) -#endif - -#ifndef __STRICT_ANSI__ -#define EXPROPRIATE(EXPRESSION) \ - ({ \ - asm volatile("" ::"g"(EXPRESSION) : "memory"); \ - 0; \ - }) -#else -#define EXPROPRIATE(EXPRESSION) (EXPRESSION) -#endif - -#if !defined(__STRICT_ANSI__) && !defined(__APPLE__) -#define YOINK(SYMBOL) \ - asm(".section .yoink\n\tnopl\t%a0\n\t.previous" : : "X"(SYMBOL)) -#else -#define YOINK(SYMBOL) (void)0 -#endif - -#if !defined(__STRICT_ANSI__) && !defined(__APPLE__) -#define STATIC_YOINK(SYMBOLSTR) \ - asm(".section .yoink\n\tnopl\t\"" SYMBOLSTR "\"\n\t.previous") -#else -#define STATIC_YOINK(SYMBOLSTR) -#endif - -#if !defined(IM_FEELING_NAUGHTY) -#define STATIC_YOINK_SOURCE(PATH) STATIC_YOINK(PATH) -#else -#define STATIC_YOINK_SOURCE(PATH) -#endif - -#define MACHINE_CODE_ANALYSIS_BEGIN_ -#define MACHINE_CODE_ANALYSIS_END_ -#else -#define const -#define volatile -#endif -#ifdef __cplusplus - - -/*!BEGIN libc/integral/cxx.inc */ - -#define COSMOPOLITAN_CXX_START_ namespace cosmo { -#define COSMOPOLITAN_CXX_END_ } -#define COSMOPOLITAN_CXX_USING_ using namespace cosmo; -#define COSMOPOLITAN_C_START_ extern "C" { -#define COSMOPOLITAN_C_END_ } - -#if !defined(__builtin_types_compatible_p) && !__has_builtin(types_compatible_p) -#if 0 /* todo jart whyyyy */ - - -/*!BEGIN libc/integral/cxxtypescompat.inc */ - -#define NAME __cxx_types_compatible -#define QUALIFIED(Q1, Q2) \ - template \ - struct NAME<_T Q1, _U Q2> : NAME<_T, _U> {} - -template -struct NAME { - enum { _value = 0 }; -}; - -template -struct NAME<_T, _T> { - enum { _value = 1 }; -}; - -template -struct NAME<_T[], _T[N]> { - enum { _value = 1 }; -}; - -template -struct NAME<_T[N], _T[]> { - enum { _value = 1 }; -}; - -QUALIFIED(const volatile, ); -QUALIFIED(const volatile, const); -QUALIFIED(const, const volatile); -QUALIFIED(volatile, const volatile); -QUALIFIED(const volatile, volatile); -QUALIFIED(const, volatile); -QUALIFIED(volatile, const); -QUALIFIED(, const); -QUALIFIED(const, ); -QUALIFIED(, volatile); -QUALIFIED(volatile, ); - -#undef QUALIFIED -#undef NAME -#define __builtin_types_compatible_p(A, B) \ - (__cxx_types_compatible::_value) -#else -#define __builtin_types_compatible_p(A, B) 0 -#endif -#endif - -#if !defined(__builtin_choose_expr) && !__has_builtin(choose_expr) -#if 1 -template -struct __cxx_choose_expr { - __cxx_choose_expr(_T _a, _U _b) : _value(_a) {} - const _T _value; -}; -template -struct __cxx_choose_expr { - __cxx_choose_expr(_T _a, _U _b) : _value(_b) {} - const _U _value; -}; -#define __builtin_choose_expr(X, A, B) \ - (__cxx_choose_expr(A, B)._value) -#else -#define __builtin_choose_expr(X, A, B) ((X) ? (A) : (B)) -#endif -#endif -#endif -#endif - - -/*!BEGIN libc/assert.h */ - -#define COSMOPOLITAN_LIBC_ASSERT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void __assert_fail(const char *, const char *, int) hidden wontreturn relegated; - -#ifdef NDEBUG -#define assert(EXPR) ((void)0) -#else -#define assert(EXPR) \ - ((void)((EXPR) || (__assert_fail(#EXPR, __FILE__, __LINE__), 0))) -#endif - -#define static_assert _Static_assert - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/complex.h */ - -#define COSMOPOLITAN_LIBC_COMPLEX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -#if __STDC_VERSION__ + 0 >= 201112 && !defined(__STDC_NO_COMPLEX__) - -#define complex _Complex -#define imaginary _Imaginary - -double cabs(complex double); -double carg(complex double); -double cimag(complex double); -double creal(complex double); - -float cabsf(complex float); -float cargf(complex float); -float cimagf(complex float); -float crealf(complex float); - -long double cabsl(complex long double); -long double cargl(complex long double); -long double cimagl(complex long double); -long double creall(complex long double); - -complex double cacos(complex double); -complex double cacosh(complex double); -complex double casin(complex double); -complex double casinh(complex double); -complex double catan(complex double); -complex double catanh(complex double); -complex double ccos(complex double); -complex double ccosh(complex double); -complex double cexp(complex double); -complex double cexp2(complex double); -complex double clog(complex double); -complex double conj(complex double); -complex double cpow(complex double, complex double); -complex double cproj(complex double); -complex double csin(complex double); -complex double csinh(complex double); -complex double csqrt(complex double); -complex double ctan(complex double); -complex double ctanh(complex double); - -complex float cacosf(complex float); -complex float cacoshf(complex float); -complex float casinf(complex float); -complex float casinhf(complex float); -complex float catanf(complex float); -complex float catanhf(complex float); -complex float ccosf(complex float); -complex float ccoshf(complex float); -complex float cexpf(complex float); -complex float cexp2f(complex float); -complex float clogf(complex float); -complex float conjf(complex float); -complex float cpowf(complex float, complex float); -complex float cprojf(complex float); -complex float csinf(complex float); -complex float csinhf(complex float); -complex float csqrtf(complex float); -complex float ctanf(complex float); -complex float ctanhf(complex float); - -complex long double cprojl(complex long double); -complex long double csinhl(complex long double); -complex long double csinl(complex long double); -complex long double csqrtl(complex long double); -complex long double ctanhl(complex long double); -complex long double ctanl(complex long double); -complex long double cacoshl(complex long double); -complex long double cacosl(complex long double); -complex long double casinhl(complex long double); -complex long double casinl(complex long double); -complex long double catanhl(complex long double); -complex long double catanl(complex long double); -complex long double ccoshl(complex long double); -complex long double ccosl(complex long double); -complex long double cexpl(complex long double); -complex long double cexp2l(complex long double); -complex long double clogl(complex long double); -complex long double conjl(complex long double); -complex long double cpowl(complex long double, complex long double); - -#endif /* C11 */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/dce.h */ - -#define COSMOPOLITAN_LIBC_DCE_H_ - - -/*!BEGIN libc/nexgen32e/kcpuids.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_KCPUIDS_H_ - -#define KCPUIDS_0H 0 -#define KCPUIDS_1H 1 -#define KCPUIDS_2H 2 -#define KCPUIDS_7H 3 -#define KCPUIDS_80000001H 4 -#define KCPUIDS_80000007H 5 -#define KCPUIDS_16H 6 -#define KCPUIDS_LEN 7 -#define KCPUIDS_6H -1 /* TBD: Thermal and Power Management */ -#define KCPUIDS_DH -1 /* TBD: Extended state features */ -#define KCPUIDS_80000008H -1 /* TBD: AMD Miscellaneous */ -#define KCPUIDS_8000000AH -1 /* TBD: AMD SVM */ - -#define KCPUIDS_EAX 0 -#define KCPUIDS_EBX 1 -#define KCPUIDS_ECX 2 -#define KCPUIDS_EDX 3 - -#define KCPUIDS(LEAF, REG) _KCPUIDS(LEAF, REG) -#ifdef __ASSEMBLER__ -#define _KCPUIDS(LEAF, REG) KCPUIDS_##LEAF * 16 + KCPUIDS_##REG * 4 -#else -#define _KCPUIDS(LEAF, REG) kCpuids[KCPUIDS_##LEAF][KCPUIDS_##REG] -#endif - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const unsigned kCpuids[KCPUIDS_LEN][4]; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -/*─────────────────────────────────────────────────────────────────────────────╗ -│ cosmopolitan § autotune » dead code elimination │ -╚─────────────────────────────────────────────────────────────────────────────*/ - -#ifndef SUPPORT_VECTOR -/** - * Supported Platforms Tuning Knob (Runtime & Compile-Time) - * Tuning this bitmask will remove platform polyfills at compile-time. - */ -#define SUPPORT_VECTOR 255 -#endif - -#define LINUX 1 -#define METAL 2 -#define WINDOWS 4 -#define XNU 8 -#define OPENBSD 16 -#define FREEBSD 32 -#define NETBSD 64 - -#ifdef NDEBUG -#define NoDebug() 1 -#else -#define NoDebug() 0 -#endif - -#ifdef MODE_DBG -#define IsModeDbg() 1 -#else -#define IsModeDbg() 0 -#endif - -#ifdef __MFENTRY__ -#define HaveFentry() 1 -#else -#define HaveFentry() 0 -#endif - -#ifdef TRUSTWORTHY -#define IsTrustworthy() 1 -#else -#define IsTrustworthy() 0 -#endif - -#ifdef TINY -#define IsTiny() 1 -#else -#define IsTiny() 0 -#endif - -#ifdef __OPTIMIZE__ -#define IsOptimized() 1 -#else -#define IsOptimized() 0 -#endif - -#ifdef __FSANITIZE_ADDRESS__ -#define IsAsan() 1 -#else -#define IsAsan() 0 -#endif - -#if defined(__PIE__) || defined(__PIC__) -#define IsPositionIndependent() 1 -#else -#define IsPositionIndependent() 0 -#endif - -#define SupportsLinux() ((SUPPORT_VECTOR & LINUX) == LINUX) -#define SupportsMetal() ((SUPPORT_VECTOR & METAL) == METAL) -#define SupportsWindows() ((SUPPORT_VECTOR & WINDOWS) == WINDOWS) -#define SupportsXnu() ((SUPPORT_VECTOR & XNU) == XNU) -#define SupportsFreebsd() ((SUPPORT_VECTOR & FREEBSD) == FREEBSD) -#define SupportsOpenbsd() ((SUPPORT_VECTOR & OPENBSD) == OPENBSD) -#define SupportsNetbsd() ((SUPPORT_VECTOR & NETBSD) == NETBSD) -#define SupportsBsd() (!!(SUPPORT_VECTOR & (XNU | FREEBSD | OPENBSD | NETBSD))) -#define SupportsSystemv() \ - (!!(SUPPORT_VECTOR & (LINUX | XNU | OPENBSD | FREEBSD | NETBSD))) - -#ifndef __ASSEMBLER__ -#define IsLinux() (SupportsLinux() && (__hostos & LINUX)) -#define IsMetal() (SupportsMetal() && (__hostos & METAL)) -#define IsWindows() (SupportsWindows() && (__hostos & WINDOWS)) -#define IsXnu() (SupportsXnu() && (__hostos & XNU)) -#define IsFreebsd() (SupportsFreebsd() && (__hostos & FREEBSD)) -#define IsOpenbsd() (SupportsOpenbsd() && (__hostos & OPENBSD)) -#define IsNetbsd() (SupportsNetbsd() && (__hostos & NETBSD)) -#define IsBsd() (IsXnu() || IsFreebsd() || IsOpenbsd() || IsNetbsd()) -#else -/* clang-format off */ -#define IsLinux() $LINUX,__hostos(%rip) -#define IsMetal() $METAL,__hostos(%rip) -#define IsWindows() $WINDOWS,__hostos(%rip) -#define IsBsd() $XNU|FREEBSD|OPENBSD|NETBSD,__hostos(%rip) -#define IsXnu() $XNU,__hostos(%rip) -#define IsFreebsd() $FREEBSD,__hostos(%rip) -#define IsOpenbsd() $OPENBSD,__hostos(%rip) -#define IsNetbsd() $NETBSD,__hostos(%rip) -/* clang-format on */ -#endif - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const int __hostos; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/dos.h */ - -#define COSMOPOLITAN_LIBC_DOS_H_ - -#define DOS_DATE(YEAR, MONTH_IDX1, DAY_IDX1) \ - (((YEAR)-1980) << 9 | (MONTH_IDX1) << 5 | (DAY_IDX1)) -#define DOS_TIME(HOUR, MINUTE, SECOND) \ - ((HOUR) << 11 | (MINUTE) << 5 | (SECOND) >> 1) - - - -/*!BEGIN libc/errno.h */ - -#define COSMOPOLITAN_LIBC_ERRNO_H_ - -/** - * @fileoverview System error codes. - * @see libc/sysv/consts.sh for numbers - */ - -#define EPERM EPERM /* operation not permitted */ -#define ENOENT ENOENT /* no such file or directory */ -#define ESRCH ESRCH /* no such process */ -#define EINTR EINTR /* interrupted system call */ -#define EIO EIO /* input/output error */ -#define ENXIO ENXIO /* no such device or address */ -#define E2BIG E2BIG /* argument list too long */ -#define ENOEXEC ENOEXEC /* exec format error */ -#define EBADF EBADF /* bad file descriptor */ -#define ECHILD ECHILD /* no child processes */ -#define EAGAIN EAGAIN /* resource temporarily unavailable */ -#define ENOMEM ENOMEM /* not enough space */ -#define EACCES EACCES /* permission denied */ -#define EFAULT EFAULT /* bad address */ -#define ENOTBLK ENOTBLK /* block device required */ -#define EBUSY EBUSY /* device or resource busy */ -#define EEXIST EEXIST /* file exists */ -#define EXDEV EXDEV /* improper link */ -#define ENODEV ENODEV /* no such device */ -#define ENOTDIR ENOTDIR /* not a directory */ -#define EISDIR EISDIR /* is a directory */ -#define EINVAL EINVAL /* invalid argument */ -#define ENFILE ENFILE /* too many open files in system */ -#define EMFILE EMFILE /* too many open files */ -#define ENOTTY ENOTTY /* inappropriate I/O control op */ -#define ETXTBSY ETXTBSY /* text file busy */ -#define EFBIG EFBIG /* file too large */ -#define ENOSPC ENOSPC /* no space left on device */ -#define ESPIPE ESPIPE /* invalid seek */ -#define EROFS EROFS /* read-only filesystem */ -#define EMLINK EMLINK /* too many links */ -#define EPIPE EPIPE /* broken pipe */ -#define EDOM EDOM /* argument out of function domain */ -#define ERANGE ERANGE /* result too large */ -#define EDEADLK EDEADLK /* resource deadlock avoided */ -#define ENAMETOOLONG ENAMETOOLONG /* filename too long */ -#define ENOLCK ENOLCK /* no locks available */ -#define ENOSYS ENOSYS /* system call not implemented */ -#define ENOTEMPTY ENOTEMPTY /* directory not empty */ -#define ELOOP ELOOP /* too many levels of symbolic links */ -#define ENOMSG ENOMSG /* no message of the desired type */ -#define EIDRM EIDRM /* identifier removed */ -#define ECHRNG ECHRNG /* channel number out of range */ -#define EL2NSYNC EL2NSYNC /* level 2 not synchronized */ -#define EL3HLT EL3HLT /* level 3 halted */ -#define EL3RST EL3RST /* level 3 halted */ -#define ELNRNG ELNRNG /* link number out of range */ -#define EUNATCH EUNATCH /* protocol driver not attached */ -#define ENOCSI ENOCSI /* no csi structure available */ -#define EL2HLT EL2HLT /* level 2 halted */ -#define EBADE EBADE /* invalid exchange */ -#define EBADR EBADR /* invalid request descriptor */ -#define EXFULL EXFULL /* exchange full */ -#define ENOANO ENOANO /* no anode */ -#define EBADRQC EBADRQC /* invalid request code */ -#define EBADSLT EBADSLT /* invalid slot */ -#define ENOSTR ENOSTR /* no string */ -#define ENODATA ENODATA /* no data */ -#define ETIME ETIME /* timer expired */ -#define ENOSR ENOSR /* out of streams resources */ -#define ENONET ENONET /* no network */ -#define ENOPKG ENOPKG /* package not installed */ -#define EREMOTE EREMOTE /* object is remote */ -#define ENOLINK ENOLINK /* link severed */ -#define EADV EADV /* todo */ -#define ESRMNT ESRMNT /* todo */ -#define ECOMM ECOMM /* communication error on send */ -#define EPROTO EPROTO /* protocol error */ -#define EMULTIHOP EMULTIHOP /* multihop attempted */ -#define EDOTDOT EDOTDOT /* todo */ -#define EBADMSG EBADMSG /* bad message */ -#define EOVERFLOW EOVERFLOW /* value too large for type */ -#define ENOTUNIQ ENOTUNIQ /* name not unique on network */ -#define EBADFD EBADFD /* fd in bad *state* (cf. EBADF) */ -#define EREMCHG EREMCHG /* remote address changed */ -#define ELIBACC ELIBACC /* cannot access dso */ -#define ELIBBAD ELIBBAD /* corrupted shared library */ -#define ELIBSCN ELIBSCN /* a.out section corrupted */ -#define ELIBMAX ELIBMAX /* too many shared libraries */ -#define ELIBEXEC ELIBEXEC /* cannot exec a dso directly */ -#define EILSEQ EILSEQ /* invalid wide character */ -#define ERESTART ERESTART /* please restart syscall */ -#define ESTRPIPE ESTRPIPE /* streams pipe error */ -#define EUSERS EUSERS /* too many users */ -#define ENOTSOCK ENOTSOCK /* not a socket */ -#define EDESTADDRREQ EDESTADDRREQ /* dest address needed */ -#define EMSGSIZE EMSGSIZE /* message too long */ -#define EPROTOTYPE EPROTOTYPE /* protocol wrong for socket */ -#define ENOPROTOOPT ENOPROTOOPT /* protocol not available */ -#define EPROTONOSUPPORT EPROTONOSUPPORT /* protocol not supported */ -#define ESOCKTNOSUPPORT ESOCKTNOSUPPORT /* socket type not supported */ -#define EOPNOTSUPP EOPNOTSUPP /* operation not supported on socket */ -#define EPFNOSUPPORT EPFNOSUPPORT /* protocol family not supported */ -#define EAFNOSUPPORT EAFNOSUPPORT /* address family not supported */ -#define EADDRINUSE EADDRINUSE /* address already in use */ -#define EADDRNOTAVAIL EADDRNOTAVAIL /* address not available */ -#define ENETDOWN ENETDOWN /* network is down */ -#define ENETUNREACH ENETUNREACH /* network unreachable */ -#define ENETRESET ENETRESET /* connection aborted by network */ -#define ECONNABORTED ECONNABORTED /* connection aborted */ -#define ECONNRESET ECONNRESET /* connection reset */ -#define ENOBUFS ENOBUFS /* no buffer space available */ -#define EISCONN EISCONN /* socket is connected */ -#define ENOTCONN ENOTCONN /* the socket is not connected */ -#define ESHUTDOWN ESHUTDOWN /* no send after endpoint shutdown */ -#define ETOOMANYREFS ETOOMANYREFS /* too many refs */ -#define ETIMEDOUT ETIMEDOUT /* connection timed out */ -#define ECONNREFUSED ECONNREFUSED /* connection refused */ -#define EHOSTDOWN EHOSTDOWN /* host is down */ -#define EHOSTUNREACH EHOSTUNREACH /* host is unreachable */ -#define EALREADY EALREADY /* connection already in progress */ -#define EINPROGRESS EINPROGRESS /* operation in progress */ -#define ESTALE ESTALE /* stale file handle */ -#define EUCLEAN EUCLEAN /* structure needs cleaning */ -#define ENOTNAM ENOTNAM /* todo */ -#define ENAVAIL ENAVAIL /* todo */ -#define EISNAM EISNAM /* is a named type file */ -#define EREMOTEIO EREMOTEIO /* remote i/o error */ -#define EDQUOT EDQUOT /* disk quota exceeded */ -#define ENOMEDIUM ENOMEDIUM /* no medium found */ -#define EMEDIUMTYPE EMEDIUMTYPE /* wrong medium type */ -#define ECANCELED ECANCELED /* operation canceled */ -#define ENOKEY ENOKEY /* required key not available */ -#define EKEYEXPIRED EKEYEXPIRED /* key has expired */ -#define EKEYREVOKED EKEYREVOKED /* key has been revoked */ -#define EKEYREJECTED EKEYREJECTED /* key was rejected by service */ -#define EOWNERDEAD EOWNERDEAD /* owner died */ -#define ENOTRECOVERABLE ENOTRECOVERABLE /* state not recoverable */ -#define ERFKILL ERFKILL /* can't op b/c RF-kill */ -#define EHWPOISON EHWPOISON /* mempage has h/w error */ -#define EWOULDBLOCK EAGAIN /* poll fd and try again */ -#define ENOTSUP ENOTSUP - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern errno_t errno; - -hidden extern const long EPERM; -hidden extern const long ENOENT; -hidden extern const long ESRCH; -hidden extern const long EINTR; -hidden extern const long EIO; -hidden extern const long ENXIO; -hidden extern const long E2BIG; -hidden extern const long ENOEXEC; -hidden extern const long EBADF; -hidden extern const long ECHILD; -hidden extern const long EAGAIN; -hidden extern const long ENOMEM; -hidden extern const long EACCES; -hidden extern const long EFAULT; -hidden extern const long ENOTBLK; -hidden extern const long EBUSY; -hidden extern const long EEXIST; -hidden extern const long EXDEV; -hidden extern const long ENODEV; -hidden extern const long ENOTDIR; -hidden extern const long EISDIR; -hidden extern const long EINVAL; -hidden extern const long ENFILE; -hidden extern const long EMFILE; -hidden extern const long ENOTTY; -hidden extern const long ETXTBSY; -hidden extern const long EFBIG; -hidden extern const long ENOSPC; -hidden extern const long ESPIPE; -hidden extern const long EROFS; -hidden extern const long EMLINK; -hidden extern const long EPIPE; -hidden extern const long EDOM; -hidden extern const long ERANGE; -hidden extern const long EDEADLK; -hidden extern const long ENAMETOOLONG; -hidden extern const long ENOLCK; -hidden extern const long ENOSYS; -hidden extern const long ENOTEMPTY; -hidden extern const long ELOOP; -hidden extern const long ENOMSG; -hidden extern const long EIDRM; -hidden extern const long ECHRNG; -hidden extern const long EL2NSYNC; -hidden extern const long EL3HLT; -hidden extern const long EL3RST; -hidden extern const long ELNRNG; -hidden extern const long EUNATCH; -hidden extern const long ENOCSI; -hidden extern const long EL2HLT; -hidden extern const long EBADE; -hidden extern const long EBADR; -hidden extern const long EXFULL; -hidden extern const long ENOANO; -hidden extern const long EBADRQC; -hidden extern const long EBADSLT; -hidden extern const long ENOSTR; -hidden extern const long ENODATA; -hidden extern const long ETIME; -hidden extern const long ENOSR; -hidden extern const long ENONET; -hidden extern const long ENOPKG; -hidden extern const long EREMOTE; -hidden extern const long ENOLINK; -hidden extern const long EADV; -hidden extern const long ESRMNT; -hidden extern const long ECOMM; -hidden extern const long EPROTO; -hidden extern const long EMULTIHOP; -hidden extern const long EDOTDOT; -hidden extern const long EBADMSG; -hidden extern const long EOVERFLOW; -hidden extern const long ENOTUNIQ; -hidden extern const long EBADFD; -hidden extern const long EREMCHG; -hidden extern const long ELIBACC; -hidden extern const long ELIBBAD; -hidden extern const long ELIBSCN; -hidden extern const long ELIBMAX; -hidden extern const long ELIBEXEC; -hidden extern const long EILSEQ; -hidden extern const long ERESTART; -hidden extern const long ESTRPIPE; -hidden extern const long EUSERS; -hidden extern const long ENOTSOCK; -hidden extern const long EDESTADDRREQ; -hidden extern const long EMSGSIZE; -hidden extern const long EPROTOTYPE; -hidden extern const long ENOPROTOOPT; -hidden extern const long EPROTONOSUPPORT; -hidden extern const long ESOCKTNOSUPPORT; -hidden extern const long EOPNOTSUPP; -hidden extern const long EPFNOSUPPORT; -hidden extern const long EAFNOSUPPORT; -hidden extern const long EADDRINUSE; -hidden extern const long EADDRNOTAVAIL; -hidden extern const long ENETDOWN; -hidden extern const long ENETUNREACH; -hidden extern const long ENETRESET; -hidden extern const long ECONNABORTED; -hidden extern const long ECONNRESET; -hidden extern const long ENOBUFS; -hidden extern const long EISCONN; -hidden extern const long ENOTCONN; -hidden extern const long ESHUTDOWN; -hidden extern const long ETOOMANYREFS; -hidden extern const long ETIMEDOUT; -hidden extern const long ECONNREFUSED; -hidden extern const long EHOSTDOWN; -hidden extern const long EHOSTUNREACH; -hidden extern const long EALREADY; -hidden extern const long EINPROGRESS; -hidden extern const long ESTALE; -hidden extern const long EUCLEAN; -hidden extern const long ENOTNAM; -hidden extern const long ENAVAIL; -hidden extern const long EISNAM; -hidden extern const long EREMOTEIO; -hidden extern const long EDQUOT; -hidden extern const long ENOMEDIUM; -hidden extern const long EMEDIUMTYPE; -hidden extern const long ECANCELED; -hidden extern const long ENOKEY; -hidden extern const long EKEYEXPIRED; -hidden extern const long EKEYREVOKED; -hidden extern const long EKEYREJECTED; -hidden extern const long EOWNERDEAD; -hidden extern const long ENOTRECOVERABLE; -hidden extern const long ERFKILL; -hidden extern const long EHWPOISON; -hidden extern const long ENOTSUP; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/inttypes.h */ - -#define COSMOPOLITAN_LIBC_INTTYPES_H_ - -typedef __INT_LEAST8_TYPE__ int_least8_t; -typedef __UINT_LEAST8_TYPE__ uint_least8_t; -typedef __INT_LEAST16_TYPE__ int_least16_t; -typedef __UINT_LEAST16_TYPE__ uint_least16_t; -typedef __INT_LEAST32_TYPE__ int_least32_t; -typedef __UINT_LEAST32_TYPE__ uint_least32_t; -typedef __INT_LEAST64_TYPE__ int_least64_t; -typedef __UINT_LEAST64_TYPE__ uint_least64_t; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define __PRI8 "hh" - -#if __SIZEOF_INT__ == 2 -#define __PRI16 "" -#elif __SIZEOF_SHORT__ == 2 -#define __PRI16 "h" -#elif __SIZEOF_LONG__ == 2 -#define __PRI16 "l" -#endif - -#if __SIZEOF_INT__ == 4 -#define __PRI32 "" -#elif __SIZEOF_LONG__ == 4 -#define __PRI32 "l" -#elif __SIZEOF_LONG_LONG__ == 4 -#define __PRI32 "ll" -#endif - -#if __SIZEOF_INT__ == 8 -#define __PRI64 "" -#elif __SIZEOF_LONG__ == 8 -#define __PRI64 "l" -#elif __SIZEOF_LONG_LONG__ == 8 -#define __PRI64 "ll" -#endif - -#if __SIZEOF_INT__ == 16 -#define __PRI128 "" -#elif __SIZEOF_LONG__ == 16 -#define __PRI128 "l" -#elif __SIZEOF_LONG_LONG__ == 16 -#define __PRI128 "ll" -#elif __SIZEOF_INTMAX__ == 16 -#define __PRI128 "j" -#endif - -#if __SIZEOF_POINTER__ == __SIZEOF_INT__ -#define __PRIPTR "" -#elif __SIZEOF_POINTER__ == __SIZEOF_LONG__ -#define __PRIPTR "l" -#elif __SIZEOF_POINTER__ == __SIZEOF_LONG_LONG__ -#define __PRIPTR "ll" -#endif - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » printf » decimal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define PRId8 __PRI8 "d" -#define PRId16 __PRI16 "d" -#define PRId32 __PRI32 "d" -#define PRId64 __PRI64 "d" -#define PRId128 __PRI128 "d" - -#define PRIdLEAST8 __PRI8 "d" -#define PRIdLEAST16 __PRI16 "d" -#define PRIdLEAST32 __PRI32 "d" -#define PRIdLEAST64 __PRI64 "d" -#define PRIdLEAST128 __PRI128 "d" - -#define PRIdFAST8 __PRI8 "d" -#define PRIdFAST16 __PRI16 "d" -#define PRIdFAST32 __PRI32 "d" -#define PRIdFAST64 __PRI64 "d" -#define PRIdFAST128 __PRI128 "d" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » printf » unsigned decimal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define PRIu8 __PRI8 "u" -#define PRIu16 __PRI16 "u" -#define PRIu32 __PRI32 "u" -#define PRIu64 __PRI64 "u" -#define PRIu128 __PRI128 "u" - -#define PRIuLEAST8 __PRI8 "u" -#define PRIuLEAST16 __PRI16 "u" -#define PRIuLEAST32 __PRI32 "u" -#define PRIuLEAST64 __PRI64 "u" -#define PRIuLEAST128 __PRI128 "u" - -#define PRIuFAST8 __PRI8 "u" -#define PRIuFAST16 __PRI16 "u" -#define PRIuFAST32 __PRI32 "u" -#define PRIuFAST64 __PRI64 "u" -#define PRIuFAST128 __PRI128 "u" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » printf » wut ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define PRIi8 __PRI8 "i" -#define PRIi16 __PRI16 "i" -#define PRIi32 __PRI32 "i" -#define PRIi64 __PRI64 "i" -#define PRIi128 __PRI128 "i" - -#define PRIiLEAST8 __PRI8 "i" -#define PRIiLEAST16 __PRI16 "i" -#define PRIiLEAST32 __PRI32 "i" -#define PRIiLEAST64 __PRI64 "i" -#define PRIiLEAST128 __PRI128 "i" - -#define PRIiFAST8 __PRI8 "i" -#define PRIiFAST16 __PRI16 "i" -#define PRIiFAST32 __PRI32 "i" -#define PRIiFAST64 __PRI64 "i" -#define PRIiFAST128 __PRI128 "i" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » printf » octal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define PRIo8 __PRI8 "o" -#define PRIo16 __PRI16 "o" -#define PRIo32 __PRI32 "o" -#define PRIo64 __PRI64 "o" -#define PRIo128 __PRI128 "o" - -#define PRIoLEAST8 __PRI8 "o" -#define PRIoLEAST16 __PRI16 "o" -#define PRIoLEAST32 __PRI32 "o" -#define PRIoLEAST64 __PRI64 "o" -#define PRIoLEAST128 __PRI128 "o" - -#define PRIoFAST8 __PRI8 "o" -#define PRIoFAST16 __PRI16 "o" -#define PRIoFAST32 __PRI32 "o" -#define PRIoFAST64 __PRI64 "o" -#define PRIoFAST128 __PRI128 "o" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » printf » hexadecimal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define PRIx8 __PRI8 "x" -#define PRIx16 __PRI16 "x" -#define PRIx32 __PRI32 "x" -#define PRIx64 __PRI64 "x" -#define PRIx128 __PRI128 "x" - -#define PRIxLEAST8 __PRI8 "x" -#define PRIxLEAST16 __PRI16 "x" -#define PRIxLEAST32 __PRI32 "x" -#define PRIxLEAST64 __PRI64 "x" -#define PRIxLEAST128 __PRI128 "x" - -#define PRIxFAST8 __PRI8 "x" -#define PRIxFAST16 __PRI16 "x" -#define PRIxFAST32 __PRI32 "x" -#define PRIxFAST64 __PRI64 "x" -#define PRIxFAST128 __PRI128 "x" - -#define PRIX8 __PRI8 "X" -#define PRIX16 __PRI16 "X" -#define PRIX32 __PRI32 "X" -#define PRIX64 __PRI64 "X" -#define PRIX128 __PRI128 "X" - -#define PRIXLEAST8 __PRI8 "X" -#define PRIXLEAST16 __PRI16 "X" -#define PRIXLEAST32 __PRI32 "X" -#define PRIXLEAST64 __PRI64 "X" -#define PRIXLEAST128 __PRI128 "X" - -#define PRIXFAST8 __PRI8 "X" -#define PRIXFAST16 __PRI16 "X" -#define PRIXFAST32 __PRI32 "X" -#define PRIXFAST64 __PRI64 "X" -#define PRIXFAST128 __PRI128 "X" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » printf » binary ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define PRIb8 __PRI8 "b" -#define PRIb16 __PRI16 "b" -#define PRIb32 __PRI32 "b" -#define PRIb64 __PRI64 "b" -#define PRIb128 __PRI128 "b" - -#define PRIbLEAST8 __PRI8 "b" -#define PRIbLEAST16 __PRI16 "b" -#define PRIbLEAST32 __PRI32 "b" -#define PRIbLEAST64 __PRI64 "b" -#define PRIbLEAST128 __PRI128 "b" - -#define PRIbFAST8 __PRI8 "b" -#define PRIbFAST16 __PRI16 "b" -#define PRIbFAST32 __PRI32 "b" -#define PRIbFAST64 __PRI64 "b" -#define PRIbFAST128 __PRI128 "b" - -#define PRIB8 __PRI8 "B" -#define PRIB16 __PRI16 "B" -#define PRIB32 __PRI32 "B" -#define PRIB64 __PRI64 "B" -#define PRIB128 __PRI128 "B" - -#define PRIBLEAST8 __PRI8 "B" -#define PRIBLEAST16 __PRI16 "B" -#define PRIBLEAST32 __PRI32 "B" -#define PRIBLEAST64 __PRI64 "B" -#define PRIBLEAST128 __PRI128 "B" - -#define PRIBFAST8 __PRI8 "B" -#define PRIBFAST16 __PRI16 "B" -#define PRIBFAST32 __PRI32 "B" -#define PRIBFAST64 __PRI64 "B" -#define PRIBFAST128 __PRI128 "B" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » printf » miscellaneous ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define PRIdMAX "jd" -#define PRIiMAX "ji" -#define PRIoMAX "jo" -#define PRIuMAX "ju" -#define PRIxMAX "jx" -#define PRIXMAX "jX" - -#define PRIdPTR __PRIPTR "d" -#define PRIiPTR __PRIPTR "i" -#define PRIoPTR __PRIPTR "o" -#define PRIuPTR __PRIPTR "u" -#define PRIxPTR __PRIPTR "x" -#define PRIXPTR __PRIPTR "X" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » scanf » decimal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define SCNd8 __PRI8 "d" -#define SCNd16 __PRI16 "d" -#define SCNd32 __PRI32 "d" -#define SCNd64 __PRI64 "d" -#define SCNd128 __PRI128 "d" - -#define SCNdLEAST8 __PRI8 "d" -#define SCNdLEAST16 __PRI16 "d" -#define SCNdLEAST32 __PRI32 "d" -#define SCNdLEAST64 __PRI64 "d" -#define SCNdLEAST128 __PRI128 "d" - -#define SCNdFAST8 __PRI8 "d" -#define SCNdFAST16 __PRI16 "d" -#define SCNdFAST32 __PRI32 "d" -#define SCNdFAST64 __PRI64 "d" -#define SCNdFAST128 __PRI128 "d" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » scanf » flexidecimal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define SCNi8 __PRI8 "i" -#define SCNi16 __PRI16 "i" -#define SCNi32 __PRI32 "i" -#define SCNi64 __PRI64 "i" -#define SCNi128 __PRI128 "i" - -#define SCNiLEAST8 __PRI8 "i" -#define SCNiLEAST16 __PRI16 "i" -#define SCNiLEAST32 __PRI32 "i" -#define SCNiLEAST64 __PRI64 "i" -#define SCNiLEAST128 __PRI128 "i" - -#define SCNiFAST8 __PRI8 "i" -#define SCNiFAST16 __PRI16 "i" -#define SCNiFAST32 __PRI32 "i" -#define SCNiFAST64 __PRI64 "i" -#define SCNiFAST128 __PRI128 "i" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » scanf » unsigned decimal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define SCNu8 __PRI8 "u" -#define SCNu16 __PRI16 "u" -#define SCNu32 __PRI32 "u" -#define SCNu64 __PRI64 "u" -#define SCNu128 __PRI128 "u" - -#define SCNuLEAST8 __PRI8 "u" -#define SCNuLEAST16 __PRI16 "u" -#define SCNuLEAST32 __PRI32 "u" -#define SCNuLEAST64 __PRI64 "u" -#define SCNuLEAST128 __PRI128 "u" - -#define SCNuFAST8 __PRI8 "u" -#define SCNuFAST16 __PRI16 "u" -#define SCNuFAST32 __PRI32 "u" -#define SCNuFAST64 __PRI64 "u" -#define SCNuFAST128 __PRI128 "u" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » scanf » octal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define SCNo8 __PRI8 "o" -#define SCNo16 __PRI16 "o" -#define SCNo32 __PRI32 "o" -#define SCNo64 __PRI64 "o" -#define SCNo128 __PRI128 "o" - -#define SCNoLEAST8 __PRI8 "o" -#define SCNoLEAST16 __PRI16 "o" -#define SCNoLEAST32 __PRI32 "o" -#define SCNoLEAST64 __PRI64 "o" -#define SCNoLEAST128 __PRI128 "o" - -#define SCNoFAST8 __PRI8 "o" -#define SCNoFAST16 __PRI16 "o" -#define SCNoFAST32 __PRI32 "o" -#define SCNoFAST64 __PRI64 "o" -#define SCNoFAST128 __PRI128 "o" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » scanf » hexadecimal ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define SCNx8 __PRI8 "x" -#define SCNx16 __PRI16 "x" -#define SCNx32 __PRI32 "x" -#define SCNx64 __PRI64 "x" -#define SCNx128 __PRI128 "x" - -#define SCNxLEAST8 __PRI8 "x" -#define SCNxLEAST16 __PRI16 "x" -#define SCNxLEAST32 __PRI32 "x" -#define SCNxLEAST64 __PRI64 "x" -#define SCNxLEAST128 __PRI128 "x" - -#define SCNxFAST8 __PRI8 "x" -#define SCNxFAST16 __PRI16 "x" -#define SCNxFAST32 __PRI32 "x" -#define SCNxFAST64 __PRI64 "x" -#define SCNxFAST128 __PRI128 "x" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » scanf » binary ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define SCNb8 __PRI8 "b" -#define SCNb16 __PRI16 "b" -#define SCNb32 __PRI32 "b" -#define SCNb64 __PRI64 "b" -#define SCNb128 __PRI128 "b" - -#define SCNbLEAST8 __PRI8 "b" -#define SCNbLEAST16 __PRI16 "b" -#define SCNbLEAST32 __PRI32 "b" -#define SCNbLEAST64 __PRI64 "b" -#define SCNbLEAST128 __PRI128 "b" - -#define SCNbFAST8 __PRI8 "b" -#define SCNbFAST16 __PRI16 "b" -#define SCNbFAST32 __PRI32 "b" -#define SCNbFAST64 __PRI64 "b" -#define SCNbFAST128 __PRI128 "b" - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dismal format notation » scanf » miscellaneous ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define SCNdMAX "jd" -#define SCNiMAX "ji" -#define SCNoMAX "jo" -#define SCNuMAX "ju" -#define SCNxMAX "jx" - -#define SCNdPTR __PRIPTR "d" -#define SCNiPTR __PRIPTR "i" -#define SCNoPTR __PRIPTR "o" -#define SCNuPTR __PRIPTR "u" -#define SCNxPTR __PRIPTR "x" - - - -/*!BEGIN libc/limits.h */ - -#define COSMOPOLITAN_LIBC_LIMITS_H_ - -#define UCHAR_MIN 0 -#define UCHAR_MAX 255 - -#if '\200' < 0 -#define CHAR_MIN '\200' -#define CHAR_MAX '\177' -#else -#define CHAR_MIN '\0' -#define CHAR_MAX '\377' -#endif - -#define SCHAR_MAX __SCHAR_MAX__ -#define SHRT_MAX __SHRT_MAX__ -#define INT_MAX __INT_MAX__ -#define LONG_MAX __LONG_MAX__ -#define LLONG_MAX LONG_LONG_MAX -#define LONG_LONG_MAX __LONG_LONG_MAX__ -#define SIZE_MAX __SIZE_MAX__ -#define INT8_MAX __INT8_MAX__ -#define INT16_MAX __INT16_MAX__ -#define INT32_MAX __INT32_MAX__ -#define INT64_MAX __INT64_MAX__ -#define WINT_MAX __WCHAR_MAX__ -#define WCHAR_MAX __WCHAR_MAX__ -#define INTPTR_MAX __INTPTR_MAX__ -#define PTRDIFF_MAX __PTRDIFF_MAX__ -#define UINTPTR_MAX __UINTPTR_MAX__ -#define UINT8_MAX __UINT8_MAX__ -#define UINT16_MAX __UINT16_MAX__ -#define UINT32_MAX __UINT32_MAX__ -#define UINT64_MAX __UINT64_MAX__ - -#define SCHAR_MIN (-SCHAR_MAX - 1) -#define SHRT_MIN (-SHRT_MAX - 1) -#define INT_MIN (-INT_MAX - 1) -#define LONG_MIN (-LONG_MAX - 1) -#define LLONG_MIN (-LLONG_MAX - 1) -#define LONG_LONG_MIN (-LONG_LONG_MAX - 1) -#define SIZE_MIN (-SIZE_MAX - 1) -#define INT8_MIN (-INT8_MAX - 1) -#define INT16_MIN (-INT16_MAX - 1) -#define INT32_MIN (-INT32_MAX - 1) -#define INT64_MIN (-INT64_MAX - 1) -#define INTMAX_MIN (-INTMAX_MAX - 1) -#define INTPTR_MIN (-INTPTR_MAX - 1) -#define WINT_MIN (-WINT_MAX - 1) -#define WCHAR_MIN (-WCHAR_MAX - 1) -#define PTRDIFF_MIN (-PTRDIFF_MAX - 1) - -#define USHRT_MAX 65535 -#define UINT_MAX 0xffffffffu -#if __SIZEOF_LONG__ == 8 -#define ULONG_MAX 0xfffffffffffffffful -#else -#define ULONG_MAX 0xfffffffful -#endif -#define ULLONG_MAX 0xffffffffffffffffull -#define ULONG_LONG_MAX 0xffffffffffffffffull - -#define USHRT_MIN 0 -#define UINT_MIN 0u -#define ULONG_MIN 0ul -#define ULLONG_MIN 0ull -#define ULONG_LONG_MIN 0ull -#define UINT8_MIN 0 -#define UINT16_MIN 0 -#define UINT32_MIN 0u -#define UINT64_MIN 0ull -#define UINTPTR_MIN 0ull - -#define MB_CUR_MAX 4 -#define MB_LEN_MAX 4 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#if __GNUC__ * 100 + __GNUC_MINOR__ >= 406 || defined(__llvm__) -#define INTMAX_MAX \ - (((intmax_t)0x7fffffffffffffff) << 64 | (intmax_t)0xffffffffffffffff) -#define UINTMAX_MAX \ - (((uintmax_t)0xffffffffffffffff) << 64 | (uintmax_t)0xffffffffffffffff) -#define INT128_MIN INTMAX_MIN -#define INT128_MAX INTMAX_MAX -#define UINTMAX_MIN ((uintmax_t)0) -#define UINT128_MIN ((uintmax_t)0) -#define UINT128_MAX UINTMAX_MAX -#else -#define INTMAX_MAX __INT64_MAX__ -#define UINTMAX_MAX __UINT64_MAX__ -#define UINTMAX_MIN UINT64_MIN -#endif /* GCC 4.6+ */ - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/literal.h */ - -#define COSMOPOLITAN_LIBC_LITERAL_H_ - -#ifdef __INT8_C -#define INT8_C(c) __INT8_C(c) -#define UINT8_C(c) __UINT8_C(c) -#define INT16_C(c) __INT16_C(c) -#define UINT16_C(c) __UINT16_C(c) -#define INT32_C(c) __INT32_C(c) -#define UINT32_C(c) __UINT32_C(c) -#define INT64_C(c) __INT64_C(c) -#define UINT64_C(c) __UINT64_C(c) -#else -#define INT8_C(c) c -#define UINT8_C(c) c -#define INT16_C(c) c -#define UINT16_C(c) c -#define INT32_C(c) c -#define UINT32_C(c) c##U -#define INT64_C(c) c##L -#define UINT64_C(c) c##UL -#endif - -#if __SIZEOF_INTMAX__ == 16 -#define INT128_C(c) ((intmax_t)(c)) -#define UINT128_C(c) ((uintmax_t)(c)) -#elif __SIZEOF_INTMAX__ == 8 -#define INT128_C(c) __INT64_C(c) -#define UINT128_C(c) __UINT64_C(c) -#endif - - - -/*!BEGIN libc/mach.h */ - -#define COSMOPOLITAN_LIBC_MACH_H_ -/* ▄▄███▄ - ▄▄████████▄ - ▄█████████████▄ - ▄▄███▓▓▓▓▓▓▓▓▓▓▓███▄ - ▄▄█████▓▓▓█████████▓▓▓██▄ - ▄▄████████▓▓▓███████▓▓▓▓▓████▄ - ▄█████░░░████▓▓█████▓▓▓▓█████████▄ - ▄▄█████████░░░███▓▓█▓▓▓▓▒███████▓▓▒███▄ - ▄██████████████░░░██▓▓▓▓███████████▓▓█████▄ - ██████████████████░░░██▓▓▓█████████▓▓▓███████▄ - ███░░░░░░█████████▓░░███▓▓▓▓▓▓▓▓▓▓▓█████▒▒▒██▄ - █░███░░░██░░░░░░░░░██░░██████████████▒▒▒▒██████▄ - ███████░░░█████████░░░░░░█████████▒▒▒▒▒██████████▄ - █████ ██░░░███████████████████▒▒▒▒▒██░▒▒██████████▄ - ██████ ██░░░██████████████░███▒████████▒▒██████████▄ - ████████ ███░░█████████████░░████████████▒▒███████████ - █████████ ███░░███████████░░██████████████▒▒███████████ - ▄██████████ ██████████████ ░░███████████████▒▒███████████ - ████████████ ███░░░░░█████░░█████████████████▒▒██████ █ - █████████████ ██████░░░░░░░▒█████████████████████ ████▀ - █████████████ ██████████░░░░░░░░░███████████ ████████ - █████████████ ████████░░███████░░░██████ ▓██████████ - █████████████ ██████░░░████████████ █████████████ -╔────────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § xnu's not unix! » carnegie mellon mach microkernel ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define XNU_SYSCALL_MASK_MACH 0x1000000 -#define XNU_SYSCALL_MASK_UNIX 0x2000000 -#define XNU_SYSCALL_MASK_MACH_IPC 0x5000000 - -#define kXnuCommonPage 0x00007fffffe00000 -#define kXnuNtTscBase 0x050 /* uint64_t */ -#define kXnuNtScale 0x058 /* uint32_t */ -#define kXnuNtShift 0x05c /* uint32_t */ -#define kXnuNtNsBase 0x060 /* uint64_t */ -#define kXnuNtGeneration 0x068 /* uint32_t */ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -bool swtch(void); -bool swtch_pri(int); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/math.h */ - -#define COSMOPOLITAN_LIBC_MATH_H_ -/*─────────────────────────────────────────────────────────────────────────────╗ -│ cosmopolitan § mathematics │ -╚─────────────────────────────────────────────────────────────────────────────*/ - -#define M_E 2.7182818284590452354 /* 𝑒 */ -#define M_LOG2_10 0xd.49a784bcd1b8afep-2 /* log₂10 ≈ 3.3219280948873623478 */ -#define M_LOG10_2 0x9.a209a84fbcff799p-5 /* log₁₀2 ≈ 0.301029995663981195 */ -#define M_LOG2E 0xb.8aa3b295c17f0bcp-3 /* log₂𝑒 ≈ 1.4426950408889634074 */ -#define M_LOG10E 0.43429448190325182765 /* log₁₀𝑒 */ -#define M_LN2 0xb.17217f7d1cf79acp-4 /* logₑ2 ≈ */ -#define M_LN10 2.30258509299404568402 /* logₑ10 */ -#define M_TAU 0x1.921fb54442d1846ap+2 /* τ = 2π */ -#define M_PI 0x1.921fb54442d1846ap+1 /* π ≈ 3.14159265358979323846 */ -#define M_PI_2 1.57079632679489661923 /* π/2 */ -#define M_PI_4 0.78539816339744830962 /* π/4 */ -#define M_1_PI 0.31830988618379067154 /* 1/π */ -#define M_2_PI 0.63661977236758134308 /* 2/π */ -#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrtπ */ -#define M_SQRT2 1.41421356237309504880 /* sqrt2 */ -#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt2 */ - -#define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__ -#define DBL_DIG __DBL_DIG__ -#define DBL_EPSILON __DBL_EPSILON__ -#define DBL_MANT_DIG __DBL_MANT_DIG__ -#define DBL_MANT_DIG __DBL_MANT_DIG__ -#define DBL_MAX __DBL_MAX__ -#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ -#define DBL_MAX_EXP __DBL_MAX_EXP__ -#define DBL_MIN __DBL_MIN__ /* 2.23e–308 ↔ 1.79e308 */ -#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ -#define DBL_MIN_EXP __DBL_MIN_EXP__ -#define DECIMAL_DIG __LDBL_DECIMAL_DIG__ -#define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__ -#define FLT_RADIX __FLT_RADIX__ -#define FLT_DIG __FLT_DIG__ -#define FLT_EPSILON __FLT_EPSILON__ -#define FLT_MANT_DIG __FLT_MANT_DIG__ -#define FLT_MANT_DIG __FLT_MANT_DIG__ -#define FLT_MAX __FLT_MAX__ -#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ -#define FLT_MAX_EXP __FLT_MAX_EXP__ -#define FLT_MIN __FLT_MIN__ /* 1.18e–38 ↔ 3.40e38 */ -#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ -#define FLT_MIN_EXP __FLT_MIN_EXP__ -#define HLF_MAX 6.50e4f -#define HLF_MIN 3.10e-5f -#define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__ -#define LDBL_DIG __LDBL_DIG__ -#define LDBL_EPSILON __LDBL_EPSILON__ -#define LDBL_MANT_DIG __LDBL_MANT_DIG__ -#define LDBL_MANT_DIG __LDBL_MANT_DIG__ -#define LDBL_MAX __LDBL_MAX__ -#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ -#define LDBL_MAX_EXP __LDBL_MAX_EXP__ -#define LDBL_MIN __LDBL_MIN__ /* 3.37e–4932 ↔ 1.18e4932 */ -#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ -#define LDBL_MIN_EXP __LDBL_MIN_EXP__ - -#define FP_NAN 0 -#define FP_INFINITE 1 -#define FP_ZERO 2 -#define FP_SUBNORMAL 3 -#define FP_NORMAL 4 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define NAN __builtin_nanf("") -#define INFINITY __builtin_inff() -#define HUGE_VAL __builtin_inff() - -#if __FLT_EVAL_METHOD__ + 0 == 2 -typedef long double float_t; -typedef long double double_t; -#else -typedef float float_t; -typedef double double_t; -#endif - -#define isinf(x) __builtin_isinf(x) -#define isnan(x) __builtin_isnan(x) -#define isfinite(x) __builtin_isfinite(x) -#define isnormal(x) __builtin_isnormal(x) -#define signbit(x) __builtin_signbit(x) -#define isgreater(x, y) __builtin_isgreater(x, y) -#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y) -#define isless(x, y) __builtin_isless(x, y) -#define islessequal(x, y) __builtin_islessequal(x, y) -#define islessgreater(x, y) __builtin_islessgreater(x, y) -#define isunordered(x, y) __builtin_isunordered(x, y) - -#define fpclassify(x) \ - __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x) - -double acos(double); -double acosh(double); -double asin(double); -double asinh(double); -double atan(double); -double atan2(double, double); -double atanh(double); -double cbrt(double); -double ceil(double); -double copysign(double, double); -double cos(double); -double cosh(double); -double drem(double, double); -double erf(double); -double erfc(double); -double exp(double); -double exp10(double); -double exp2(double); -double expm1(double); -double fabs(double); -double fdim(double, double); -double floor(double); -double fma(double, double, double); -double fmax(double, double); -double fmin(double, double); -double fmod(double, double); -double hypot(double, double); -double ldexp(double, int); -double log(double); -double log10(double); -double log1p(double); -double log2(double); -double logb(double); -double nearbyint(double); -double nextafter(double, double); -double nexttoward(double, long double); -double pow(double, double); -double pow10(double); -double powi(double, int); -double remainder(double, double); -double rint(double); -double round(double); -double scalb(double, double); -double scalbln(double, long int); -double scalbn(double, int); -double significand(double); -double sin(double); -double sinh(double); -double sqrt(double); -double tan(double); -double tanh(double); -double trunc(double); -double lgamma(double); -double lgamma_r(double, int *); - -float acosf(float); -float acoshf(float); -float asinf(float); -float asinhf(float); -float atan2f(float, float); -float atanf(float); -float atanhf(float); -float cbrtf(float); -float ceilf(float); -float copysignf(float, float); -float cosf(float); -float coshf(float); -float dremf(float, float); -float erfcf(float); -float erff(float); -float exp10f(float); -float exp2f(float); -float expf(float); -float expm1f(float); -float fabsf(float); -float fdimf(float, float); -float floorf(float); -float fmaf(float, float, float); -float fmaxf(float, float); -float fminf(float, float); -float fmodf(float, float); -float hypotf(float, float); -float ldexpf(float, int); -float log10f(float); -float log1pf(float); -float log2f(float); -float logbf(float); -float logf(float); -float nearbyintf(float); -float nextafterf(float, float); -float nexttowardf(float, long double); -float pow10f(float); -float powf(float, float); -float powif(float, int); -float remainderf(float, float); -float rintf(float); -float roundf(float); -float scalbf(float, float); -float scalblnf(float, long int); -float scalbnf(float, int); -float significandf(float); -float sinf(float); -float sinhf(float); -float sqrtf(float); -float tanf(float); -float tanhf(float); -float truncf(float); - -long double acoshl(long double); -long double acosl(long double); -long double asinhl(long double); -long double asinl(long double); -long double atan2l(long double, long double); -long double atanhl(long double); -long double atanl(long double); -long double cbrtl(long double); -long double ceill(long double); -long double copysignl(long double, long double); -long double coshl(long double); -long double cosl(long double); -long double dreml(long double, long double); -long double erfcl(long double); -long double erfl(long double); -long double exp10l(long double); -long double exp2l(long double); -long double expl(long double); -long double expm1l(long double); -long double fabsl(long double); -long double fdiml(long double, long double); -long double floorl(long double); -long double fmal(long double, long double, long double); -long double fmaxl(long double, long double); -long double fminl(long double, long double); -long double fmodl(long double, long double); -long double hypotl(long double, long double); -long double ldexpl(long double, int); -long double log10l(long double); -long double log1pl(long double); -long double log2l(long double); -long double logbl(long double); -long double logl(long double); -long double nearbyintl(long double); -long double nextafterl(long double, long double); -long double nexttowardl(long double, long double); -long double pow10l(long double); -long double powil(long double, int); -long double powl(long double, long double); -long double remainderl(long double, long double); -long double rintl(long double); -long double roundl(long double); -long double scalbl(long double, long double); -long double scalblnl(long double, long int); -long double scalbnl(long double, int); -long double significandl(long double); -long double sinhl(long double); -long double sinl(long double); -long double sqrtl(long double); -long double tanhl(long double); -long double tanl(long double); -long double truncl(long double); - -long lrint(double); -long lrintf(float); -long lrintl(long double); -long lround(double); -long lroundf(float); -long lroundl(long double); - -int ilogbf(float); -int ilogb(double); -int ilogbl(long double); - -long long llrint(double); -long long llrintf(float); -long long llrintl(long double); -long long llround(double); -long long llroundf(float); -long long llroundl(long double); - -double frexp(double, int *); -double modf(double, double *); -double remquo(double, double, int *); -float frexpf(float, int *); -float modff(float, float *); -float remquof(float, float, int *); -long double frexpl(long double, int *); -long double modfl(long double, long double *); -long double remquol(long double, long double, int *); -void sincos(double, double *, double *); -void sincosf(float, float *, float *); -void sincosl(long double, long double *, long double *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/paths.h */ - -#define COSMOPOLITAN_LIBC_PATHS_H_ - -#define _PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin" -#define _PATH_STDPATH "/bin:/usr/bin:/sbin:/usr/sbin" - -#define _PATH_BSHELL "/bin/sh" -#define _PATH_CONSOLE "/dev/console" -#define _PATH_DEVNULL "/dev/null" -#define _PATH_KLOG "/proc/kmsg" -#define _PATH_LASTLOG "/var/log/lastlog" -#define _PATH_MAILDIR "/var/mail" -#define _PATH_MAN "/usr/share/man" -#define _PATH_MNTTAB "/etc/fstab" -#define _PATH_MOUNTED "/etc/mtab" -#define _PATH_NOLOGIN "/etc/nologin" -#define _PATH_SENDMAIL "/usr/sbin/sendmail" -#define _PATH_SHADOW "/etc/shadow" -#define _PATH_SHELLS "/etc/shells" -#define _PATH_TTY "/dev/tty" -#define _PATH_UTMP "/dev/null/utmp" -#define _PATH_VI "/usr/bin/vi" -#define _PATH_WTMP "/dev/null/wtmp" - -#define _PATH_DEV "/dev/" -#define _PATH_TMP "/tmp/" -#define _PATH_VARDB "/var/lib/misc/" -#define _PATH_VARRUN "/var/run/" -#define _PATH_VARTMP "/var/tmp/" - - - -/*!BEGIN libc/zip.h */ - -#define COSMOPOLITAN_LIBC_ZIP_H_ - - -/*!BEGIN libc/bits/bits.h */ - -#define COSMOPOLITAN_LIBC_BITS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define CheckUnsigned(x) ((x) / !((typeof(x))(-1) < 0)) - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § bits ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -extern const uint8_t kReverseBits[256]; - -uint32_t gray(uint32_t) pureconst; -uint32_t ungray(uint32_t) pureconst; -int bitreverse8(int) libcesque pureconst; -int bitreverse16(int) libcesque pureconst; -uint32_t bitreverse32(uint32_t) libcesque pureconst; -uint64_t bitreverse64(uint64_t) libcesque pureconst; -unsigned long roundup2pow(unsigned long) libcesque pureconst; -unsigned long roundup2log(unsigned long) libcesque pureconst; -unsigned long rounddown2pow(unsigned long) libcesque pureconst; -unsigned long hamming(unsigned long, unsigned long) pureconst; -intptr_t lockxchg(void *, void *, size_t); -bool cmpxchg(void *, intptr_t, intptr_t, size_t); -bool lockcmpxchg(void *, intptr_t, intptr_t, size_t); -intptr_t atomic_load(void *, size_t); -intptr_t atomic_store(void *, intptr_t, size_t); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § bits » no assembly required ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define BITREVERSE8(X) (kReverseBits[255 & (X)]) -#define BITREVERSE16(X) \ - (kReverseBits[0x00FF & (X)] << 8 | kReverseBits[(0xFF00 & (X)) >> 8]) - -#ifdef __STRICT_ANSI__ -#define READ16LE(S) ((255 & (S)[1]) << 8 | (255 & (S)[0])) -#define READ16BE(S) ((255 & (S)[0]) << 8 | (255 & (S)[1])) -#define READ32LE(S) \ - ((uint32_t)(255 & (S)[3]) << 030 | (uint32_t)(255 & (S)[2]) << 020 | \ - (uint32_t)(255 & (S)[1]) << 010 | (uint32_t)(255 & (S)[0]) << 000) -#define READ32BE(S) \ - ((uint32_t)(255 & (S)[0]) << 030 | (uint32_t)(255 & (S)[1]) << 020 | \ - (uint32_t)(255 & (S)[2]) << 010 | (uint32_t)(255 & (S)[3]) << 000) -#define READ64LE(S) \ - ((uint64_t)(255 & (S)[7]) << 070 | (uint64_t)(255 & (S)[6]) << 060 | \ - (uint64_t)(255 & (S)[5]) << 050 | (uint64_t)(255 & (S)[4]) << 040 | \ - (uint64_t)(255 & (S)[3]) << 030 | (uint64_t)(255 & (S)[2]) << 020 | \ - (uint64_t)(255 & (S)[1]) << 010 | (uint64_t)(255 & (S)[0]) << 000) -#define READ64BE(S) \ - ((uint64_t)(255 & (S)[0]) << 070 | (uint64_t)(255 & (S)[1]) << 060 | \ - (uint64_t)(255 & (S)[2]) << 050 | (uint64_t)(255 & (S)[3]) << 040 | \ - (uint64_t)(255 & (S)[4]) << 030 | (uint64_t)(255 & (S)[5]) << 020 | \ - (uint64_t)(255 & (S)[6]) << 010 | (uint64_t)(255 & (S)[7]) << 000) -#else /* gcc needs help knowing above are mov if s isn't a variable */ -#define READ16LE(S) \ - ({ \ - const uint8_t *Ptr = (const uint8_t *)(S); \ - Ptr[1] << 8 | Ptr[0]; \ - }) -#define READ16BE(S) \ - ({ \ - const uint8_t *Ptr = (const uint8_t *)(S); \ - Ptr[0] << 8 | Ptr[1]; \ - }) -#define READ32LE(S) \ - ({ \ - const uint8_t *Ptr = (const uint8_t *)(S); \ - ((uint32_t)Ptr[3] << 030 | (uint32_t)Ptr[2] << 020 | \ - (uint32_t)Ptr[1] << 010 | (uint32_t)Ptr[0] << 000); \ - }) -#define READ32BE(S) \ - ({ \ - const uint8_t *Ptr = (const uint8_t *)(S); \ - ((uint32_t)Ptr[0] << 030 | (uint32_t)Ptr[1] << 020 | \ - (uint32_t)Ptr[2] << 010 | (uint32_t)Ptr[3] << 000); \ - }) -#define READ64LE(S) \ - ({ \ - const uint8_t *Ptr = (const uint8_t *)(S); \ - ((uint64_t)Ptr[7] << 070 | (uint64_t)Ptr[6] << 060 | \ - (uint64_t)Ptr[5] << 050 | (uint64_t)Ptr[4] << 040 | \ - (uint64_t)Ptr[3] << 030 | (uint64_t)Ptr[2] << 020 | \ - (uint64_t)Ptr[1] << 010 | (uint64_t)Ptr[0] << 000); \ - }) -#define READ64BE(S) \ - ({ \ - const uint8_t *Ptr = (const uint8_t *)(S); \ - ((uint64_t)Ptr[0] << 070 | (uint64_t)Ptr[1] << 060 | \ - (uint64_t)Ptr[2] << 050 | (uint64_t)Ptr[3] << 040 | \ - (uint64_t)Ptr[4] << 030 | (uint64_t)Ptr[5] << 020 | \ - (uint64_t)Ptr[6] << 010 | (uint64_t)Ptr[7] << 000); \ - }) -#endif - -#define WRITE16LE(P, V) \ - ((P)[0] = (0x00000000000000FF & (V)) >> 000, \ - (P)[1] = (0x000000000000FF00 & (V)) >> 010, (P) + 2) -#define WRITE16BE(P, V) \ - ((P)[0] = (0x000000000000FF00 & (V)) >> 010, \ - (P)[1] = (0x00000000000000FF & (V)) >> 000, (P) + 2) -#define WRITE32LE(P, V) \ - ((P)[0] = (0x00000000000000FF & (V)) >> 000, \ - (P)[1] = (0x000000000000FF00 & (V)) >> 010, \ - (P)[2] = (0x0000000000FF0000 & (V)) >> 020, \ - (P)[3] = (0x00000000FF000000 & (V)) >> 030, (P) + 4) -#define WRITE32BE(P, V) \ - ((P)[0] = (0x00000000FF000000 & (V)) >> 030, \ - (P)[1] = (0x0000000000FF0000 & (V)) >> 020, \ - (P)[2] = (0x000000000000FF00 & (V)) >> 010, \ - (P)[3] = (0x00000000000000FF & (V)) >> 000, (P) + 4) -#define WRITE64LE(P, V) \ - ((P)[0] = (0x00000000000000FF & (V)) >> 000, \ - (P)[1] = (0x000000000000FF00 & (V)) >> 010, \ - (P)[2] = (0x0000000000FF0000 & (V)) >> 020, \ - (P)[3] = (0x00000000FF000000 & (V)) >> 030, \ - (P)[4] = (0x000000FF00000000 & (V)) >> 040, \ - (P)[5] = (0x0000FF0000000000 & (V)) >> 050, \ - (P)[6] = (0x00FF000000000000 & (V)) >> 060, \ - (P)[7] = (0xFF00000000000000 & (V)) >> 070, (P) + 8) -#define WRITE64BE(P, V) \ - ((P)[0] = (0xFF00000000000000 & (V)) >> 070, \ - (P)[1] = (0x00FF000000000000 & (V)) >> 060, \ - (P)[2] = (0x0000FF0000000000 & (V)) >> 050, \ - (P)[3] = (0x000000FF00000000 & (V)) >> 040, \ - (P)[4] = (0x00000000FF000000 & (V)) >> 030, \ - (P)[5] = (0x0000000000FF0000 & (V)) >> 020, \ - (P)[6] = (0x000000000000FF00 & (V)) >> 010, \ - (P)[7] = (0x00000000000000FF & (V)) >> 000, (P) + 8) - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § bits » some assembly required ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - -/* - * Constraints for virtual machine flags. - * @note we beseech clang devs for flag constraints - */ -#ifdef __GCC_ASM_FLAG_OUTPUTS__ /* GCC6+ CLANG10+ */ -#define CFLAG_CONSTRAINT "=@ccc" -#define CFLAG_ASM(OP) OP -#define ZFLAG_CONSTRAINT "=@ccz" -#define ZFLAG_ASM(OP) OP -#define OFLAG_CONSTRAINT "=@cco" -#define OFLAG_ASM(OP) OP -#define SFLAG_CONSTRAINT "=@ccs" -#define SFLAG_ASM(SP) SP -#define ABOVE_CONSTRAINT "=@cca" /* i.e. !ZF && !CF */ -#define ABOVEFLAG_ASM(OP) OP -#else -#define CFLAG_CONSTRAINT "=q" -#define CFLAG_ASM(OP) OP "\n\tsetc\t%b0" -#define ZFLAG_CONSTRAINT "=q" -#define ZFLAG_ASM(OP) OP "\n\tsetz\t%b0" -#define OFLAG_CONSTRAINT "=q" -#define OFLAG_ASM(OP) OP "\n\tseto\t%b0" -#define SFLAG_CONSTRAINT "=q" -#define SFLAG_ASM(SP) OP "\n\tsets\t%b0" -#define ABOVE_CONSTRAINT "=@cca" -#define ABOVEFLAG_ASM(OP) OP "\n\tseta\t%b0" -#endif - -/** - * Reads scalar from memory w/ one operation. - * - * @param MEM is alignas(𝑘) uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64} - * @return *(MEM) - * @note defeats compiler load tearing optimizations - * @note alignas(𝑘) is implied if compiler knows type - * @note alignas(𝑘) only avoids multi-core / cross-page edge cases - * @see Intel's Six-Thousand Page Manual V.3A §8.2.3.1 - * @see atomic_store() - */ -#define atomic_load(MEM) \ - ({ \ - autotype(MEM) Mem = (MEM); \ - typeof(*Mem) Reg; \ - asm("mov\t%1,%0" : "=r"(Reg) : "m"(*Mem)); \ - Reg; \ - }) - -/** - * Saves scalar to memory w/ one operation. - * - * This is guaranteed to happen in either one or zero operations, - * depending on whether or not it's possible for *(MEM) to be read - * afterwards. This macro only forbids compiler from using >1 ops. - * - * @param MEM is alignas(𝑘) uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64} - * @param VAL is uint𝑘_t w/ better encoding for immediates (constexpr) - * @return VAL - * @note alignas(𝑘) on nexgen32e only needed for end of page gotcha - * @note alignas(𝑘) is implied if compiler knows type - * @note needed to defeat store tearing optimizations - * @see Intel Six-Thousand Page Manual Manual V.3A §8.2.3.1 - * @see atomic_load() - */ -#define atomic_store(MEM, VAL) \ - ({ \ - autotype(VAL) Val = (VAL); \ - typeof(&Val) Mem = (MEM); \ - asm("mov%z1\t%1,%0" : "=m"(*Mem) : "r"(Val)); \ - Val; \ - }) - -#define bts(MEM, BIT) __BitOp("bts", BIT, MEM) /** bit test and set */ -#define btr(MEM, BIT) __BitOp("btr", BIT, MEM) /** bit test and reset */ -#define btc(MEM, BIT) __BitOp("btc", BIT, MEM) /** bit test and complement */ -#define lockbts(MEM, BIT) __BitOp("lock bts", BIT, MEM) -#define lockbtr(MEM, BIT) __BitOp("lock btr", BIT, MEM) -#define lockbtc(MEM, BIT) __BitOp("lock btc", BIT, MEM) - -#define lockinc(MEM) __ArithmeticOp1("lock inc", MEM) -#define lockdec(MEM) __ArithmeticOp1("lock dec", MEM) -#define locknot(MEM) __ArithmeticOp1("lock not", MEM) -#define lockneg(MEM) __ArithmeticOp1("lock neg", MEM) - -#define lockaddeq(MEM, VAL) __ArithmeticOp2("lock add", VAL, MEM) -#define locksubeq(MEM, VAL) __ArithmeticOp2("lock sub", VAL, MEM) -#define lockxoreq(MEM, VAL) __ArithmeticOp2("lock xor", VAL, MEM) -#define lockandeq(MEM, VAL) __ArithmeticOp2("lock and", VAL, MEM) -#define lockoreq(MEM, VAL) __ArithmeticOp2("lock or", VAL, MEM) - -/** - * Exchanges *MEMORY into *LOCALVAR w/ one operation. - * - * @param MEMORY is uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64} - * @param LOCALVAR is uint𝑘_t[hasatleast 1] - * @return LOCALVAR[0] - * @see xchg() - */ -#define lockxchg(MEMORY, LOCALVAR) \ - ({ \ - asm("xchg\t%0,%1" : "+%m"(*(MEMORY)), "+r"(*(LOCALVAR))); \ - *(LOCALVAR); \ - }) - -/** - * Compares and exchanges. - * - * @param IFTHING is uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64} - * @return true if value was exchanged, otherwise false - * @see lockcmpxchg() - */ -#define cmpxchg(IFTHING, ISEQUALTOME, REPLACEITWITHME) \ - ({ \ - bool DidIt; \ - autotype(IFTHING) IfThing = (IFTHING); \ - typeof(*IfThing) IsEqualToMe = (ISEQUALTOME); \ - typeof(*IfThing) ReplaceItWithMe = (REPLACEITWITHME); \ - asm volatile(ZFLAG_ASM("cmpxchg\t%3,%1") \ - : ZFLAG_CONSTRAINT(DidIt), "+m"(*IfThing), "+a"(IsEqualToMe) \ - : "r"(ReplaceItWithMe) \ - : "cc"); \ - DidIt; \ - }) - -/** - * Compares and exchanges w/ one operation. - * - * @param IFTHING is uint𝑘_t[hasatleast 1] where 𝑘 ∈ {8,16,32,64} - * @return true if value was exchanged, otherwise false - * @see lockcmpxchg() - */ -#define lockcmpxchg(IFTHING, ISEQUALTOME, REPLACEITWITHME) \ - ({ \ - bool DidIt; \ - autotype(IFTHING) IfThing = (IFTHING); \ - typeof(*IfThing) IsEqualToMe = (ISEQUALTOME); \ - typeof(*IfThing) ReplaceItWithMe = (REPLACEITWITHME); \ - asm volatile(ZFLAG_ASM("lock cmpxchg\t%3,%1") \ - : ZFLAG_CONSTRAINT(DidIt), "+m"(*IfThing), "+a"(IsEqualToMe) \ - : "r"(ReplaceItWithMe) \ - : "cc"); \ - DidIt; \ - }) - -#define IsAddressCanonicalForm(P) \ - ({ \ - intptr_t p2 = (intptr_t)(P); \ - (0xffff800000000000l <= p2 && p2 <= 0x00007fffffffffffl); \ - }) - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § bits » implementation details ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define __ArithmeticOp1(OP, MEM) \ - ({ \ - asm(OP "%z0\t%0" : "+m"(*(MEM)) : /* no inputs */ : "cc"); \ - MEM; \ - }) - -#define __ArithmeticOp2(OP, VAL, MEM) \ - ({ \ - asm(OP "%z0\t%1,%0" : "+m,m"(*(MEM)) : "i,r"(VAL) : "cc"); \ - MEM; \ - }) - -#define __BitOp(OP, BIT, MEM) \ - ({ \ - bool OldBit; \ - if (__builtin_constant_p(BIT)) { \ - asm(CFLAG_ASM(OP "%z1\t%2,%1") \ - : CFLAG_CONSTRAINT(OldBit), \ - "+m"((MEM)[(BIT) / (sizeof((MEM)[0]) * CHAR_BIT)]) \ - : "J"((BIT) % (sizeof((MEM)[0]) * CHAR_BIT)) \ - : "cc"); \ - } else if (sizeof((MEM)[0]) == 2) { \ - asm(CFLAG_ASM(OP "\t%w2,%1") \ - : CFLAG_CONSTRAINT(OldBit), "+m"((MEM)[0]) \ - : "r"(BIT) \ - : "cc"); \ - } else if (sizeof((MEM)[0]) == 4) { \ - asm(CFLAG_ASM(OP "\t%k2,%1") \ - : CFLAG_CONSTRAINT(OldBit), "+m"((MEM)[0]) \ - : "r"(BIT) \ - : "cc"); \ - } else if (sizeof((MEM)[0]) == 8) { \ - asm(CFLAG_ASM(OP "\t%q2,%1") \ - : CFLAG_CONSTRAINT(OldBit), "+m"((MEM)[0]) \ - : "r"(BIT) \ - : "cc"); \ - } \ - OldBit; \ - }) - -#else -#define cmpxchg(MEM, CMP, VAL) \ - cmpxchg(MEM, (intptr_t)(CMP), (intptr_t)(VAL), sizeof(*(MEM))) -#define lockcmpxchg(MEM, CMP, VAL) \ - lockcmpxchg(MEM, (intptr_t)(CMP), (intptr_t)(VAL), sizeof(*(MEM))) -#define lockxchg(MEM, VAR) \ - lockxchg(MEM, VAR, sizeof(*(MEM)) / (sizeof(*(MEM)) == sizeof(*(VAR)))) -#define atomic_store(MEM, VAL) \ - atomic_store(MEM, VAL, sizeof(*(MEM)) / (sizeof(*(MEM)) == sizeof(*(VAL)))) -#define atomic_load(MEM) atomic_load(MEM, sizeof(*(MEM))) -#endif /* __GNUC__ && !__STRICT_ANSI__ */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/str/str.h */ - -#define COSMOPOLITAN_LIBC_STR_STR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § characters » usas x3.4-1967 ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - fourth age telecommunications */ - -extern const uint8_t gperf_downcase[256]; -extern const uint8_t kToLower[256]; -extern const uint16_t kToLower16[256]; -extern const uint8_t kBase36[256]; -extern const char16_t kCp437[256]; - -int isascii(int); -int isspace(int); -int isalpha(int); -int isdigit(int); -int isalnum(int); -int isxdigit(int); -int isprint(int); -int islower(int); -int isupper(int); -int isblank(int); -int iscntrl(int); -int isgraph(int); -int tolower(int); -int ispunct(int); -int toupper(int); -int hextoint(int); -int cescapec(int); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § characters » thompson-pike encoding ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - fifth age telecommunications - - 0123456789abcdef - ┌0─ ☺☻♥♦♣♠•◘○◙♂♀♪♫☼┬───Control - └1─►◄↕‼¶§▬↨↑↓→←∟↔▲▼┘ - ┌2─ !"#$%&'()*+,-./┐ - │3 0123456789:;<=>?│ - │4 @ABCDEFGHIJKLMNO├───ASA x3.4-1967 - │5 PQRSTUVWXYZ[\]^_│ - │6 `abcdefghijklmno│ - └7─pqrstuvwxyz{|}~⌂┘ - ┌8─ÇüéâäàåçêëèïîìÄÅ┐ - │9 ÉæÆôöòûùÿÖÜ¢£¥€ƒ├───Thompson-Pike Continuation - │a á¡óúñѪº¿⌐¬½¼¡«»│ (not really characters) - └b─░▒▓│┤╡╢╖╕╣║╗╝╜╛┐┘ - ┌c─└┴┬├─┼╞╟╚╔╩╦╠═╬╧┬───1 Continuation will follow - └d─╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀┘ - ─e─αßΓπΣσμτΦΘΩδ∞φε∩────2 Continuations will follow - f─≡±≥≤⌠⌡÷≈°∙·√ⁿ²■λ - │ ││ │││└┤ - │ ││ │└┤ └───5 Continuations follow (and is negative) - │ │└─┬┘ └─────5 Continuations follow (note: -1=λ┐┐┐┐┐) - └───┬──┘ └────────4 Continuations follow - └──────────────3 Continuations follow */ - -#define INVALID_CODEPOINT 0xfffd - -int iswalnum(wint_t); -int iswalpha(wint_t); -int iswblank(wint_t); -int iswcntrl(wint_t); -int iswdigit(wint_t); -int iswgraph(wint_t); -int iswlower(wint_t); -int iswspace(wint_t); -int iswupper(wint_t); -int iswxdigit(wint_t); -int iswpunct(wint_t); -int iswprint(wint_t); -wint_t towlower(wint_t); -wint_t towupper(wint_t); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § strings ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -void *memset(void *, int, size_t) memcpyesque; -void *memcpy(void *restrict, const void *restrict, size_t) memcpyesque; -void *mempcpy(void *restrict, const void *restrict, size_t) memcpyesque; -void *memccpy(void *restrict, const void *restrict, int, size_t) memcpyesque; -void *memmove(void *, const void *, size_t) memcpyesque; -void *memeqmask(void *, const void *, const void *, size_t) memcpyesque; - -size_t strlen(const char *) strlenesque; -size_t strnlen(const char *, size_t) strlenesque; -size_t strnlen_s(const char *, size_t); -char *strchr(const char *, int) strlenesque; -char *index(const char *, int) strlenesque; -void *memchr(const void *, int, size_t) strlenesque; -char *strchrnul(const char *, int) strlenesque returnsnonnull; -void *rawmemchr(const void *, int) strlenesque returnsnonnull; -void bzero(void *, size_t) paramsnonnull() libcesque; -void explicit_bzero(void *, size_t) paramsnonnull() libcesque; -size_t strlen16(const char16_t *) strlenesque; -size_t strnlen16(const char16_t *, size_t) strlenesque; -size_t strnlen16_s(const char16_t *, size_t); -char16_t *strchr16(const char16_t *, int) strlenesque; -void *memchr16(const void *, int, size_t) strlenesque; -char16_t *strchrnul16(const char16_t *, int) strlenesque returnsnonnull; -void *rawmemchr16(const void *, int) strlenesque returnsnonnull; -size_t wcslen(const wchar_t *) strlenesque; -size_t wcsnlen(const wchar_t *, size_t) strlenesque; -size_t wcsnlen_s(const wchar_t *, size_t); -wchar_t *wcschr(const wchar_t *, wchar_t) strlenesque; -wchar_t *wmemchr(const wchar_t *, wchar_t, size_t) strlenesque; -wchar_t *wcschrnul(const wchar_t *, wchar_t) strlenesque returnsnonnull; -char *strstr(const char *, const char *) strlenesque; -char16_t *strstr16(const char16_t *, const char16_t *) strlenesque; -wchar_t *wcsstr(const wchar_t *, const wchar_t *) strlenesque; -void *rawwmemchr(const void *, wchar_t) strlenesque returnsnonnull; -int memcmp(const void *, const void *, size_t) strlenesque; -int strcmp(const char *, const char *) strlenesque; -int strncmp(const char *, const char *, size_t) strlenesque; -int strcmp16(const char16_t *, const char16_t *) strlenesque; -int strncmp16(const char16_t *, const char16_t *, size_t) strlenesque; -int wcscmp(const wchar_t *, const wchar_t *) strlenesque; -int wcsncmp(const wchar_t *, const wchar_t *, size_t) strlenesque; -int wmemcmp(const wchar_t *, const wchar_t *, size_t) strlenesque; -int strcasecmp(const char *, const char *) strlenesque; -int memcasecmp(const void *, const void *, size_t) strlenesque; -int strcasecmp16(const char16_t *, const char16_t *) strlenesque; -int wcscasecmp(const wchar_t *, const wchar_t *) strlenesque; -int strncasecmp(const char *, const char *, size_t) strlenesque; -int strncasecmp16(const char16_t *, const char16_t *, size_t) strlenesque; -int wcsncasecmp(const wchar_t *, const wchar_t *, size_t) strlenesque; -char *strrchr(const char *, int) strlenesque; -void *memrchr(const void *, int, size_t) strlenesque; -char16_t *strrchr16(const char16_t *, int) strlenesque; -void *memrchr16(const void *, int, size_t) strlenesque; -wchar_t *wcsrchr(const wchar_t *, int) strlenesque; -void *wmemrchr(const void *, wchar_t, size_t) strlenesque; -char *strpbrk(const char *, const char *) strlenesque; -char16_t *strpbrk16(const char16_t *, const char16_t *) strlenesque; -wchar_t *wcspbrk(const wchar_t *, const wchar_t *) strlenesque; -size_t strspn(const char *, const char *) strlenesque; -size_t strspn16(const char16_t *, const char16_t *) strlenesque; -size_t wcsspn(const wchar_t *, const wchar_t *) strlenesque; -size_t strcspn(const char *, const char *) strlenesque; -size_t strcspn16(const char16_t *, const char16_t *) strlenesque; -size_t wcscspn(const wchar_t *, const wchar_t *) strlenesque; -void *memfrob(void *, size_t) memcpyesque; -int strcoll(const char *, const char *) strlenesque; -char *strsep(char **, const char *) paramsnonnull(); -int strcmpzbw(const uint16_t *, const char *) strlenesque; -int strcasecmpzbw(const uint16_t *, const char *) strlenesque; -char *stpcpy(char *, const char *) memcpyesque; -char *stpncpy(char *, const char *, size_t) memcpyesque; -char *strcat(char *, const char *) memcpyesque; -char16_t *strcat16(char16_t *, const char16_t *) memcpyesque; -wchar_t *wcscat(wchar_t *, const wchar_t *) memcpyesque; -size_t strlcpy(char *, const char *, size_t); -size_t strlcat(char *, const char *, size_t); -size_t strxfrm(char *, const char *, size_t); -char *strcpy(char *, const char *) memcpyesque; -char16_t *strcpy16(char16_t *, const char16_t *) memcpyesque; -wchar_t *wcscpy(wchar_t *, const wchar_t *) memcpyesque; -char *strncat(char *, const char *, size_t) memcpyesque; -char *strncpy(char *, const char *, size_t) memcpyesque; -char *strtok(char *, const char *) paramsnonnull((2)) libcesque; -char *strtok_r(char *, const char *, char **) paramsnonnull((2, 3)); -uint16_t *strcpyzbw(uint16_t *, const char *) memcpyesque; -char *wstrtrunc(uint16_t *) memcpyesque; -char *wstrntrunc(uint16_t *, size_t) memcpyesque; -bool startswith(const char *, const char *) strlenesque; -bool startswith16(const char16_t *, const char16_t *) strlenesque; -bool wcsstartswith(const wchar_t *, const wchar_t *) strlenesque; -bool endswith(const char *, const char *) strlenesque; -bool endswith16(const char16_t *, const char16_t *) strlenesque; -bool wcsendswith(const wchar_t *, const wchar_t *) strlenesque; -const char *IndexDoubleNulString(const char *, unsigned) strlenesque; -int strverscmp(const char *, const char *); -wchar_t *wmemset(wchar_t *, wchar_t, size_t) memcpyesque; -char16_t *memset16(char16_t *, char16_t, size_t) memcpyesque; -compatfn wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t) memcpyesque; -compatfn wchar_t *wmempcpy(wchar_t *, const wchar_t *, size_t) memcpyesque; -compatfn wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t) memcpyesque; -int timingsafe_memcmp(const void *, const void *, size_t); -void *tinymemccpy(void *, const void *, int, size_t) memcpyesque; -void *memmem(const void *, size_t, const void *, size_t) - paramsnonnull() nothrow nocallback nosideeffect; -char *strerror(int) returnsnonnull nothrow nocallback; -long a64l(const char *); -char *l64a(long); - -char *strntolower(char *, size_t); -char *strtolower(char *) paramsnonnull(); -char *strntoupper(char *, size_t); -char *strtoupper(char *) paramsnonnull(); -char *chomp(char *); -char16_t *chomp16(char16_t *); -wchar_t *wchomp(wchar_t *); - -bool escapedos(char16_t *, unsigned, const char16_t *, unsigned); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § strings » multibyte ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -typedef unsigned mbstate_t; - -axdx_t tprecode8to16(char16_t *, size_t, const char *); -axdx_t tprecode16to8(char *, size_t, const char16_t *); -int strcmp8to16(const char *, const char16_t *) strlenesque; -int strncmp8to16(const char *, const char16_t *, size_t) strlenesque; -int strcasecmp8to16(const char *, const char16_t *) strlenesque; -int strncasecmp8to16(const char *, const char16_t *, size_t) strlenesque; -int strcmp16to8(const char16_t *, const char *) strlenesque; -int strncmp16to8(const char16_t *, const char *, size_t) strlenesque; -int strcasecmp16to8(const char16_t *, const char *) strlenesque; -int strncasecmp16to8(const char16_t *, const char *, size_t) strlenesque; -wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); -int mbtowc(wchar_t *, const char *, size_t); -size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *); -size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *); -size_t mbstowcs(wchar_t *, const char *, size_t); -size_t wcrtomb(char *, wchar_t, mbstate_t *); -size_t c32rtomb(char *, char32_t, mbstate_t *); -size_t mbrtoc32(char32_t *, const char *, size_t, mbstate_t *); -size_t c16rtomb(char *, char16_t, mbstate_t *); -size_t mbrtoc16(char16_t *, const char *, size_t, mbstate_t *); -size_t mbrlen(const char *, size_t, mbstate_t *); -size_t mbsnrtowcs(wchar_t *, const char **, size_t, size_t, mbstate_t *); -size_t wcsnrtombs(char *, const wchar_t **, size_t, size_t, mbstate_t *); -size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *); -size_t wcstombs(char *, const wchar_t *, size_t); -int mbsinit(const mbstate_t *); -int mblen(const char *, size_t); -int wctomb(char *, wchar_t); -int wctob(wint_t); -wint_t btowc(int); - -size_t strclen(const char *) nosideeffect; -size_t strnclen(const char *, size_t) nosideeffect; -size_t strclen16(const char16_t *) nosideeffect; -size_t strnclen16(const char16_t *, size_t) nosideeffect; - -typedef unsigned wctype_t; -wctype_t wctype(const char *) strlenesque; -int iswctype(wint_t, wctype_t) pureconst; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § strings » system ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -char *strsignal(int) returnsnonnull libcesque; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § strings » optimizations ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define __memcpy_isgoodsize(SIZE) \ - (__builtin_constant_p(SIZE) && ((SIZE) <= __BIGGEST_ALIGNMENT__ && \ - __builtin_popcountl((unsigned)(SIZE)) == 1)) - -#define __memset_isgoodsize(SIZE) \ - (__builtin_constant_p(SIZE) && \ - (((SIZE) <= __BIGGEST_ALIGNMENT__ && \ - __builtin_popcountl((unsigned)(SIZE)) == 1) || \ - ((SIZE) % __BIGGEST_ALIGNMENT__ == 0 && \ - (SIZE) / __BIGGEST_ALIGNMENT__ <= 3))) - -#define memcpy(DEST, SRC, SIZE) \ - (__memcpy_isgoodsize(SIZE) ? __builtin_memcpy(DEST, SRC, SIZE) \ - : __memcpy("MemCpy", DEST, SRC, SIZE)) - -#define memset(DEST, BYTE, SIZE) \ - (__memset_isgoodsize(SIZE) ? __builtin_memset(DEST, BYTE, SIZE) \ - : __memset(DEST, BYTE, SIZE)) - -#if defined(__STDC_HOSTED__) && defined(__SSE2__) - -#define strlen(STR) \ - (__builtin_constant_p(STR) ? __builtin_strlen(STR) : ({ \ - size_t LeN; \ - const char *StR = (STR); \ - asm("call\tstrlen" \ - : "=a"(LeN) \ - : "D"(StR), "m"(*(char(*)[0x7fffffff])StR) \ - : "rcx", "rdx", "xmm3", "xmm4", "cc"); \ - LeN; \ - })) - -#define memmove(DEST, SRC, SIZE) __memcpy("MemMove", (DEST), (SRC), (SIZE)) - -#define mempcpy(DEST, SRC, SIZE) \ - ({ \ - size_t SIze = (SIZE); \ - (void *)((char *)memcpy((DEST), (SRC), SIze) + SIze); \ - }) - -#define __memcpy(FN, DEST, SRC, SIZE) \ - ({ \ - void *DeSt = (DEST); \ - const void *SrC = (SRC); \ - size_t SiZe = (SIZE); \ - asm("call\t" FN \ - : "=m"(*(char(*)[SiZe])(DeSt)) \ - : "D"(DeSt), "S"(SrC), "d"(SiZe), "m"(*(const char(*)[SiZe])(SrC)) \ - : "xmm3", "xmm4", "rcx", "cc"); \ - DeSt; \ - }) - -#define __memset(DEST, BYTE, SIZE) \ - ({ \ - void *DeSt = (DEST); \ - size_t SiZe = (SIZE); \ - asm("call\tMemSet" \ - : "=m"(*(char(*)[SiZe])(DeSt)) \ - : "D"(DeSt), "S"(BYTE), "d"(SiZe) \ - : "xmm3", "xmm4", "rcx", "cc"); \ - DeSt; \ - }) - -#define explicit_bzero(STR, BYTES) \ - do { \ - void *Str; \ - size_t Bytes; \ - asm volatile("call\texplicit_bzero" \ - : "=D"(Str), "=S"(Bytes) \ - : "0"(STR), "1"(BYTES) \ - : "rax", "rcx", "rdx", "r8", "r9", "r10", "r11", "memory", \ - "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"); \ - } while (0) - -#else /* hosted+sse2 */ - -#define mempcpy(DEST, SRC, SIZE) \ - ({ \ - void *Rdi, *Dest = (DEST); \ - const void *Rsi, *Src = (SRC); \ - size_t SiZe = (SIZE); \ - size_t Rcx; \ - asm("rep movsb" \ - : "=D"(Rdi), "=S"(Rsi), "=c"(Rcx), "=m"(*(char(*)[SiZe])(Dest)) \ - : "0"(Dest), "1"(Src), "2"(SiZe), "m"(*(const char(*)[SiZe])(Src)) \ - : "cc"); \ - Rdi; \ - }) - -#define __memcpy(FN, DEST, SRC, SIZE) \ - ({ \ - void *Rdi, *Dest = (DEST); \ - const void *Rsi, *Src = (SRC); \ - size_t SiZe = (SIZE); \ - size_t Rcx; \ - asm("rep movsb" \ - : "=D"(Rdi), "=S"(Rsi), "=c"(Rcx), "=m"(*(char(*)[SiZe])(Dest)) \ - : "0"(Dest), "1"(Src), "2"(SiZe), "m"(*(const char(*)[SiZe])(Src)) \ - : "cc"); \ - Dest; \ - }) - -#define __memset(DEST, BYTE, SIZE) \ - ({ \ - void *Rdi, *Dest = (DEST); \ - size_t SiZe = (SIZE); \ - size_t Rcx; \ - asm("rep stosb" \ - : "=D"(Rdi), "=c"(Rcx), "=m"(*(char(*)[SiZe])(Dest)) \ - : "0"(Dest), "1"(SiZe), "a"(BYTE) \ - : "cc"); \ - Dest; \ - }) - -#endif /* hosted/sse2/unbloat */ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § strings » address sanitizer ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -void *memset_pure(void *, int, size_t) memcpyesque; -void *memmove_pure(void *, const void *, size_t) memcpyesque; -size_t strlen_pure(const char *) strlenesque; -size_t strcspn_pure(const char *, const char *) strlenesque; -#if defined(__FSANITIZE_ADDRESS__) - -#define strcspn(STR, REJECT) strcspn_pure(STR, REJECT) - -#undef strlen -#define strlen(STR) \ - (__builtin_constant_p(STR) ? __builtin_strlen(STR) : strlen_pure(STR)) - -#undef memset -#define memset(DST, CHAR, SIZE) \ - (__memcpy_isgoodsize(SIZE) ? __builtin_memset(DST, CHAR, SIZE) \ - : memset_pure(DST, CHAR, SIZE)) - -#undef memmove -#define memmove(DST, SRC, SIZE) \ - (__memcpy_isgoodsize(SIZE) ? __builtin_memmove(DST, SRC, SIZE) \ - : memmove_pure(DST, SRC, SIZE)) - -#undef memcpy -#define memcpy(DST, SRC, SIZE) \ - (__memcpy_isgoodsize(SIZE) ? __builtin_memcpy(DST, SRC, SIZE) \ - : memmove_pure(DST, SRC, SIZE)) - -#undef mempcpy -#define mempcpy(DST, SRC, SIZE) \ - (__memcpy_isgoodsize(SIZE) ? __builtin_mempcpy(DST, SRC, SIZE) : ({ \ - void *DsT = (DST); \ - size_t SiZe = (SIZE); \ - memmove_pure(DsT, SRC, SiZe); \ - (void *)((char *)DsT + SiZe); \ - })) - -#endif /* __FSANITIZE_ADDRESS__ */ -#endif /* __GNUC__ && !__STRICT_ANSI__ */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -/** - * @fileoverview PKZIP Data Structures. - */ - -#define kZipAlign 2 - -#define kZipCosmopolitanVersion kZipEra2001 - -#define kZipOsDos 0 -#define kZipOsAmiga 1 -#define kZipOsOpenvms 2 -#define kZipOsUnix 3 -#define kZipOsVmcms 4 -#define kZipOsAtarist 5 -#define kZipOsOs2hpfs 6 -#define kZipOsMacintosh 7 -#define kZipOsZsystem 8 -#define kZipOsCpm 9 -#define kZipOsWindowsntfs 10 -#define kZipOsMvsos390zos 11 -#define kZipOsVse 12 -#define kZipOsAcornrisc 13 -#define kZipOsVfat 14 -#define kZipOsAltmvs 15 -#define kZipOsBeos 16 -#define kZipOsTandem 17 -#define kZipOsOs400 18 -#define kZipOsOsxdarwin 19 - -#define kZipEra1989 10 /* PKZIP 1.0 */ -#define kZipEra1993 20 /* PKZIP 2.0: deflate/subdir/etc. support */ -#define kZipEra2001 45 /* PKZIP 4.5: kZipExtraZip64 support */ - -#define kZipIattrBinary 0 /* first bit not set */ -#define kZipIattrText 1 /* first bit set */ - -#define kZipCompressionNone 0 -#define kZipCompressionDeflate 8 - -#define kZipCdirHdrMagic 0x06054b50 /* PK♣♠ "PK\5\6" */ -#define kZipCdirHdrMinSize 22 -#define kZipCdirAlign kZipAlign -#define kZipCdirHdrLinkableSize \ - ROUNDUP(kZipCfileHdrMinSize + PATH_MAX, kZipCdirAlign) - -#define kZipCdir64HdrMagic 0x06064b50 /* PK♣♠ "PK\6\6" */ -#define kZipCdir64HdrMinSize 56 -#define kZipCdir64LocatorMagic 0x07064b50 /* PK♠• "PK\6\7" */ -#define kZipCdir64LocatorSize 20 - -#define kZipCfileHdrMagic 0x02014b50 /* PK☺☻ "PK\1\2" */ -#define kZipCfileHdrMinSize 46 -#define kZipCfileOffsetGeneralflag 8 -#define kZipCfileOffsetCompressionmethod 10 -#define kZipCfileOffsetLastmodifiedtime 12 -#define kZipCfileOffsetLastmodifieddate 14 -#define kZipCfileOffsetCrc32 16 -#define kZipCfileOffsetCompressedsize 20 -#define kZipCfileOffsetUncompressedsize 24 -#define kZipCfileOffsetExternalattributes 38 -#define kZipCfileOffsetOffset 42 - -#define kZipLfileHdrMagic 0x04034b50 /* PK♥♦ "PK\3\4" */ -#define kZipLfileHdrMinSize 30 -#define kZipLfileOffsetGeneralflag 6 -#define kZipLfileOffsetCompressionmethod 8 -#define kZipLfileOffsetLastmodifiedtime 10 -#define kZipLfileOffsetLastmodifieddate 12 -#define kZipLfileOffsetCrc32 14 -#define kZipLfileOffsetCompressedsize 18 -#define kZipLfileOffsetUncompressedsize 22 - -#define kZipGflagUtf8 0x800 - -#define kZipExtraHdrSize 4 -#define kZipExtraZip64 0x0001 -#define kZipExtraNtfs 0x000a -#define kZipExtraUnix 0x000d -#define kZipExtraExtendedTimestamp 0x5455 -#define kZipExtraInfoZipNewUnixExtra 0x7875 - -#define kZipCfileMagic "PK\001\002" - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/* end of central directory record */ -#define ZIP_CDIR_MAGIC(P) READ32LE(P) -#define ZIP_CDIR_DISK(P) READ16LE((P) + 4) -#define ZIP_CDIR_STARTINGDISK(P) READ16LE((P) + 6) -#define ZIP_CDIR_RECORDSONDISK(P) READ16LE((P) + 8) -#define ZIP_CDIR_RECORDS(P) READ16LE((P) + 10) -#define ZIP_CDIR_SIZE(P) READ32LE((P) + 12) -#define ZIP_CDIR_OFFSET(P) READ32LE((P) + 16) -#define ZIP_CDIR_COMMENTSIZE(P) READ16LE((P) + 20) -#define ZIP_CDIR_COMMENT(P) ((P) + 22) /* recommend stopping at nul */ -#define ZIP_CDIR_HDRSIZE(P) (ZIP_CDIR_COMMENTSIZE(P) + kZipCdirHdrMinSize) - -/* zip64 end of central directory record */ -#define ZIP_CDIR64_MAGIC(P) READ32LE(P) -#define ZIP_CDIR64_HDRSIZE(P) (READ64LE((P) + 4) + 12) -#define ZIP_CDIR64_VERSIONMADE(P) READ16LE((P) + 12) -#define ZIP_CDIR64_VERSIONNEED(P) READ16LE((P) + 14) -#define ZIP_CDIR64_DISK(P) READ32LE((P) + 16) -#define ZIP_CDIR64_STARTINGDISK(P) READ32LE((P) + 20) -#define ZIP_CDIR64_RECORDSONDISK(P) READ64LE((P) + 24) -#define ZIP_CDIR64_RECORDS(P) READ64LE((P) + 32) -#define ZIP_CDIR64_SIZE(P) READ64LE((P) + 40) -#define ZIP_CDIR64_OFFSET(P) READ64LE((P) + 48) -#define ZIP_CDIR64_COMMENTSIZE(P) \ - (ZIP_CDIR64_HDRSIZE(P) >= 56 ? ZIP_CDIR64_HDRSIZE(P) - 56 : 0) -#define ZIP_CDIR64_COMMENT(P) ((P) + 56) /* recommend stopping at nul */ -#define ZIP_LOCATE64_MAGIC(P) READ32LE(P) -#define ZIP_LOCATE64_STARTINGDISK(P) READ32LE((P) + 4) -#define ZIP_LOCATE64_OFFSET(P) READ64LE((P) + 8) -#define ZIP_LOCATE64_TOTALDISKS(P) READ32LE((P) + 12) - -/* central directory file header */ -#define ZIP_CFILE_MAGIC(P) READ32LE(P) -#define ZIP_CFILE_VERSIONMADE(P) (255 & (P)[4]) -#define ZIP_CFILE_FILEATTRCOMPAT(P) (255 & (P)[5]) -#define ZIP_CFILE_VERSIONNEED(P) (255 & (P)[6]) -#define ZIP_CFILE_OSNEED(P) (255 & (P)[7]) -#define ZIP_CFILE_GENERALFLAG(P) READ16LE((P) + kZipCfileOffsetGeneralflag) -#define ZIP_CFILE_COMPRESSIONMETHOD(P) \ - READ16LE((P) + kZipCfileOffsetCompressionmethod) -#define ZIP_CFILE_LASTMODIFIEDTIME(P) \ - READ16LE((P) + kZipCfileOffsetLastmodifiedtime) /* @see DOS_TIME() */ -#define ZIP_CFILE_LASTMODIFIEDDATE(P) \ - READ16LE((P) + kZipCfileOffsetLastmodifieddate) /* @see DOS_DATE() */ -#define ZIP_CFILE_CRC32(P) READ32LE((P) + kZipCfileOffsetCrc32) -#define ZIP_CFILE_COMPRESSEDSIZE(P) READ32LE(P + kZipCfileOffsetCompressedsize) -#define ZIP_CFILE_UNCOMPRESSEDSIZE(P) \ - READ32LE((P) + kZipCfileOffsetUncompressedsize) -#define ZIP_CFILE_NAMESIZE(P) READ16LE((P) + 28) -#define ZIP_CFILE_EXTRASIZE(P) READ16LE((P) + 30) -#define ZIP_CFILE_COMMENTSIZE(P) READ16LE((P) + 32) -#define ZIP_CFILE_DISK(P) READ16LE((P) + 34) -#define ZIP_CFILE_INTERNALATTRIBUTES(P) READ16LE((P) + 36) -#define ZIP_CFILE_EXTERNALATTRIBUTES(P) \ - READ32LE((P) + kZipCfileOffsetExternalattributes) -#define ZIP_CFILE_OFFSET(P) READ32LE((P) + kZipCfileOffsetOffset) -#define ZIP_CFILE_NAME(P) ((const char *)((P) + 46)) /* not nul-terminated */ -#define ZIP_CFILE_EXTRA(P) ((P) + 46 + ZIP_CFILE_NAMESIZE(P)) -#define ZIP_CFILE_COMMENT(P) \ - ((const char *)((P) + 46 + ZIP_CFILE_NAMESIZE(P) + \ - ZIP_CFILE_EXTRASIZE(P))) /* recommend stopping at nul */ -#define ZIP_CFILE_HDRSIZE(P) \ - (ZIP_CFILE_NAMESIZE(P) + ZIP_CFILE_EXTRASIZE(P) + ZIP_CFILE_COMMENTSIZE(P) + \ - kZipCfileHdrMinSize) - -/* local file header */ -#define ZIP_LFILE_MAGIC(P) READ32LE(P) -#define ZIP_LFILE_VERSIONNEED(P) (255 & (P)[4]) -#define ZIP_LFILE_OSNEED(P) (255 & (P)[5]) -#define ZIP_LFILE_GENERALFLAG(P) READ16LE((P) + kZipLfileOffsetGeneralflag) -#define ZIP_LFILE_COMPRESSIONMETHOD(P) \ - READ16LE((P) + kZipLfileOffsetCompressionmethod) -#define ZIP_LFILE_LASTMODIFIEDTIME(P) \ - READ16LE((P) + kZipLfileOffsetLastmodifiedtime) /* @see DOS_TIME() */ -#define ZIP_LFILE_LASTMODIFIEDDATE(P) \ - READ16LE((P) + kZipLfileOffsetLastmodifieddate) /* @see DOS_DATE() */ -#define ZIP_LFILE_CRC32(P) READ32LE((P) + kZipLfileOffsetCrc32) -#define ZIP_LFILE_COMPRESSEDSIZE(P) \ - READ32LE((P) + kZipLfileOffsetCompressedsize) -#define ZIP_LFILE_UNCOMPRESSEDSIZE(P) \ - READ32LE((P) + kZipLfileOffsetUncompressedsize) -#define ZIP_LFILE_NAMESIZE(P) READ16LE((P) + 26) -#define ZIP_LFILE_EXTRASIZE(P) READ16LE((P) + 28) -#define ZIP_LFILE_NAME(P) ((const char *)((P) + 30)) -#define ZIP_LFILE_EXTRA(P) ((P) + 30 + ZIP_LFILE_NAMESIZE(P)) -#define ZIP_LFILE_HDRSIZE(P) \ - (ZIP_LFILE_NAMESIZE(P) + ZIP_LFILE_EXTRASIZE(P) + kZipLfileHdrMinSize) -#define ZIP_LFILE_CONTENT(P) ((P) + ZIP_LFILE_HDRSIZE(P)) -#define ZIP_LFILE_SIZE(P) (ZIP_LFILE_HDRSIZE(P) + ZIP_LFILE_COMPRESSEDSIZE(P)) - -#define ZIP_EXTRA_HEADERID(P) READ16LE(P) -#define ZIP_EXTRA_CONTENTSIZE(P) READ16LE((P) + 2) -#define ZIP_EXTRA_CONTENT(P) ((P) + 4) -#define ZIP_EXTRA_SIZE(P) (ZIP_EXTRA_CONTENTSIZE(P) + kZipExtraHdrSize) - -void *GetZipCdir(const uint8_t *, size_t); -bool IsZipCdir32(const uint8_t *, size_t, size_t); -bool IsZipCdir64(const uint8_t *, size_t, size_t); -int GetZipCfileMode(const uint8_t *); -uint64_t GetZipCdirOffset(const uint8_t *); -uint64_t GetZipCdirRecords(const uint8_t *); -void *GetZipCdirComment(const uint8_t *); -uint64_t GetZipCdirSize(const uint8_t *); -uint64_t GetZipCdirCommentSize(const uint8_t *); -uint64_t GetZipCfileUncompressedSize(const uint8_t *); -uint64_t GetZipCfileCompressedSize(const uint8_t *); -uint64_t GetZipCfileOffset(const uint8_t *); -uint64_t GetZipLfileUncompressedSize(const uint8_t *); -uint64_t GetZipLfileCompressedSize(const uint8_t *); -uint8_t *zipfindcentraldir(const uint8_t *, size_t); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/alg/alg.h */ - -#define COSMOPOLITAN_LIBC_ALG_ALG_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § algorithms ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -void *bsearch(const void *, const void *, size_t, size_t, - int cmp(const void *, const void *)) - paramsnonnull() nothrow nosideeffect; -void *bsearch_r(const void *, const void *, size_t, size_t, - int cmp(const void *, const void *, void *), void *) - paramsnonnull((1, 2, 5)) nothrow nosideeffect; -void djbsort(int32_t *, size_t); -void qsort(void *, size_t, size_t, int (*)(const void *, const void *)) - paramsnonnull(); -void qsort_r(void *, size_t, size_t, - int cmp(const void *, const void *, void *), void *arg) - paramsnonnull((1, 4)); -int tarjan(int, const int (*)[2], int, int[], int[], int *) - paramsnonnull((2, 4)) nocallback nothrow; - -#define __algalloc returnspointerwithnoaliases nothrow nocallback nodiscard - -char *replacestr(const char *, const char *, const char *) - paramsnonnull() __algalloc; -char16_t *replacestr16(const char16_t *, const char16_t *, const char16_t *) - paramsnonnull() __algalloc; -wchar_t *replacewcs(const wchar_t *, const wchar_t *, const wchar_t *) - paramsnonnull() __algalloc; - -char *concatstr(const char *, ...) nullterminated() paramsnonnull() __algalloc; -char16_t *concatstr16(const char16_t *, ...) nullterminated() - paramsnonnull() __algalloc; -wchar_t *concatwcs(const wchar_t *, ...) nullterminated() - paramsnonnull() __algalloc; - -int cmpsb(const void *, const void *); -int cmpub(const void *, const void *); -int cmpsw(const void *, const void *); -int cmpuw(const void *, const void *); -int cmpsl(const void *, const void *); -int cmpul(const void *, const void *); -int cmpsq(const void *, const void *); -int cmpuq(const void *, const void *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/alg/critbit0.h */ - -#define COSMOPOLITAN_LIBC_ALG_CRITBIT0_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § data structures » critical bit tree (for c strings) ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -struct critbit0 { - void *root; - size_t count; -}; - -bool critbit0_contains(struct critbit0 *, const char *) nothrow nosideeffect - paramsnonnull(); -bool critbit0_insert(struct critbit0 *, const char *) paramsnonnull(); -bool critbit0_delete(struct critbit0 *, const char *) nothrow paramsnonnull(); -void critbit0_clear(struct critbit0 *) nothrow paramsnonnull(); -char *critbit0_get(struct critbit0 *, const char *); -intptr_t critbit0_allprefixed(struct critbit0 *, const char *, - intptr_t (*)(const char *, void *), void *) - paramsnonnull((1, 2, 3)) nothrow; -bool critbit0_emplace(struct critbit0 *, char *, size_t) paramsnonnull(); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/atomic.h */ - -#define COSMOPOLITAN_LIBC_BITS_ATOMIC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/** - * @fileoverview C11 version of The Cosmopolitan Atomics Library. - * - * - Forty-two different ways to say MOV. - * - Fourteen different ways to say XCHG. - * - Twenty different ways to say LOCK CMPXCHG. - * - * Living proof high-level languages can be lower-level than assembly. - */ - -#define memory_order int -#define memory_order_relaxed 0 -#define memory_order_consume 1 -#define memory_order_acquire 2 -#define memory_order_release 3 -#define memory_order_acq_rel 4 -#define memory_order_seq_cst 5 - -#define atomic_flag struct AtomicFlag -#define atomic_flag_clear(PTR) atomic_store((PTR)->__cacheline, 0) -#define atomic_flag_test_and_set(PTR) \ - ({ \ - uint32_t ax = 0; \ - lockcmpxchg((PTR)->__cacheline, &ax, 1); \ - }) -#define atomic_init(PTR, VAL) atomic_store(PTR, VAL) -#define atomic_exchange(PTR, VAL) lockxchg(PTR, &(VAL)) -#define atomic_compare_exchange_strong(X, Y, Z) lockcmpxchg(X, Y, Z) -#define atomic_compare_exchange_weak(X, Y, Z) lockcmpxchg(X, Y, Z) -#define atomic_load_explicit(PTR, ORDER) atomic_load(PTR) -#define atomic_store_explicit(PTR, VAL, ORDER) atomic_store(PTR, VAL) -#define atomic_flag_clear_explicit(PTR, ORDER) atomic_store(PTR, 0) -#define atomic_exchange_explicit(PTR, VAL, ORDER) lockxchg(PTR, &(VAL)) -#define atomic_flag_test_and_set_explicit(PTR, ORDER) lockcmpxchg(PTR, 0, 1) -#define atomic_compare_exchange_strong_explicit(X, Y, Z, S, F) \ - lockcmpxchg(X, Y, Z) -#define atomic_compare_exchange_weak_explicit(X, Y, Z, S, F) \ - lockcmpxchg(X, Y, Z) - -struct AtomicFlag { - uint32_t __cacheline[16]; /* Intel V.O §9.4.6 */ -} forcealign(64); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/bswap.h */ - -#define COSMOPOLITAN_LIBC_BITS_BSWAP_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -uint16_t bswap_16(uint16_t) pureconst; -uint32_t bswap_32(uint32_t) pureconst; -uint32_t bswap_64(uint32_t) pureconst; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define bswap_16(x) __builtin_bswap16(x) -#define bswap_32(x) __builtin_bswap32(x) -#define bswap_64(x) __builtin_bswap64(x) -#endif /* defined(__GNUC__) && !defined(__STRICT_ANSI__) */ - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/ezlea.h */ - -#define COSMOPOLITAN_LIBC_BITS_EZLEA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#if __pic__ + __pie__ + __code_model_medium__ + __code_model_large__ + 0 > 1 -#define ezlea(symbol) "lea\t" symbol "(%%rip),%" -#else -#define ezlea(symbol) "mov\t$" symbol ",%k" -#endif - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/hilbert.h */ - -#define COSMOPOLITAN_LIBC_BITS_HILBERT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -long hilbert(long, long, long) pureconst; -axdx_t unhilbert(long, long) pureconst; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/likely.h */ - -#define COSMOPOLITAN_LIBC_BITS_LIKELY_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define LIKELY(expr) __builtin_expect(!!(expr), 1) -#define UNLIKELY(expr) __builtin_expect(!!(expr), 0) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/morton.h */ - -#define COSMOPOLITAN_LIBC_BITS_MORTON_H_ - - -/*!BEGIN libc/intrin/pdep.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PDEP_H_ - - -/*!BEGIN libc/nexgen32e/x86feature.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_X86FEATURE_H_ - - -/*!BEGIN libc/nexgen32e/x86compiler.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_X86COMPILER_H_ - -/** - * @fileoverview x86 cpu feature compile-time requirement detection. - * @see -march=native, -mavx2, etc. - */ - -#ifdef __AES__ -#define _X86_CC_AES 1 -#else -#define _X86_CC_AES 0 -#endif - -#ifdef __AVX__ -#define _X86_CC_AVX 1 -#else -#define _X86_CC_AVX 0 -#endif - -#ifdef __AVX2__ -#define _X86_CC_AVX2 1 -#else -#define _X86_CC_AVX2 0 -#endif - -#ifdef __ABM__ -#define _X86_CC_ABM 1 -#else -#define _X86_CC_ABM 0 -#endif - -#ifdef __BMI__ -#define _X86_CC_BMI 1 -#else -#define _X86_CC_BMI 0 -#endif - -#ifdef __BMI2__ -#define _X86_CC_BMI2 1 -#else -#define _X86_CC_BMI2 0 -#endif - -#ifdef __FMA__ -#define _X86_CC_FMA 1 -#else -#define _X86_CC_FMA 0 -#endif - -#ifdef __ADX__ -#define _X86_CC_ADX 1 -#else -#define _X86_CC_ADX 0 -#endif - -#ifdef __PCLMUL__ -#define _X86_CC_PCLMUL 1 -#else -#define _X86_CC_PCLMUL 0 -#endif - -#ifdef __POPCNT__ -#define _X86_CC_POPCNT 1 -#else -#define _X86_CC_POPCNT 0 -#endif - -#ifdef __RDRND__ -#define _X86_CC_RDRND 1 -#else -#define _X86_CC_RDRND 0 -#endif - -#ifdef __RDSEED__ -#define _X86_CC_RDSEED 1 -#else -#define _X86_CC_RDSEED 0 -#endif - -#ifdef __SHA__ -#define _X86_CC_SHA 1 -#else -#define _X86_CC_SHA 0 -#endif - -#ifdef __SSSE3__ -#define _X86_CC_SSSE3 1 -#else -#define _X86_CC_SSSE3 0 -#endif - -#ifdef __SSE__ -#define _X86_CC_SSE 1 -#else -#define _X86_CC_SSE 0 -#endif - -#ifdef __SSE2__ -#define _X86_CC_SSE2 1 -#else -#define _X86_CC_SSE2 0 -#endif - -#ifdef __SSE3__ -#define _X86_CC_SSE3 1 -#else -#define _X86_CC_SSE3 0 -#endif - -#ifdef __SSE4_1__ -#define _X86_CC_SSE4_1 1 -#else -#define _X86_CC_SSE4_1 0 -#endif - -#ifdef __SSE4_2__ -#define _X86_CC_SSE4_2 1 -#else -#define _X86_CC_SSE4_2 0 -#endif - -#ifdef __XSAVE__ -#define _X86_CC_XSAVE 1 -#else -#define _X86_CC_XSAVE 0 -#endif - -#ifdef __CLFLUSHOPT__ -#define _X86_CC_CLFLUSHOPT 1 -#else -#define _X86_CC_CLFLUSHOPT 0 -#endif - -#ifdef __RDPID__ -#define _X86_CC_RDPID 1 -#else -#define _X86_CC_RDPID 0 -#endif - - -/** - * @fileoverview x86 cpu feature detection. - */ - -#define X86_HAVE(FEATURE) _X86_HAVE(X86_##FEATURE) - -/* clang-format off */ -/* --- FEATURE LEAF REG BIT COMPILE-TIME-DEFINE HOOK */ -#define X86_ACC 1H, EDX, 29, 0, _ -#define X86_ACPI 1H, EDX, 22, 0, _ -#define X86_ADX 7H, EBX, 19, _X86_CC_ADX, _ /* broadwell c. 2014 */ -#define X86_AES 1H, ECX, 25, _X86_CC_AES, _ /* westmere c. 2010 */ -#define X86_APIC 1H, EDX, 9, 0, _ -#define X86_ARCH_CAPABILITIES 7H, EDX, 29, 0, _ -#define X86_AVX 1H, ECX, 28, _X86_CC_AVX, _ /* sandybridge c. 2012 */ -#define X86_AVX2 7H, EBX, 5, _X86_CC_AVX2, _ /* haswell c. 2013 */ -#define X86_AVX512BW 7H, EBX, 30, 0, _ -#define X86_AVX512CD 7H, EBX, 28, 0, _ -#define X86_AVX512DQ 7H, EBX, 17, 0, _ -#define X86_AVX512ER 7H, EBX, 27, 0, _ -#define X86_AVX512F 7H, EBX, 16, 0, _ -#define X86_AVX512IFMA 7H, EBX, 21, 0, _ -#define X86_AVX512PF 7H, EBX, 26, 0, _ -#define X86_AVX512VBMI 7H, ECX, 1, 0, _ -#define X86_AVX512VL 7H, EBX, 31, 0, _ -#define X86_AVX512_4FMAPS 7H, EDX, 3, 0, _ -#define X86_AVX512_4VNNIW 7H, EDX, 2, 0, _ -#define X86_AVX512_BF16 7H, EAX, 5, 0, _ -#define X86_AVX512_BITALG 7H, ECX, 12, 0, _ -#define X86_AVX512_VBMI2 7H, ECX, 6, 0, _ -#define X86_AVX512_VNNI 7H, ECX, 11, 0, _ -#define X86_AVX512_VP2INTERSECT 7H, EDX, 8, 0, _ -#define X86_AVX512_VPOPCNTDQ 7H, ECX, 14, 0, _ -#define X86_BMI 7H, EBX, 3, _X86_CC_BMI, _ /* haswell c. 2013 */ -#define X86_BMI2 7H, EBX, 8, _X86_CC_BMI2, _ /* haswell c. 2013 */ -#define X86_CID 1H, ECX, 10, 0, _ -#define X86_CLDEMOTE 7H, ECX, 25, 0, _ -#define X86_CLFLUSH 1H, EDX, 19, _X86_CC_SSE2, _ -#define X86_CLFLUSHOPT 7H, EBX, 23, _X86_CC_CLFLUSHOPT, _ /* skylake/zen */ -#define X86_CLWB 7H, EBX, 24, 0, _ /* skylake/zen2 */ -#define X86_CMOV 1H, EDX, 15, 0, _ -#define X86_CQM 7H, EBX, 12, 0, _ -#define X86_CX16 1H, ECX, 13, 0, _ -#define X86_CX8 1H, EDX, 8, 0, _ -#define X86_DCA 1H, ECX, 18, 0, _ -#define X86_DE 1H, EDX, 2, 0, _ -#define X86_DS 1H, EDX, 21, 0, _ -#define X86_DSCPL 1H, ECX, 4, 0, _ -#define X86_DTES64 1H, ECX, 2, 0, _ -#define X86_ERMS 7H, EBX, 9, 0, _ /* broaadwell c. 2014 */ -#define X86_EST 1H, ECX, 7, 0, _ -#define X86_F16C 1H, ECX, 29, 0, _ -#define X86_FDP_EXCPTN_ONLY 7H, EBX, 6, 0, _ -#define X86_FLUSH_L1D 7H, EDX, 28, 0, _ -#define X86_FMA 1H, ECX, 12, _X86_CC_FMA, _ /* haswell c. 2013 */ -#define X86_FPU 1H, EDX, 0, 0, _ -#define X86_FSGSBASE 7H, EBX, 0, 0, _ -#define X86_FXSR 1H, EDX, 24, 0, _ -#define X86_GBPAGES 80000001H, EDX, 26, 0, _ -#define X86_GFNI 7H, ECX, 8, 0, _ -#define X86_HLE 7H, EBX, 4, 0, _ -#define X86_HT 1H, EDX, 28, 0, _ -#define X86_HYPERVISOR 1H, ECX, 31, 0, _ -#define X86_IA64 1H, EDX, 30, 0, _ -#define X86_INTEL_PT 7H, EBX, 25, 0, _ -#define X86_INTEL_STIBP 7H, EDX, 27, 0, _ -#define X86_INVPCID 1H, EBX, 10, 0, _ -#define X86_INVTSC 80000007H, EDX, 8, _X86_CC_POPCNT, _ /* i.e. not a K8 */ -#define X86_LA57 7H, ECX, 16, 0, _ -#define X86_LAHF_LM 80000001H, ECX, 0, 0, _ -#define X86_LM 80000001H, EDX, 29, 0, _ -#define X86_MCA 1H, EDX, 14, 0, _ -#define X86_MCE 1H, EDX, 7, 0, _ -#define X86_MD_CLEAR 7H, EDX, 10, 0, _ -#define X86_MMX 1H, EDX, 23, 0, _ -#define X86_MOVBE 1H, ECX, 22, 0, _ -#define X86_MOVDIR64B 7H, ECX, 28, 0, _ -#define X86_MOVDIRI 7H, ECX, 27, 0, _ -#define X86_MP 80000001H, EDX, 19, 0, _ -#define X86_MPX 7H, EBX, 14, 0, _ -#define X86_MSR 1H, EDX, 5, 0, _ -#define X86_MTRR 1H, EDX, 12, 0, _ -#define X86_MWAIT 1H, ECX, 3, 0, _ -#define X86_NX 80000001H, EDX, 20, 0, _ -#define X86_OSPKE 7H, ECX, 4, 0, _ -#define X86_OSXSAVE 1H, ECX, 27, 0, _ -#define X86_PAE 1H, EDX, 6, 0, _ -#define X86_PAT 1H, EDX, 16, 0, _ -#define X86_PBE 1H, EDX, 31, 0, _ -#define X86_PCID 1H, ECX, 17, 0, _ -#define X86_PCLMUL 1H, ECX, 1, _X86_CC_PCLMUL, _ /* westmere c. 2010 */ -#define X86_PCONFIG 7H, EDX, 18, 0, _ -#define X86_PDCM 1H, ECX, 15, 0, _ -#define X86_PGE 1H, EDX, 13, 0, _ -#define X86_PKU 7H, ECX, 3, 0, _ -#define X86_PN 1H, EDX, 18, 0, _ -#define X86_POPCNT 1H, ECX, 23, _X86_CC_POPCNT, _ /* nehalem c. 2008 */ -#define X86_PSE 1H, EDX, 3, 0, _ -#define X86_PSE36 1H, EDX, 17, 0, _ -#define X86_RDPID 7H, ECX, 22, _X86_CC_RDPID, _ /* cannonlake c. 2018 */ -#define X86_RDRND 1H, ECX, 30, _X86_CC_RDRND, _ /* ivybridge c. 2012 */ -#define X86_RDSEED 7H, EBX, 18, _X86_CC_RDSEED, _ /* broadwell c. 2014 */ -#define X86_RDTSCP 80000001H, EDX, 27, 0, _ -#define X86_RDT_A 7H, EBX, 15, 0, _ -#define X86_RTM 7H, EBX, 11, 0, _ -#define X86_SDBG 1H, ECX, 11, 0, _ -#define X86_SELFSNOOP 1H, EDX, 27, 0, _ -#define X86_SEP 1H, EDX, 11, 0, _ -#define X86_SHA 7H, EBX, 29, _X86_CC_SHA, _ /* goldmont (2016) */ -#define X86_SMAP 7H, EBX, 20, 0, _ -#define X86_SMEP 7H, EBX, 7, 0, _ -#define X86_SMX 1H, ECX, 6, 0, _ -#define X86_SPEC_CTRL 7H, EDX, 26, 0, _ -#define X86_SPEC_CTRL_SSBD 7H, EDX, 31, 0, _ -#define X86_SSE 1H, EDX, 25, _X86_CC_SSE, _ /* pentium c. 1999 */ -#define X86_SSE2 1H, EDX, 26, _X86_CC_SSE2, _ /* pentium c. 2001 */ -#define X86_SSE3 1H, ECX, 0, _X86_CC_SSE3, _ /* k8 c. 2005 */ -#define X86_SSE4_1 1H, ECX, 19, _X86_CC_SSE4_1, _ /* core c. 2006 */ -#define X86_SSE4_2 1H, ECX, 20, _X86_CC_SSE4_2, _ /* nehalem c. 2008 */ -#define X86_SSSE3 1H, ECX, 9, _X86_CC_SSSE3, _ /* westmere c. 2010 */ -#define X86_SYSCALL 80000001H, EDX, 11, 0, _ -#define X86_TM2 1H, ECX, 8, 0, _ -#define X86_TME 7H, ECX, 13, 0, _ -#define X86_TSC 1H, EDX, 4, 0, _ -#define X86_TSC_ADJUST 7H, EBX, 1, 0, _ -#define X86_TSC_DEADLINE_TIMER 1H, ECX, 24, 0, _ -#define X86_TSX_FORCE_ABORT 7H, EDX, 13, 0, _ -#define X86_UMIP 7H, ECX, 2, 0, _ -#define X86_VAES 7H, ECX, 9, 0, _ -#define X86_VME 1H, EDX, 1, 0, _ -#define X86_VMX 1H, ECX, 5, 0, _ -#define X86_VPCLMULQDQ 7H, ECX, 10, 0, _ -#define X86_WAITPKG 7H, ECX, 5, 0, _ -#define X86_X2APIC 1H, ECX, 21, 0, _ -#define X86_XSAVE 1H, ECX, 26, _X86_CC_XSAVE, _ /* sandybridge c. 2012 */ -#define X86_XTPR 1H, ECX, 14, 0, _ -#define X86_ZERO_FCS_FDS 7H, EBX, 13, 0, _ -/* clang-format on */ - -/* AMD specific features */ -#define X86_ABM 80000001H, ECX, 5, _X86_CC_ABM, _ -#define X86_3DNOW 80000001H, EDX, 31, 0, _ -#define X86_3DNOWEXT 80000001H, EDX, 30, 0, _ -#define X86_3DNOWPREFETCH 80000001H, ECX, 8, 0, _ -#define X86_BPEXT 80000001H, ECX, 26, 0, _ -#define X86_CMP_LEGACY 80000001H, ECX, 1, 0, _ -#define X86_CR8_LEGACY 80000001H, ECX, 4, 0, _ -#define X86_EXTAPIC 80000001H, ECX, 3, 0, _ -#define X86_FMA4 80000001H, ECX, 16, 0, _ -#define X86_FXSR_OPT 80000001H, EDX, 25, 0, _ -#define X86_IBS 80000001H, ECX, 10, 0, _ -#define X86_LWP 80000001H, ECX, 15, 0, _ -#define X86_MISALIGNSSE 80000001H, ECX, 7, 0, _ -#define X86_MMXEXT 80000001H, EDX, 22, 0, _ -#define X86_MWAITX 80000001H, ECX, 29, 0, _ -#define X86_NODEID_MSR 80000001H, ECX, 19, 0, _ -#define X86_OSVW 80000001H, ECX, 9, 0, _ -#define X86_OVERFLOW_RECOV 80000007H, EBX, 0, 0, _ -#define X86_PERFCTR_CORE 80000001H, ECX, 23, 0, _ -#define X86_PERFCTR_LLC 80000001H, ECX, 28, 0, _ -#define X86_PERFCTR_NB 80000001H, ECX, 24, 0, _ -#define X86_PTSC 80000001H, ECX, 27, 0, _ -#define X86_SKINIT 80000001H, ECX, 12, 0, _ -#define X86_SMCA 80000007H, EBX, 3, 0, _ -#define X86_SSE4A 80000001H, ECX, 6, 0, _ -#define X86_SUCCOR 80000007H, EBX, 1, 0, _ -#define X86_SVM 80000001H, ECX, 2, 0, _ -#define X86_TBM 80000001H, ECX, 21, 0, _ -#define X86_TCE 80000001H, ECX, 17, 0, _ -#define X86_TOPOEXT 80000001H, ECX, 22, 0, _ -#define X86_WDT 80000001H, ECX, 13, 0, _ -#define X86_XOP 80000001H, ECX, 11, 0, _ - -/* Defined but not loaded by kCpuids.S */ -#define X86_ARAT 6H, EAX, 2, 0, _ -#define X86_AVIC 8000000AH, EDX, 13, 0, _ -#define X86_CLZERO 80000008H, EBX, 0, 0, _ -#define X86_DECODEASSISTS 8000000AH, EDX, 7, 0, _ -#define X86_DTHERM 6H, EAX, 0, 0, _ -#define X86_FLUSHBYASID 8000000AH, EDX, 6, 0, _ -#define X86_HWP 6H, EAX, 7, 0, _ -#define X86_HWP_ACT_WINDOW 6H, EAX, 9, 0, _ -#define X86_HWP_EPP 6H, EAX, 10, 0, _ -#define X86_HWP_NOTIFY 6H, EAX, 8, 0, _ -#define X86_HWP_PKG_REQ 6H, EAX, 11, 0, _ -#define X86_IBPB 80000008H, EBX, 12, 0, _ -#define X86_IBRS 80000008H, EBX, 14, 0, _ -#define X86_IDA 6H, EAX, 1, 0, _ -#define X86_IRPERF 80000008H, EBX, 1, 0, _ -#define X86_LBRV 8000000AH, EDX, 1, 0, _ -#define X86_NPT 8000000AH, EDX, 0, 0, _ -#define X86_NRIPS 8000000AH, EDX, 3, 0, _ -#define X86_PAUSEFILTER 8000000AH, EDX, 10, 0, _ -#define X86_PFTHRESHOLD 8000000AH, EDX, 12, 0, _ -#define X86_PLN 6H, EAX, 4, 0, _ -#define X86_PTS 6H, EAX, 6, 0, _ -#define X86_SSBD 80000008H, EBX, 24, 0, _ -#define X86_SSB_NO 80000008H, EBX, 26, 0, _ -#define X86_STIBP 80000008H, EBX, 15, 0, _ -#define X86_STIBP_ALWAYS_ON 80000008H, EBX, 17, 0, _ -#define X86_SVML 8000000AH, EDX, 2, 0, _ -#define X86_TSCRATEMSR 8000000AH, EDX, 4, 0, _ -#define X86_VGIF 8000000AH, EDX, 16, 0, _ -#define X86_VIRT_SSBD 80000008H, EBX, 25, 0, _ -#define X86_VMCBCLEAN 8000000AH, EDX, 5, 0, _ -#define X86_V_VMSAVE_VMLOAD 8000000AH, EDX, 15, 0, _ -#define X86_WBNOINVD 80000008H, EBX, 9, 0, _ -#define X86_XGETBV1 DH, EAX, 2, 0, _ -#define X86_XSAVEC DH, EAX, 1, 0, _ -#define X86_XSAVEERPTR 80000008H, EBX, 2, 0, _ -#define X86_XSAVEOPT DH, EAX, 0, 0, _ -#define X86_XSAVES DH, EAX, 3, 0, _ - -#define X86_NEED(FEATURE) _X86_NEED(X86_##FEATURE) -#define X86_WORD(FEATURE) _X86_WORD(X86_##FEATURE) -#define X86_LEAF(FEATURE) _X86_LEAF(X86_##FEATURE) -#define X86_REG(FEATURE) _X86_REG(X86_##FEATURE) -#define X86_BIT(FEATURE) _X86_BIT(X86_##FEATURE) - -#define _X86_HAVE(FEATURE) __X86_HAVE(FEATURE) -#define _X86_NEED(FEATURE) __X86_NEED(FEATURE) -#define _X86_WORD(FEATURE) __X86_WORD(FEATURE) -#define _X86_LEAF(FEATURE) __X86_LEAF(FEATURE) -#define _X86_REG(FEATURE) __X86_REG(FEATURE) -#define _X86_BIT(FEATURE) __X86_BIT(FEATURE) - -#define __X86_HAVE(LEAF, REG, BIT, MANDATORY, HOOK) \ - ___X86_HAVE(LEAF, REG, BIT, MANDATORY, _X86_HOOK_##HOOK) -#define __X86_NEED(LEAF, REG, BIT, MANDATORY, HOOK) MANDATORY -#define __X86_WORD(LEAF, REG, BIT, MANDATORY, HOOK) KCPUIDS(LEAF, REG) -#define __X86_LEAF(LEAF, REG, BIT, MANDATORY, HOOK) LEAF -#define __X86_REG(LEAF, REG, BIT, MANDATORY, HOOK) REG -#define __X86_BIT(LEAF, REG, BIT, MANDATORY, HOOK) BIT - -#ifndef __ASSEMBLER__ -#define ___X86_HAVE(LEAF, REG, BIT, MANDATORY, HOOK) \ - HOOK(!!(MANDATORY || KCPUIDS(LEAF, REG) & (1u << BIT))) -#else -#define ___X86_HAVE(LEAF, REG, BIT, MANDATORY, HOOK) \ - $1 << (BIT % 8), BIT / 8 + KCPUIDS(LEAF, REG) -#endif - -#define _X86_HOOK__(X) X - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -uint64_t pdep(uint64_t, uint64_t) pureconst; - -#define PDEP(NUMBER, BITMASK) \ - ({ \ - typeof(BITMASK) ShuffledBits, Number = (NUMBER); \ - asm("pdep\t%2,%1,%0" : "=r"(ShuffledBits) : "r"(Number), "rm"(BITMASK)); \ - ShuffledBits; \ - }) - -#define pdep(NUMBER, BITMASK) \ - (!X86_HAVE(BMI2) ? pdep(NUMBER, BITMASK) : PDEP(NUMBER, BITMASK)) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pext.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PEXT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -uint64_t pext(uint64_t, uint64_t) pureconst; - -#define PEXT(NUMBER, BITMASK) \ - ({ \ - typeof(BITMASK) ShuffledBits, Number = (NUMBER); \ - asm("pext\t%2,%1,%0" : "=r"(ShuffledBits) : "r"(Number), "rm"(BITMASK)); \ - ShuffledBits; \ - }) - -#define pext(NUMBER, BITMASK) \ - (!X86_HAVE(BMI2) ? pext(NUMBER, BITMASK) : PEXT(NUMBER, BITMASK)) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -unsigned long morton(unsigned long, unsigned long) libcesque; -axdx_t unmorton(unsigned long) libcesque; - -#ifndef __STRICT_ANSI__ -#define morton(Y, X) \ - (X86_NEED(BMI2) ? pdep(X, 0x5555555555555555) | pdep(Y, 0xAAAAAAAAAAAAAAAA) \ - : morton(Y, X)) -#define unmorton(I) \ - (X86_NEED(BMI2) \ - ? (axdx_t){pext(I, 0xAAAAAAAAAAAAAAAA), pext(I, 0x5555555555555555)} \ - : unmorton(I)) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/popcnt.h */ - -#define COSMOPOLITAN_LIBC_BITS_POPCNT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -unsigned long popcnt(unsigned long) pureconst; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define popcnt(X) \ - (__builtin_constant_p(X) ? __builtin_popcountll(X) : ({ \ - unsigned long Res, Pop = (X); \ - if (X86_HAVE(POPCNT)) { \ - asm("popcnt\t%1,%0" : "=r"(Res) : "r"(Pop) : "cc"); \ - } else { \ - Res = (popcnt)(Pop); \ - } \ - Res; \ - })) -#endif /* GNUC && !ANSI */ - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/pushpop.h */ - -#define COSMOPOLITAN_LIBC_BITS_PUSHPOP_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#if !defined(__GNUC__) || defined(__STRICT_ANSI__) -#define pushpop(x) (x) -#else -/** - * PushPop - * An elegant weapon for a more civilized age. - */ -#define pushpop(x) \ - ({ \ - typeof(x) Popped; \ - if (__builtin_constant_p(x) && \ - (TYPE_SIGNED(typeof(x)) ? (intptr_t)(x) + 128 < 256 \ - : (intptr_t)(x) < 128)) { \ - if (x) { \ - asm("push\t%1\n\t" \ - "pop\t%q0" \ - : "=r"(Popped) \ - : "ir"(x)); \ - } else { \ - asm("xor\t%k0,%k0" : "=r"(Popped)); \ - } \ - } else { \ - asm("" : "=r"(Popped) : "0"(x)); \ - } \ - Popped; \ - }) -#endif - -#if !defined(__GNUC__) || defined(__STRICT_ANSI__) -#define pushmov(d, x) (*(d) = (x)) -#else -#define pushmov(d, x) \ - ({ \ - typeof(*(d)) Popped = (x); \ - if (__builtin_constant_p(x) && \ - (TYPE_SIGNED(typeof(x)) ? (intptr_t)(x) + 128 < 256 \ - : (intptr_t)(x) < 128)) { \ - asm("pushq\t%1\n\t" \ - "popq\t%0" \ - : "=m"(*(d)) \ - : "ir"(Popped)); \ - } else { \ - *(d) = Popped; \ - } \ - Popped; \ - }) -#endif - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/segmentation.h */ - -#define COSMOPOLITAN_LIBC_BITS_SEGMENTATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - -/** - * Reads scalar from memory, offset by segment. - * - * @return *(MEM) relative to segment - * @see arch_prctl() - * @see pushpop() - */ -#define fs(MEM) __peek("fs", MEM) -#define gs(MEM) __peek("gs", MEM) - -#define __peek(SEGMENT, ADDRESS) \ - ({ \ - typeof(*(ADDRESS)) Pk; \ - asm("mov\t%%" SEGMENT ":%1,%0" : "=r"(Pk) : "m"(*(ADDRESS))); \ - Pk; \ - }) - -#endif /* __GNUC__ && !__STRICT_ANSI__ */ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/bits/weaken.h */ - -#define COSMOPOLITAN_LIBC_BITS_WEAKEN_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -#ifndef __STRICT_ANSI__ - -#define weaken(symbol) ((const typeof(&(symbol)))weakaddr(#symbol)) - -#define strongaddr(symbolstr) \ - ({ \ - intptr_t waddr; \ - asm(ezlea(symbolstr) "0" : "=r"(waddr)); \ - waddr; \ - }) - -#define weakaddr(symbolstr) \ - ({ \ - intptr_t waddr; \ - asm(".weak\t" symbolstr "\n\t" ezlea(symbolstr) "0" : "=r"(waddr)); \ - waddr; \ - }) - -#else -#define weaken(symbol) symbol -#define weakaddr(symbolstr) &(symbolstr) -#endif /* __STRICT_ANSI__ */ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/typedef/sigaction_f.h */ - -#define COSMOPOLITAN_LIBC_CALLS_TYPEDEF_SIGACTION_F_H_ - - -/*!BEGIN libc/calls/struct/siginfo.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGINFO_H_ - - -/*!BEGIN libc/calls/struct/sigval.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGVAL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -union sigval { - int32_t sival_int; - void *sival_ptr; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct siginfo { - int32_t si_signo; - int32_t si_errno; - int32_t si_code; /* {SICODE,SEGV,ILL,FPE,POLL}_xxx */ - union { - struct { - union { - struct { - int32_t si_pid; - uint32_t si_uid; - }; - struct { - int32_t si_timerid; - int32_t si_overrun; - }; - }; - union { - union sigval si_value; /* provided by third arg of sigqueue(2) */ - struct { - int32_t si_status; - int64_t si_utime, si_stime; - }; - }; - }; - struct { - void *si_addr; - int16_t si_addr_lsb; - union { - struct { - void *si_lower; - void *si_upper; - }; - uint32_t si_pkey; - }; - }; - struct { - int64_t si_band; - int32_t si_fd; - }; - struct { - void *si_call_addr; - int32_t si_syscall; - uint32_t si_arch; - }; - char __ignoreme[128 - 2 * sizeof(int32_t) - sizeof(int64_t)]; - }; -}; - -typedef struct siginfo siginfo_t; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/ucontext.h */ - -#define COSMOPOLITAN_LIBC_CALLS_UCONTEXT_H_ - - -/*!BEGIN libc/calls/struct/sigaltstack.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGALTSTACK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct sigaltstack { - void *ss_sp; - int ss_flags; - size_t ss_size; -}; - -typedef struct sigaltstack stack_t; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/sigset.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGSET_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct sigset { - uint64_t __bits[2]; -} sigset_t; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define REG_R8 REG_R8 -#define REG_R9 REG_R9 -#define REG_R10 REG_R10 -#define REG_R11 REG_R11 -#define REG_R12 REG_R12 -#define REG_R13 REG_R13 -#define REG_R14 REG_R14 -#define REG_R15 REG_R15 -#define REG_RDI REG_RDI -#define REG_RSI REG_RSI -#define REG_RBP REG_RBP -#define REG_RBX REG_RBX -#define REG_RDX REG_RDX -#define REG_RAX REG_RAX -#define REG_RCX REG_RCX -#define REG_RSP REG_RSP -#define REG_RIP REG_RIP -#define REG_EFL REG_EFL -#define REG_CSGSFS REG_CSGSFS -#define REG_ERR REG_ERR -#define REG_TRAPNO REG_TRAPNO -#define REG_OLDMASK REG_OLDMASK -#define REG_CR2 REG_CR2 - -enum GeneralRegister { - REG_R8, - REG_R9, - REG_R10, - REG_R11, - REG_R12, - REG_R13, - REG_R14, - REG_R15, - REG_RDI, - REG_RSI, - REG_RBP, - REG_RBX, - REG_RDX, - REG_RAX, - REG_RCX, - REG_RSP, - REG_RIP, - REG_EFL, - REG_CSGSFS, - REG_ERR, - REG_TRAPNO, - REG_OLDMASK, - REG_CR2 -}; - -struct XmmRegister { - uint64_t u64[2]; -}; - -struct FpuStackEntry { - uint16_t significand[4]; - uint16_t exponent; - uint16_t padding[3]; -}; - -struct thatispacked FpuState { - uint16_t cwd; - uint16_t swd; - uint16_t ftw; - uint16_t fop; - uint64_t rip; - uint64_t rdp; - uint32_t mxcsr; - uint32_t mxcr_mask; - struct FpuStackEntry st[8]; - struct XmmRegister xmm[16]; - uint32_t __padding[24]; -}; - -typedef uint64_t greg_t; -typedef greg_t gregset_t[23]; -typedef struct FpuState *fpregset_t; - -struct MachineContext { - union { - struct { - uint64_t r8; - uint64_t r9; - uint64_t r10; - uint64_t r11; - uint64_t r12; - uint64_t r13; - uint64_t r14; - uint64_t r15; - uint64_t rdi; - uint64_t rsi; - uint64_t rbp; - uint64_t rbx; - uint64_t rdx; - uint64_t rax; - uint64_t rcx; - uint64_t rsp; - uint64_t rip; - uint64_t eflags; - uint16_t cs; - uint16_t gs; - uint16_t fs; - uint16_t __pad0; - uint64_t err; - uint64_t trapno; - uint64_t oldmask; - uint64_t cr2; - }; - gregset_t gregs; - }; - struct FpuState *fpregs; - uint64_t __pad1[8]; -}; - -typedef struct MachineContext mcontext_t; - -struct ucontext { - uint64_t uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - mcontext_t uc_mcontext; /* use this */ - sigset_t uc_sigmask; - struct FpuState __fpustate; /* for cosmo on non-linux */ -}; - -typedef struct ucontext ucontext_t; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef void (*sigaction_f)(int, struct siginfo *, struct ucontext *); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/typedef/sighandler_t.h */ - -#define COSMOPOLITAN_LIBC_CALLS_TYPEDEF_SIGHANDLER_T_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef void (*sighandler_t)(int); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/dirent.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_DIRENT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct dirent { /* linux getdents64 abi */ - uint64_t d_ino; /* inode number */ - int64_t d_off; /* implementation-dependent location number */ - uint16_t d_reclen; /* byte length of this whole struct and string */ - uint8_t d_type; /* DT_UNKNOWN, DT_BLK, DT_DIR, etc. */ - char d_name[256]; /* NUL-terminated basename */ -}; - -struct dirstream; -typedef struct dirstream DIR; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/flock.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_FLOCK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct flock { /* cosmopolitan abi */ - int16_t l_type; /* F_RDLCK, F_WRLCK, F_UNLCK */ - int16_t l_whence; /* SEEK_SET, SEEK_CUR, SEEK_END */ - int64_t l_start; /* starting offset */ - int64_t l_len; /* 0 means until end of file */ - int32_t l_pid; /* lock owner */ - int32_t l_sysid; /* remote system id or zero for local */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/framebufferfixedscreeninfo.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_FRAMEBUFFERFIXEDSCREENINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct FrameBufferFixedScreenInfo { - char id[16]; - uint64_t smem_start; - uint32_t smem_len; - uint32_t type; - uint32_t type_aux; - uint32_t visual; - uint16_t xpanstep; - uint16_t ypanstep; - uint16_t ywrapstep; - uint32_t line_length; - uint64_t mmio_start; - uint32_t mmio_len; - uint32_t accel; - uint16_t capabilities; - uint16_t reserved[2]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/framebuffervirtualscreeninfo.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_FRAMEBUFFERVIRTUALSCREENINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct FrameBufferBitField { - uint32_t offset; - uint32_t length; - uint32_t msb_right; -}; - -struct FrameBufferVirtualScreenInfo { - uint32_t xres; - uint32_t yres; - uint32_t xres_virtual; - uint32_t yres_virtual; - uint32_t xoffset; - uint32_t yoffset; - uint32_t bits_per_pixel; - uint32_t grayscale; - struct FrameBufferBitField red; - struct FrameBufferBitField green; - struct FrameBufferBitField blue; - struct FrameBufferBitField transp; - uint32_t nonstd; - uint32_t activate; - uint32_t height; - uint32_t width; - uint32_t accel_flags; - uint32_t pixclock; - uint32_t left_margin; - uint32_t right_margin; - uint32_t upper_margin; - uint32_t lower_margin; - uint32_t hsync_len; - uint32_t vsync_len; - uint32_t sync; - uint32_t vmode; - uint32_t rotate; - uint32_t colorspace; - uint32_t reserved[4]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/iovec.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_IOVEC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct iovec { - void *iov_base; - size_t iov_len; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/itimerval.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_ITIMERVAL_H_ - - -/*!BEGIN libc/calls/struct/timeval.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TIMEVAL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct timeval { - int64_t tv_sec; - int64_t tv_usec; /* microseconds */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct itimerval { - struct timeval it_interval; /* {0,0} means singleshot */ - struct timeval it_value; /* {0,0} means disarm */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/rlimit.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_RLIMIT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct rlimit { - uint64_t rlim_cur; /* current (soft) limit in bytes */ - uint64_t rlim_max; /* maximum limit in bytes */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/rusage.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_RUSAGE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct rusage { - union { - struct { - struct timeval ru_utime; /* user CPU time used */ - struct timeval ru_stime; /* system CPU time used */ - int64_t ru_maxrss; /* maximum resident set size in (kb) */ - int64_t ru_ixrss; /* shared memory size (integral kb CLK_TCK) */ - int64_t ru_idrss; /* unshared data size (integral kb CLK_TCK) */ - int64_t ru_isrss; /* unshared stack size (integral kb CLK_TCK) */ - int64_t ru_minflt; /* page reclaims */ - int64_t ru_majflt; /* page faults */ - int64_t ru_nswap; /* swaps */ - int64_t ru_inblock; /* block input operations */ - int64_t ru_oublock; /* block output operations */ - int64_t ru_msgsnd; /* IPC messages sent */ - int64_t ru_msgrcv; /* IPC messages received */ - int64_t ru_nsignals; /* signals received */ - int64_t ru_nvcsw; /* voluntary context switches */ - int64_t ru_nivcsw; /* involuntary context switches */ - }; - uint8_t __conservatism[1024]; - }; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/sched_param.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SCHED_PARAM_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct sched_param { - int32_t sched_priority; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/sigaction-netbsd.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGACTION_NETBSD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct sigset_netbsd { - uint32_t sig[4]; -}; - -struct sigaction_netbsd { - intptr_t sa_handler; - struct sigset_netbsd sa_mask; - uint32_t sa_flags; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/sigaction.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SIGACTION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct sigaction { /* cosmo abi */ - union { - sighandler_t sa_handler; - sigaction_f sa_sigaction; - }; - uint64_t sa_flags; - void (*sa_restorer)(void); - struct sigset sa_mask; - int64_t __pad; -} forcealign(8); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/stat.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_STAT_H_ - - -/*!BEGIN libc/calls/struct/timespec.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TIMESPEC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct timespec { - int64_t tv_sec; - int64_t tv_nsec; /* nanoseconds */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct stat { /* linux abi */ - int64_t st_dev; /* 0: id of device with file */ - int64_t st_ino; /* 8: inode number in disk b-tree */ - int64_t st_nlink; /* 16: hard link count */ - int32_t st_mode; /* 24: octal file mask thing */ - int32_t st_uid; /* 28: user id of owner */ - int32_t st_gid; /* group id of owning group */ - int32_t __pad; /* ignore this */ - int64_t st_rdev; /* id of device if a special file */ - int64_t st_size; /* bytes in file */ - int64_t st_blksize; /* preferred chunking for underlying filesystem */ - int64_t st_blocks; /* number of 512-byte pages allocated to file */ - struct timespec st_atim; /* access time (consider noatime) */ - struct timespec st_mtim; /* modified time */ - struct timespec st_ctim; /* complicated time */ - int64_t __future[3 + 10]; /* reserved for future use */ -#define st_atime st_atim.tv_sec -#define st_mtime st_mtim.tv_sec -#define st_ctime st_ctim.tv_sec -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/sysinfo.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_SYSINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct sysinfo { - int64_t uptime; /* seconds since boot */ - uint64_t loads[3]; /* 1-5-15 min active process averages */ - uint64_t totalram; /* system physical memory */ - uint64_t freeram; /* amount of ram currently going to waste */ - uint64_t sharedram; /* bytes w/ pages mapped into multiple progs */ - uint64_t bufferram; /* lingering disk pages; see fadvise */ - uint64_t totalswap; /* size of emergency memory */ - uint64_t freeswap; /* hopefully equal to totalswap */ - int16_t procs; /* number of processes */ - int16_t __ignore; /* padding */ - uint64_t totalhigh; /* wut */ - uint64_t freehigh; /* wut */ - uint32_t mem_unit; /* ram stuff above is multiples of this */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/termios.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TERMIOS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct termios { /* GNU/Systemd ABI */ - uint32_t c_iflag; /* input modes */ - uint32_t c_oflag; /* output modes */ - uint32_t c_cflag; /* control modes */ - uint32_t c_lflag; /* local modes */ - uint8_t c_cc[32]; /* code mappings */ - uint32_t c_ispeed; /* input speed */ - uint32_t c_ospeed; /* output speed */ -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/tms.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_TMS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct tms { - int64_t tms_utime; /* userspace time */ - int64_t tms_stime; /* kernelspace time */ - int64_t tms_cutime; /* children userspace time */ - int64_t tms_cstime; /* children kernelspace time */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/user_regs_struct.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_USER_REGS_STRUCT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/** - * Linux Kernel user registers. - * - * @note superset of struct pt_regs - * @see ptrace() w/ PTRACE_SYSCALL - */ -struct user_regs_struct { - uint64_t r15; - uint64_t r14; - uint64_t r13; - uint64_t r12; - uint64_t rbp; - uint64_t rbx; - uint64_t r11; - uint64_t r10; - uint64_t r9; - uint64_t r8; - uint64_t rax; - uint64_t rcx; - uint64_t rdx; - uint64_t rsi; - uint64_t rdi; - uint64_t orig_rax; - uint64_t rip; - uint64_t cs; - uint64_t eflags; - uint64_t rsp; - uint64_t ss; - uint64_t fs_base; - uint64_t gs_base; - uint64_t ds; - uint64_t es; - uint64_t fs; - uint64_t gs; -}; - -struct useregs_struct_freebsd { - int64_t r15; - int64_t r14; - int64_t r13; - int64_t r12; - int64_t r11; - int64_t r10; - int64_t r9; - int64_t r8; - int64_t rdi; - int64_t rsi; - int64_t rbp; - int64_t rbx; - int64_t rdx; - int64_t rcx; - int64_t rax; - uint32_t trapno; - uint16_t fs; - uint16_t gs; - uint32_t err; - uint16_t es; - uint16_t ds; - int64_t rip; - int64_t cs; - int64_t rflags; - int64_t rsp; - int64_t ss; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/utsname.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_UTSNAME_H_ - -#define SYS_NMLN 321 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct utsname { - char sysname[SYS_NMLN]; - char nodename[SYS_NMLN]; - char release[SYS_NMLN]; - char version[SYS_NMLN]; - char machine[SYS_NMLN]; - char domainname[SYS_NMLN]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/struct/winsize.h */ - -#define COSMOPOLITAN_LIBC_CALLS_STRUCT_WINSIZE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct winsize { - uint16_t ws_row; - uint16_t ws_col; - uint16_t ws_xpixel; - uint16_t ws_ypixel; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/calls.h */ - -#define COSMOPOLITAN_LIBC_CALLS_SYSCALLS_H_ - - -/*!BEGIN libc/fmt/pflink.h */ - -#define COSMOPOLITAN_LIBC_FMT_PFLINK_H_ - - -/*!BEGIN libc/fmt/fmts.h */ - -#define COSMOPOLITAN_LIBC_FMT_FMTS_H_ - -#define PRINTF_NTOA_BUFFER_SIZE 144 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int __fmt_pad(int (*)(const char *, void *, size_t), void *, - unsigned long) hidden; -int __fmt_stoa(int (*)(const char *, void *, size_t), void *, void *, - unsigned long, unsigned long, unsigned long, unsigned char, - unsigned char) hidden; -int __fmt_ntoa(int (*)(const char *, void *, size_t), void *, va_list, - unsigned char, unsigned long, unsigned long, unsigned long, - unsigned char, const char *) hidden; -char *__fmt_dtoa(double, int, int, int *, int *, char **) hidden; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/mem/mem.h */ - -#define COSMOPOLITAN_LIBC_MEM_MEM_H_ - -#define M_TRIM_THRESHOLD (-1) -#define M_GRANULARITY (-2) -#define M_MMAP_THRESHOLD (-3) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § dynamic memory ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -void free(void *) libcesque; -void *malloc(size_t) attributeallocsize((1)) mallocesque; -void *calloc(size_t, size_t) attributeallocsize((1, 2)) mallocesque; -void *memalign(size_t, size_t) attributeallocalign((1)) - attributeallocsize((2)) mallocesque; -void *realloc(void *, size_t) reallocesque; -void *realloc_in_place(void *, size_t); -void *reallocarray(void *, size_t, size_t) nodiscard; -void *valloc(size_t) attributeallocsize((1)) vallocesque; -void *pvalloc(size_t) attributeallocsize((1)) mallocesque; -char *strdup(const char *) paramsnonnull() mallocesque; -char *strndup(const char *, size_t) paramsnonnull() mallocesque; -int posix_memalign(void **, size_t, size_t); /* wut */ -bool __grow(void *, size_t *, size_t, size_t) paramsnonnull((1, 2)) libcesque; - -int malloc_trim(size_t); -size_t bulk_free(void **, size_t); -size_t malloc_usable_size(const void *); -void **independent_calloc(size_t, size_t, void **); -void **independent_comalloc(size_t, size_t *, void **); - -wchar_t *wcsdup(const wchar_t *) strlenesque nodiscard; - -struct mallinfo { - size_t arena; /* non-mmapped space allocated from system */ - size_t ordblks; /* number of free chunks */ - size_t smblks; /* always 0 */ - size_t hblks; /* always 0 */ - size_t hblkhd; /* space in mmapped regions */ - size_t usmblks; /* maximum total allocated space */ - size_t fsmblks; /* always 0 */ - size_t uordblks; /* total allocated space */ - size_t fordblks; /* total free space */ - size_t keepcost; /* releasable (via malloc_trim) space */ -}; -struct mallinfo mallinfo(void); - -void malloc_stats(void); -bool32 mallopt(int, int); -size_t malloc_footprint(void); -size_t malloc_max_footprint(void); -size_t malloc_footprint_limit(void); -size_t malloc_set_footprint_limit(size_t); -void malloc_inspect_all(void (*handler)(void *, void *, size_t, void *), - void *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/runtime.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_RUNTIME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § runtime ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -typedef long jmp_buf[8] forcealign(CACHELINE); - -extern int __argc; /* CRT */ -extern char **__argv; /* CRT */ -extern char **environ; /* CRT */ -extern unsigned long *__auxv; /* CRT */ -extern char *program_invocation_name; /* RII */ -extern char *program_invocation_short_name; /* RII */ -extern uint64_t g_syscount; /* RII */ -extern const uint64_t kStartTsc; /* RII */ -extern const char kTmpPath[]; /* RII */ -extern const char kNtSystemDirectory[]; /* RII */ -extern const char kNtWindowsDirectory[]; /* RII */ -extern unsigned char _base[] forcealign(PAGESIZE); /* αpε */ -extern unsigned char _ehead[] forcealign(PAGESIZE); /* αpε */ -extern unsigned char _etext[] forcealign(PAGESIZE); /* αpε */ -extern unsigned char _edata[] forcealign(PAGESIZE); /* αpε */ -extern unsigned char _end[] forcealign(FRAMESIZE); /* αpε */ -extern unsigned char _ereal; /* αpε */ -extern unsigned char __privileged_start; /* αpε */ -extern unsigned char __test_start; /* αpε */ -extern unsigned char __ro; /* αpε */ -extern unsigned char *__relo_start[]; /* αpε */ -extern unsigned char *__relo_end[]; /* αpε */ -extern uint8_t __zip_start[]; /* αpε */ -extern uint8_t __zip_end[]; /* αpε */ - -void mcount(void); -unsigned long getauxval(unsigned long); -void *mapanon(size_t) attributeallocsize((1)); -int setjmp(jmp_buf) libcesque returnstwice paramsnonnull(); -void longjmp(jmp_buf, int) libcesque wontreturn paramsnonnull(); -int _setjmp(jmp_buf) libcesque returnstwice paramsnonnull(); -void _longjmp(jmp_buf, int) libcesque wontreturn paramsnonnull(); -void exit(int) wontreturn; -void _exit(int) libcesque wontreturn; -void _Exit(int) libcesque wontreturn; -void abort(void) wontreturn noinstrument; -int __cxa_atexit(void *, void *, void *) libcesque; -int atfork(void *, void *) libcesque; -int atexit(void (*)(void)) libcesque; -char *getenv(const char *) paramsnonnull() nosideeffect libcesque; -int putenv(char *) paramsnonnull(); -int setenv(const char *, const char *, int) paramsnonnull(); -int unsetenv(const char *); -int clearenv(void); -void fpreset(void); -int issetugid(void); -void *mmap(void *, uint64_t, int32_t, int32_t, int32_t, int64_t); -void *mremap(void *, size_t, size_t, int, ...); -int munmap(void *, uint64_t); -int mprotect(void *, uint64_t, int) privileged; -int msync(void *, size_t, int); -void *sbrk(intptr_t); -int brk(void *); -long fpathconf(int, int); -long pathconf(const char *, int); -int getgroups(int, uint32_t[]); -long gethostid(void); -int sethostid(long); -char *getlogin(void); -int getlogin_r(char *, size_t); -int lchown(const char *, uint32_t, uint32_t); -int getpagesize(void); -int syncfs(int); -int vhangup(void); -int getdtablesize(void); -int sethostname(const char *, size_t); -int acct(const char *); - -bool _isheap(void *); -int NtGetVersion(void); -long missingno(); -void __print(const void *, size_t); -void __print_string(const char *); -void _loadxmm(void *); -void _peekall(void); -void _savexmm(void *); -void _weakfree(void *); -void free_s(void *) paramsnonnull() libcesque; -int close_s(int *) paramsnonnull() libcesque; -int OpenExecutable(void); -void ftrace_install(void); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/unicode/unicode.h */ - -#define COSMOPOLITAN_LIBC_UNICODE_UNICODE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct lconv { - char *decimal_point; - char *thousands_sep; - char *grouping; - char *int_curr_symbol; - char *currency_symbol; - char *mon_decimal_point; - char *mon_thousands_sep; - char *mon_grouping; - char *positive_sign; - char *negative_sign; - char int_frac_digits; - char frac_digits; - char p_cs_precedes; - char p_sep_by_space; - char n_cs_precedes; - char n_sep_by_space; - char p_sign_posn; - char n_sign_posn; - char int_p_cs_precedes; - char int_n_cs_precedes; - char int_p_sep_by_space; - char int_n_sep_by_space; - char int_p_sign_posn; - char int_n_sign_posn; -}; - -int wcwidth(wchar_t) pureconst; -int wcswidth(const wchar_t *, size_t) strlenesque; -int wcsnwidth(const wchar_t *, size_t, size_t) strlenesque; -int strwidth(const char *, size_t) strlenesque; -int strnwidth(const char *, size_t, size_t) strlenesque; -int strwidth16(const char16_t *, size_t) strlenesque; -int strnwidth16(const char16_t *, size_t, size_t) strlenesque; -struct lconv *localeconv(void); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -#ifndef __STRICT_ANSI__ - -/** - * @fileoverview builtin+preprocessor+linker tricks for printf/scanf. - * - * Your printf() function only requires that you pay for what you use. - * These macros ensure that its code size starts at under 4kb, growing - * to about 40kb for a fully-loaded implementation. This works best when - * format strings are constexprs that only contain directives. - */ - -#define PFLINK(FMT) \ - ({ \ - if (___PFLINK(FMT, strpbrk, "faAeg")) STATIC_YOINK("__fmt_dtoa"); \ - if (___PFLINK(FMT, strpbrk, "cmrqs")) { \ - if (___PFLINK(FMT, strchr, '#')) STATIC_YOINK("kCp437"); \ - if (___PFLINK(FMT, strstr, "%m")) STATIC_YOINK("strerror"); \ - if (!IsTiny() && (___PFLINK(FMT, strstr, "%*") || \ - ___PFLINK(FMT, strpbrk, "0123456789"))) { \ - STATIC_YOINK("strnwidth"); \ - STATIC_YOINK("strnwidth16"); \ - STATIC_YOINK("wcsnwidth"); \ - } \ - } \ - FMT; \ - }) - -#define SFLINK(FMT) \ - ({ \ - if (___PFLINK(FMT, strchr, 'm')) { \ - STATIC_YOINK("malloc"); \ - STATIC_YOINK("calloc"); \ - STATIC_YOINK("free"); \ - STATIC_YOINK("__grow"); \ - } \ - FMT; \ - }) - -#if __GNUC__ + 0 < 4 || defined(__llvm__) -#define ___PFLINK(FMT, FN, C) 1 -#else -#define ___PFLINK(FMT, FN, C) \ - !__builtin_constant_p(FMT) || ((FMT) && __builtin_##FN(FMT, C) != NULL) -#endif - -#if defined(__GNUC__) && __GNUC__ < 6 -/* - * Compilers don't understand the features we've added to the format - * string DSL, such as c string escaping, therefore we can't use it. - * Ideally compilers should grant us more flexibility to define DSLs - * - * The recommended approach to turning this back on is `CFLAGS=-std=c11` - * which puts the compiler in __STRICT_ANSI__ mode, which Cosmopolitan - * respects by disabling all the esoteric tuning in headers like this. - */ -#pragma GCC diagnostic ignored "-Wformat-security" -#endif /* __GNUC__ + 0 < 6 */ -#else -#define PFLINK(FMT) FMT -#define SFLINK(FMT) FMT -#ifdef __GNUC__ -__asm__(".section .yoink\n\t" - "nopl\t__fmt_dtoa(%rip)\n\t" - "nopl\tkCp437(%rip)\n\t" - "nopl\tstrerror(%rip)\n\t" - "nopl\tstrnwidth(%rip)\n\t" - "nopl\tstrnwidth16(%rip)\n\t" - "nopl\twcsnwidth(%rip)\n\t" - "nopl\tmalloc(%rip)\n\t" - "nopl\tcalloc(%rip)\n\t" - "nopl\t__grow(%rip)\n\t" - ".previous"); -#else -static long __pflink(long x) { - x |= kCp437[0]; - x |= __fmt_dtoa(0, 0, 0, 0, 0, 0); - x |= strnwidth(0, 0, 0); - x |= strnwidth16(0, 0, 0); - x |= wcsnwidth(0, 0, 0); - x |= malloc(0); - x |= __grow(0, 0, 0, 0); - x |= (intptr_t)strerror(0); - x |= (intptr_t)calloc(0, 0); - return x; -} -#endif -#endif /* __STRICT_ANSI__ */ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/s.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_S_H_ - -#define S_ISVTX 01000 /* THE STICKY BIT */ -#define S_ISGID 02000 /* the setgid bit */ -#define S_ISUID 04000 /* the setuid bit */ -#define S_IXUSR 00100 /* user --x; just use octal */ -#define S_IWUSR 00200 /* user -w-; just use octal */ -#define S_IRUSR 00400 /* user r--; just use octal */ -#define S_IRWXU 00700 /* user rwx; just use octal */ -#define S_IXGRP 00010 /* group --x; just use octal */ -#define S_IWGRP 00020 /* group -w-; just use octal */ -#define S_IRGRP 00040 /* group r--; just use octal */ -#define S_IRWXG 00070 /* group rwx; just use octal */ -#define S_IXOTH 00001 /* other --x; just use octal */ -#define S_IWOTH 00002 /* other -w-; just use octal */ -#define S_IROTH 00004 /* other r--; just use octal */ -#define S_IRWXO 00007 /* other rwx; just use octal */ -#define S_IREAD 00400 /* just use octal */ -#define S_IEXEC 00100 /* just use octal */ -#define S_IWRITE 00200 /* just use octal */ - -#define S_IFIFO (1 << 12) /* pipe */ -#define S_IFCHR (2 << 12) /* character device */ -#define S_IFDIR (4 << 12) /* directory */ -#define S_IFBLK (6 << 12) /* block device */ -#define S_IFREG (8 << 12) /* regular file */ -#define S_IFLNK (10 << 12) /* symbolic link */ -#define S_IFSOCK (12 << 12) /* socket */ -#define S_IFMT (15 << 12) /* mask of file types above */ - - - -/*!BEGIN libc/sysv/consts/sig.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SIG_H_ - - -/*!BEGIN libc/runtime/symbolic.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_SYMBOLIC_H_ - -#ifdef __ASSEMBLER__ -/* clang-format off */ -#define SYMBOLIC(NAME) NAME(%rip) -#define LITERALLY(NAME) $NAME -/* clang-format on */ -#else -#define SYMBOLIC(NAME) NAME -#define LITERALLY(NAME) NAME -#endif - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SIGABRT; -extern const long SIGALRM; -extern const long SIGBUS; -extern const long SIGCHLD; -extern const long SIGCONT; -extern const long SIGFPE; -extern const long SIGHUP; -extern const long SIGILL; -extern const long SIGINT; -extern const long SIGIO; -extern const long SIGIOT; -extern const long SIGKILL; -extern const long SIGPIPE; -extern const long SIGPOLL; -extern const long SIGPROF; -extern const long SIGPWR; -extern const long SIGQUIT; -extern const long SIGRTMAX; -extern const long SIGRTMIN; -extern const long SIGSEGV; -extern const long SIGSTKFLT; -extern const long SIGSTKSZ; -extern const long SIGSTOP; -extern const long SIGSYS; -extern const long SIGTERM; -extern const long SIGTRAP; -extern const long SIGTSTP; -extern const long SIGTTIN; -extern const long SIGTTOU; -extern const long SIGUNUSED; -extern const long SIGURG; -extern const long SIGUSR1; -extern const long SIGUSR2; -extern const long SIGVTALRM; -extern const long SIGWINCH; -extern const long SIGXCPU; -extern const long SIGXFSZ; - -extern const long SIG_ATOMIC_MIN; -extern const long SIG_BLOCK; -extern const long SIG_SETMASK; -extern const long SIG_UNBLOCK; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define SIGABRT LITERALLY(6) -#define SIGALRM LITERALLY(14) -#define SIGBUS SYMBOLIC(SIGBUS) -#define SIGCHLD SYMBOLIC(SIGCHLD) -#define SIGCONT SYMBOLIC(SIGCONT) -#define SIGFPE LITERALLY(8) -#define SIGHUP LITERALLY(1) -#define SIGILL LITERALLY(4) -#define SIGINT LITERALLY(2) -#define SIGIO SYMBOLIC(SIGIO) -#define SIGIOT LITERALLY(6) -#define SIGKILL LITERALLY(9) -#define SIGPIPE LITERALLY(13) -#define SIGPOLL SYMBOLIC(SIGPOLL) -#define SIGPROF LITERALLY(27) -#define SIGPWR SYMBOLIC(SIGPWR) -#define SIGQUIT LITERALLY(3) -#define SIGRTMAX SYMBOLIC(SIGRTMAX) -#define SIGRTMIN SYMBOLIC(SIGRTMIN) -#define SIGSEGV LITERALLY(11) -#define SIGSTKFLT SYMBOLIC(SIGSTKFLT) -#define SIGSTKSZ SYMBOLIC(SIGSTKSZ) -#define SIGSTOP SYMBOLIC(SIGSTOP) -#define SIGSYS SYMBOLIC(SIGSYS) -#define SIGTERM LITERALLY(15) -#define SIGTRAP LITERALLY(5) -#define SIGTSTP SYMBOLIC(SIGTSTP) -#define SIGTTIN LITERALLY(21) -#define SIGTTOU LITERALLY(22) -#define SIGUNUSED SYMBOLIC(SIGUNUSED) -#define SIGURG SYMBOLIC(SIGURG) -#define SIGUSR1 SYMBOLIC(SIGUSR1) -#define SIGUSR2 SYMBOLIC(SIGUSR2) -#define SIGVTALRM LITERALLY(26) -#define SIGWINCH LITERALLY(28) -#define SIGXCPU LITERALLY(24) -#define SIGXFSZ LITERALLY(25) - -#define SIG_ATOMIC_MIN SYMBOLIC(SIG_ATOMIC_MIN) -#define SIG_BLOCK SYMBOLIC(SIG_BLOCK) -#define SIG_SETMASK SYMBOLIC(SIG_SETMASK) -#define SIG_UNBLOCK SYMBOLIC(SIG_UNBLOCK) - - -#define EOF -1 /* end of file */ -#define WEOF -1u /* end of file (multibyte) */ -#define _IOFBF 0 /* fully buffered */ -#define _IOLBF 1 /* line buffered */ -#define _IONBF 2 /* no buffering */ -#define SEEK_SET 0 /* relative to beginning */ -#define SEEK_CUR 1 /* relative to current position */ -#define SEEK_END 2 /* relative to end */ - -#define SIG_ERR ((void (*)(int))(-1)) -#define SIG_DFL ((void *)0) -#define SIG_IGN ((void *)1) - -#define MAP_FAILED ((void *)-1) - -#define ARCH_SET_GS 0x1001 -#define ARCH_SET_FS 0x1002 -#define ARCH_GET_FS 0x1003 -#define ARCH_GET_GS 0x1004 - -#define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT) -#define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT) - -#define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR) -#define S_ISCHR(mode) (((mode)&S_IFMT) == S_IFCHR) -#define S_ISBLK(mode) (((mode)&S_IFMT) == S_IFBLK) -#define S_ISREG(mode) (((mode)&S_IFMT) == S_IFREG) -#define S_ISFIFO(mode) (((mode)&S_IFMT) == S_IFIFO) -#define S_ISLNK(mode) (((mode)&S_IFMT) == S_IFLNK) -#define S_ISSOCK(mode) (((mode)&S_IFMT) == S_IFSOCK) - -#define WCOREDUMP(s) ((s)&0x80) -#define WEXITSTATUS(s) (((s)&0xff00) >> 8) -#define WIFCONTINUED(s) ((s) == 0xffff) -#define WIFEXITED(s) (!WTERMSIG(s)) -#define WIFSIGNALED(s) (((s)&0xffff) - 1u < 0xffu) -#define WIFSTOPPED(s) ((short)((((s)&0xffff) * 0x10001) >> 8) > 0x7f00) -#define WSTOPSIG(s) WEXITSTATUS(s) -#define WTERMSIG(s) ((s)&0x7f) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § system calls ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -typedef int sig_atomic_t; - -DIR *fdopendir(int) nodiscard; -DIR *opendir(const char *) nodiscard; -bool fileexists(const char *); -bool isdirectory(const char *); -bool isexecutable(const char *); -bool isregularfile(const char *); -bool32 isatty(int) nosideeffect; -bool32 ischardev(int) nosideeffect; -char *commandv(const char *, char[hasatleast PATH_MAX]); -char *get_current_dir_name(void) nodiscard; -char *getcwd(char *, size_t); -char *realpath(const char *, char *); -char *replaceuser(const char *) nodiscard; -char *ttyname(int); -int access(const char *, int) nothrow; -int arch_prctl(); -int chdir(const char *); -int chmod(const char *, uint32_t); -int chown(const char *, uint32_t, uint32_t); -int close(int); -int closedir(DIR *); -int creat(const char *, uint32_t) nodiscard; -int dirfd(DIR *); -int dup(int) nodiscard; -int dup2(int, int); -int dup3(int, int, int); -int execl(const char *, const char *, ...) nullterminated(); -int execle(const char *, const char *, ...) nullterminated((1)); -int execlp(const char *, const char *, ...) nullterminated(); -int execv(const char *, char *const[]) paramsnonnull(); -int execve(const char *, char *const[], char *const[]) paramsnonnull(); -int execvp(const char *, char *const[]) paramsnonnull(); -int execvpe(const char *, char *const[], char *const[]) paramsnonnull(); -int faccessat(int, const char *, int, uint32_t); -int fadvise(int, uint64_t, uint64_t, int); -int fchmod(int, uint32_t) nothrow; -int fchmodat(int, const char *, uint32_t, uint32_t); -int fchown(int, uint32_t, uint32_t); -int fchownat(int, const char *, uint32_t, uint32_t, uint32_t); -int fcntl(int, int, ...); -int fdatasync(int); -int filecmp(const char *, const char *); -int flock(int, int); -int fork(void); -int fstat(int, struct stat *); -int fstatat(int, const char *, struct stat *, uint32_t); -int fsync(int); -int ftruncate(int, int64_t); -int getdomainname(char *, size_t); -int gethostname(char *, size_t); -int getppid(void); -int getpriority(int, unsigned); -int getrlimit(int, struct rlimit *); -int getrusage(int, struct rusage *); -int kill(int, int); -int killpg(int, int); -int sigqueue(int, int, const union sigval); -int link(const char *, const char *) nothrow; -int linkat(int, const char *, int, const char *, uint32_t); -int lstat(const char *, struct stat *); -int madvise(void *, uint64_t, int); -int mkdir(const char *, uint32_t); -int mkdirat(int, const char *, uint32_t); -int mkfifo(const char *, uint32_t); -int mknod(const char *, uint32_t, uint64_t); -int mknodat(int, const char *, int32_t, uint64_t); -int mlock(const void *, size_t); -int mlock2(const void *, size_t, int); -int mlockall(int); -int munlock(const void *, size_t); -int munlockall(void); -int nice(int); -int open(const char *, int, ...); -int openanon(char *, unsigned); -int openat(int, const char *, int, ...); -int pause(void); -int personality(uint64_t); -int pipe(int[hasatleast 2]); -int pipe2(int[hasatleast 2], int); -int posix_fadvise(int, uint64_t, uint64_t, int); -int posix_madvise(void *, uint64_t, int); -int raise(int); -int readlink(const char *, char *, size_t); -int remove(const char *); -int rename(const char *, const char *); -int renameat(int, const char *, int, const char *); -int renameat2(long, const char *, long, const char *, int); -int rmdir(const char *); -int sched_getaffinity(int, uint64_t, void *); -int sched_setaffinity(int, uint64_t, const void *); -int sched_yield(void); -int setegid(uint32_t); -int seteuid(uint32_t); -int setgid(uint32_t); -int setpgid(int, int); -int setpriority(int, unsigned, int); -int setregid(uint32_t, uint32_t); -int setresgid(uint32_t, uint32_t, uint32_t); -int setresuid(uint32_t, uint32_t, uint32_t); -int setreuid(uint32_t, uint32_t); -int setrlimit(int, const struct rlimit *); -int setsid(void); -int setuid(uint32_t); -int sigaction(int, const struct sigaction *, struct sigaction *); -int sigignore(int); -int sigprocmask(int, const struct sigset *, struct sigset *); -int sigsuspend(const struct sigset *); -int stat(const char *, struct stat *); -int symlink(const char *, const char *); -int symlinkat(const char *, int, const char *); -int sync_file_range(int, int64_t, int64_t, unsigned); -int sysinfo(struct sysinfo *); -int touch(const char *, uint32_t); -int truncate(const char *, uint64_t); -int ttyname_r(int, char *, size_t); -int uname(struct utsname *); -int unlink(const char *); -int unlink_s(const char **); -int unlinkat(int, const char *, int); -int vfork(void) returnstwice; -int wait(int *); -int wait3(int *, int, struct rusage *); -int wait4(int, int *, int, struct rusage *); -int waitpid(int, int *, int); -ssize_t lseek(int, int64_t, unsigned); -ssize_t pread(int, void *, size_t, int64_t); -ssize_t preadv(int, struct iovec *, int, int64_t); -ssize_t pwrite(int, const void *, size_t, int64_t); -ssize_t pwritev(int, const struct iovec *, int, int64_t); -intptr_t syscall(int, ...); -void sync(void); -long telldir(DIR *); -int getpid(void); -long times(struct tms *); -sighandler_t signal(int, sighandler_t); -size_t GetFileSize(const char *); -size_t getfiledescriptorsize(int); -ssize_t copy_file_range(int, long *, int, long *, size_t, uint32_t); -ssize_t copyfd(int, int64_t *, int, int64_t *, size_t, uint32_t); -ssize_t read(int, void *, size_t); -ssize_t readansi(int, char *, size_t); -ssize_t readlinkat(int, const char *, char *, size_t); -ssize_t splice(int, int64_t *, int, int64_t *, size_t, uint32_t); -ssize_t vmsplice(int, const struct iovec *, int64_t, uint32_t); -ssize_t write(int, const void *, size_t); -struct dirent *readdir(DIR *); -uint32_t getegid(void) nosideeffect; -uint32_t geteuid(void) nosideeffect; -uint32_t getgid(void) nosideeffect; -uint32_t getpgrp(void) nosideeffect; -uint32_t getsid(int) nosideeffect; -uint32_t gettid(void) nosideeffect; -uint32_t getuid(void) nosideeffect; -uint32_t umask(int32_t); -long ptrace(int, int, void *, void *); -int chroot(const char *); -int prctl(); -int sysctl(const int *, unsigned, void *, size_t *, void *, size_t); -int fchdir(int); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § system calls » formatting ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int dprintf(int, const char *, ...) printfesque(2) paramsnonnull((2)); -int vdprintf(int, const char *, va_list) paramsnonnull(); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § system calls » link-time optimizations ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - -#define getcwd(BUF, SIZE) \ - (__builtin_constant_p(BUF) && !(BUF) ? get_current_dir_name() \ - : getcwd(BUF, SIZE)) - -void _init_onntconsoleevent(void); -void _init_wincrash(void); - -#ifndef __SIGACTION_YOINK -#define __SIGACTION_YOINK(SIG) \ - do { \ - if (SupportsWindows()) { \ - if (__builtin_constant_p(SIG)) { \ - switch (SIG) { \ - case SIGINT: \ - case SIGQUIT: \ - case SIGHUP: \ - case SIGTERM: \ - YOINK(_init_onntconsoleevent); \ - break; \ - case SIGTRAP: \ - case SIGILL: \ - case SIGSEGV: \ - case SIGABRT: \ - case SIGFPE: \ - YOINK(_init_wincrash); \ - break; \ - default: \ - break; \ - } \ - } else { \ - YOINK(_init_onntconsoleevent); \ - YOINK(_init_wincrash); \ - } \ - } \ - } while (0) -#endif - -#define sigaction(SIG, ACT, OLD) \ - ({ \ - __SIGACTION_YOINK(SIG); \ - sigaction(SIG, (ACT), OLD); \ - }) - -#define signal(SIG, HAND) \ - ({ \ - __SIGACTION_YOINK(SIG); \ - signal(SIG, HAND); \ - }) - -#define dprintf(FD, FMT, ...) (dprintf)(FD, PFLINK(FMT), ##__VA_ARGS__) -#define vdprintf(FD, FMT, VA) (vdprintf)(FD, PFLINK(FMT), VA) - -#endif /* GNU && !ANSI */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/copyfile.h */ - -#define COSMOPOLITAN_LIBC_CALLS_COPYFILE_H_ - -#define COPYFILE_NOCLOBBER 1 -#define COPYFILE_PRESERVE_OWNER 2 -#define COPYFILE_PRESERVE_TIMESTAMPS 4 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int copyfile(const char *, const char *, int) paramsnonnull(); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/ioctl.h */ - -#define COSMOPOLITAN_LIBC_CALLS_IOCTL_H_ - - -/*!BEGIN libc/sysv/consts/termios.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TERMIOS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long BRKINT; -extern const long BSDLY; -extern const long BUSY; -extern const long CANBSIZ; -extern const long CBAUD; -extern const long CBAUDEX; -extern const long CBRK; -extern const long CEOL; -extern const long CIBAUD; -extern const long CLOCAL; -extern const long CMSPAR; -extern const long CRDLY; -extern const long CS6; -extern const long CS7; -extern const long CS8; -extern const long CSIZE; -extern const long ECHO; -extern const long ECHOCTL; -extern const long ECHOE; -extern const long ECHOK; -extern const long ECHOKE; -extern const long ECHONL; -extern const long ECHOPRT; -extern const long ENDRUNDISC; -extern const long EXTPROC; -extern const long FFDLY; -extern const long FLUSHO; -extern const long H4DISC; -extern const long ICANON; -extern const long ICRNL; -extern const long IEXTEN; -extern const long IGNBRK; -extern const long IGNCR; -extern const long IGNPAR; -extern const long IMAXBEL; -extern const long INLCR; -extern const long INPCK; -extern const long ISIG; -extern const long ISTRIP; -extern const long IUCLC; -extern const long IUTF8; -extern const long IXANY; -extern const long IXOFF; -extern const long IXON; -extern const long NCCS; -extern const long NETGRAPHDISC; -extern const long NLDLY; -extern const long NMEADISC; -extern const long NOFLSH; -extern const long OCRNL; -extern const long OFDEL; -extern const long OFILL; -extern const long OLCUC; -extern const long ONLCR; -extern const long ONLRET; -extern const long ONOCR; -extern const long OPOST; -extern const long PARENB; -extern const long PARMRK; -extern const long PARODD; -extern const long PENDIN; -extern const long PPPDISC; -extern const long SLIPDISC; -extern const long STRIPDISC; -extern const long TABDLY; -extern const long TABLDISC; -extern const long TCGETS; -extern const long TCSADRAIN; -extern const long TCSAFLUSH; -extern const long TCSANOW; -extern const long TCSETS; -extern const long TCSETSF; -extern const long TCSETSW; -extern const long TIOCCBRK; -extern const long TIOCCDTR; -extern const long TIOCCHKVERAUTH; -extern const long TIOCCONS; -extern const long TIOCDRAIN; -extern const long TIOCEXT; -extern const long TIOCFLAG_CLOCAL; -extern const long TIOCFLAG_MDMBUF; -extern const long TIOCFLAG_PPS; -extern const long TIOCFLAG_SOFTCAR; -extern const long TIOCFLUSH; -extern const long TIOCGDRAINWAIT; -extern const long TIOCGETD; -extern const long TIOCGFLAGS; -extern const long TIOCGPGRP; -extern const long TIOCGPTN; -extern const long TIOCGSID; -extern const long TIOCGTSTAMP; -extern const long TIOCGWINSZ; -extern const long TIOCNOTTY; -extern const long TIOCNXCL; -extern const long TIOCOUTQ; -extern const long TIOCPTMASTER; -extern const long TIOCREMOTE; -extern const long TIOCSBRK; -extern const long TIOCSCTTY; -extern const long TIOCSDRAINWAIT; -extern const long TIOCSDTR; -extern const long TIOCSERGETLSR; -extern const long TIOCSERGETMULTI; -extern const long TIOCSERSETMULTI; -extern const long TIOCSER_TEMT; -extern const long TIOCSETD; -extern const long TIOCSETVERAUTH; -extern const long TIOCSFLAGS; -extern const long TIOCSIG; -extern const long TIOCSPGRP; -extern const long TIOCSTART; -extern const long TIOCSTAT; -extern const long TIOCSTI; -extern const long TIOCSTSTAMP; -extern const long TIOCSWINSZ; -extern const long TIOCTIMESTAMP; -extern const long TIOCUCNTL_CBRK; -extern const long TOSTOP; -extern const long TTYDISC; -extern const long VDISCARD; -extern const long VEOF; -extern const long VEOL; -extern const long VEOL2; -extern const long VERASE; -extern const long VERIFY; -extern const long VINTR; -extern const long VKILL; -extern const long VLNEXT; -extern const long VMIN; -extern const long VQUIT; -extern const long VREPRINT; -extern const long VSTART; -extern const long VSTOP; -extern const long VSUSP; -extern const long VSWTC; -extern const long VTDLY; -extern const long VTIME; -extern const long VWERASE; -extern const long XCASE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define IGNBRK LITERALLY(0x01) -#define BRKINT LITERALLY(0x02) -#define IGNPAR LITERALLY(0x04) -#define PARMRK LITERALLY(0x08) -#define INPCK LITERALLY(0x10) -#define ISTRIP LITERALLY(0x20) -#define INLCR LITERALLY(0x40) -#define IGNCR LITERALLY(0x80) -#define ICRNL LITERALLY(0x0100) -#define IXANY LITERALLY(0x0800) -#define IMAXBEL LITERALLY(0x2000) -#define OPOST LITERALLY(0x01) - -#define NLDLY SYMBOLIC(NLDLY) -#define NL0 LITERALLY(0) -#define NL1 SYMBOLIC(NL1) -#define NL2 SYMBOLIC(NL2) -#define NL3 SYMBOLIC(NL3) -#define CRDLY SYMBOLIC(CRDLY) -#define CR0 LITERALLY(0) -#define CR1 SYMBOLIC(CR1) -#define CR2 SYMBOLIC(CR2) -#define CR3 SYMBOLIC(CR3) -#define TABDLY SYMBOLIC(TABDLY) -#define TAB0 LITERALLY(0) -#define TAB1 SYMBOLIC(TAB1) -#define TAB2 SYMBOLIC(TAB2) -#define TAB3 SYMBOLIC(TAB3) -#define XTABS SYMBOLIC(XTABS) -#define BSDLY SYMBOLIC(BSDLY) -#define BS0 LITERALLY(0) -#define BS1 SYMBOLIC(BS1) -#define BS2 SYMBOLIC(BS2) -#define VTDLY SYMBOLIC(VTDLY) -#define VT0 LITERALLY(0) -#define VT1 SYMBOLIC(VT1) -#define VT2 SYMBOLIC(VT2) -#define FFDLY SYMBOLIC(FFDLY) -#define FF0 LITERALLY(0) -#define FF1 SYMBOLIC(FF1) -#define FF2 SYMBOLIC(FF2) - -#define BUSY SYMBOLIC(BUSY) -#define CANBSIZ SYMBOLIC(CANBSIZ) -#define CBAUD SYMBOLIC(CBAUD) -#define CBAUDEX SYMBOLIC(CBAUDEX) -#define CBRK SYMBOLIC(CBRK) -#define CEOL SYMBOLIC(CEOL) -#define CIBAUD SYMBOLIC(CIBAUD) -#define CLOCAL SYMBOLIC(CLOCAL) -#define CMSPAR SYMBOLIC(CMSPAR) -#define CS6 SYMBOLIC(CS6) -#define CS7 SYMBOLIC(CS7) -#define CS8 SYMBOLIC(CS8) -#define CSIZE SYMBOLIC(CSIZE) -#define ECHO LITERALLY(8) -#define ECHOCTL SYMBOLIC(ECHOCTL) -#define ECHOE SYMBOLIC(ECHOE) -#define ECHOK SYMBOLIC(ECHOK) -#define ECHOKE SYMBOLIC(ECHOKE) -#define ECHONL SYMBOLIC(ECHONL) -#define ECHOPRT SYMBOLIC(ECHOPRT) -#define ENDRUNDISC SYMBOLIC(ENDRUNDISC) -#define EXTPROC SYMBOLIC(EXTPROC) -#define FLUSHO SYMBOLIC(FLUSHO) -#define H4DISC SYMBOLIC(H4DISC) -#define ICANON SYMBOLIC(ICANON) -#define IEXTEN SYMBOLIC(IEXTEN) -#define ISIG SYMBOLIC(ISIG) -#define IUCLC SYMBOLIC(IUCLC) -#define IUTF8 SYMBOLIC(IUTF8) -#define IXOFF SYMBOLIC(IXOFF) -#define IXON SYMBOLIC(IXON) -#define NCCS LITERALLY(32) -#define NETGRAPHDISC SYMBOLIC(NETGRAPHDISC) -#define NMEADISC SYMBOLIC(NMEADISC) -#define NOFLSH SYMBOLIC(NOFLSH) -#define OCRNL SYMBOLIC(OCRNL) -#define OFDEL SYMBOLIC(OFDEL) -#define OFILL SYMBOLIC(OFILL) -#define OLCUC SYMBOLIC(OLCUC) -#define ONLCR SYMBOLIC(ONLCR) -#define ONLRET SYMBOLIC(ONLRET) -#define ONOCR SYMBOLIC(ONOCR) -#define PARENB SYMBOLIC(PARENB) -#define PARODD SYMBOLIC(PARODD) -#define PENDIN SYMBOLIC(PENDIN) -#define PPPDISC SYMBOLIC(PPPDISC) -#define SLIPDISC SYMBOLIC(SLIPDISC) -#define STRIPDISC SYMBOLIC(STRIPDISC) -#define TABLDISC SYMBOLIC(TABLDISC) -#define TCGETS SYMBOLIC(TCGETS) -#define TCSANOW LITERALLY(0) -#define TCSADRAIN LITERALLY(1) -#define TCSAFLUSH LITERALLY(2) -#define TCSETS SYMBOLIC(TCSETS) -#define TCSETSF SYMBOLIC(TCSETSF) -#define TCSETSW SYMBOLIC(TCSETSW) -#define TIOCCBRK SYMBOLIC(TIOCCBRK) -#define TIOCCDTR SYMBOLIC(TIOCCDTR) -#define TIOCCHKVERAUTH SYMBOLIC(TIOCCHKVERAUTH) -#define TIOCCONS SYMBOLIC(TIOCCONS) -#define TIOCDRAIN SYMBOLIC(TIOCDRAIN) -#define TIOCEXT SYMBOLIC(TIOCEXT) -#define TIOCFLAG_CLOCAL SYMBOLIC(TIOCFLAG_CLOCAL) -#define TIOCFLAG_MDMBUF SYMBOLIC(TIOCFLAG_MDMBUF) -#define TIOCFLAG_PPS SYMBOLIC(TIOCFLAG_PPS) -#define TIOCFLAG_SOFTCAR SYMBOLIC(TIOCFLAG_SOFTCAR) -#define TIOCFLUSH SYMBOLIC(TIOCFLUSH) -#define TIOCGDRAINWAIT SYMBOLIC(TIOCGDRAINWAIT) -#define TIOCGETD SYMBOLIC(TIOCGETD) -#define TIOCGFLAGS SYMBOLIC(TIOCGFLAGS) -#define TIOCGPGRP SYMBOLIC(TIOCGPGRP) -#define TIOCGPTN SYMBOLIC(TIOCGPTN) -#define TIOCGSID SYMBOLIC(TIOCGSID) -#define TIOCGTSTAMP SYMBOLIC(TIOCGTSTAMP) -#define TIOCGWINSZ SYMBOLIC(TIOCGWINSZ) -#define TIOCNOTTY SYMBOLIC(TIOCNOTTY) -#define TIOCNXCL SYMBOLIC(TIOCNXCL) -#define TIOCOUTQ SYMBOLIC(TIOCOUTQ) -#define TIOCPTMASTER SYMBOLIC(TIOCPTMASTER) -#define TIOCREMOTE SYMBOLIC(TIOCREMOTE) -#define TIOCSBRK SYMBOLIC(TIOCSBRK) -#define TIOCSCTTY SYMBOLIC(TIOCSCTTY) -#define TIOCSDRAINWAIT SYMBOLIC(TIOCSDRAINWAIT) -#define TIOCSDTR SYMBOLIC(TIOCSDTR) -#define TIOCSERGETLSR SYMBOLIC(TIOCSERGETLSR) -#define TIOCSERGETMULTI SYMBOLIC(TIOCSERGETMULTI) -#define TIOCSERSETMULTI SYMBOLIC(TIOCSERSETMULTI) -#define TIOCSER_TEMT SYMBOLIC(TIOCSER_TEMT) -#define TIOCSETD SYMBOLIC(TIOCSETD) -#define TIOCSETVERAUTH SYMBOLIC(TIOCSETVERAUTH) -#define TIOCSFLAGS SYMBOLIC(TIOCSFLAGS) -#define TIOCSIG SYMBOLIC(TIOCSIG) -#define TIOCSPGRP SYMBOLIC(TIOCSPGRP) -#define TIOCSTART SYMBOLIC(TIOCSTART) -#define TIOCSTAT SYMBOLIC(TIOCSTAT) -#define TIOCSTI SYMBOLIC(TIOCSTI) -#define TIOCSTSTAMP SYMBOLIC(TIOCSTSTAMP) -#define TIOCSWINSZ SYMBOLIC(TIOCSWINSZ) -#define TIOCTIMESTAMP SYMBOLIC(TIOCTIMESTAMP) -#define TIOCUCNTL_CBRK SYMBOLIC(TIOCUCNTL_CBRK) -#define TOSTOP SYMBOLIC(TOSTOP) -#define TTYDISC SYMBOLIC(TTYDISC) -#define VDISCARD SYMBOLIC(VDISCARD) -#define VEOF SYMBOLIC(VEOF) -#define VEOL SYMBOLIC(VEOL) -#define VEOL2 SYMBOLIC(VEOL2) -#define VERASE SYMBOLIC(VERASE) -#define VERIFY SYMBOLIC(VERIFY) -#define VINTR SYMBOLIC(VINTR) -#define VKILL SYMBOLIC(VKILL) -#define VLNEXT SYMBOLIC(VLNEXT) -#define VMIN SYMBOLIC(VMIN) -#define VQUIT SYMBOLIC(VQUIT) -#define VREPRINT SYMBOLIC(VREPRINT) -#define VSTART SYMBOLIC(VSTART) -#define VSTOP SYMBOLIC(VSTOP) -#define VSUSP SYMBOLIC(VSUSP) -#define VSWTC SYMBOLIC(VSWTC) -#define VTIME SYMBOLIC(VTIME) -#define VWERASE SYMBOLIC(VWERASE) -#define XCASE SYMBOLIC(XCASE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § system calls » ioctl ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int ioctl(int, uint64_t, void *); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § system calls » ioctl » undiamonding (size optimization) ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - -#define ioctl(FD, REQUEST, MEMORY) ioctl_dispatch(FD, REQUEST, MEMORY) - -#define __EQUIVALENT(X, Y) (__builtin_constant_p((X) == (Y)) && ((X) == (Y))) -#define __IOCTL_DISPATCH(CMP, FD, REQUEST, MEMORY) \ - do { \ - if (CMP(request, TIOCGWINSZ)) return ioctl_tiocgwinsz(FD, MEMORY); \ - if (CMP(request, TIOCSWINSZ)) return ioctl_tiocswinsz(FD, MEMORY); \ - if (CMP(request, TCGETS)) return ioctl_tcgets(FD, MEMORY); \ - if (CMP(request, TCSETS)) return ioctl_tcsets(FD, REQUEST, MEMORY); \ - if (CMP(request, TCSETSW)) return ioctl_tcsets(FD, REQUEST, MEMORY); \ - if (CMP(request, TCSETSF)) return ioctl_tcsets(FD, REQUEST, MEMORY); \ - } while (0) - -int ioctl_tcgets(int, void *); -int ioctl_tcgets_nt(int, void *); -int ioctl_tcsets(int, uint64_t, void *); -int ioctl_tcsets_nt(int, uint64_t, void *); -int ioctl_tiocgwinsz(int, void *); -int ioctl_tiocgwinsz_nt(int, void *); -int ioctl_tiocswinsz(int, void *); -int ioctl_tiocswinsz_nt(int, void *); -int ioctl_default(int, uint64_t, void *); - -forceinline int ioctl_dispatch(int fd, uint64_t request, void *memory) { - __IOCTL_DISPATCH(__EQUIVALENT, fd, request, memory); - return ioctl_default(fd, request, memory); -} - -#endif /* GNUC && !ANSI */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/ntspawn.h */ - -#define COSMOPOLITAN_LIBC_CALLS_NTSPAWN_H_ - - -/*!BEGIN libc/nt/struct/processinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_PROCESSINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtProcessInformation { - int64_t hProcess; - int64_t hThread; - uint32_t dwProcessId; - uint32_t dwThreadId; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/securityattributes.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SECURITYATTRIBUTES_H_ - - -/*!BEGIN libc/nt/struct/securitydescriptor.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SECURITYDESCRIPTOR_H_ - - -/*!BEGIN libc/nt/struct/acl.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_ACL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtAcl { - uint8_t AclRevision; - uint8_t Sbz1; - uint16_t AclSize; - uint16_t AceCount; - uint16_t Sbz2; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSecurityDescriptor { - uint8_t Revision; - uint8_t Sbz1; - uint16_t Control; - void *Owner; - void *Group; - struct NtAcl *Sacl; - struct NtAcl *Dacl; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSecurityAttributes { - uint32_t nLength; - struct NtSecurityDescriptor *lpSecurityDescriptor; - bool32 bInheritHandle; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/startupinfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_STARTUPINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtStartupInfo { - uint32_t cb /* = sizeof(struct NtStartupInfo) */; - uint16_t *lpReserved; - char16_t *lpDesktop; - char16_t *lpTitle; /* title of *new* console window only */ - uint32_t dwX; /* position of window on screen */ - uint32_t dwY; - uint32_t dwXSize; - uint32_t dwYSize; - uint32_t dwXCountChars; /* used to dimension the dos terminal */ - uint32_t dwYCountChars; - uint32_t dwFillAttribute; - uint32_t dwFlags; - uint16_t wShowWindow; - uint16_t cbReserved2; - uint8_t *lpReserved2; - union { - struct { - int64_t hStdInput; - int64_t hStdOutput; - int64_t hStdError; - }; - int64_t stdiofds[3]; - }; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int mkntcmdline(char16_t[ARG_MAX], const char *, char *const[]) hidden; -int mkntenvblock(char16_t[ARG_MAX], char *const[], const char *) hidden; -int ntspawn(const char *, char *const[], char *const[], const char *, - struct NtSecurityAttributes *, struct NtSecurityAttributes *, - bool32, uint32_t, const char16_t *, const struct NtStartupInfo *, - struct NtProcessInformation *) hidden; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/scheduler.h */ - -#define COSMOPOLITAN_LIBC_CALLS_SCHED_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int sched_setscheduler(int, int, const struct sched_param *); -int sched_getscheduler(int); -int sched_setparam(int, const struct sched_param *); -int sched_getparam(int, struct sched_param *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/sigbits.h */ - -#define COSMOPOLITAN_LIBC_CALLS_SIGBITS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int sigaddset(sigset_t *, int) paramsnonnull(); -int sigdelset(sigset_t *, int) paramsnonnull(); -int sigemptyset(sigset_t *) paramsnonnull(); -int sigfillset(sigset_t *) paramsnonnull(); -int sigismember(const sigset_t *, int) paramsnonnull() nosideeffect; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/termios.h */ - -#define COSMOPOLITAN_LIBC_CALLS_TERMIOS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § teletypewriter control ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int tcgetattr(int, struct termios *); -int tcsetattr(int, int, const struct termios *); -int tcsetpgrp(int, int32_t); -int32_t tcgetpgrp(int); - -int openpty(int *, int *, char *, const struct termios *, - const struct winsize *) paramsnonnull((1, 2)) nodiscard; -int forkpty(int *, char *, const struct termios *, const struct winsize *) - paramsnonnull((1, 2)) nodiscard; -errno_t ptsname_r(int, char *, size_t); - -int grantpt(int); -int unlockpt(int); -int posix_openpt(int) nodiscard; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § teletypewriter » undiamonding ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - -#define tcsetattr(FD, OPT, TIO) tcsetattr_dispatch(FD, OPT, TIO) -forceinline int tcsetattr_dispatch(int fd, int opt, const struct termios *tio) { - if (__EQUIVALENT(opt, TCSANOW)) return ioctl(fd, TCSETS, (void *)tio); - if (__EQUIVALENT(opt, TCSADRAIN)) return ioctl(fd, TCSETSW, (void *)tio); - if (__EQUIVALENT(opt, TCSAFLUSH)) return ioctl(fd, TCSETSF, (void *)tio); - return (tcsetattr)(fd, opt, tio); -} - -#define tcgetattr(FD, TIO) tcgetattr_dispatch(FD, TIO) -forceinline int tcgetattr_dispatch(int fd, const struct termios *tio) { - return ioctl(fd, TCGETS, (void *)tio); -} - -#endif /* GNUC && !ANSI */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/wait4.h */ - -#define COSMOPOLITAN_LIBC_CALLS_WAIT4_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int sys_wait4_nt(int, int *, int, struct rusage *) hidden; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/weirdtypes.h */ - -#define COSMOPOLITAN_LIBC_CALLS_WEIRDTYPES_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * @fileoverview Types we'd prefer hadn't been invented. - */ - -#define blkcnt_t int64_t -#define blksize_t int64_t /* int32_t on xnu */ -#define cc_t uint8_t -#define clock_t int64_t /* uint64_t on xnu */ -#define cpu_set_t uint64_t -#define dev_t uint64_t /* int32_t on xnu */ -#define fsblkcnt_t int64_t -#define fsfilcnt_t int64_t /* uint32_t on xnu */ -#define gid_t uint32_t -#define id_t uint32_t /* int32_t on linux/freebsd/etc. */ -#define in_addr_t uint32_t -#define in_addr_t uint32_t -#define in_port_t uint16_t -#define in_port_t uint16_t -#define ino_t uint64_t -#define key_t int32_t -#define loff_t int64_t -#define mode_t uint32_t /* uint16_t on xnu */ -#define nfds_t uint64_t -#define off_t int64_t -#define pid_t int32_t -#define register_t int64_t -#define sa_family_t uint16_t /* bsd:uint8_t */ -#define socklen_t uint32_t -#define speed_t uint32_t -#define suseconds_t int64_t /* int32_t on xnu */ -#define syscall_arg_t int64_t /* uint64_t on xnu */ -#define tcflag_t uint32_t -#define time_t int64_t -#define timer_t void* -#define uid_t uint32_t -#define rlim_t uint64_t /* int64_t on bsd */ - -#define int_fast8_t __INT_FAST8_TYPE__ -#define uint_fast8_t __UINT_FAST8_TYPE__ -#define int_fast16_t __INT_FAST16_TYPE__ -#define uint_fast16_t __UINT_FAST16_TYPE__ -#define int_fast32_t __INT_FAST32_TYPE__ -#define uint_fast32_t __UINT_FAST32_TYPE__ -#define int_fast64_t __INT_FAST64_TYPE__ -#define uint_fast64_t __UINT_FAST64_TYPE__ - -#define atomic_bool _Atomic(_Bool) -#define atomic_bool32 atomic_int_fast32_t -#define atomic_char _Atomic(char) -#define atomic_schar _Atomic(signed char) -#define atomic_uchar _Atomic(unsigned char) -#define atomic_short _Atomic(short) -#define atomic_ushort _Atomic(unsigned short) -#define atomic_int _Atomic(int) -#define atomic_uint _Atomic(unsigned int) -#define atomic_long _Atomic(long) -#define atomic_ulong _Atomic(unsigned long) -#define atomic_llong _Atomic(long long) -#define atomic_ullong _Atomic(unsigned long long) -#define atomic_char16_t _Atomic(char16_t) -#define atomic_char32_t _Atomic(char32_t) -#define atomic_wchar_t _Atomic(wchar_t) -#define atomic_int_least8_t _Atomic(int_least8_t) -#define atomic_uint_least8_t _Atomic(uint_least8_t) -#define atomic_int_least16_t _Atomic(int_least16_t) -#define atomic_uint_least16_t _Atomic(uint_least16_t) -#define atomic_int_least32_t _Atomic(int_least32_t) -#define atomic_uint_least32_t _Atomic(uint_least32_t) -#define atomic_int_least64_t _Atomic(int_least64_t) -#define atomic_uint_least64_t _Atomic(uint_least64_t) -#define atomic_int_fast8_t _Atomic(int_fast8_t) -#define atomic_uint_fast8_t _Atomic(uint_fast8_t) -#define atomic_int_fast16_t _Atomic(int_fast16_t) -#define atomic_uint_fast16_t _Atomic(uint_fast16_t) -#define atomic_int_fast32_t _Atomic(int_fast32_t) -#define atomic_uint_fast32_t _Atomic(uint_fast32_t) -#define atomic_int_fast64_t _Atomic(int_fast64_t) -#define atomic_uint_fast64_t _Atomic(uint_fast64_t) -#define atomic_intptr_t _Atomic(intptr_t) -#define atomic_uintptr_t _Atomic(uintptr_t) -#define atomic_size_t _Atomic(size_t) -#define atomic_ptrdiff_t _Atomic(ptrdiff_t) - -#ifdef __CLANG_ATOMIC_BOOL_LOCK_FREE -#define ATOMIC_BOOL_LOCK_FREE __CLANG_ATOMIC_BOOL_LOCK_FREE -#define ATOMIC_CHAR_LOCK_FREE __CLANG_ATOMIC_CHAR_LOCK_FREE -#define ATOMIC_CHAR16_T_LOCK_FREE __CLANG_ATOMIC_CHAR16_T_LOCK_FREE -#define ATOMIC_CHAR32_T_LOCK_FREE __CLANG_ATOMIC_CHAR32_T_LOCK_FREE -#define ATOMIC_WCHAR_T_LOCK_FREE __CLANG_ATOMIC_WCHAR_T_LOCK_FREE -#define ATOMIC_SHORT_LOCK_FREE __CLANG_ATOMIC_SHORT_LOCK_FREE -#define ATOMIC_INT_LOCK_FREE __CLANG_ATOMIC_INT_LOCK_FREE -#define ATOMIC_LONG_LOCK_FREE __CLANG_ATOMIC_LONG_LOCK_FREE -#define ATOMIC_LLONG_LOCK_FREE __CLANG_ATOMIC_LLONG_LOCK_FREE -#define ATOMIC_POINTER_LOCK_FREE __CLANG_ATOMIC_POINTER_LOCK_FREE -#else -#define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE -#define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE -#define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE -#define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE -#define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE -#define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE -#define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE -#define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE -#define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE -#define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE -#endif - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/calls/xattr.h */ - -#define COSMOPOLITAN_LIBC_CALLS_XATTR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -ssize_t flistxattr(int, char *, size_t); -ssize_t fgetxattr(int, const char *, void *, size_t); -int fsetxattr(int, const char *, const void *, size_t, int); -int fremovexattr(int, const char *); -ssize_t listxattr(const char *, char *, size_t); -ssize_t getxattr(const char *, const char *, void *, size_t); -int setxattr(const char *, const char *, const void *, size_t, int); -int removexattr(const char *, const char *); -ssize_t llistxattr(const char *, char *, size_t); -ssize_t lgetxattr(const char *, const char *, void *, size_t); -int lsetxattr(const char *, const char *, const void *, size_t, int); -int lremovexattr(const char *, const char *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/crypto/rijndael.h */ - -#define COSMOPOLITAN_LIBC_CRYPTO_RIJNDAEL_H_ -#ifndef __STRICT_ANSI__ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § cryptography » advanced encryption standard ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─┘ - AES-256 Latency x86 2010+ SSE2 - ─────────────── ───────── ────── - rijndael(14, block, &ctx) 23 ns 218 ns - unrijndael(14, block, &ctx) 23 ns 690 ns - rijndaelinit(&ctx, 14, k1, k2) 136 ns 135 ns - unrijndaelinit(&ctx, 14, k1, k2) 186 ns 639 ns - - Untrustworthy System Viability x86 2010+ SSE2 - ────────────────────────────── ───────── ────── - rijndael(14, block, &ctx) A C - unrijndael(14, block, &ctx) A C - rijndaelinit(&ctx, 14, k1, k2) B B - unrijndaelinit(&ctx, 14, k1, k2) B C - - Comparison Cosmo Rijndael Tiny-AES - ────────────────────────────── ─────── ──────── ──────── - Generalized Math Yes Yes No - Footprint 1,782 b 9,258 b 903 b - Performance (New Hardware) ~20 ns ~40 ns ~400 ns - Performance (Old Hardware) ~400 ns ~40 ns ~400 ns */ - -typedef uint32_t aes_block_t _Vector_size(16) forcealign(16); - -struct Rijndael { - union { - aes_block_t xmm; - uint32_t u32[4]; - uint8_t u8[16]; - } rk[15]; -}; - -void rijndaelinit(struct Rijndael *, uint32_t, aes_block_t, aes_block_t); -aes_block_t rijndael(uint32_t, aes_block_t, const struct Rijndael *); -void unrijndaelinit(struct Rijndael *, uint32_t, aes_block_t, aes_block_t); -aes_block_t unrijndael(uint32_t, aes_block_t, const struct Rijndael *); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § cryptography » implementation details ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -extern const uint8_t kAesSbox[256] forcealign(64); -extern const uint8_t kAesSboxInverse[256] forcealign(64); - -aes_block_t InvMixColumns(aes_block_t) hidden; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#endif /* !ANSI */ - - -/*!BEGIN libc/dns/consts.h */ - -#define COSMOPOLITAN_LIBC_DNS_CONSTS_H_ - - -/*!BEGIN libc/sock/sock.h */ - -#define COSMOPOLITAN_LIBC_SOCK_SOCK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § system api » berkeley sockets ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define INET_ADDRSTRLEN 22 - -#define NI_DGRAM 0x10 -#define NI_MAXSERV 0x20 - -#define htons(u16) bswap_16(u16) -#define ntohs(u16) bswap_16(u16) -#define htonl(u32) bswap_32(u32) -#define ntohl(u32) bswap_32(u32) - -struct iovec; -struct sigset; -struct timespec; -struct timeval; -struct addrinfo; - -struct in_addr { /* ARPA ABI */ - /* e.g. 127|0<<8|0<<16|1<<24 or inet_pton(AF_INET, "127.0.0.1", &s_addr) */ - uint32_t s_addr; -}; - -struct sockaddr { /* Linux+NT ABI */ - uint16_t sa_family; /* AF_XXX */ - char sa_data[14]; -}; - -struct sockaddr_in { /* Linux+NT ABI */ - uint16_t sin_family; /* AF_XXX */ - uint16_t sin_port; /* htons(XXX) i.e. big endian */ - struct in_addr sin_addr; - uint8_t sin_zero[8]; -}; - -struct sockaddr_un { - uint16_t sun_family; /* AF_UNIX */ - char sun_path[108]; /* path */ -}; - -struct sockaddr_storage { - union { - uint16_t ss_family; - intptr_t __ss_align; - char __ss_storage[128]; - }; -}; - -struct ip_mreq { - struct in_addr imr_multiaddr; /* IP multicast address of group */ - struct in_addr imr_interface; /* local IP address of interface */ -}; - -struct linger { /* Linux+XNU+BSD ABI */ - int32_t l_onoff; /* on/off */ - int32_t l_linger; /* seconds */ -}; - -struct pollfd { - int32_t fd; - int16_t events; - int16_t revents; -}; - -struct msghdr { /* Linux+NT ABI */ - void *msg_name; /* optional address */ - uint32_t msg_namelen; /* size of msg_name */ - struct iovec *msg_iov; /* scatter/gather array */ - uint64_t msg_iovlen; /* iovec count */ - void *msg_control; /* credentials and stuff */ - uint64_t msg_controllen; /* size of msg_control */ - uint32_t msg_flags; /* MSG_XXX */ -}; - -const char *inet_ntop(int, const void *, char *, uint32_t); -int inet_aton(const char *, struct in_addr *); -int inet_pton(int, const char *, void *); -uint32_t inet_addr(const char *); -char *inet_ntoa(struct in_addr); -int parseport(const char *); - -int socket(int, int, int) nodiscard; -int accept(int, void *, uint32_t *) nodiscard; -int accept4(int, void *, uint32_t *, int) nodiscard; -int bind(int, const void *, uint32_t); -int connect(int, const void *, uint32_t); -int socketconnect(const struct addrinfo *, int); -int listen(int, int); -int shutdown(int, int); -int getsockname(int, void *, uint32_t *) paramsnonnull(); -int getpeername(int, void *, uint32_t *) paramsnonnull(); -ssize_t send(int, const void *, size_t, int) paramsnonnull(); -ssize_t recv(int, void *, size_t, int); -ssize_t recvmsg(int, struct msghdr *, int) paramsnonnull(); -ssize_t recvfrom(int, void *, size_t, uint32_t, void *, uint32_t *); -ssize_t sendmsg(int, const struct msghdr *, int) paramsnonnull(); -ssize_t readv(int, const struct iovec *, int); -ssize_t writev(int, const struct iovec *, int); -ssize_t sendfile(int, int, int64_t *, size_t); -int getsockopt(int, int, int, void *, uint32_t *) paramsnonnull((5)); -int setsockopt(int, int, int, const void *, uint32_t); -int socketpair(int, int, int, int[2]) paramsnonnull(); -int poll(struct pollfd *, uint64_t, int32_t) paramsnonnull(); -int ppoll(struct pollfd *, uint64_t, const struct timespec *, - const struct sigset *) paramsnonnull((1, 4)); -ssize_t sendto(int, const void *, size_t, uint32_t, const void *, uint32_t) - paramsnonnull((2)); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define DNS_TYPE_A 1 -#define DNS_CLASS_IN 1 - -#define kMinSockaddr4Size \ - (offsetof(struct sockaddr_in, sin_addr) + sizeof(struct in_addr)) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/dns/dns.h */ - -#define COSMOPOLITAN_LIBC_DNS_DNS_H_ - - -/*!BEGIN libc/dns/resolvconf.h */ - -#define COSMOPOLITAN_LIBC_DNS_RESOLVCONF_H_ - - -/*!BEGIN libc/stdio/stdio.h */ - -#define COSMOPOLITAN_LIBC_STDIO_STDIO_H_ - -#define FILENAME_MAX PATH_MAX - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § standard i/o ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -typedef struct FILE { - uint8_t bufmode; /* 0x00 _IOFBF, etc. (ignored if fd=-1) */ - bool noclose; /* 0x01 for fake dup() todo delete! */ - uint32_t iomode; /* 0x04 O_RDONLY, etc. (ignored if fd=-1) */ - int32_t state; /* 0x08 0=OK, -1=EOF, >0=errno */ - int fd; /* 0x0c ≥0=fd, -1=closed|buffer */ - uint32_t beg; /* 0x10 */ - uint32_t end; /* 0x14 */ - char *buf; /* 0x18 */ - uint32_t size; /* 0x20 */ - uint32_t nofree; /* 0x24 */ - int pid; /* 0x28 */ -} FILE; - -extern FILE *stdin; -extern FILE *stdout; -extern FILE *stderr; - -errno_t ferror(FILE *) paramsnonnull(); -void clearerr(FILE *) paramsnonnull(); -int feof(FILE *) paramsnonnull(); -int getc(FILE *) paramsnonnull(); -int putc(int, FILE *) paramsnonnull(); -int fflush(FILE *); -int fgetc(FILE *) paramsnonnull(); -int ungetc(int, FILE *) paramsnonnull(); -int fileno(FILE *) paramsnonnull() nosideeffect; -int fputc(int, FILE *) paramsnonnull(); -int fputs(const char *, FILE *) paramsnonnull(); -int fputws(const wchar_t *, FILE *) paramsnonnull(); -char *fgets(char *, int, FILE *) paramsnonnull(); -wchar_t *fgetws(wchar_t *, int, FILE *) paramsnonnull(); -wint_t putwc(wchar_t, FILE *) paramsnonnull(); -wint_t fputwc(wchar_t, FILE *) paramsnonnull(); -wint_t putwchar(wchar_t); -wint_t getwchar(void); -wint_t getwc(FILE *) paramsnonnull(); -wint_t fgetwc(FILE *) paramsnonnull(); -wint_t ungetwc(wint_t, FILE *) paramsnonnull(); -int getchar(void); -int putchar(int); -int puts(const char *) paramsnonnull(); -ssize_t getline(char **, size_t *, FILE *) paramsnonnull(); -ssize_t getdelim(char **, size_t *, int, FILE *) paramsnonnull(); -FILE *fopen(const char *, const char *) paramsnonnull() nodiscard; -FILE *fdopen(int, const char *) paramsnonnull() nodiscard; -FILE *fmemopen(void *, size_t, const char *) paramsnonnull((3)) nodiscard; -FILE *freopen(const char *, const char *, FILE *) paramsnonnull((2, 3)); -size_t fread(void *, size_t, size_t, FILE *) paramsnonnull((4)); -size_t fwrite(const void *, size_t, size_t, FILE *) paramsnonnull((4)); -int fclose(FILE *); -int fclose_s(FILE **) paramsnonnull(); -int fseek(FILE *, long, int) paramsnonnull(); -long ftell(FILE *) paramsnonnull(); -int fseeko(FILE *, int64_t, int) paramsnonnull(); -int64_t ftello(FILE *) paramsnonnull(); -void rewind(FILE *) paramsnonnull(); -int fopenflags(const char *) paramsnonnull(); -void setbuf(FILE *, char *); -void setbuffer(FILE *, char *, size_t); -int setvbuf(FILE *, char *, int, size_t); -FILE *popen(const char *, const char *); -int pclose(FILE *); - -typedef uint64_t fpos_t; -compatfn char *gets(char *) paramsnonnull(); -compatfn int fgetpos(FILE *, fpos_t *) paramsnonnull(); -compatfn int fsetpos(FILE *, const fpos_t *) paramsnonnull(); - -int system(const char *); -int systemexec(const char *); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § standard i/o » formatting ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int printf(const char *, ...) printfesque(1) - paramsnonnull((1)) nothrow nocallback; -int vprintf(const char *, va_list) paramsnonnull() nothrow nocallback; -int fprintf(FILE *, const char *, ...) printfesque(2) - paramsnonnull((1, 2)) nothrow nocallback; -int vfprintf(FILE *, const char *, va_list) paramsnonnull() nothrow nocallback; -int scanf(const char *, ...) scanfesque(1); -int vscanf(const char *, va_list); -int fscanf(FILE *, const char *, ...) scanfesque(2); -int vfscanf(FILE *, const char *, va_list); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § standard i/o » optimizations ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define getc(f) fgetc(f) -#define getwc(f) fgetwc(f) -#define putc(c, f) fputc(c, f) -#define putwc(c, f) fputwc(c, f) - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define printf(FMT, ...) (printf)(PFLINK(FMT), ##__VA_ARGS__) -#define vprintf(FMT, VA) (vprintf)(PFLINK(FMT), VA) -#define fprintf(F, FMT, ...) (fprintf)(F, PFLINK(FMT), ##__VA_ARGS__) -#define vfprintf(F, FMT, VA) (vfprintf)(F, PFLINK(FMT), VA) -#define vscanf(FMT, VA) (vscanf)(SFLINK(FMT), VA) -#define scanf(FMT, ...) (scanf)(SFLINK(FMT), ##__VA_ARGS__) -#define fscanf(F, FMT, ...) (fscanf)(F, SFLINK(FMT), ##__VA_ARGS__) -#define vfscanf(F, FMT, VA) (vfscanf)(F, SFLINK(FMT), VA) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define stdin SYMBOLIC(stdin) -#define stdout SYMBOLIC(stdout) -#define stderr SYMBOLIC(stderr) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct Nameservers { - size_t i, n; - struct sockaddr_in *p; -}; - -struct ResolvConf { - struct Nameservers nameservers; -}; - -const struct ResolvConf *GetResolvConf(void) returnsnonnull; -int ParseResolvConf(struct ResolvConf *, struct FILE *) paramsnonnull(); -void FreeResolvConf(struct ResolvConf **) paramsnonnull(); -int GetNtNameServers(struct ResolvConf *) paramsnonnull(); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define DNS_PORT 53 -#define DNS_NAME_MAX 253 -#define DNS_LABEL_MAX 63 - -#define EAI_SUCCESS 0 -#define EAI_BADFLAGS -1 -#define EAI_NONAME -2 -#define EAI_AGAIN -3 -#define EAI_FAIL -4 -#define EAI_NODATA -5 -#define EAI_FAMILY -6 -#define EAI_SOCKTYPE -7 -#define EAI_SERVICE -8 -#define EAI_ADDRFAMILY -9 -#define EAI_MEMORY -10 -#define EAI_OVERFLOW -12 -#define EAI_SYSTEM -11 -#define EAI_ALLDONE -103 -#define EAI_CANCELED -101 -#define EAI_IDN_ENCODE -105 -#define EAI_INPROGRESS -100 -#define EAI_INTR -104 -#define EAI_NOTCANCELED -102 - -/* AI_* conforms to NT ABI */ -#define AI_PASSIVE 1 -#define AI_CANONNAME 2 -#define AI_NUMERICHOST 4 -#define AI_NUMERICSERV 8 -#define AI_ALL 0x0100 -#define AI_ADDRCONFIG 0x0400 -#define AI_V4MAPPED 0x0800 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct addrinfo { - int32_t ai_flags; /* AI_XXX */ - int32_t ai_family; /* AF_INET */ - int32_t ai_socktype; /* SOCK_XXX */ - int32_t ai_protocol; /* IPPROTO_XXX */ - uint32_t ai_addrlen; - union { - struct sockaddr *ai_addr; - struct sockaddr_in *ai_addr4; - }; - char *ai_canonname /*[DNS_NAME_MAX + 1]*/; - struct addrinfo *ai_next; -}; - -int getaddrinfo(const char *, const char *, const struct addrinfo *, - struct addrinfo **) paramsnonnull((4)); -int freeaddrinfo(struct addrinfo *); -const char *gai_strerror(int); -int CompareDnsNames(const char *, const char *) paramsnonnull(); -int PascalifyDnsName(uint8_t *, size_t, const char *) paramsnonnull(); -int ResolveDns(const struct ResolvConf *, int, const char *, struct sockaddr *, - uint32_t) paramsnonnull(); -struct addrinfo *newaddrinfo(uint16_t); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/dns/dnsheader.h */ - -#define COSMOPOLITAN_LIBC_DNS_DNSHEADER_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct DnsHeader { - uint16_t id; /* transaction id */ - uint8_t bf1; /* bit field 1 */ - uint8_t bf2; /* bit field 2 */ - uint16_t qdcount; /* question count */ - uint16_t ancount; /* answer count */ - uint16_t nscount; /* nameserver count */ - uint16_t arcount; /* additional record count */ -}; - -void SerializeDnsHeader(uint8_t[restrict 12], const struct DnsHeader *); -void DeserializeDnsHeader(struct DnsHeader *, const uint8_t[restrict 12]); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/dns/dnsquestion.h */ - -#define COSMOPOLITAN_LIBC_DNS_DNSQUESTION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct DnsQuestion { - const char *qname; - uint16_t qtype; - uint16_t qclass; -}; - -int SerializeDnsQuestion(uint8_t *, size_t, const struct DnsQuestion *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/dns/hoststxt.h */ - -#define COSMOPOLITAN_LIBC_DNS_HOSTSTXT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct HostsTxtEntry { - uint8_t ip[4]; /* inet_ntop(AF_INET, he->ip, buf, size) */ - uint32_t name; /* &ht->strings.p[he->name] */ - uint32_t canon; /* &ht->strings.p[he->canon] */ -}; - -struct HostsTxtEntries { - size_t i, n; - struct HostsTxtEntry *p; -}; - -struct HostsTxtStrings { - size_t i, n; - char *p; -}; - -struct HostsTxt { - struct HostsTxtEntries entries; - struct HostsTxtStrings strings; -}; - -const struct HostsTxt *GetHostsTxt(void) returnsnonnull; -void FreeHostsTxt(struct HostsTxt **) paramsnonnull(); -int ParseHostsTxt(struct HostsTxt *, FILE *) paramsnonnull(); -void SortHostsTxt(struct HostsTxt *) paramsnonnull(); -int ResolveHostsTxt(const struct HostsTxt *, int, const char *, - struct sockaddr *, uint32_t, const char **) - paramsnonnull((1, 3)); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/def.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_DEF_H_ - -/** - * @fileoverview Executable and Linkable Format Definitions. - */ - -#define EI_MAG0 0 -#define EI_MAG1 1 -#define EI_MAG2 2 -#define EI_MAG3 3 - -#define ELFMAG "\177ELF" -#define ELFMAG0 0x7f -#define ELFMAG1 'E' -#define ELFMAG2 'L' -#define ELFMAG3 'F' -#define SELFMAG 4 - -#define EI_CLASS 4 -#define ELFCLASSNONE 0 -#define ELFCLASS32 1 -#define ELFCLASS64 2 -#define ELFCLASSNUM 3 - -#define EI_DATA 5 -#define ELFDATANONE 0 -#define ELFDATA2LSB 1 -#define ELFDATA2MSB 2 -#define ELFDATANUM 3 - -#define EI_VERSION 6 - -#define EI_OSABI 7 -#define ELFOSABI_NONE 0 -#define ELFOSABI_SYSV 0 -#define ELFOSABI_HPUX 1 -#define ELFOSABI_NETBSD 2 -#define ELFOSABI_LINUX 3 -#define ELFOSABI_GNU 3 -#define ELFOSABI_SOLARIS 6 -#define ELFOSABI_AIX 7 -#define ELFOSABI_IRIX 8 -#define ELFOSABI_FREEBSD 9 -#define ELFOSABI_TRU64 10 -#define ELFOSABI_MODESTO 11 -#define ELFOSABI_OPENBSD 12 -#define ELFOSABI_ARM 97 -#define ELFOSABI_STANDALONE 255 - -#define EI_ABIVERSION 8 - -#define EI_PAD 9 - -#define ET_NONE 0 -#define ET_REL 1 -#define ET_EXEC 2 -#define ET_DYN 3 -#define ET_CORE 4 -#define ET_NUM 5 -#define ET_LOOS 0xfe00 -#define ET_HIOS 0xfeff -#define ET_LOPROC 0xff00 -#define ET_HIPROC 0xffff - -#define EM_NONE 0 -#define EM_M32 1 -#define EM_386 3 -#define EM_S390 22 -#define EM_ARM 40 -#define EM_NEXGEN32E 62 -#define EM_X86_64 EM_NEXGEN32E -#define EM_IA32E EM_NEXGEN32E -#define EM_AMD64 EM_NEXGEN32E -#define EM_PDP11 65 -#define EM_CRAYNV2 172 -#define EM_L10M 180 -#define EM_K10M 181 -#define EM_AARCH64 183 -#define EM_CUDA 190 -#define EM_Z80 220 -#define EM_RISCV 243 -#define EM_BPF 247 - -#define GRP_COMDAT 0x1 -#define STN_UNDEF 0 - -#define EV_NONE 0 -#define EV_CURRENT 1 -#define EV_NUM 2 - -#define SYMINFO_NONE 0 -#define SYMINFO_CURRENT 1 -#define SYMINFO_NUM 2 -#define SYMINFO_BT_SELF 0xffff -#define SYMINFO_BT_PARENT 0xfffe -#define SYMINFO_BT_LOWRESERVE 0xff00 -#define SYMINFO_FLG_DIRECT 0x0001 -#define SYMINFO_FLG_PASSTHRU 0x0002 -#define SYMINFO_FLG_COPY 0x0004 -#define SYMINFO_FLG_LAZYLOAD 0x0008 - -#define PT_NULL 0 -#define PT_LOAD 1 -#define PT_DYNAMIC 2 -#define PT_INTERP 3 -#define PT_NOTE 4 -#define PT_SHLIB 5 -#define PT_PHDR 6 -#define PT_TLS 7 -#define PT_NUM 8 -#define PT_LOOS 0x60000000 -#define PT_GNU_EH_FRAME 0x6474e550 -#define PT_GNU_STACK 0x6474e551 -#define PT_GNU_RELRO 0x6474e552 -#define PT_LOSUNW 0x6ffffffa -#define PT_SUNWBSS 0x6ffffffa -#define PT_SUNWSTACK 0x6ffffffb -#define PT_HISUNW 0x6fffffff -#define PT_HIOS 0x6fffffff -#define PT_LOPROC 0x70000000 -#define PT_HIPROC 0x7fffffff - -#define PN_XNUM 0xffff - -#define PF_X (1 << 0) -#define PF_W (1 << 1) -#define PF_R (1 << 2) -#define PF_MASKOS 0x0ff00000 -#define PF_MASKPROC 0xf0000000 - -#define R_X86_64_NONE 0 -#define R_X86_64_64 1 -#define R_X86_64_PC32 2 -#define R_X86_64_GOT32 3 -#define R_X86_64_PLT32 4 -#define R_X86_64_COPY 5 -#define R_X86_64_GLOB_DAT 6 -#define R_X86_64_JUMP_SLOT 7 -#define R_X86_64_RELATIVE 8 -#define R_X86_64_GOTPCREL 9 -#define R_X86_64_32 10 -#define R_X86_64_32S 11 -#define R_X86_64_16 12 -#define R_X86_64_PC16 13 -#define R_X86_64_8 14 -#define R_X86_64_PC8 15 -#define R_X86_64_DTPMOD64 16 -#define R_X86_64_DTPOFF64 17 -#define R_X86_64_TPOFF64 18 -#define R_X86_64_TLSGD 19 -#define R_X86_64_TLSLD 20 -#define R_X86_64_DTPOFF32 21 -#define R_X86_64_GOTTPOFF 22 -#define R_X86_64_TPOFF32 23 -#define R_X86_64_PC64 24 -#define R_X86_64_GOTOFF64 25 -#define R_X86_64_GOTPC32 26 -#define R_X86_64_GOT64 27 -#define R_X86_64_GOTPCREL64 28 -#define R_X86_64_GOTPC64 29 -#define R_X86_64_GOTPLT64 30 -#define R_X86_64_PLTOFF64 31 -#define R_X86_64_SIZE32 32 -#define R_X86_64_SIZE64 33 -#define R_X86_64_GOTPC32_TLSDESC 34 -#define R_X86_64_TLSDESC_CALL 35 -#define R_X86_64_TLSDESC 36 -#define R_X86_64_IRELATIVE 37 -#define R_X86_64_RELATIVE64 38 -#define R_X86_64_GOTPCRELX 41 /* 6 bytes */ -#define R_X86_64_REX_GOTPCRELX 42 /* 7 bytes */ -#define R_X86_64_NUM 43 - -#define STB_LOCAL 0 -#define STB_GLOBAL 1 -#define STB_WEAK 2 -#define STB_NUM 3 -#define STB_LOOS 10 -#define STB_GNU_UNIQUE 10 -#define STB_HIOS 12 -#define STB_LOPROC 13 -#define STB_HIPROC 15 - -#define STT_NOTYPE 0 -#define STT_OBJECT 1 -#define STT_FUNC 2 -#define STT_SECTION 3 -#define STT_FILE 4 -#define STT_COMMON 5 -#define STT_TLS 6 -#define STT_NUM 7 -#define STT_LOOS 10 -#define STT_GNU_IFUNC 10 -#define STT_HIOS 12 -#define STT_LOPROC 13 -#define STT_HIPROC 15 - -#define STV_DEFAULT 0 -#define STV_INTERNAL 1 -#define STV_HIDDEN 2 -#define STV_PROTECTED 3 - -#define SHN_UNDEF 0 -#define SHN_LORESERVE 0xff00 -#define SHN_LOPROC 0xff00 -#define SHN_BEFORE 0xff00 -#define SHN_AFTER 0xff01 -#define SHN_HIPROC 0xff1f -#define SHN_LOOS 0xff20 -#define SHN_HIOS 0xff3f -#define SHN_ABS 0xfff1 -#define SHN_COMMON 0xfff2 -#define SHN_XINDEX 0xffff -#define SHN_HIRESERVE 0xffff - -#define SHF_WRITE (1 << 0) -#define SHF_ALLOC (1 << 1) -#define SHF_EXECINSTR (1 << 2) -#define SHF_MERGE (1 << 4) -#define SHF_STRINGS (1 << 5) -#define SHF_INFO_LINK (1 << 6) -#define SHF_LINK_ORDER (1 << 7) -#define SHF_OS_NONCONFORMING (1 << 8) -#define SHF_GROUP (1 << 9) -#define SHF_TLS (1 << 10) -#define SHF_COMPRESSED (1 << 11) -#define SHF_MASKOS 0x0ff00000 -#define SHF_MASKPROC 0xf0000000 -#define SHF_ORDERED (1 << 30) -#define SHF_EXCLUDE (1U << 31) - -#define ELFCOMPRESS_ZLIB 1 -#define ELFCOMPRESS_LOOS 0x60000000 -#define ELFCOMPRESS_HIOS 0x6fffffff -#define ELFCOMPRESS_LOPROC 0x70000000 -#define ELFCOMPRESS_HIPROC 0x7fffffff - -#define SHT_NULL 0 -#define SHT_PROGBITS 1 -#define SHT_SYMTAB 2 -#define SHT_STRTAB 3 -#define SHT_RELA 4 -#define SHT_HASH 5 -#define SHT_DYNAMIC 6 -#define SHT_NOTE 7 -#define SHT_NOBITS 8 -#define SHT_REL 9 -#define SHT_SHLIB 10 -#define SHT_DYNSYM 11 -#define SHT_INIT_ARRAY 14 -#define SHT_FINI_ARRAY 15 -#define SHT_PREINIT_ARRAY 16 -#define SHT_GROUP 17 -#define SHT_SYMTAB_SHNDX 18 -#define SHT_NUM 19 -#define SHT_LOOS 0x60000000 -#define SHT_GNU_ATTRIBUTES 0x6ffffff5 -#define SHT_GNU_HASH 0x6ffffff6 -#define SHT_GNU_LIBLIST 0x6ffffff7 -#define SHT_CHECKSUM 0x6ffffff8 -#define SHT_LOSUNW 0x6ffffffa -#define SHT_SUNW_move 0x6ffffffa -#define SHT_SUNW_COMDAT 0x6ffffffb -#define SHT_SUNW_syminfo 0x6ffffffc -#define SHT_GNU_verdef 0x6ffffffd -#define SHT_GNU_verneed 0x6ffffffe -#define SHT_GNU_versym 0x6fffffff -#define SHT_HISUNW 0x6fffffff -#define SHT_HIOS 0x6fffffff -#define SHT_LOPROC 0x70000000 -#define SHT_HIPROC 0x7fffffff -#define SHT_LOUSER 0x80000000 -#define SHT_HIUSER 0x8fffffff - -#define DT_NULL 0 -#define DT_NEEDED 1 -#define DT_PLTRELSZ 2 -#define DT_PLTGOT 3 -#define DT_HASH 4 -#define DT_STRTAB 5 -#define DT_SYMTAB 6 -#define DT_RELA 7 -#define DT_RELASZ 8 -#define DT_RELAENT 9 -#define DT_STRSZ 10 -#define DT_SYMENT 11 -#define DT_INIT 12 -#define DT_FINI 13 -#define DT_SONAME 14 -#define DT_RPATH 15 -#define DT_SYMBOLIC 16 -#define DT_REL 17 -#define DT_RELSZ 18 -#define DT_RELENT 19 -#define DT_PLTREL 20 -#define DT_DEBUG 21 -#define DT_TEXTREL 22 -#define DT_JMPREL 23 -#define DT_BIND_NOW 24 -#define DT_INIT_ARRAY 25 -#define DT_FINI_ARRAY 26 -#define DT_INIT_ARRAYSZ 27 -#define DT_FINI_ARRAYSZ 28 -#define DT_RUNPATH 29 -#define DT_FLAGS 30 -#define DT_ENCODING 32 -#define DT_PREINIT_ARRAY 32 -#define DT_PREINIT_ARRAYSZ 33 -#define DT_SYMTAB_SHNDX 34 -#define DT_NUM 35 -#define DT_LOOS 0x6000000d -#define DT_HIOS 0x6ffff000 -#define DT_LOPROC 0x70000000 -#define DT_HIPROC 0x7fffffff -#define DT_VALRNGLO 0x6ffffd00 -#define DT_GNU_PRELINKED 0x6ffffdf5 -#define DT_GNU_CONFLICTSZ 0x6ffffdf6 -#define DT_GNU_LIBLISTSZ 0x6ffffdf7 -#define DT_CHECKSUM 0x6ffffdf8 -#define DT_PLTPADSZ 0x6ffffdf9 -#define DT_MOVEENT 0x6ffffdfa -#define DT_MOVESZ 0x6ffffdfb -#define DT_FEATURE_1 0x6ffffdfc -#define DT_POSFLAG_1 0x6ffffdfd -#define DT_SYMINSZ 0x6ffffdfe -#define DT_SYMINENT 0x6ffffdff -#define DT_VALRNGHI 0x6ffffdff -#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) -#define DT_VALNUM 12 -#define DT_ADDRRNGLO 0x6ffffe00 -#define DT_GNU_HASH 0x6ffffef5 -#define DT_TLSDESC_PLT 0x6ffffef6 -#define DT_TLSDESC_GOT 0x6ffffef7 -#define DT_GNU_CONFLICT 0x6ffffef8 -#define DT_GNU_LIBLIST 0x6ffffef9 -#define DT_CONFIG 0x6ffffefa -#define DT_DEPAUDIT 0x6ffffefb -#define DT_AUDIT 0x6ffffefc -#define DT_PLTPAD 0x6ffffefd -#define DT_MOVETAB 0x6ffffefe -#define DT_SYMINFO 0x6ffffeff -#define DT_ADDRRNGHI 0x6ffffeff -#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) -#define DT_ADDRNUM 11 -#define DT_VERSYM 0x6ffffff0 -#define DT_RELACOUNT 0x6ffffff9 -#define DT_RELCOUNT 0x6ffffffa -#define DT_FLAGS_1 0x6ffffffb -#define DT_VERDEF 0x6ffffffc -#define DT_VERDEFNUM 0x6ffffffd -#define DT_VERNEED 0x6ffffffe -#define DT_VERNEEDNUM 0x6fffffff -#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) -#define DT_VERSIONTAGNUM 16 -#define DT_AUXILIARY 0x7ffffffd -#define DT_FILTER 0x7fffffff -#define DT_EXTRATAGIDX(tag) ((Elf32_Word) - ((Elf32_Sword)(tag) << 1 >> 1) - 1) -#define DT_EXTRANUM 3 - -#define VER_NEED_NONE 0 -#define VER_NEED_CURRENT 1 -#define VER_NEED_NUM 2 -#define VER_FLG_WEAK 0x2 - -#define ELF_NOTE_SOLARIS "SUNW Solaris" -#define ELF_NOTE_GNU "GNU" -#define ELF_NOTE_PAGESIZE_HINT 1 -#define ELF_NOTE_ABI NT_GNU_ABI_TAG -#define ELF_NOTE_OS_LINUX 0 -#define ELF_NOTE_OS_GNU 1 -#define ELF_NOTE_OS_SOLARIS2 2 -#define ELF_NOTE_OS_FREEBSD 3 - -#define NT_GNU_ABI_TAG 1 -#define NT_GNU_BUILD_ID 3 -#define NT_GNU_GOLD_VERSION 4 - -#define EF_CPU32 0x00810000 - -#define DF_ORIGIN 0x00000001 -#define DF_SYMBOLIC 0x00000002 -#define DF_TEXTREL 0x00000004 -#define DF_BIND_NOW 0x00000008 -#define DF_STATIC_TLS 0x00000010 -#define DF_1_NOW 0x00000001 -#define DF_1_GLOBAL 0x00000002 -#define DF_1_GROUP 0x00000004 -#define DF_1_NODELETE 0x00000008 -#define DF_1_LOADFLTR 0x00000010 -#define DF_1_INITFIRST 0x00000020 -#define DF_1_NOOPEN 0x00000040 -#define DF_1_ORIGIN 0x00000080 -#define DF_1_DIRECT 0x00000100 -#define DF_1_TRANS 0x00000200 -#define DF_1_INTERPOSE 0x00000400 -#define DF_1_NODEFLIB 0x00000800 -#define DF_1_NODUMP 0x00001000 -#define DF_1_CONFALT 0x00002000 -#define DF_1_ENDFILTEE 0x00004000 -#define DF_1_DISPRELDNE 0x00008000 -#define DF_1_DISPRELPND 0x00010000 -#define DF_1_NODIRECT 0x00020000 -#define DF_1_IGNMULDEF 0x00040000 -#define DF_1_NOKSYMS 0x00080000 -#define DF_1_NOHDR 0x00100000 -#define DF_1_EDITED 0x00200000 -#define DF_1_NORELOC 0x00400000 -#define DF_1_SYMINTPOSE 0x00800000 -#define DF_1_GLOBAUDIT 0x01000000 -#define DF_1_SINGLETON 0x02000000 -#define DF_1_STUB 0x04000000 -#define DF_1_PIE 0x08000000 -#define DTF_1_PARINIT 0x00000001 -#define DTF_1_CONFEXP 0x00000002 -#define DF_P1_LAZYLOAD 0x00000001 -#define DF_P1_GROUPPERM 0x00000002 - -#define ELF64_ST_BIND(val) (((unsigned char)(val)) >> 4) -#define ELF64_ST_TYPE(val) ((val)&0xf) -#define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type)&0xf)) -#define ELF64_ST_VISIBILITY(o) ((o)&0x03) - -#define ELF64_R_SYM(i) ((i) >> 32) -#define ELF64_R_TYPE(i) ((i)&0xffffffff) -#define ELF64_R_INFO(sym, type) ((((Elf64_Xword)(sym)) << 32) + (type)) - -#define ELF64_M_SYM(info) ((info) >> 8) -#define ELF64_M_SIZE(info) ((unsigned char)(info)) -#define ELF64_M_INFO(sym, size) (((sym) << 8) + (unsigned char)(size)) - -#define NT_PRSTATUS 1 -#define NT_PRFPREG 2 -#define NT_FPREGSET 2 -#define NT_PRPSINFO 3 -#define NT_PRXREG 4 -#define NT_TASKSTRUCT 4 -#define NT_PLATFORM 5 -#define NT_AUXV 6 -#define NT_GWINDOWS 7 -#define NT_ASRS 8 -#define NT_PSTATUS 10 -#define NT_PSINFO 13 -#define NT_PRCRED 14 -#define NT_UTSNAME 15 -#define NT_LWPSTATUS 16 -#define NT_LWPSINFO 17 -#define NT_PRFPXREG 20 -#define NT_SIGINFO 0x53494749 -#define NT_FILE 0x46494c45 -#define NT_PRXFPREG 0x46e62b7f -#define NT_PPC_VMX 0x100 -#define NT_PPC_SPE 0x101 -#define NT_PPC_VSX 0x102 -#define NT_PPC_TAR 0x103 -#define NT_PPC_PPR 0x104 -#define NT_PPC_DSCR 0x105 -#define NT_PPC_EBB 0x106 -#define NT_PPC_PMU 0x107 -#define NT_PPC_TM_CGPR 0x108 -#define NT_PPC_TM_CFPR 0x109 -#define NT_PPC_TM_CVMX 0x10a -#define NT_PPC_TM_CVSX 0x10b -#define NT_PPC_TM_SPR 0x10c -#define NT_PPC_TM_CTAR 0x10d -#define NT_PPC_TM_CPPR 0x10e -#define NT_PPC_TM_CDSCR 0x10f -#define NT_X86_XSTATE 0x202 -#define NT_S390_HIGH_GPRS 0x300 -#define NT_S390_TIMER 0x301 -#define NT_S390_TODCMP 0x302 -#define NT_S390_TODPREG 0x303 -#define NT_S390_CTRS 0x304 -#define NT_S390_PREFIX 0x305 -#define NT_S390_LAST_BREAK 0x306 -#define NT_S390_SYSTEM_CALL 0x307 -#define NT_S390_TDB 0x308 -#define NT_S390_VXRS_LOW 0x309 -#define NT_S390_VXRS_HIGH 0x30a -#define NT_S390_GS_CB 0x30b -#define NT_S390_GS_BC 0x30c -#define NT_S390_RI_CB 0x30d -#define NT_ARM_VFP 0x400 -#define NT_ARM_TLS 0x401 -#define NT_ARM_HW_BREAK 0x402 -#define NT_ARM_HW_WATCH 0x403 -#define NT_ARM_SYSTEM_CALL 0x404 -#define NT_ARM_SVE 0x405 -#define NT_ARM_PAC_MASK 0x406 -#define NT_METAG_CBUF 0x500 -#define NT_METAG_RPIPE 0x501 -#define NT_METAG_TLS 0x502 -#define NT_ARC_V2 0x600 -#define NT_VMCOREDD 0x700 -#define NT_VERSION 1 - -#define VER_DEF_NONE 0 -#define VER_DEF_CURRENT 1 -#define VER_DEF_NUM 2 -#define VER_FLG_BASE 0x1 -#define VER_FLG_WEAK 0x2 -#define VER_NDX_LOCAL 0 -#define VER_NDX_GLOBAL 1 -#define VER_NDX_LORESERVE 0xff00 -#define VER_NDX_ELIMINATE 0xff01 - -#define LL_NONE 0 -#define LL_EXACT_MATCH (1 << 0) -#define LL_IGNORE_INT_VER (1 << 1) -#define LL_REQUIRE_MINOR (1 << 2) -#define LL_EXPORTS (1 << 3) -#define LL_DELAY_LOAD (1 << 4) -#define LL_DELTA (1 << 5) - -#define R_BPF_NONE 0 -#define R_BPF_MAP_FD 1 - - - -/*!BEGIN libc/elf/elf.h */ - -#define COSMOPOLITAN_LIBC_ELF_H_ - - -/*!BEGIN libc/elf/struct/ehdr.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_EHDR_H_ - - -/*!BEGIN libc/elf/scalar.h */ - -#define COSMOPOLITAN_LIBC_ELF_SCALAR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define Elf64_Half uint16_t -#define Elf64_Word uint32_t -#define Elf64_Sword int32_t -#define Elf64_Xword uint64_t -#define Elf64_Sxword int64_t -#define Elf64_Addr uint64_t -#define Elf64_Off uint64_t -#define Elf64_Section uint16_t -#define Elf64_Versym Elf64_Half - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define EI_NIDENT 16 - -typedef struct Elf64_Ehdr { - unsigned char e_ident[EI_NIDENT]; - Elf64_Half e_type; - Elf64_Half e_machine; - Elf64_Word e_version; - Elf64_Addr e_entry; - Elf64_Off e_phoff; - Elf64_Off e_shoff; - Elf64_Word e_flags; - Elf64_Half e_ehsize; - Elf64_Half e_phentsize; - Elf64_Half e_phnum; - Elf64_Half e_shentsize; - Elf64_Half e_shnum; - Elf64_Half e_shstrndx; -} Elf64_Ehdr; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/phdr.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_PHDR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Phdr { - Elf64_Word p_type; - Elf64_Word p_flags; - Elf64_Off p_offset; - Elf64_Addr p_vaddr; - Elf64_Addr p_paddr; - Elf64_Xword p_filesz; - Elf64_Xword p_memsz; - Elf64_Xword p_align; -} Elf64_Phdr; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/shdr.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_SHDR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * Section header. - * @see https://docs.oracle.com/cd/E19683-01/816-1386/chapter6-94076/index.html - */ -typedef struct Elf64_Shdr { - Elf64_Word sh_name; - Elf64_Word sh_type; /* SHT_{PROGBITS,NOBITS,STRTAB,SYMTAB,RELA,...} */ - Elf64_Xword sh_flags; /* SHF_{WRITE,ALLOC,EXECINSTR,MERGE,STRINGS,...} */ - Elf64_Addr sh_addr; - Elf64_Off sh_offset; - Elf64_Xword sh_size; - /* - * If SHT_RELA: Index of section of associated symbol table. - * If SHT_SYMTAB: Index of section of associated string table. - */ - Elf64_Word sh_link; - /* - * If SHT_RELA: Index of section to which relocations apply. - * If SHT_SYMTAB: One greater than symbol table index of last local symbol. - */ - Elf64_Word sh_info; - Elf64_Xword sh_addralign; - Elf64_Xword sh_entsize; -} Elf64_Shdr; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/sym.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_SYM_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Sym { - Elf64_Word st_name; - /* ELF64_ST_TYPE(st_info) → STT_{NOTYPE,OBJECT,FUNC,SECTION,FILE,COMMON,...} - * ELF64_ST_BIND(st_info) → STB_{LOCAL,GLOBAL,WEAK,...} */ - uint8_t st_info; - /* STV_{DEFAULT,INTERNAL,HIDDEN,PROTECTED} */ - uint8_t st_other; - /* SHN_UNDEF,
, SHN_ABS, SHN_COMMON, etc. */ - Elf64_Section st_shndx; - Elf64_Addr st_value; - Elf64_Xword st_size; -} Elf64_Sym; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § executable & linkable format ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -char *GetElfStringTable(const Elf64_Ehdr *, size_t); -Elf64_Sym *GetElfSymbolTable(const Elf64_Ehdr *, size_t, Elf64_Xword *); -bool IsElf64Binary(const Elf64_Ehdr *, size_t); -void CheckElfAddress(const Elf64_Ehdr *, size_t, intptr_t, size_t); -bool IsElfSymbolContent(const Elf64_Sym *); -Elf64_Phdr *GetElfSegmentHeaderAddress(const Elf64_Ehdr *, size_t, unsigned); -Elf64_Shdr *GetElfSectionHeaderAddress(const Elf64_Ehdr *, size_t, Elf64_Half); -void *GetElfSectionAddress(const Elf64_Ehdr *, size_t, const Elf64_Shdr *); -char *GetElfSectionNameStringTable(const Elf64_Ehdr *, size_t); -void GetElfVirtualAddressRange(const Elf64_Ehdr *, size_t, intptr_t *, - intptr_t *); -char *GetElfString(const Elf64_Ehdr *, size_t, const char *, Elf64_Word); -const char *GetElfSectionName(const Elf64_Ehdr *, size_t, Elf64_Shdr *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/auxv.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_AUXV_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_auxv_t { - uint64_t a_type; - union { - uint64_t a_val; - } a_un; -} Elf64_auxv_t; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/chdr.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_CHDR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Chdr { - Elf64_Word ch_type; - Elf64_Word ch_reserved; - Elf64_Xword ch_size; - Elf64_Xword ch_addralign; -} Elf64_Chdr; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/dyn.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_DYN_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Dyn { - Elf64_Sxword d_tag; - union { - Elf64_Xword d_val; - Elf64_Addr d_ptr; - } d_un; -} Elf64_Dyn; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/lib.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_LIB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Lib { - Elf64_Word l_name; - Elf64_Word l_time_stamp; - Elf64_Word l_checksum; - Elf64_Word l_version; - Elf64_Word l_flags; -} Elf64_Lib; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/move.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_MOVE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Move { - Elf64_Xword m_value; - Elf64_Xword m_info; - Elf64_Xword m_poffset; - Elf64_Half m_repeat; - Elf64_Half m_stride; -} Elf64_Move; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/nhdr.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_NHDR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Nhdr { - Elf64_Word n_namesz; - Elf64_Word n_descsz; - Elf64_Word n_type; -} Elf64_Nhdr; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/rel.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_REL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Rel { - Elf64_Addr r_offset; - Elf64_Xword r_info; /** @see ELF64_R_{SYM,SIZE,INFO} */ -} Elf64_Rel; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/rela.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_RELA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Rela { - /*u64*/ Elf64_Addr r_offset; - /* - * ELF64_R_SYM(r_info) → sym - * ELF64_R_TYPE(r_info) → R_X86_64_{64,PC32,GOTPCRELX,...} - * ELF64_R_INFO(sym, type) → r_info - */ - /*u64*/ Elf64_Xword r_info; /* ELF64_R_{SYM,SIZE,INFO} */ - /*i64*/ Elf64_Sxword r_addend; -} Elf64_Rela; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/syminfo.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_SYMINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Syminfo { - Elf64_Half si_boundto; - Elf64_Half si_flags; -} Elf64_Syminfo; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/verdaux.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERDAUX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Verdaux { - Elf64_Word vda_name; - Elf64_Word vda_next; -} Elf64_Verdaux; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/verdef.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERDEF_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Verdef { - Elf64_Half vd_version; - Elf64_Half vd_flags; - Elf64_Half vd_ndx; - Elf64_Half vd_cnt; - Elf64_Word vd_hash; - Elf64_Word vd_aux; - Elf64_Word vd_next; -} Elf64_Verdef; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/vernaux.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERNAUX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Vernaux { - Elf64_Word vna_hash; - Elf64_Half vna_flags; - Elf64_Half vna_other; - Elf64_Word vna_name; - Elf64_Word vna_next; -} Elf64_Vernaux; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/elf/struct/verneed.h */ - -#define COSMOPOLITAN_LIBC_ELF_STRUCT_VERNEED_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef struct Elf64_Verneed { - Elf64_Half vn_version; - Elf64_Half vn_cnt; - Elf64_Word vn_file; - Elf64_Word vn_aux; - Elf64_Word vn_next; -} Elf64_Verneed; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/fmt/conv.h */ - -#define COSMOPOLITAN_LIBC_FMT_CONV_H_ - - -/*!BEGIN libc/nt/struct/filetime.h */ - -#define COSMOPOLITAN_LIBC_NT_FILETIME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileTime { - uint32_t dwLowDateTime; - uint32_t dwHighDateTime; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § conversion ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define MODERNITYSECONDS 11644473600ull -#define HECTONANOSECONDS 10000000ull - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int abs(int) libcesque pureconst; -long labs(long) libcesque pureconst; -long long llabs(long long) libcesque pureconst; -int llog10(unsigned long) libcesque pureconst; -int atoi(const char *) paramsnonnull() libcesque; -long atol(const char *) paramsnonnull() libcesque; -long long atoll(const char *) paramsnonnull() libcesque; -unsigned long strtoul(const char *, char **, int) paramsnonnull((1)); -long long strtoll(const char *, char **, int) paramsnonnull((1)); -unsigned long long strtoull(const char *, char **, int) paramsnonnull((1)); -long long strtonum(const char *, long long, long long, const char **); -intmax_t div10(intmax_t, unsigned *) hidden; -intmax_t strtoimax(const char *, char **, int) paramsnonnull((1)); -uintmax_t strtoumax(const char *, char **, int) paramsnonnull((1)); -intmax_t wcstoimax(const wchar_t *, wchar_t **, int); -long wcstol(const wchar_t *, wchar_t **, int); -long strtol(const char *, char **, int) paramsnonnull((1)) libcesque; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § conversion » time ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int64_t DosDateTimeToUnix(unsigned, unsigned); -struct timespec FileTimeToTimeSpec(struct NtFileTime); -struct NtFileTime TimeSpecToFileTime(struct timespec); -struct NtFileTime TimeToFileTime(int64_t) nothrow pureconst; -int64_t filetimetotime(struct NtFileTime) nothrow pureconst; -void FileTimeToTimeVal(struct timeval *, struct NtFileTime) nothrow; -struct NtFileTime TimeValToFileTime(const struct timeval *) nosideeffect; -long convertmicros(const struct timeval *, long) paramsnonnull() nosideeffect; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § conversion » manipulation ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -char *dirname(char *); -char *basename(const char *) nosideeffect; -char *basename_n(const char *, size_t) nosideeffect; -bool isabspath(const char *) paramsnonnull() nosideeffect; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § conversion » computation ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -typedef struct { - int quot; - int rem; -} div_t; - -typedef struct { - long int quot; - long int rem; -} ldiv_t; - -typedef struct { - long long int quot; - long long int rem; -} lldiv_t; - -typedef struct { - intmax_t quot; - intmax_t rem; -} imaxdiv_t; - -div_t div(int, int) pureconst; -ldiv_t ldiv(long, long) pureconst; -lldiv_t lldiv(long long, long long) pureconst; -imaxdiv_t imaxdiv(intmax_t, intmax_t) pureconst; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § conversion » optimizations ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if __STDC_VERSION__ + 0 >= 199901L -#define div(num, den) ((div_t){(num) / (den), (num) % (den)}) -#define ldiv(num, den) ((ldiv_t){(num) / (den), (num) % (den)}) -#define lldiv(num, den) ((lldiv_t){(num) / (den), (num) % (den)}) -#endif - -#ifndef __STRICT_ANSI__ -intmax_t __imaxabs(intmax_t) libcesque pureconst; -#define imaxabs(x) __imaxabs(x) -#endif /* !ANSI */ - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/fmt/fmt.h */ - -#define COSMOPOLITAN_LIBC_FMT_FMT_H_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § string formatting ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if __SIZEOF_POINTER__ == 8 -#define POINTER_XDIGITS 12 /* math.log(2**48-1,16) */ -#else -#define POINTER_XDIGITS 8 -#endif - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int snprintf(char *, size_t, const char *, ...) printfesque(3) - paramsnonnull((3)) nothrow nocallback; -int vsnprintf(char *, size_t, const char *, va_list) - paramsnonnull((3)) nothrow nocallback; -int sprintf(char *, const char *, ...) printfesque(2) - paramsnonnull((2)) nothrow nocallback frownedupon(snprintf); -int vsprintf(char *, const char *, va_list) - paramsnonnull((2)) nothrow nocallback frownedupon(vsnprintf); -int sscanf(const char *, const char *, ...) scanfesque(2); -int vsscanf(const char *, const char *, va_list); -int vcscanf(int (*)(void *), int (*)(int, void *), void *, const char *, - va_list); -int strerror_r(int, char *, size_t) nothrow nocallback; -int __fmt(void *, void *, const char *, va_list) hidden; -char *itoa(int, char *, int) compatfn; -char *fcvt(double, int, int *, int *); -char *ecvt(double, int, int *, int *); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § string formatting » optimizations ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define sprintf(BUF, FMT, ...) (sprintf)(BUF, PFLINK(FMT), ##__VA_ARGS__) -#define vsprintf(BUF, FMT, VA) (vsprintf)(BUF, PFLINK(FMT), VA) -#define snprintf(B, Z, F, ...) (snprintf)(B, Z, PFLINK(F), ##__VA_ARGS__) -#define vsnprintf(BUF, SIZE, FMT, VA) (vsnprintf)(BUF, SIZE, PFLINK(FMT), VA) -#define sscanf(STR, FMT, ...) (sscanf)(STR, SFLINK(FMT), ##__VA_ARGS__) -#define vsscanf(STR, FMT, VA) (vsscanf)(STR, SFLINK(FMT), VA) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/fmt/itoa.h */ - -#define COSMOPOLITAN_LIBC_FMT_ITOA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § integer conversion ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - FASTEST + TINY - - - uint64toarray_radix10(0x31337, a) l: 68 (20ns) m: 112 (33ns) - - int64toarray_radix10(0x31337, a) l: 69 (20ns) m: 134 (39ns) - - FAST + AWESOME - - - snprintf(a, sizeof(a), "%d", 0x31337) l: 199 (58ns) m: 421 (123ns) - - uint128toarray_radix10(0x31337, a) l: 93 (27ns) m: 141 (41ns) - - int128toarray_radix10(0x31337, a) l: 96 (28ns) m: 173 (51ns) */ - -size_t int64toarray_radix10(int64_t, char[hasatleast 21]); -size_t uint64toarray_radix10(uint64_t, char[hasatleast 21]); -size_t uint64toarray_radix16(uint64_t, char[hasatleast 17]); -size_t uint64toarray_fixed16(uint64_t, char[hasatleast 17], uint8_t); -size_t uint64toarray_radix8(uint64_t, char[hasatleast 24]); - -#ifndef __STRICT_ANSI__ -size_t int128toarray_radix10(int128_t, char *); -size_t uint128toarray_radix10(uint128_t, char *); -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/fmt/leb128.h */ - -#define COSMOPOLITAN_LIBC_FMT_LEB128_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#ifndef __STRICT_ANSI__ -int sleb128(const void *, size_t, int128_t); -int unsleb128(const void *, size_t, int128_t *); -#endif /* ANSI */ - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/macros.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_MACROS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define INTRIN_COMMUTATIVE "%" -#define INTRIN_NONCOMMUTATIVE - -#if defined(__x86_64__) && !defined(__STRICT_ANSI__) - -typedef char __intrin_xmm_t _Vector_size(16) forcealign(16) mayalias; - -#define INTRIN_SSEVEX_X_X_X_(PURE, ISA, OP, FLAGS, A, B, C) \ - do { \ - if (!IsModeDbg() && X86_HAVE(ISA)) { \ - __intrin_xmm_t *Xmm0 = (void *)(A); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B); \ - const __intrin_xmm_t *Xmm2 = (const __intrin_xmm_t *)(C); \ - if (!X86_NEED(AVX)) { \ - asm(OP "\t%1,%0" : "=x"(*Xmm0) : FLAGS "x"(*Xmm2), "0"(*Xmm1)); \ - } else { \ - asm("v" OP "\t%2,%1,%0" : "=x"(*Xmm0) : FLAGS "x"(*Xmm1), "x"(*Xmm2)); \ - } \ - } else { \ - PURE(A, B, C); \ - } \ - } while (0) - -#define INTRIN_SSEVEX_X_X_I_(PURE, ISA, OP, A, B, I) \ - do { \ - if (!IsModeDbg() && X86_HAVE(ISA)) { \ - __intrin_xmm_t *Xmm0 = (void *)(A); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B); \ - if (!X86_NEED(AVX)) { \ - asm(OP "\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I)); \ - } else { \ - asm("v" OP "\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I)); \ - } \ - } else { \ - PURE(A, B, I); \ - } \ - } while (0) - -#define INTRIN_SSEVEX_X_X_(PURE, ISA, OP, A, B) \ - do { \ - if (!IsModeDbg() && X86_HAVE(ISA)) { \ - __intrin_xmm_t *Xmm0 = (void *)(A); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B); \ - if (!X86_NEED(AVX)) { \ - asm(OP "\t%1,%0" : "=x"(*Xmm0) : "0"(*Xmm1)); \ - } else { \ - asm("v" OP "\t%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1)); \ - } \ - } else { \ - PURE(A, B); \ - } \ - } while (0) - -#define INTRIN_SSEVEX_X_I_(PURE, ISA, OP, A, B, I) \ - do { \ - if (!IsModeDbg() && X86_HAVE(ISA)) { \ - __intrin_xmm_t *Xmm0 = (void *)(A); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B); \ - if (!X86_NEED(AVX)) { \ - asm(OP "\t%1,%0" : "=x"(*Xmm0) : "i"(I), "0"(*Xmm1)); \ - } else { \ - asm("v" OP "\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I)); \ - } \ - } else { \ - PURE(A, B, I); \ - } \ - } while (0) - -#else -#define INTRIN_SSEVEX_X_X_X_(PURE, ISA, OP, FLAGS, A, B, C) PURE(A, B, C) -#define INTRIN_SSEVEX_X_X_I_(PURE, ISA, OP, A, B, I) PURE(A, B, I) -#define INTRIN_SSEVEX_X_I_(PURE, ISA, OP, A, B, I) PURE(A, B, I) -#endif /* X86 && !ANSI */ - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/mpsadbw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_MPSADBW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void mpsadbw(uint16_t[8], const uint8_t[16], const uint8_t[16], uint8_t); - -#ifndef __STRICT_ANSI__ -__intrin_xmm_t __mpsadbws(__intrin_xmm_t, __intrin_xmm_t); -#define mpsadbw(C, B, A, I) \ - do { \ - if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSE4_1), \ - 1)) { \ - __intrin_xmm_t *Xmm0 = (void *)(C); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B); \ - const __intrin_xmm_t *Xmm2 = (const __intrin_xmm_t *)(A); \ - if (__builtin_constant_p(I)) { \ - if (!X86_NEED(AVX)) { \ - asm("mpsadbw\t%2,%1,%0" \ - : "=x"(*Xmm0) \ - : "x"(*Xmm2), "i"(I), "0"(*Xmm1)); \ - } else { \ - asm("vmpsadbw\t%3,%2,%1,%0" \ - : "=x"(*Xmm0) \ - : "x"(*Xmm1), "x"(*Xmm2), "i"(I)); \ - } \ - } else { \ - unsigned long Vimm = (I); \ - typeof(__mpsadbws) *Fn; \ - Fn = (typeof(__mpsadbws) *)((uintptr_t)&__mpsadbws + (Vimm & 7) * 8); \ - *Xmm0 = Fn(*Xmm1, *Xmm2); \ - } \ - } else { \ - mpsadbw(C, B, A, I); \ - } \ - } while (0) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pabsb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PABSB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pabsb(uint8_t[16], const int8_t[16]); - -#define pabsb(A, B) INTRIN_SSEVEX_X_X_(pabsb, SSSE3, "pabsb", A, B) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pabsd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PABSD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pabsd(uint32_t[4], const int32_t[4]); - -#define pabsd(A, B) INTRIN_SSEVEX_X_X_(pabsd, SSSE3, "pabsd", A, B) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pabsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PABSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pabsw(uint16_t[8], const int16_t[8]); - -#define pabsw(A, B) INTRIN_SSEVEX_X_X_(pabsw, SSSE3, "pabsw", A, B) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/packssdw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PACKSSDW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void packssdw(int16_t[8], const int32_t[4], const int32_t[4]); - -#define packssdw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(packssdw, SSE2, "packssdw", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/packsswb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PACKSSWB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void packsswb(int8_t[16], const int16_t[8], const int16_t[8]); - -#define packsswb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(packsswb, SSE2, "packsswb", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/packusdw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PACKUSDW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void packusdw(uint16_t[8], const int32_t[4], const int32_t[4]); - -#define packusdw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(packusdw, SSE4_1, "packusdw", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/packuswb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PACKUSWB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void packuswb(uint8_t[16], const int16_t[8], const int16_t[8]); - -#define packuswb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(packuswb, SSE2, "packuswb", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddb(int8_t[16], const int8_t[16], const int8_t[16]); - -#define paddb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddb, SSE2, "paddb", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddd(uint32_t[4], const uint32_t[4], const uint32_t[4]); - -#define paddd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddd, SSE2, "paddd", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddq(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define paddq(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddq, SSE2, "paddq", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddsb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDSB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddsb(int8_t[16], const int8_t[16], const int8_t[16]); - -#define paddsb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddsb, SSE2, "paddsb", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddsw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define paddsw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddsw, SSE2, "paddsw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddusb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDUSB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddusb(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define paddusb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddusb, SSE2, "paddusb", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddusw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDUSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddusw(uint16_t[8], const uint16_t[8], const uint16_t[8]); - -#define paddusw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddusw, SSE2, "paddusw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/paddw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PADDW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void paddw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define paddw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(paddw, SSE2, "paddw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/palignr.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PALIGNR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void palignr(void *, const void *, const void *, unsigned long); - -#if !defined(__STRICT_ANSI__) && !defined(__chibicc__) -__intrin_xmm_t __palignrs(__intrin_xmm_t, __intrin_xmm_t); -#define palignr(C, B, A, I) \ - do { \ - if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSSE3), \ - 1)) { \ - __intrin_xmm_t *Xmm0 = (void *)(C); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(B); \ - const __intrin_xmm_t *Xmm2 = (const __intrin_xmm_t *)(A); \ - if (__builtin_constant_p(I)) { \ - if (!X86_NEED(AVX)) { \ - asm("palignr\t%2,%1,%0" \ - : "=x"(*Xmm0) \ - : "x"(*Xmm2), "i"(I), "0"(*Xmm1)); \ - } else { \ - asm("vpalignr\t%3,%2,%1,%0" \ - : "=x"(*Xmm0) \ - : "x"(*Xmm1), "x"(*Xmm2), "i"(I)); \ - } \ - } else { \ - unsigned long Vimm = (I); \ - typeof(__palignrs) *Fn; \ - if (__builtin_expect(Vimm < 32, 1)) { \ - Fn = (typeof(__palignrs) *)((uintptr_t)&__palignrs + Vimm * 8); \ - *Xmm0 = Fn(*Xmm1, *Xmm2); \ - } else { \ - memset(Xmm0, 0, 16); \ - } \ - } \ - } else { \ - palignr(C, B, A, I); \ - } \ - } while (0) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pand.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PAND_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pand(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define pand(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pand, SSE2, "pand", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pandn.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PANDN_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pandn(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define pandn(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pandn, SSE2, "pandn", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pavgb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PAVGB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pavgb(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define pavgb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pavgb, SSE2, "pavgb", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pavgw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PAVGW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pavgw(uint16_t[8], const uint16_t[8], const uint16_t[8]); - -#define pavgw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pavgw, SSE2, "pavgw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pcmpeqb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PCMPEQB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pcmpeqb(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define pcmpeqb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pcmpeqb, SSE2, "pcmpeqb", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pcmpeqd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PCMPEQD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pcmpeqd(int32_t[4], const int32_t[4], const int32_t[4]); - -#define pcmpeqd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pcmpeqd, SSE2, "pcmpeqd", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pcmpeqw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PCMPEQW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pcmpeqw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define pcmpeqw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pcmpeqw, SSE2, "pcmpeqw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pcmpgtb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PCMPGTB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pcmpgtb(int8_t[16], const int8_t[16], const int8_t[16]); - -#define pcmpgtb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pcmpgtb, SSE2, "pcmpgtb", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pcmpgtd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PCMPGTD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pcmpgtd(int32_t[4], const int32_t[4], const int32_t[4]); - -#define pcmpgtd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pcmpgtd, SSE2, "pcmpgtd", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pcmpgtw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PCMPGTW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pcmpgtw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define pcmpgtw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pcmpgtw, SSE2, "pcmpgtw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/phaddd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PHADDD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void phaddd(uint32_t[4], const uint32_t[4], const uint32_t[4]); - -#define phaddd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(phaddd, SSSE3, "phaddd", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/phaddsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PHADDSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void phaddsw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define phaddsw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(phaddsw, SSSE3, "phaddsw", INTRIN_NONCOMMUTATIVE, A, B, \ - C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/phaddw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PHADDW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void phaddw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define phaddw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(phaddw, SSSE3, "phaddw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/phsubd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PHSUBD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void phsubd(uint32_t[4], const uint32_t[4], const uint32_t[4]); - -#define phsubd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(phsubd, SSSE3, "phsubd", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/phsubsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PHSUBSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void phsubsw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define phsubsw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(phsubsw, SSSE3, "phsubsw", INTRIN_NONCOMMUTATIVE, A, B, \ - C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/phsubw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PHSUBW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void phsubw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define phsubw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(phsubw, SSSE3, "phsubw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmaddubsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMADDUBSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmaddubsw(int16_t[8], const uint8_t[16], const int8_t[16]); - -#define pmaddubsw(W, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmaddubsw, SSSE3, "pmaddubsw", INTRIN_NONCOMMUTATIVE, \ - W, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmaddwd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMADDWD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmaddwd(int32_t[4], const int16_t[8], const int16_t[8]); - -#define pmaddwd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmaddwd, SSE2, "pmaddwd", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmaxsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMAXSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmaxsw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define pmaxsw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmaxsw, SSE2, "pmaxsw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmaxub.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMAXUB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmaxub(unsigned char[16], const unsigned char[16], - const unsigned char[16]); - -#define pmaxub(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmaxub, SSE2, "pmaxub", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pminsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMINSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pminsw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define pminsw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pminsw, SSE2, "pminsw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pminub.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMINUB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pminub(unsigned char[16], const unsigned char[16], - const unsigned char[16]); - -#define pminub(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pminub, SSE2, "pminub", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmovmskb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMOVMSKB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -uint32_t pmovmskb(const uint8_t[16]); - -#define pmovmskb(A) \ - ({ \ - uint32_t Mask; \ - if (!IsModeDbg() && X86_HAVE(SSE2)) { \ - const __intrin_xmm_t *Xmm = (const __intrin_xmm_t *)(A); \ - if (!X86_NEED(AVX)) { \ - asm("pmovmskb\t%1,%0" : "=r"(Mask) : "x"(*Xmm)); \ - } else { \ - asm("vpmovmskb\t%1,%0" : "=r"(Mask) : "x"(*Xmm)); \ - } \ - } else { \ - Mask = pmovmskb(A); \ - } \ - Mask; \ - }) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmulhrsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMULHRSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmulhrsw(int16_t a[8], const int16_t b[8], const int16_t c[8]); - -#define pmulhrsw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmulhrsw, SSSE3, "pmulhrsw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmulhuw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMULHUW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmulhuw(uint16_t[8], const uint16_t[8], const uint16_t[8]); - -#define pmulhuw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmulhuw, SSE2, "pmulhuw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmulhw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMULHW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmulhw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define pmulhw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmulhw, SSE2, "pmulhw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmulld.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMULLD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmulld(uint32_t[4], const uint32_t[4], const uint32_t[4]); - -#define pmulld(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmulld, SSE4_1, "pmulld", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmullw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMULLW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmullw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define pmullw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmullw, SSE2, "pmullw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pmuludq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PMULUDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pmuludq(uint64_t[2], const uint32_t[4], const uint32_t[4]); - -#define pmuludq(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pmuludq, SSE2, "pmuludq", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/por.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_POR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void por(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define por(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(por, SSE2, "por", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psadbw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSADBW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psadbw(uint64_t[2], const uint8_t[16], const uint8_t[16]); - -#define psadbw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psadbw, SSE2, "psadbw", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pshufb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSHUFB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pshufb(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define pshufb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pshufb, SSSE3, "pshufb", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pshufd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSHUFD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pshufd(int32_t[4], const int32_t[4], uint8_t); - -#define pshufd(A, B, I) INTRIN_SSEVEX_X_X_I_(pshufd, SSE2, "pshufd", A, B, I) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pshufhw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSHUFHW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pshufhw(int16_t[8], const int16_t[8], uint8_t); - -#define pshufhw(A, B, I) INTRIN_SSEVEX_X_X_I_(pshufhw, SSE2, "pshufhw", A, B, I) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pshuflw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSHUFLW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pshuflw(int16_t[8], const int16_t[8], uint8_t); - -#define pshuflw(A, B, I) INTRIN_SSEVEX_X_X_I_(pshuflw, SSE2, "pshuflw", A, B, I) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pshufw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSHUFW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pshufw(int16_t[4], const int16_t[4], uint8_t); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psignb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSIGNB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psignb(int8_t[16], const int8_t[16], const int8_t[16]); - -#define psignb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psignb, SSSE3, "psignb", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psignd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSIGND_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psignd(int32_t[4], const int32_t[4], const int32_t[4]); - -#define psignd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psignd, SSSE3, "psignd", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psignw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSIGNW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psignw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define psignw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psignw, SSSE3, "psignw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pslld.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSLLD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pslld(uint32_t[4], const uint32_t[4], unsigned char); -void pslldv(uint32_t[4], const uint32_t[4], const uint64_t[2]); - -#define pslld(A, B, I) INTRIN_SSEVEX_X_I_(pslld, SSE2, "pslld", A, B, I) -#define pslldv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pslldv, SSE2, "pslld", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pslldq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSLLDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pslldq(uint8_t[16], const uint8_t[16], unsigned long); - -#ifndef __STRICT_ANSI__ -__intrin_xmm_t __pslldqs(__intrin_xmm_t); -#define pslldq(B, A, I) \ - do { \ - if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSE2), \ - 1)) { \ - __intrin_xmm_t *Xmm0 = (void *)(B); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(A); \ - if (__builtin_constant_p(I)) { \ - if (!X86_NEED(AVX)) { \ - asm("pslldq\t%1,%0" : "=x"(*Xmm0) : "i"(I), "0"(*Xmm1)); \ - } else { \ - asm("vpslldq\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I)); \ - } \ - } else { \ - unsigned long Vimm = (I); \ - typeof(__pslldqs) *Fn; \ - if (Vimm > 16) Vimm = 16; \ - Fn = (typeof(__pslldqs) *)((uintptr_t)&__pslldqs + Vimm * 8); \ - *Xmm0 = Fn(*Xmm1); \ - } \ - } else { \ - pslldq(B, A, I); \ - } \ - } while (0) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psllq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSLLQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psllq(uint64_t[2], const uint64_t[2], unsigned char); -void psllqv(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define psllq(A, B, I) INTRIN_SSEVEX_X_I_(psllq, SSE2, "psllq", A, B, I) -#define psllqv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psllqv, SSE2, "psllq", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psllw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSLLW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psllw(uint16_t[8], const uint16_t[8], unsigned char); -void psllwv(uint16_t[8], const uint16_t[8], const uint64_t[2]); - -#define psllw(A, B, I) INTRIN_SSEVEX_X_I_(psllw, SSE2, "psllw", A, B, I) -#define psllwv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psllwv, SSE2, "psllw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psrad.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSRAD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psrad(int32_t[4], const int32_t[4], unsigned char); -void psradv(int32_t[4], const int32_t[4], const uint64_t[2]); - -#define psrad(A, B, I) INTRIN_SSEVEX_X_I_(psrad, SSE2, "psrad", A, B, I) -#define psradv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psradv, SSE2, "psrad", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psraw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSRAW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psraw(int16_t[8], const int16_t[8], unsigned char); -void psrawv(int16_t[8], const int16_t[8], const uint64_t[2]); - -#define psraw(A, B, I) INTRIN_SSEVEX_X_I_(psraw, SSE2, "psraw", A, B, I) -#define psrawv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psrawv, SSE2, "psraw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psrld.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSRLD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psrld(uint32_t[4], const uint32_t[4], unsigned char); -void psrldv(uint32_t[4], const uint32_t[4], const uint64_t[2]); - -#define psrld(A, B, I) INTRIN_SSEVEX_X_I_(psrld, SSE2, "psrld", A, B, I) -#define psrldv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psrldv, SSE2, "psrld", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psrldq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSRLDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psrldq(uint8_t[16], const uint8_t[16], unsigned long); - -#ifndef __STRICT_ANSI__ -__intrin_xmm_t __psrldqs(__intrin_xmm_t); -#define psrldq(B, A, I) \ - do { \ - if (__builtin_expect(!IsModeDbg() && X86_NEED(SSE) && X86_HAVE(SSE2), \ - 1)) { \ - __intrin_xmm_t *Xmm0 = (void *)(B); \ - const __intrin_xmm_t *Xmm1 = (const __intrin_xmm_t *)(A); \ - if (__builtin_constant_p(I)) { \ - if (!X86_NEED(AVX)) { \ - asm("psrldq\t%1,%0" : "=x"(*Xmm0) : "i"(I), "0"(*Xmm1)); \ - } else { \ - asm("vpsrldq\t%2,%1,%0" : "=x"(*Xmm0) : "x"(*Xmm1), "i"(I)); \ - } \ - } else { \ - unsigned long Vimm = (I); \ - typeof(__psrldqs) *Fn; \ - if (Vimm > 16) Vimm = 16; \ - Fn = (typeof(__psrldqs) *)((uintptr_t)&__psrldqs + Vimm * 8); \ - *Xmm0 = Fn(*Xmm1); \ - } \ - } else { \ - psrldq(B, A, I); \ - } \ - } while (0) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psrlq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSRLQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psrlq(uint64_t[2], const uint64_t[2], unsigned char); -void psrlqv(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define psrlq(A, B, I) INTRIN_SSEVEX_X_I_(psrlq, SSE2, "psrlq", A, B, I) -#define psrlqv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psrlqv, SSE2, "psrlq", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psrlw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSRLW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psrlw(uint16_t[8], const uint16_t[8], unsigned char); -void psrlwv(uint16_t[8], const uint16_t[8], const uint64_t[2]); - -#define psrlw(A, B, I) INTRIN_SSEVEX_X_I_(psrlw, SSE2, "psrlw", A, B, I) -#define psrlwv(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psrlwv, SSE2, "psrlw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psubb(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define psubb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubb, SSE2, "psubb", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psubd(uint32_t[4], const uint32_t[4], const uint32_t[4]); - -#define psubd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubd, SSE2, "psubd", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psubq(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define psubq(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubq, SSE2, "psubq", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubsb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBSB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psubsb(int8_t[16], const int8_t[16], const int8_t[16]); - -#define psubsb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubsb, SSE2, "psubsb", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubsw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psubsw(int16_t[8], const int16_t[8], const int16_t[8]); - -#define psubsw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubsw, SSE2, "psubsw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubusb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBUSB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psubusb(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define psubusb(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubusb, SSE2, "psubusb", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubusw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBUSW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void psubusw(uint16_t[8], const uint16_t[8], const uint16_t[8]); - -#define psubusw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubusw, SSE2, "psubusw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/psubw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PSUBW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void(psubw)(int16_t[8], const int16_t[8], const int16_t[8]); - -#define psubw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(psubw, SSE2, "psubw", INTRIN_NONCOMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpckhbw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHBW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpckhbw(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define punpckhbw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpckhbw, SSE2, "punpckhbw", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpckhdq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpckhdq(uint32_t[4], const uint32_t[4], const uint32_t[4]); - -#define punpckhdq(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpckhdq, SSE2, "punpckhdq", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpckhqdq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHQDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpckhqdq(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define punpckhqdq(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpckhqdq, SSE2, "punpckhqdq", INTRIN_NONCOMMUTATIVE, \ - A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpckhwd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKHWD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpckhwd(uint16_t[8], const uint16_t[8], const uint16_t[8]); - -#define punpckhwd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpckhwd, SSE2, "punpckhwd", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpcklbw.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLBW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpcklbw(uint8_t[16], const uint8_t[16], const uint8_t[16]); - -#define punpcklbw(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpcklbw, SSE2, "punpcklbw", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpckldq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpckldq(uint32_t[4], const uint32_t[4], const uint32_t[4]); - -#define punpckldq(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpckldq, SSE2, "punpckldq", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpcklqdq.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLQDQ_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpcklqdq(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define punpcklqdq(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpcklqdq, SSE2, "punpcklqdq", INTRIN_NONCOMMUTATIVE, \ - A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/punpcklwd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PUNPCKLWD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void punpcklwd(uint16_t[8], const uint16_t[8], const uint16_t[8]); - -#define punpcklwd(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(punpcklwd, SSE2, "punpcklwd", INTRIN_NONCOMMUTATIVE, A, \ - B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/pxor.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_PXOR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void pxor(uint64_t[2], const uint64_t[2], const uint64_t[2]); - -#define pxor(A, B, C) \ - INTRIN_SSEVEX_X_X_X_(pxor, SSE2, "pxor", INTRIN_COMMUTATIVE, A, B, C) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/repmovsb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_REPMOVSB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -forceinline void repmovsb(void **dest, const void **src, size_t cx) { - char *di = (char *)*dest; - const char *si = (const char *)*src; - while (cx) *di++ = *si++, cx--; - *dest = di, *src = si; -} - -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -#define repmovsb(DI, SI, CX) \ - ({ \ - void *Di = *(DI); \ - const void *Si = *(SI); \ - size_t Cx = (CX); \ - asm("rep movsb" \ - : "=D"(Di), "=S"(Si), "=c"(Cx), "=m"(*(char(*)[Cx])Di) \ - : "0"(Di), "1"(Si), "2"(Cx), "m"(*(const char(*)[Cx])Si)); \ - *(DI) = Di, *(SI) = Si; \ - }) -#endif - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/repstosb.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_REPSTOSB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -forceinline void *repstosb(void *dest, unsigned char al, size_t cx) { - unsigned char *di = (unsigned char *)dest; - while (cx) *di++ = al, cx--; - return di; -} - -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -#define repstosb(DI, AL, CX) \ - ({ \ - void *Di = (DI); \ - size_t Cx = (CX); \ - unsigned char Al = (AL); \ - asm("rep stosb %b5,(%0)" \ - : "=D"(Di), "=c"(Cx), "=m"(*(char(*)[Cx])Di) \ - : "0"(Di), "1"(Cx), "a"(Al)); \ - Di; \ - }) -#endif - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/shufpd.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_SHUFPD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void shufpd(double[2], const double[2], const double[2], uint8_t); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/intrin/shufps.h */ - -#define COSMOPOLITAN_LIBC_INTRIN_SHUFPS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void shufps(float[4], const float[4], const float[4], uint8_t); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/log/bsd.h */ - -#define COSMOPOLITAN_LIBC_LOG_BSD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § logging » berkeley logger ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -void err(int, const char *, ...) printfesque(2) wontreturn; -void errx(int, const char *, ...) printfesque(2) wontreturn; -void verr(int, const char *, va_list) paramsnonnull((3)) wontreturn; -void verrx(int, const char *, va_list) paramsnonnull((3)) wontreturn; -void vwarn(const char *, va_list) paramsnonnull((2)); -void vwarnx(const char *, va_list) paramsnonnull((2)); -void warn(const char *, ...) printfesque(1); -void warnx(const char *, ...) printfesque(1); - -#define err(EVAL, FMT, ...) (err)(EVAL, PFLINK(FMT), ##__VA_ARGS__) -#define errx(EVAL, FMT, ...) (errx)(EVAL, PFLINK(FMT), ##__VA_ARGS__) -#define verr(EVAL, FMT, VA) (verr)(EVAL, PFLINK(FMT), VA) -#define verrx(EVAL, FMT, VA) (verrx)(EVAL, PFLINK(FMT), VA) -#define vwarn(FMT, VA) (vwarn)(PFLINK(FMT), VA) -#define vwarnx(FMT, VA) (vwarnx)(PFLINK(FMT), VA) -#define warn(FMT, ...) (warn)(PFLINK(FMT), ##__VA_ARGS__) -#define warnx(FMT, ...) (warn)(PFLINK(FMT), ##__VA_ARGS__) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/log/check.h */ - -#define COSMOPOLITAN_LIBC_LOG_CHECK_H_ - -/** - * @fileoverview Modern assertions, courtesy of Elgoog. - */ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define CHECK(X, ...) __CHK(ne, !=, false, "false", !!(X), #X, "" __VA_ARGS__) -#define CHECK_EQ(Y, X, ...) __CHK(eq, ==, Y, #Y, X, #X, "" __VA_ARGS__) -#define CHECK_NE(Y, X, ...) __CHK(ne, !=, Y, #Y, X, #X, "" __VA_ARGS__) -#define CHECK_LE(Y, X, ...) __CHK(le, <=, Y, #Y, X, #X, "" __VA_ARGS__) -#define CHECK_LT(Y, X, ...) __CHK(lt, <, Y, #Y, X, #X, "" __VA_ARGS__) -#define CHECK_GE(Y, X, ...) __CHK(ge, >=, Y, #Y, X, #X, "" __VA_ARGS__) -#define CHECK_GT(Y, X, ...) __CHK(gt, >, Y, #Y, X, #X, "" __VA_ARGS__) -#define CHECK_NOTNULL(X, ...) __CHK(ne, !=, NULL, "NULL", X, #X, "" __VA_ARGS__) - -#define DCHECK(X, ...) __DCHK(ne, !=, false, "false", !!(X), #X, "" __VA_ARGS__) -#define DCHECK_EQ(Y, X, ...) __DCHK(eq, ==, Y, #Y, X, #X, "" __VA_ARGS__) -#define DCHECK_NE(Y, X, ...) __DCHK(ne, !=, Y, #Y, X, #X, "" __VA_ARGS__) -#define DCHECK_LE(Y, X, ...) __DCHK(le, <=, Y, #Y, X, #X, "" __VA_ARGS__) -#define DCHECK_LT(Y, X, ...) __DCHK(lt, <, Y, #Y, X, #X, "" __VA_ARGS__) -#define DCHECK_GE(Y, X, ...) __DCHK(ge, >=, Y, #Y, X, #X, "" __VA_ARGS__) -#define DCHECK_GT(Y, X, ...) __DCHK(gt, >, Y, #Y, X, #X, "" __VA_ARGS__) -#define DCHECK_NOTNULL(X, ...) \ - __DCHK(ne, !=, NULL, "NULL", X, #X, "" __VA_ARGS__) - -#define CHECK_ALIGNED(BYTES, VAR) \ - do { \ - if (((uintptr_t)VAR & ((BYTES)-1u))) { \ - __check_fail_aligned(BYTES, (uintptr_t)VAR); \ - unreachable; \ - } \ - VAR = (typeof(VAR))__builtin_assume_aligned(VAR, BYTES); \ - } while (0) - -#define DCHECK_ALIGNED(BYTES, VAR) \ - do { \ - if (((uintptr_t)VAR & ((BYTES)-1u))) { \ - __DCHK_ALIGNED(BYTES, (uintptr_t)VAR); \ - unreachable; \ - } \ - VAR = (typeof(VAR))__builtin_assume_aligned(VAR, BYTES); \ - } while (0) - -#if defined(__VSCODE_INTELLISENSE__) -#define __CHK(...) -#else -#define __CHK(SUFFIX, OP, WANT, WANTSTR, GOT, GOTSTR, ...) \ - do { \ - autotype(GOT) Got = (GOT); \ - autotype(WANT) Want = (WANT); \ - if (!(Want OP Got)) { \ - if (!NoDebug()) { \ - __check_fail(#SUFFIX, #OP, (uint64_t)Want, (WANTSTR), (uint64_t)Got, \ - (GOTSTR), __FILE__, __LINE__, __VA_ARGS__); \ - } else { \ - __check_fail_##SUFFIX((uint64_t)Want, (uint64_t)Got); \ - } \ - unreachable; \ - } \ - } while (0) -#endif /* defined(__VSCODE_INTELLISENSE__) */ - -#if defined(__VSCODE_INTELLISENSE__) -#define __DCHK(...) -#else -#ifdef NDEBUG -#define __DCHK(SUFFIX, OP, WANT, WANTSTR, GOT, ...) \ - do { \ - autotype(GOT) Got = (GOT); \ - autotype(WANT) Want = (WANT); \ - if (!(Want OP Got)) { \ - unreachable; \ - } \ - } while (0) -#else -#define __DCHK(SUFFIX, OP, WANT, WANTSTR, GOT, GOTSTR, ...) \ - __CHK(SUFFIX, OP, WANT, WANTSTR, GOT, GOTSTR, __VA_ARGS__) -#endif /* NDEBUG */ -#endif /* defined(__VSCODE_INTELLISENSE__) */ - -#ifdef NDEBUG -#define __DCHK_ALIGNED(BYTES, VAR) -#else -#define __DCHK_ALIGNED(BYTES, VAR) __check_fail_aligned(BYTES, VAR) -#endif - -void __check_fail(const char *, const char *, uint64_t, const char *, uint64_t, - const char *, const char *, int, const char *, - ...) relegated wontreturn; - -void __check_fail_eq(uint64_t, uint64_t) relegated wontreturn; -void __check_fail_ne(uint64_t, uint64_t) relegated wontreturn; -void __check_fail_le(uint64_t, uint64_t) relegated wontreturn; -void __check_fail_lt(uint64_t, uint64_t) relegated wontreturn; -void __check_fail_ge(uint64_t, uint64_t) relegated wontreturn; -void __check_fail_gt(uint64_t, uint64_t) relegated wontreturn; -void __check_fail_aligned(unsigned, uint64_t) relegated wontreturn; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/log/gdb.h */ - -#define COSMOPOLITAN_LIBC_LOG_GDB_H_ - - -/*!BEGIN libc/sysv/consts/nr.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_NR_H_ - -#define __NR_exit SYMBOLIC(__NR_exit) -#define __NR_exit_group SYMBOLIC(__NR_exit_group) -#define __NR_read SYMBOLIC(__NR_read) -#define __NR_write SYMBOLIC(__NR_write) -#define __NR_open SYMBOLIC(__NR_open) -#define __NR_close SYMBOLIC(__NR_close) -#define __NR_stat SYMBOLIC(__NR_stat) -#define __NR_fstat SYMBOLIC(__NR_fstat) -#define __NR_lstat SYMBOLIC(__NR_lstat) -#define __NR_poll SYMBOLIC(__NR_poll) -#define __NR_ppoll SYMBOLIC(__NR_ppoll) -#define __NR_lseek SYMBOLIC(__NR_lseek) -#define __NR_mmap SYMBOLIC(__NR_mmap) -#define __NR_msync SYMBOLIC(__NR_msync) -#define __NR_mprotect SYMBOLIC(__NR_mprotect) -#define __NR_munmap SYMBOLIC(__NR_munmap) -#define __NR_sigaction SYMBOLIC(__NR_sigaction) -#define __NR_sigprocmask SYMBOLIC(__NR_sigprocmask) -#define __NR_ioctl SYMBOLIC(__NR_ioctl) -#define __NR_pread SYMBOLIC(__NR_pread) -#define __NR_pwrite SYMBOLIC(__NR_pwrite) -#define __NR_readv SYMBOLIC(__NR_readv) -#define __NR_writev SYMBOLIC(__NR_writev) -#define __NR_access SYMBOLIC(__NR_access) -#define __NR_pipe SYMBOLIC(__NR_pipe) -#define __NR_select SYMBOLIC(__NR_select) -#define __NR_pselect SYMBOLIC(__NR_pselect) -#define __NR_pselect6 SYMBOLIC(__NR_pselect6) -#define __NR_sched_yield SYMBOLIC(__NR_sched_yield) -#define __NR_mremap SYMBOLIC(__NR_mremap) -#define __NR_mincore SYMBOLIC(__NR_mincore) -#define __NR_madvise SYMBOLIC(__NR_madvise) -#define __NR_shmget SYMBOLIC(__NR_shmget) -#define __NR_shmat SYMBOLIC(__NR_shmat) -#define __NR_shmctl SYMBOLIC(__NR_shmctl) -#define __NR_dup SYMBOLIC(__NR_dup) -#define __NR_dup2 SYMBOLIC(__NR_dup2) -#define __NR_pause SYMBOLIC(__NR_pause) -#define __NR_nanosleep SYMBOLIC(__NR_nanosleep) -#define __NR_getitimer SYMBOLIC(__NR_getitimer) -#define __NR_setitimer SYMBOLIC(__NR_setitimer) -#define __NR_alarm SYMBOLIC(__NR_alarm) -#define __NR_getpid SYMBOLIC(__NR_getpid) -#define __NR_sendfile SYMBOLIC(__NR_sendfile) -#define __NR_socket SYMBOLIC(__NR_socket) -#define __NR_connect SYMBOLIC(__NR_connect) -#define __NR_accept SYMBOLIC(__NR_accept) -#define __NR_sendto SYMBOLIC(__NR_sendto) -#define __NR_recvfrom SYMBOLIC(__NR_recvfrom) -#define __NR_sendmsg SYMBOLIC(__NR_sendmsg) -#define __NR_recvmsg SYMBOLIC(__NR_recvmsg) -#define __NR_shutdown SYMBOLIC(__NR_shutdown) -#define __NR_bind SYMBOLIC(__NR_bind) -#define __NR_listen SYMBOLIC(__NR_listen) -#define __NR_getsockname SYMBOLIC(__NR_getsockname) -#define __NR_getpeername SYMBOLIC(__NR_getpeername) -#define __NR_socketpair SYMBOLIC(__NR_socketpair) -#define __NR_setsockopt SYMBOLIC(__NR_setsockopt) -#define __NR_getsockopt SYMBOLIC(__NR_getsockopt) -#define __NR_fork SYMBOLIC(__NR_fork) -#define __NR_vfork SYMBOLIC(__NR_vfork) -#define __NR_posix_spawn SYMBOLIC(__NR_posix_spawn) -#define __NR_execve SYMBOLIC(__NR_execve) -#define __NR_wait4 SYMBOLIC(__NR_wait4) -#define __NR_kill SYMBOLIC(__NR_kill) -#define __NR_killpg SYMBOLIC(__NR_killpg) -#define __NR_clone SYMBOLIC(__NR_clone) -#define __NR_tkill SYMBOLIC(__NR_tkill) -#define __NR_futex SYMBOLIC(__NR_futex) -#define __NR_set_robust_list SYMBOLIC(__NR_set_robust_list) -#define __NR_get_robust_list SYMBOLIC(__NR_get_robust_list) -#define __NR_uname SYMBOLIC(__NR_uname) -#define __NR_semget SYMBOLIC(__NR_semget) -#define __NR_semop SYMBOLIC(__NR_semop) -#define __NR_semctl SYMBOLIC(__NR_semctl) -#define __NR_shmdt SYMBOLIC(__NR_shmdt) -#define __NR_msgget SYMBOLIC(__NR_msgget) -#define __NR_msgsnd SYMBOLIC(__NR_msgsnd) -#define __NR_msgrcv SYMBOLIC(__NR_msgrcv) -#define __NR_msgctl SYMBOLIC(__NR_msgctl) -#define __NR_fcntl SYMBOLIC(__NR_fcntl) -#define __NR_flock SYMBOLIC(__NR_flock) -#define __NR_fsync SYMBOLIC(__NR_fsync) -#define __NR_fdatasync SYMBOLIC(__NR_fdatasync) -#define __NR_truncate SYMBOLIC(__NR_truncate) -#define __NR_ftruncate SYMBOLIC(__NR_ftruncate) -#define __NR_getcwd SYMBOLIC(__NR_getcwd) -#define __NR_chdir SYMBOLIC(__NR_chdir) -#define __NR_fchdir SYMBOLIC(__NR_fchdir) -#define __NR_rename SYMBOLIC(__NR_rename) -#define __NR_mkdir SYMBOLIC(__NR_mkdir) -#define __NR_rmdir SYMBOLIC(__NR_rmdir) -#define __NR_creat SYMBOLIC(__NR_creat) -#define __NR_link SYMBOLIC(__NR_link) -#define __NR_unlink SYMBOLIC(__NR_unlink) -#define __NR_symlink SYMBOLIC(__NR_symlink) -#define __NR_readlink SYMBOLIC(__NR_readlink) -#define __NR_chmod SYMBOLIC(__NR_chmod) -#define __NR_fchmod SYMBOLIC(__NR_fchmod) -#define __NR_chown SYMBOLIC(__NR_chown) -#define __NR_fchown SYMBOLIC(__NR_fchown) -#define __NR_lchown SYMBOLIC(__NR_lchown) -#define __NR_umask SYMBOLIC(__NR_umask) -#define __NR_gettimeofday SYMBOLIC(__NR_gettimeofday) -#define __NR_getrlimit SYMBOLIC(__NR_getrlimit) -#define __NR_getrusage SYMBOLIC(__NR_getrusage) -#define __NR_sysinfo SYMBOLIC(__NR_sysinfo) -#define __NR_times SYMBOLIC(__NR_times) -#define __NR_ptrace SYMBOLIC(__NR_ptrace) -#define __NR_syslog SYMBOLIC(__NR_syslog) -#define __NR_getuid SYMBOLIC(__NR_getuid) -#define __NR_getgid SYMBOLIC(__NR_getgid) -#define __NR_getppid SYMBOLIC(__NR_getppid) -#define __NR_getpgrp SYMBOLIC(__NR_getpgrp) -#define __NR_setsid SYMBOLIC(__NR_setsid) -#define __NR_getsid SYMBOLIC(__NR_getsid) -#define __NR_getpgid SYMBOLIC(__NR_getpgid) -#define __NR_setpgid SYMBOLIC(__NR_setpgid) -#define __NR_geteuid SYMBOLIC(__NR_geteuid) -#define __NR_getegid SYMBOLIC(__NR_getegid) -#define __NR_getgroups SYMBOLIC(__NR_getgroups) -#define __NR_setgroups SYMBOLIC(__NR_setgroups) -#define __NR_setreuid SYMBOLIC(__NR_setreuid) -#define __NR_setregid SYMBOLIC(__NR_setregid) -#define __NR_setuid SYMBOLIC(__NR_setuid) -#define __NR_setgid SYMBOLIC(__NR_setgid) -#define __NR_setresuid SYMBOLIC(__NR_setresuid) -#define __NR_setresgid SYMBOLIC(__NR_setresgid) -#define __NR_getresuid SYMBOLIC(__NR_getresuid) -#define __NR_getresgid SYMBOLIC(__NR_getresgid) -#define __NR_sigpending SYMBOLIC(__NR_sigpending) -#define __NR_sigsuspend SYMBOLIC(__NR_sigsuspend) -#define __NR_sigaltstack SYMBOLIC(__NR_sigaltstack) -#define __NR_mknod SYMBOLIC(__NR_mknod) -#define __NR_mknodat SYMBOLIC(__NR_mknodat) -#define __NR_mkfifo SYMBOLIC(__NR_mkfifo) -#define __NR_mkfifoat SYMBOLIC(__NR_mkfifoat) -#define __NR_statfs SYMBOLIC(__NR_statfs) -#define __NR_fstatfs SYMBOLIC(__NR_fstatfs) -#define __NR_getpriority SYMBOLIC(__NR_getpriority) -#define __NR_setpriority SYMBOLIC(__NR_setpriority) -#define __NR_mlock SYMBOLIC(__NR_mlock) -#define __NR_munlock SYMBOLIC(__NR_munlock) -#define __NR_mlockall SYMBOLIC(__NR_mlockall) -#define __NR_munlockall SYMBOLIC(__NR_munlockall) -#define __NR_setrlimit SYMBOLIC(__NR_setrlimit) -#define __NR_chroot SYMBOLIC(__NR_chroot) -#define __NR_sync SYMBOLIC(__NR_sync) -#define __NR_acct SYMBOLIC(__NR_acct) -#define __NR_settimeofday SYMBOLIC(__NR_settimeofday) -#define __NR_mount SYMBOLIC(__NR_mount) -#define __NR_reboot SYMBOLIC(__NR_reboot) -#define __NR_quotactl SYMBOLIC(__NR_quotactl) -#define __NR_setfsuid SYMBOLIC(__NR_setfsuid) -#define __NR_setfsgid SYMBOLIC(__NR_setfsgid) -#define __NR_capget SYMBOLIC(__NR_capget) -#define __NR_capset SYMBOLIC(__NR_capset) -#define __NR_sigtimedwait SYMBOLIC(__NR_sigtimedwait) -#define __NR_rt_sigqueueinfo SYMBOLIC(__NR_rt_sigqueueinfo) -#define __NR_personality SYMBOLIC(__NR_personality) -#define __NR_ustat SYMBOLIC(__NR_ustat) -#define __NR_sysfs SYMBOLIC(__NR_sysfs) -#define __NR_sched_setparam SYMBOLIC(__NR_sched_setparam) -#define __NR_sched_getparam SYMBOLIC(__NR_sched_getparam) -#define __NR_sched_setscheduler SYMBOLIC(__NR_sched_setscheduler) -#define __NR_sched_getscheduler SYMBOLIC(__NR_sched_getscheduler) -#define __NR_sched_get_priority_max SYMBOLIC(__NR_sched_get_priority_max) -#define __NR_sched_get_priority_min SYMBOLIC(__NR_sched_get_priority_min) -#define __NR_sched_rr_get_interval SYMBOLIC(__NR_sched_rr_get_interval) -#define __NR_vhangup SYMBOLIC(__NR_vhangup) -#define __NR_modify_ldt SYMBOLIC(__NR_modify_ldt) -#define __NR_pivot_root SYMBOLIC(__NR_pivot_root) -#define __NR__sysctl SYMBOLIC(__NR__sysctl) -#define __NR_prctl SYMBOLIC(__NR_prctl) -#define __NR_arch_prctl SYMBOLIC(__NR_arch_prctl) -#define __NR_adjtimex SYMBOLIC(__NR_adjtimex) -#define __NR_umount2 SYMBOLIC(__NR_umount2) -#define __NR_swapon SYMBOLIC(__NR_swapon) -#define __NR_swapoff SYMBOLIC(__NR_swapoff) -#define __NR_sethostname SYMBOLIC(__NR_sethostname) -#define __NR_setdomainname SYMBOLIC(__NR_setdomainname) -#define __NR_iopl SYMBOLIC(__NR_iopl) -#define __NR_ioperm SYMBOLIC(__NR_ioperm) -#define __NR_init_module SYMBOLIC(__NR_init_module) -#define __NR_delete_module SYMBOLIC(__NR_delete_module) -#define __NR_gettid SYMBOLIC(__NR_gettid) -#define __NR_readahead SYMBOLIC(__NR_readahead) -#define __NR_setxattr SYMBOLIC(__NR_setxattr) -#define __NR_fsetxattr SYMBOLIC(__NR_fsetxattr) -#define __NR_getxattr SYMBOLIC(__NR_getxattr) -#define __NR_fgetxattr SYMBOLIC(__NR_fgetxattr) -#define __NR_listxattr SYMBOLIC(__NR_listxattr) -#define __NR_flistxattr SYMBOLIC(__NR_flistxattr) -#define __NR_removexattr SYMBOLIC(__NR_removexattr) -#define __NR_fremovexattr SYMBOLIC(__NR_fremovexattr) -#define __NR_lsetxattr SYMBOLIC(__NR_lsetxattr) -#define __NR_lgetxattr SYMBOLIC(__NR_lgetxattr) -#define __NR_llistxattr SYMBOLIC(__NR_llistxattr) -#define __NR_lremovexattr SYMBOLIC(__NR_lremovexattr) -#define __NR_sched_setaffinity SYMBOLIC(__NR_sched_setaffinity) -#define __NR_sched_getaffinity SYMBOLIC(__NR_sched_getaffinity) -#define __NR_cpuset_getaffinity SYMBOLIC(__NR_cpuset_getaffinity) -#define __NR_cpuset_setaffinity SYMBOLIC(__NR_cpuset_setaffinity) -#define __NR_io_setup SYMBOLIC(__NR_io_setup) -#define __NR_io_destroy SYMBOLIC(__NR_io_destroy) -#define __NR_io_getevents SYMBOLIC(__NR_io_getevents) -#define __NR_io_submit SYMBOLIC(__NR_io_submit) -#define __NR_io_cancel SYMBOLIC(__NR_io_cancel) -#define __NR_lookup_dcookie SYMBOLIC(__NR_lookup_dcookie) -#define __NR_epoll_create SYMBOLIC(__NR_epoll_create) -#define __NR_epoll_wait SYMBOLIC(__NR_epoll_wait) -#define __NR_epoll_ctl SYMBOLIC(__NR_epoll_ctl) -#define __NR_getdents SYMBOLIC(__NR_getdents) -#define __NR_set_tid_address SYMBOLIC(__NR_set_tid_address) -#define __NR_restart_syscall SYMBOLIC(__NR_restart_syscall) -#define __NR_semtimedop SYMBOLIC(__NR_semtimedop) -#define __NR_fadvise SYMBOLIC(__NR_fadvise) -#define __NR_timer_create SYMBOLIC(__NR_timer_create) -#define __NR_timer_settime SYMBOLIC(__NR_timer_settime) -#define __NR_timer_gettime SYMBOLIC(__NR_timer_gettime) -#define __NR_timer_getoverrun SYMBOLIC(__NR_timer_getoverrun) -#define __NR_timer_delete SYMBOLIC(__NR_timer_delete) -#define __NR_clock_settime SYMBOLIC(__NR_clock_settime) -#define __NR_clock_gettime SYMBOLIC(__NR_clock_gettime) -#define __NR_clock_getres SYMBOLIC(__NR_clock_getres) -#define __NR_clock_nanosleep SYMBOLIC(__NR_clock_nanosleep) -#define __NR_tgkill SYMBOLIC(__NR_tgkill) -#define __NR_mbind SYMBOLIC(__NR_mbind) -#define __NR_set_mempolicy SYMBOLIC(__NR_set_mempolicy) -#define __NR_get_mempolicy SYMBOLIC(__NR_get_mempolicy) -#define __NR_mq_open SYMBOLIC(__NR_mq_open) -#define __NR_mq_unlink SYMBOLIC(__NR_mq_unlink) -#define __NR_mq_timedsend SYMBOLIC(__NR_mq_timedsend) -#define __NR_mq_timedreceive SYMBOLIC(__NR_mq_timedreceive) -#define __NR_mq_notify SYMBOLIC(__NR_mq_notify) -#define __NR_mq_getsetattr SYMBOLIC(__NR_mq_getsetattr) -#define __NR_kexec_load SYMBOLIC(__NR_kexec_load) -#define __NR_waitid SYMBOLIC(__NR_waitid) -#define __NR_add_key SYMBOLIC(__NR_add_key) -#define __NR_request_key SYMBOLIC(__NR_request_key) -#define __NR_keyctl SYMBOLIC(__NR_keyctl) -#define __NR_ioprio_set SYMBOLIC(__NR_ioprio_set) -#define __NR_ioprio_get SYMBOLIC(__NR_ioprio_get) -#define __NR_inotify_init SYMBOLIC(__NR_inotify_init) -#define __NR_inotify_add_watch SYMBOLIC(__NR_inotify_add_watch) -#define __NR_inotify_rm_watch SYMBOLIC(__NR_inotify_rm_watch) -#define __NR_openat SYMBOLIC(__NR_openat) -#define __NR_mkdirat SYMBOLIC(__NR_mkdirat) -#define __NR_fchownat SYMBOLIC(__NR_fchownat) -#define __NR_utime SYMBOLIC(__NR_utime) -#define __NR_utimes SYMBOLIC(__NR_utimes) -#define __NR_futimesat SYMBOLIC(__NR_futimesat) -#define __NR_futimes SYMBOLIC(__NR_futimes) -#define __NR_futimens SYMBOLIC(__NR_futimens) -#define __NR_fstatat SYMBOLIC(__NR_fstatat) -#define __NR_unlinkat SYMBOLIC(__NR_unlinkat) -#define __NR_renameat SYMBOLIC(__NR_renameat) -#define __NR_linkat SYMBOLIC(__NR_linkat) -#define __NR_symlinkat SYMBOLIC(__NR_symlinkat) -#define __NR_readlinkat SYMBOLIC(__NR_readlinkat) -#define __NR_fchmodat SYMBOLIC(__NR_fchmodat) -#define __NR_faccessat SYMBOLIC(__NR_faccessat) -#define __NR_unshare SYMBOLIC(__NR_unshare) -#define __NR_splice SYMBOLIC(__NR_splice) -#define __NR_tee SYMBOLIC(__NR_tee) -#define __NR_sync_file_range SYMBOLIC(__NR_sync_file_range) -#define __NR_vmsplice SYMBOLIC(__NR_vmsplice) -#define __NR_migrate_pages SYMBOLIC(__NR_migrate_pages) -#define __NR_move_pages SYMBOLIC(__NR_move_pages) -#define __NR_preadv SYMBOLIC(__NR_preadv) -#define __NR_pwritev SYMBOLIC(__NR_pwritev) -#define __NR_utimensat SYMBOLIC(__NR_utimensat) -#define __NR_fallocate SYMBOLIC(__NR_fallocate) -#define __NR_posix_fallocate SYMBOLIC(__NR_posix_fallocate) -#define __NR_accept4 SYMBOLIC(__NR_accept4) -#define __NR_dup3 SYMBOLIC(__NR_dup3) -#define __NR_pipe2 SYMBOLIC(__NR_pipe2) -#define __NR_epoll_pwait SYMBOLIC(__NR_epoll_pwait) -#define __NR_epoll_create1 SYMBOLIC(__NR_epoll_create1) -#define __NR_perf_event_open SYMBOLIC(__NR_perf_event_open) -#define __NR_inotify_init1 SYMBOLIC(__NR_inotify_init1) -#define __NR_rt_tgsigqueueinfo SYMBOLIC(__NR_rt_tgsigqueueinfo) -#define __NR_signalfd SYMBOLIC(__NR_signalfd) -#define __NR_signalfd4 SYMBOLIC(__NR_signalfd4) -#define __NR_eventfd SYMBOLIC(__NR_eventfd) -#define __NR_eventfd2 SYMBOLIC(__NR_eventfd2) -#define __NR_timerfd_create SYMBOLIC(__NR_timerfd_create) -#define __NR_timerfd_settime SYMBOLIC(__NR_timerfd_settime) -#define __NR_timerfd_gettime SYMBOLIC(__NR_timerfd_gettime) -#define __NR_recvmmsg SYMBOLIC(__NR_recvmmsg) -#define __NR_fanotify_init SYMBOLIC(__NR_fanotify_init) -#define __NR_fanotify_mark SYMBOLIC(__NR_fanotify_mark) -#define __NR_prlimit SYMBOLIC(__NR_prlimit) -#define __NR_name_to_handle_at SYMBOLIC(__NR_name_to_handle_at) -#define __NR_open_by_handle_at SYMBOLIC(__NR_open_by_handle_at) -#define __NR_clock_adjtime SYMBOLIC(__NR_clock_adjtime) -#define __NR_syncfs SYMBOLIC(__NR_syncfs) -#define __NR_sendmmsg SYMBOLIC(__NR_sendmmsg) -#define __NR_setns SYMBOLIC(__NR_setns) -#define __NR_getcpu SYMBOLIC(__NR_getcpu) -#define __NR_process_vm_readv SYMBOLIC(__NR_process_vm_readv) -#define __NR_process_vm_writev SYMBOLIC(__NR_process_vm_writev) -#define __NR_kcmp SYMBOLIC(__NR_kcmp) -#define __NR_finit_module SYMBOLIC(__NR_finit_module) -#define __NR_sched_setattr SYMBOLIC(__NR_sched_setattr) -#define __NR_sched_getattr SYMBOLIC(__NR_sched_getattr) -#define __NR_renameat2 SYMBOLIC(__NR_renameat2) -#define __NR_seccomp SYMBOLIC(__NR_seccomp) -#define __NR_getrandom SYMBOLIC(__NR_getrandom) -#define __NR_memfd_create SYMBOLIC(__NR_memfd_create) -#define __NR_kexec_file_load SYMBOLIC(__NR_kexec_file_load) -#define __NR_bpf SYMBOLIC(__NR_bpf) -#define __NR_execveat SYMBOLIC(__NR_execveat) -#define __NR_userfaultfd SYMBOLIC(__NR_userfaultfd) -#define __NR_membarrier SYMBOLIC(__NR_membarrier) -#define __NR_mlock2 SYMBOLIC(__NR_mlock2) -#define __NR_copy_file_range SYMBOLIC(__NR_copy_file_range) -#define __NR_preadv2 SYMBOLIC(__NR_preadv2) -#define __NR_pwritev2 SYMBOLIC(__NR_pwritev2) -#define __NR_pkey_mprotect SYMBOLIC(__NR_pkey_mprotect) -#define __NR_pkey_alloc SYMBOLIC(__NR_pkey_alloc) -#define __NR_pkey_free SYMBOLIC(__NR_pkey_free) -#define __NR_statx SYMBOLIC(__NR_statx) -#define __NR_io_pgetevents SYMBOLIC(__NR_io_pgetevents) -#define __NR_rseq SYMBOLIC(__NR_rseq) -#define __NR_pidfd_send_signal SYMBOLIC(__NR_pidfd_send_signal) -#define __NR_io_uring_setup SYMBOLIC(__NR_io_uring_setup) -#define __NR_io_uring_enter SYMBOLIC(__NR_io_uring_enter) -#define __NR_io_uring_register SYMBOLIC(__NR_io_uring_register) -#define __NR_pledge SYMBOLIC(__NR_pledge) -#define __NR_msyscall SYMBOLIC(__NR_msyscall) -#define __NR_ktrace SYMBOLIC(__NR_ktrace) -#define __NR_kqueue SYMBOLIC(__NR_kqueue) -#define __NR_kevent SYMBOLIC(__NR_kevent) -#define __NR_revoke SYMBOLIC(__NR_revoke) -#define __NR_setlogin SYMBOLIC(__NR_setlogin) -#define __NR_getfh SYMBOLIC(__NR_getfh) -#define __NR_chflags SYMBOLIC(__NR_chflags) -#define __NR_getfsstat SYMBOLIC(__NR_getfsstat) -#define __NR_nfssvc SYMBOLIC(__NR_nfssvc) -#define __NR_adjtime SYMBOLIC(__NR_adjtime) -#define __NR_fchflags SYMBOLIC(__NR_fchflags) -#define __NR_seteuid SYMBOLIC(__NR_seteuid) -#define __NR_setegid SYMBOLIC(__NR_setegid) -#define __NR_fpathconf SYMBOLIC(__NR_fpathconf) -#define __NR_fhopen SYMBOLIC(__NR_fhopen) -#define __NR_unmount SYMBOLIC(__NR_unmount) -#define __NR_issetugid SYMBOLIC(__NR_issetugid) -#define __NR_minherit SYMBOLIC(__NR_minherit) -#define __NR_pathconf SYMBOLIC(__NR_pathconf) -#define __NR_sysctl SYMBOLIC(__NR_sysctl) -#define __NR_ntp_adjtime SYMBOLIC(__NR_ntp_adjtime) -#define __NR_ntp_gettime SYMBOLIC(__NR_ntp_gettime) -#define __NR_shm_unlink SYMBOLIC(__NR_shm_unlink) -#define __NR_shm_open SYMBOLIC(__NR_shm_open) -#define __NR_aio_read SYMBOLIC(__NR_aio_read) -#define __NR_aio_suspend SYMBOLIC(__NR_aio_suspend) -#define __NR_aio_cancel SYMBOLIC(__NR_aio_cancel) -#define __NR_aio_fsync SYMBOLIC(__NR_aio_fsync) -#define __NR_aio_error SYMBOLIC(__NR_aio_error) -#define __NR_aio_return SYMBOLIC(__NR_aio_return) -#define __NR_aio_write SYMBOLIC(__NR_aio_write) -#define __NR_aio_waitcomplete SYMBOLIC(__NR_aio_waitcomplete) -#define __NR_aio_suspend_nocancel SYMBOLIC(__NR_aio_suspend_nocancel) -#define __NR_aio_mlock SYMBOLIC(__NR_aio_mlock) -#define __NR_sigwait SYMBOLIC(__NR_sigwait) -#define __NR_undelete SYMBOLIC(__NR_undelete) -#define __NR_getlogin SYMBOLIC(__NR_getlogin) -#define __NR_getdtablesize SYMBOLIC(__NR_getdtablesize) -#define __NR_setauid SYMBOLIC(__NR_setauid) -#define __NR_audit SYMBOLIC(__NR_audit) -#define __NR_auditctl SYMBOLIC(__NR_auditctl) -#define __NR_getaudit_addr SYMBOLIC(__NR_getaudit_addr) -#define __NR_getdirentries SYMBOLIC(__NR_getdirentries) -#define __NR_lio_listio SYMBOLIC(__NR_lio_listio) -#define __NR_setaudit_addr SYMBOLIC(__NR_setaudit_addr) -#define __NR_getauid SYMBOLIC(__NR_getauid) -#define __NR_semsys SYMBOLIC(__NR_semsys) -#define __NR_auditon SYMBOLIC(__NR_auditon) -#define __NR_msgsys SYMBOLIC(__NR_msgsys) -#define __NR_shmsys SYMBOLIC(__NR_shmsys) -#define __NR_fhstat SYMBOLIC(__NR_fhstat) -#define __NR_chflagsat SYMBOLIC(__NR_chflagsat) -#define __NR_profil SYMBOLIC(__NR_profil) -#define __NR_fhstatfs SYMBOLIC(__NR_fhstatfs) -#define __NR_utrace SYMBOLIC(__NR_utrace) -#define __NR_closefrom SYMBOLIC(__NR_closefrom) -#define __NR_pthread_markcancel SYMBOLIC(__NR_pthread_markcancel) -#define __NR_pthread_kill SYMBOLIC(__NR_pthread_kill) -#define __NR_pthread_fchdir SYMBOLIC(__NR_pthread_fchdir) -#define __NR_pthread_sigmask SYMBOLIC(__NR_pthread_sigmask) -#define __NR_pthread_chdir SYMBOLIC(__NR_pthread_chdir) -#define __NR_pthread_canceled SYMBOLIC(__NR_pthread_canceled) -#define __NR_disable_threadsignal SYMBOLIC(__NR_disable_threadsignal) -#define __NR_abort_with_payload SYMBOLIC(__NR_abort_with_payload) -#define __NR_accept_nocancel SYMBOLIC(__NR_accept_nocancel) -#define __NR_access_extended SYMBOLIC(__NR_access_extended) -#define __NR_audit_session_join SYMBOLIC(__NR_audit_session_join) -#define __NR_audit_session_port SYMBOLIC(__NR_audit_session_port) -#define __NR_audit_session_self SYMBOLIC(__NR_audit_session_self) -#define __NR_bsdthread_create SYMBOLIC(__NR_bsdthread_create) -#define __NR_bsdthread_ctl SYMBOLIC(__NR_bsdthread_ctl) -#define __NR_bsdthread_register SYMBOLIC(__NR_bsdthread_register) -#define __NR_bsdthread_terminate SYMBOLIC(__NR_bsdthread_terminate) -#define __NR_change_fdguard_np SYMBOLIC(__NR_change_fdguard_np) -#define __NR_chmod_extended SYMBOLIC(__NR_chmod_extended) -#define __NR_clonefileat SYMBOLIC(__NR_clonefileat) -#define __NR_close_nocancel SYMBOLIC(__NR_close_nocancel) -#define __NR_coalition SYMBOLIC(__NR_coalition) -#define __NR_coalition_info SYMBOLIC(__NR_coalition_info) -#define __NR_connect_nocancel SYMBOLIC(__NR_connect_nocancel) -#define __NR_connectx SYMBOLIC(__NR_connectx) -#define __NR_copyfile SYMBOLIC(__NR_copyfile) -#define __NR_csops SYMBOLIC(__NR_csops) -#define __NR_csops_audittoken SYMBOLIC(__NR_csops_audittoken) -#define __NR_csrctl SYMBOLIC(__NR_csrctl) -#define __NR_delete SYMBOLIC(__NR_delete) -#define __NR_disconnectx SYMBOLIC(__NR_disconnectx) -#define __NR_exchangedata SYMBOLIC(__NR_exchangedata) -#define __NR_fchmod_extended SYMBOLIC(__NR_fchmod_extended) -#define __NR_fclonefileat SYMBOLIC(__NR_fclonefileat) -#define __NR_fcntl_nocancel SYMBOLIC(__NR_fcntl_nocancel) -#define __NR_ffsctl SYMBOLIC(__NR_ffsctl) -#define __NR_fgetattrlist SYMBOLIC(__NR_fgetattrlist) -#define __NR_fileport_makefd SYMBOLIC(__NR_fileport_makefd) -#define __NR_fileport_makeport SYMBOLIC(__NR_fileport_makeport) -#define __NR_fmount SYMBOLIC(__NR_fmount) -#define __NR_fs_snapshot SYMBOLIC(__NR_fs_snapshot) -#define __NR_fsctl SYMBOLIC(__NR_fsctl) -#define __NR_fsetattrlist SYMBOLIC(__NR_fsetattrlist) -#define __NR_fstat_extended SYMBOLIC(__NR_fstat_extended) -#define __NR_fsync_nocancel SYMBOLIC(__NR_fsync_nocancel) -#define __NR_getattrlist SYMBOLIC(__NR_getattrlist) -#define __NR_getattrlistat SYMBOLIC(__NR_getattrlistat) -#define __NR_getattrlistbulk SYMBOLIC(__NR_getattrlistbulk) -#define __NR_getdirentriesattr SYMBOLIC(__NR_getdirentriesattr) -#define __NR_gethostuuid SYMBOLIC(__NR_gethostuuid) -#define __NR_getsgroups SYMBOLIC(__NR_getsgroups) -#define __NR_getwgroups SYMBOLIC(__NR_getwgroups) -#define __NR_grab_pgo_data SYMBOLIC(__NR_grab_pgo_data) -#define __NR_guarded_close_np SYMBOLIC(__NR_guarded_close_np) -#define __NR_guarded_kqueue_np SYMBOLIC(__NR_guarded_kqueue_np) -#define __NR_guarded_open_np SYMBOLIC(__NR_guarded_open_np) -#define __NR_guarded_pwrite_np SYMBOLIC(__NR_guarded_pwrite_np) -#define __NR_guarded_write_np SYMBOLIC(__NR_guarded_write_np) -#define __NR_guarded_writev_np SYMBOLIC(__NR_guarded_writev_np) -#define __NR_identitysvc SYMBOLIC(__NR_identitysvc) -#define __NR_initgroups SYMBOLIC(__NR_initgroups) -#define __NR_iopolicysys SYMBOLIC(__NR_iopolicysys) -#define __NR_kas_info SYMBOLIC(__NR_kas_info) -#define __NR_kdebug_trace SYMBOLIC(__NR_kdebug_trace) -#define __NR_kdebug_trace_string SYMBOLIC(__NR_kdebug_trace_string) -#define __NR_kdebug_typefilter SYMBOLIC(__NR_kdebug_typefilter) -#define __NR_kevent_id SYMBOLIC(__NR_kevent_id) -#define __NR_kevent_qos SYMBOLIC(__NR_kevent_qos) -#define __NR_ledger SYMBOLIC(__NR_ledger) -#define __NR_lstat_extended SYMBOLIC(__NR_lstat_extended) -#define __NR_memorystatus_control SYMBOLIC(__NR_memorystatus_control) -#define __NR_memorystatus_get_level SYMBOLIC(__NR_memorystatus_get_level) -#define __NR_microstackshot SYMBOLIC(__NR_microstackshot) -#define __NR_mkdir_extended SYMBOLIC(__NR_mkdir_extended) -#define __NR_mkfifo_extended SYMBOLIC(__NR_mkfifo_extended) -#define __NR_modwatch SYMBOLIC(__NR_modwatch) -#define __NR_mremap_encrypted SYMBOLIC(__NR_mremap_encrypted) -#define __NR_msgrcv_nocancel SYMBOLIC(__NR_msgrcv_nocancel) -#define __NR_msgsnd_nocancel SYMBOLIC(__NR_msgsnd_nocancel) -#define __NR_msync_nocancel SYMBOLIC(__NR_msync_nocancel) -#define __NR_necp_client_action SYMBOLIC(__NR_necp_client_action) -#define __NR_necp_match_policy SYMBOLIC(__NR_necp_match_policy) -#define __NR_necp_open SYMBOLIC(__NR_necp_open) -#define __NR_necp_session_action SYMBOLIC(__NR_necp_session_action) -#define __NR_necp_session_open SYMBOLIC(__NR_necp_session_open) -#define __NR_net_qos_guideline SYMBOLIC(__NR_net_qos_guideline) -#define __NR_netagent_trigger SYMBOLIC(__NR_netagent_trigger) -#define __NR_nfsclnt SYMBOLIC(__NR_nfsclnt) -#define __NR_open_dprotected_np SYMBOLIC(__NR_open_dprotected_np) -#define __NR_open_extended SYMBOLIC(__NR_open_extended) -#define __NR_open_nocancel SYMBOLIC(__NR_open_nocancel) -#define __NR_openat_nocancel SYMBOLIC(__NR_openat_nocancel) -#define __NR_openbyid_np SYMBOLIC(__NR_openbyid_np) -#define __NR_os_fault_with_payload SYMBOLIC(__NR_os_fault_with_payload) -#define __NR_peeloff SYMBOLIC(__NR_peeloff) -#define __NR_persona SYMBOLIC(__NR_persona) -#define __NR_pid_hibernate SYMBOLIC(__NR_pid_hibernate) -#define __NR_pid_resume SYMBOLIC(__NR_pid_resume) -#define __NR_pid_shutdown_sockets SYMBOLIC(__NR_pid_shutdown_sockets) -#define __NR_pid_suspend SYMBOLIC(__NR_pid_suspend) -#define __NR_poll_nocancel SYMBOLIC(__NR_poll_nocancel) -#define __NR_pread_nocancel SYMBOLIC(__NR_pread_nocancel) -#define __NR_proc_info SYMBOLIC(__NR_proc_info) -#define __NR_proc_rlimit_control SYMBOLIC(__NR_proc_rlimit_control) -#define __NR_proc_trace_log SYMBOLIC(__NR_proc_trace_log) -#define __NR_proc_uuid_policy SYMBOLIC(__NR_proc_uuid_policy) -#define __NR_process_policy SYMBOLIC(__NR_process_policy) -#define __NR_pselect_nocancel SYMBOLIC(__NR_pselect_nocancel) -#define __NR_psynch_cvbroad SYMBOLIC(__NR_psynch_cvbroad) -#define __NR_psynch_cvclrprepost SYMBOLIC(__NR_psynch_cvclrprepost) -#define __NR_psynch_cvsignal SYMBOLIC(__NR_psynch_cvsignal) -#define __NR_psynch_mutexdrop SYMBOLIC(__NR_psynch_mutexdrop) -#define __NR_psynch_mutexwait SYMBOLIC(__NR_psynch_mutexwait) -#define __NR_psynch_rw_downgrade SYMBOLIC(__NR_psynch_rw_downgrade) -#define __NR_psynch_rw_longrdlock SYMBOLIC(__NR_psynch_rw_longrdlock) -#define __NR_psynch_rw_rdlock SYMBOLIC(__NR_psynch_rw_rdlock) -#define __NR_psynch_rw_unlock SYMBOLIC(__NR_psynch_rw_unlock) -#define __NR_psynch_rw_unlock2 SYMBOLIC(__NR_psynch_rw_unlock2) -#define __NR_psynch_rw_upgrade SYMBOLIC(__NR_psynch_rw_upgrade) -#define __NR_psynch_rw_wrlock SYMBOLIC(__NR_psynch_rw_wrlock) -#define __NR_psynch_rw_yieldwrlock SYMBOLIC(__NR_psynch_rw_yieldwrlock) -#define __NR_pwrite_nocancel SYMBOLIC(__NR_pwrite_nocancel) -#define __NR_read_nocancel SYMBOLIC(__NR_read_nocancel) -#define __NR_readv_nocancel SYMBOLIC(__NR_readv_nocancel) -#define __NR_recvfrom_nocancel SYMBOLIC(__NR_recvfrom_nocancel) -#define __NR_recvmsg_nocancel SYMBOLIC(__NR_recvmsg_nocancel) -#define __NR_recvmsg_x SYMBOLIC(__NR_recvmsg_x) -#define __NR_renameatx_np SYMBOLIC(__NR_renameatx_np) -#define __NR_searchfs SYMBOLIC(__NR_searchfs) -#define __NR_select_nocancel SYMBOLIC(__NR_select_nocancel) -#define __NR_sem_close SYMBOLIC(__NR_sem_close) -#define __NR_sem_open SYMBOLIC(__NR_sem_open) -#define __NR_sem_post SYMBOLIC(__NR_sem_post) -#define __NR_sem_trywait SYMBOLIC(__NR_sem_trywait) -#define __NR_sem_unlink SYMBOLIC(__NR_sem_unlink) -#define __NR_sem_wait SYMBOLIC(__NR_sem_wait) -#define __NR_sem_wait_nocancel SYMBOLIC(__NR_sem_wait_nocancel) -#define __NR_sendmsg_nocancel SYMBOLIC(__NR_sendmsg_nocancel) -#define __NR_sendmsg_x SYMBOLIC(__NR_sendmsg_x) -#define __NR_sendto_nocancel SYMBOLIC(__NR_sendto_nocancel) -#define __NR_setattrlist SYMBOLIC(__NR_setattrlist) -#define __NR_setattrlistat SYMBOLIC(__NR_setattrlistat) -#define __NR_setprivexec SYMBOLIC(__NR_setprivexec) -#define __NR_setsgroups SYMBOLIC(__NR_setsgroups) -#define __NR_settid SYMBOLIC(__NR_settid) -#define __NR_settid_with_pid SYMBOLIC(__NR_settid_with_pid) -#define __NR_setwgroups SYMBOLIC(__NR_setwgroups) -#define __NR_sfi_ctl SYMBOLIC(__NR_sfi_ctl) -#define __NR_sfi_pidctl SYMBOLIC(__NR_sfi_pidctl) -#define __NR_shared_region_check_np SYMBOLIC(__NR_shared_region_check_np) -#define __NR_sigsuspend_nocancel SYMBOLIC(__NR_sigsuspend_nocancel) -#define __NR_socket_delegate SYMBOLIC(__NR_socket_delegate) -#define __NR_stat_extended SYMBOLIC(__NR_stat_extended) -#define __NR_sysctlbyname SYMBOLIC(__NR_sysctlbyname) -#define __NR_system_override SYMBOLIC(__NR_system_override) -#define __NR_telemetry SYMBOLIC(__NR_telemetry) -#define __NR_terminate_with_payload SYMBOLIC(__NR_terminate_with_payload) -#define __NR_thread_selfcounts SYMBOLIC(__NR_thread_selfcounts) -#define __NR_thread_selfid SYMBOLIC(__NR_thread_selfid) -#define __NR_thread_selfusage SYMBOLIC(__NR_thread_selfusage) -#define __NR_ulock_wait SYMBOLIC(__NR_ulock_wait) -#define __NR_ulock_wake SYMBOLIC(__NR_ulock_wake) -#define __NR_umask_extended SYMBOLIC(__NR_umask_extended) -#define __NR_usrctl SYMBOLIC(__NR_usrctl) -#define __NR_vfs_purge SYMBOLIC(__NR_vfs_purge) -#define __NR_vm_pressure_monitor SYMBOLIC(__NR_vm_pressure_monitor) -#define __NR_wait4_nocancel SYMBOLIC(__NR_wait4_nocancel) -#define __NR_waitevent SYMBOLIC(__NR_waitevent) -#define __NR_waitid_nocancel SYMBOLIC(__NR_waitid_nocancel) -#define __NR_watchevent SYMBOLIC(__NR_watchevent) -#define __NR_work_interval_ctl SYMBOLIC(__NR_work_interval_ctl) -#define __NR_workq_kernreturn SYMBOLIC(__NR_workq_kernreturn) -#define __NR_workq_open SYMBOLIC(__NR_workq_open) -#define __NR_write_nocancel SYMBOLIC(__NR_write_nocancel) -#define __NR_writev_nocancel SYMBOLIC(__NR_writev_nocancel) -#define __NR_abort2 SYMBOLIC(__NR_abort2) -#define __NR_afs3_syscall SYMBOLIC(__NR_afs3_syscall) -#define __NR_bindat SYMBOLIC(__NR_bindat) -#define __NR_break SYMBOLIC(__NR_break) -#define __NR_cap_enter SYMBOLIC(__NR_cap_enter) -#define __NR_cap_fcntls_get SYMBOLIC(__NR_cap_fcntls_get) -#define __NR_cap_fcntls_limit SYMBOLIC(__NR_cap_fcntls_limit) -#define __NR_cap_getmode SYMBOLIC(__NR_cap_getmode) -#define __NR_cap_ioctls_get SYMBOLIC(__NR_cap_ioctls_get) -#define __NR_cap_ioctls_limit SYMBOLIC(__NR_cap_ioctls_limit) -#define __NR_cap_rights_limit SYMBOLIC(__NR_cap_rights_limit) -#define __NR_clock_getcpuclockid2 SYMBOLIC(__NR_clock_getcpuclockid2) -#define __NR_connectat SYMBOLIC(__NR_connectat) -#define __NR_cpuset SYMBOLIC(__NR_cpuset) -#define __NR_cpuset_getdomain SYMBOLIC(__NR_cpuset_getdomain) -#define __NR_cpuset_getid SYMBOLIC(__NR_cpuset_getid) -#define __NR_cpuset_setdomain SYMBOLIC(__NR_cpuset_setdomain) -#define __NR_cpuset_setid SYMBOLIC(__NR_cpuset_setid) -#define __NR_eaccess SYMBOLIC(__NR_eaccess) -#define __NR_extattr_delete_fd SYMBOLIC(__NR_extattr_delete_fd) -#define __NR_extattr_delete_file SYMBOLIC(__NR_extattr_delete_file) -#define __NR_extattr_delete_link SYMBOLIC(__NR_extattr_delete_link) -#define __NR_extattr_get_fd SYMBOLIC(__NR_extattr_get_fd) -#define __NR_extattr_get_file SYMBOLIC(__NR_extattr_get_file) -#define __NR_extattr_get_link SYMBOLIC(__NR_extattr_get_link) -#define __NR_extattr_list_fd SYMBOLIC(__NR_extattr_list_fd) -#define __NR_extattr_list_file SYMBOLIC(__NR_extattr_list_file) -#define __NR_extattr_list_link SYMBOLIC(__NR_extattr_list_link) -#define __NR_extattr_set_fd SYMBOLIC(__NR_extattr_set_fd) -#define __NR_extattr_set_file SYMBOLIC(__NR_extattr_set_file) -#define __NR_extattr_set_link SYMBOLIC(__NR_extattr_set_link) -#define __NR_extattrctl SYMBOLIC(__NR_extattrctl) -#define __NR_fexecve SYMBOLIC(__NR_fexecve) -#define __NR_ffclock_getcounter SYMBOLIC(__NR_ffclock_getcounter) -#define __NR_ffclock_getestimate SYMBOLIC(__NR_ffclock_getestimate) -#define __NR_ffclock_setestimate SYMBOLIC(__NR_ffclock_setestimate) -#define __NR_fhlink SYMBOLIC(__NR_fhlink) -#define __NR_fhlinkat SYMBOLIC(__NR_fhlinkat) -#define __NR_fhreadlink SYMBOLIC(__NR_fhreadlink) -#define __NR_getaudit SYMBOLIC(__NR_getaudit) -#define __NR_getcontext SYMBOLIC(__NR_getcontext) -#define __NR_getfhat SYMBOLIC(__NR_getfhat) -#define __NR_gethostid SYMBOLIC(__NR_gethostid) -#define __NR_getkerninfo SYMBOLIC(__NR_getkerninfo) -#define __NR_getloginclass SYMBOLIC(__NR_getloginclass) -#define __NR_getpagesize SYMBOLIC(__NR_getpagesize) -#define __NR_gssd_syscall SYMBOLIC(__NR_gssd_syscall) -#define __NR_jail SYMBOLIC(__NR_jail) -#define __NR_jail_attach SYMBOLIC(__NR_jail_attach) -#define __NR_jail_get SYMBOLIC(__NR_jail_get) -#define __NR_jail_remove SYMBOLIC(__NR_jail_remove) -#define __NR_jail_set SYMBOLIC(__NR_jail_set) -#define __NR_kenv SYMBOLIC(__NR_kenv) -#define __NR_kldfind SYMBOLIC(__NR_kldfind) -#define __NR_kldfirstmod SYMBOLIC(__NR_kldfirstmod) -#define __NR_kldload SYMBOLIC(__NR_kldload) -#define __NR_kldnext SYMBOLIC(__NR_kldnext) -#define __NR_kldstat SYMBOLIC(__NR_kldstat) -#define __NR_kldsym SYMBOLIC(__NR_kldsym) -#define __NR_kldunload SYMBOLIC(__NR_kldunload) -#define __NR_kldunloadf SYMBOLIC(__NR_kldunloadf) -#define __NR_kmq_notify SYMBOLIC(__NR_kmq_notify) -#define __NR_kmq_setattr SYMBOLIC(__NR_kmq_setattr) -#define __NR_kmq_timedreceive SYMBOLIC(__NR_kmq_timedreceive) -#define __NR_kmq_timedsend SYMBOLIC(__NR_kmq_timedsend) -#define __NR_kmq_unlink SYMBOLIC(__NR_kmq_unlink) -#define __NR_ksem_close SYMBOLIC(__NR_ksem_close) -#define __NR_ksem_destroy SYMBOLIC(__NR_ksem_destroy) -#define __NR_ksem_getvalue SYMBOLIC(__NR_ksem_getvalue) -#define __NR_ksem_init SYMBOLIC(__NR_ksem_init) -#define __NR_ksem_open SYMBOLIC(__NR_ksem_open) -#define __NR_ksem_post SYMBOLIC(__NR_ksem_post) -#define __NR_ksem_timedwait SYMBOLIC(__NR_ksem_timedwait) -#define __NR_ksem_trywait SYMBOLIC(__NR_ksem_trywait) -#define __NR_ksem_unlink SYMBOLIC(__NR_ksem_unlink) -#define __NR_ksem_wait SYMBOLIC(__NR_ksem_wait) -#define __NR_ktimer_create SYMBOLIC(__NR_ktimer_create) -#define __NR_ktimer_delete SYMBOLIC(__NR_ktimer_delete) -#define __NR_ktimer_getoverrun SYMBOLIC(__NR_ktimer_getoverrun) -#define __NR_ktimer_gettime SYMBOLIC(__NR_ktimer_gettime) -#define __NR_ktimer_settime SYMBOLIC(__NR_ktimer_settime) -#define __NR_lchflags SYMBOLIC(__NR_lchflags) -#define __NR_lchmod SYMBOLIC(__NR_lchmod) -#define __NR_lgetfh SYMBOLIC(__NR_lgetfh) -#define __NR_lpathconf SYMBOLIC(__NR_lpathconf) -#define __NR_lutimes SYMBOLIC(__NR_lutimes) -#define __NR_mac_syscall SYMBOLIC(__NR_mac_syscall) -#define __NR_modfind SYMBOLIC(__NR_modfind) -#define __NR_modfnext SYMBOLIC(__NR_modfnext) -#define __NR_modnext SYMBOLIC(__NR_modnext) -#define __NR_modstat SYMBOLIC(__NR_modstat) -#define __NR_nfstat SYMBOLIC(__NR_nfstat) -#define __NR_nlm_syscall SYMBOLIC(__NR_nlm_syscall) -#define __NR_nlstat SYMBOLIC(__NR_nlstat) -#define __NR_nmount SYMBOLIC(__NR_nmount) -#define __NR_nnpfs_syscall SYMBOLIC(__NR_nnpfs_syscall) -#define __NR_nstat SYMBOLIC(__NR_nstat) -#define __NR_pdfork SYMBOLIC(__NR_pdfork) -#define __NR_pdgetpid SYMBOLIC(__NR_pdgetpid) -#define __NR_pdkill SYMBOLIC(__NR_pdkill) -#define __NR_posix_openpt SYMBOLIC(__NR_posix_openpt) -#define __NR_procctl SYMBOLIC(__NR_procctl) -#define __NR_psynch_cvwait SYMBOLIC(__NR_psynch_cvwait) -#define __NR_quota SYMBOLIC(__NR_quota) -#define __NR_rctl_add_rule SYMBOLIC(__NR_rctl_add_rule) -#define __NR_rctl_get_limits SYMBOLIC(__NR_rctl_get_limits) -#define __NR_rctl_get_racct SYMBOLIC(__NR_rctl_get_racct) -#define __NR_rctl_get_rules SYMBOLIC(__NR_rctl_get_rules) -#define __NR_rctl_remove_rule SYMBOLIC(__NR_rctl_remove_rule) -#define __NR_recv SYMBOLIC(__NR_recv) -#define __NR_rfork SYMBOLIC(__NR_rfork) -#define __NR_rtprio SYMBOLIC(__NR_rtprio) -#define __NR_rtprio_thread SYMBOLIC(__NR_rtprio_thread) -#define __NR_send SYMBOLIC(__NR_send) -#define __NR_setaudit SYMBOLIC(__NR_setaudit) -#define __NR_setcontext SYMBOLIC(__NR_setcontext) -#define __NR_setfib SYMBOLIC(__NR_setfib) -#define __NR_sethostid SYMBOLIC(__NR_sethostid) -#define __NR_setloginclass SYMBOLIC(__NR_setloginclass) -#define __NR_sigblock SYMBOLIC(__NR_sigblock) -#define __NR_sigqueue SYMBOLIC(__NR_sigqueue) -#define __NR_sigsetmask SYMBOLIC(__NR_sigsetmask) -#define __NR_sigstack SYMBOLIC(__NR_sigstack) -#define __NR_sigvec SYMBOLIC(__NR_sigvec) -#define __NR_sigwaitinfo SYMBOLIC(__NR_sigwaitinfo) -#define __NR_sstk SYMBOLIC(__NR_sstk) -#define __NR_swapcontext SYMBOLIC(__NR_swapcontext) -#define __NR_thr_create SYMBOLIC(__NR_thr_create) -#define __NR_thr_exit SYMBOLIC(__NR_thr_exit) -#define __NR_thr_kill SYMBOLIC(__NR_thr_kill) -#define __NR_thr_kill2 SYMBOLIC(__NR_thr_kill2) -#define __NR_thr_new SYMBOLIC(__NR_thr_new) -#define __NR_thr_self SYMBOLIC(__NR_thr_self) -#define __NR_thr_set_name SYMBOLIC(__NR_thr_set_name) -#define __NR_thr_suspend SYMBOLIC(__NR_thr_suspend) -#define __NR_thr_wake SYMBOLIC(__NR_thr_wake) -#define __NR_uuidgen SYMBOLIC(__NR_uuidgen) -#define __NR_vadvise SYMBOLIC(__NR_vadvise) -#define __NR_wait SYMBOLIC(__NR_wait) -#define __NR_wait6 SYMBOLIC(__NR_wait6) -#define __NR_yield SYMBOLIC(__NR_yield) -#define __NR_tfork SYMBOLIC(__NR_tfork) -#define __NR_thrsleep SYMBOLIC(__NR_thrsleep) -#define __NR_thrwakeup SYMBOLIC(__NR_thrwakeup) -#define __NR_threxit SYMBOLIC(__NR_threxit) -#define __NR_thrsigdivert SYMBOLIC(__NR_thrsigdivert) -#define __NR_set_tcb SYMBOLIC(__NR_set_tcb) -#define __NR_get_tcb SYMBOLIC(__NR_get_tcb) -#define __NR_adjfreq SYMBOLIC(__NR_adjfreq) -#define __NR_getdtablecount SYMBOLIC(__NR_getdtablecount) -#define __NR_getlogin_r SYMBOLIC(__NR_getlogin_r) -#define __NR_getrtable SYMBOLIC(__NR_getrtable) -#define __NR_getthrid SYMBOLIC(__NR_getthrid) -#define __NR_kbind SYMBOLIC(__NR_kbind) -#define __NR_mquery SYMBOLIC(__NR_mquery) -#define __NR_obreak SYMBOLIC(__NR_obreak) -#define __NR_sendsyslog SYMBOLIC(__NR_sendsyslog) -#define __NR_setrtable SYMBOLIC(__NR_setrtable) -#define __NR_swapctl SYMBOLIC(__NR_swapctl) -#define __NR_thrkill SYMBOLIC(__NR_thrkill) -#define __NR_unveil SYMBOLIC(__NR_unveil) -#define __NR_mac_get_link SYMBOLIC(__NR_mac_get_link) -#define __NR_mac_set_link SYMBOLIC(__NR_mac_set_link) -#define __NR_mac_get_fd SYMBOLIC(__NR_mac_get_fd) -#define __NR_mac_get_file SYMBOLIC(__NR_mac_get_file) -#define __NR_mac_get_proc SYMBOLIC(__NR_mac_get_proc) -#define __NR_mac_set_fd SYMBOLIC(__NR_mac_set_fd) -#define __NR_mac_get_pid SYMBOLIC(__NR_mac_get_pid) -#define __NR_mac_set_proc SYMBOLIC(__NR_mac_set_proc) -#define __NR_mac_set_file SYMBOLIC(__NR_mac_set_file) -#define __NR_mac_execve SYMBOLIC(__NR_mac_execve) -#define __NR_acl_get_link SYMBOLIC(__NR_acl_get_link) -#define __NR_sigwait_nocancel SYMBOLIC(__NR_sigwait_nocancel) -#define __NR_cap_rights_get SYMBOLIC(__NR_cap_rights_get) -#define __NR_semwait_signal SYMBOLIC(__NR_semwait_signal) -#define __NR_acl_set_link SYMBOLIC(__NR_acl_set_link) -#define __NR_acl_set_fd SYMBOLIC(__NR_acl_set_fd) -#define __NR_old_semwait_signal SYMBOLIC(__NR_old_semwait_signal) -#define __NR_setugid SYMBOLIC(__NR_setugid) -#define __NR_acl_aclcheck_fd SYMBOLIC(__NR_acl_aclcheck_fd) -#define __NR_acl_get_fd SYMBOLIC(__NR_acl_get_fd) -#define __NR___sysctl SYMBOLIC(__NR___sysctl) -#define __NR_mac_getfsstat SYMBOLIC(__NR_mac_getfsstat) -#define __NR_mac_get_mount SYMBOLIC(__NR_mac_get_mount) -#define __NR_acl_delete_link SYMBOLIC(__NR_acl_delete_link) -#define __NR_mac_mount SYMBOLIC(__NR_mac_mount) -#define __NR_acl_get_file SYMBOLIC(__NR_acl_get_file) -#define __NR_acl_aclcheck_file SYMBOLIC(__NR_acl_aclcheck_file) -#define __NR_acl_delete_fd SYMBOLIC(__NR_acl_delete_fd) -#define __NR_acl_aclcheck_link SYMBOLIC(__NR_acl_aclcheck_link) -#define __NR___mac_syscall SYMBOLIC(__NR___mac_syscall) -#define __NR_acl_set_file SYMBOLIC(__NR_acl_set_file) -#define __NR_acl_delete_file SYMBOLIC(__NR_acl_delete_file) -#define __NR_syscall SYMBOLIC(__NR_syscall) -#define __NR__umtx_op SYMBOLIC(__NR__umtx_op) -#define __NR_semwait_signal_nocancel SYMBOLIC(__NR_semwait_signal_nocancel) -#define __NR_old_semwait_signal_nocancel \ - SYMBOLIC(__NR_old_semwait_signal_nocancel) -#define __NR_sctp_peeloff SYMBOLIC(__NR_sctp_peeloff) -#define __NR_sctp_generic_recvmsg SYMBOLIC(__NR_sctp_generic_recvmsg) -#define __NR_sctp_generic_sendmsg SYMBOLIC(__NR_sctp_generic_sendmsg) -#define __NR_sctp_generic_sendmsg_iov SYMBOLIC(__NR_sctp_generic_sendmsg_iov) -#define __NR_shared_region_map_and_slide_np \ - SYMBOLIC(__NR_shared_region_map_and_slide_np) -#define __NR_guarded_open_dprotected_np \ - SYMBOLIC(__NR_guarded_open_dprotected_np) -#define __NR_stack_snapshot_with_config \ - SYMBOLIC(__NR_stack_snapshot_with_config) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long __NR_exit; -extern const long __NR_exit_group; -extern const long __NR_read; -extern const long __NR_write; -extern const long __NR_open; -extern const long __NR_close; -extern const long __NR_stat; -extern const long __NR_fstat; -extern const long __NR_lstat; -extern const long __NR_poll; -extern const long __NR_ppoll; -extern const long __NR_lseek; -extern const long __NR_mmap; -extern const long __NR_msync; -extern const long __NR_mprotect; -extern const long __NR_munmap; -extern const long __NR_sigaction; -extern const long __NR_sigprocmask; -extern const long __NR_ioctl; -extern const long __NR_pread; -extern const long __NR_pwrite; -extern const long __NR_readv; -extern const long __NR_writev; -extern const long __NR_access; -extern const long __NR_pipe; -extern const long __NR_select; -extern const long __NR_pselect; -extern const long __NR_pselect6; -extern const long __NR_sched_yield; -extern const long __NR_mremap; -extern const long __NR_mincore; -extern const long __NR_madvise; -extern const long __NR_shmget; -extern const long __NR_shmat; -extern const long __NR_shmctl; -extern const long __NR_dup; -extern const long __NR_dup2; -extern const long __NR_pause; -extern const long __NR_nanosleep; -extern const long __NR_getitimer; -extern const long __NR_setitimer; -extern const long __NR_alarm; -extern const long __NR_getpid; -extern const long __NR_sendfile; -extern const long __NR_socket; -extern const long __NR_connect; -extern const long __NR_accept; -extern const long __NR_sendto; -extern const long __NR_recvfrom; -extern const long __NR_sendmsg; -extern const long __NR_recvmsg; -extern const long __NR_shutdown; -extern const long __NR_bind; -extern const long __NR_listen; -extern const long __NR_getsockname; -extern const long __NR_getpeername; -extern const long __NR_socketpair; -extern const long __NR_setsockopt; -extern const long __NR_getsockopt; -extern const long __NR_fork; -extern const long __NR_vfork; -extern const long __NR_posix_spawn; -extern const long __NR_execve; -extern const long __NR_wait4; -extern const long __NR_kill; -extern const long __NR_killpg; -extern const long __NR_clone; -extern const long __NR_tkill; -extern const long __NR_futex; -extern const long __NR_set_robust_list; -extern const long __NR_get_robust_list; -extern const long __NR_uname; -extern const long __NR_semget; -extern const long __NR_semop; -extern const long __NR_semctl; -extern const long __NR_shmdt; -extern const long __NR_msgget; -extern const long __NR_msgsnd; -extern const long __NR_msgrcv; -extern const long __NR_msgctl; -extern const long __NR_fcntl; -extern const long __NR_flock; -extern const long __NR_fsync; -extern const long __NR_fdatasync; -extern const long __NR_truncate; -extern const long __NR_ftruncate; -extern const long __NR_getcwd; -extern const long __NR_chdir; -extern const long __NR_fchdir; -extern const long __NR_rename; -extern const long __NR_mkdir; -extern const long __NR_rmdir; -extern const long __NR_creat; -extern const long __NR_link; -extern const long __NR_unlink; -extern const long __NR_symlink; -extern const long __NR_readlink; -extern const long __NR_chmod; -extern const long __NR_fchmod; -extern const long __NR_chown; -extern const long __NR_fchown; -extern const long __NR_lchown; -extern const long __NR_umask; -extern const long __NR_gettimeofday; -extern const long __NR_getrlimit; -extern const long __NR_getrusage; -extern const long __NR_sysinfo; -extern const long __NR_times; -extern const long __NR_ptrace; -extern const long __NR_syslog; -extern const long __NR_getuid; -extern const long __NR_getgid; -extern const long __NR_getppid; -extern const long __NR_getpgrp; -extern const long __NR_setsid; -extern const long __NR_getsid; -extern const long __NR_getpgid; -extern const long __NR_setpgid; -extern const long __NR_geteuid; -extern const long __NR_getegid; -extern const long __NR_getgroups; -extern const long __NR_setgroups; -extern const long __NR_setreuid; -extern const long __NR_setregid; -extern const long __NR_setuid; -extern const long __NR_setgid; -extern const long __NR_setresuid; -extern const long __NR_setresgid; -extern const long __NR_getresuid; -extern const long __NR_getresgid; -extern const long __NR_sigpending; -extern const long __NR_sigsuspend; -extern const long __NR_sigaltstack; -extern const long __NR_mknod; -extern const long __NR_mknodat; -extern const long __NR_mkfifo; -extern const long __NR_mkfifoat; -extern const long __NR_statfs; -extern const long __NR_fstatfs; -extern const long __NR_getpriority; -extern const long __NR_setpriority; -extern const long __NR_mlock; -extern const long __NR_munlock; -extern const long __NR_mlockall; -extern const long __NR_munlockall; -extern const long __NR_setrlimit; -extern const long __NR_chroot; -extern const long __NR_sync; -extern const long __NR_acct; -extern const long __NR_settimeofday; -extern const long __NR_mount; -extern const long __NR_reboot; -extern const long __NR_quotactl; -extern const long __NR_setfsuid; -extern const long __NR_setfsgid; -extern const long __NR_capget; -extern const long __NR_capset; -extern const long __NR_sigtimedwait; -extern const long __NR_rt_sigqueueinfo; -extern const long __NR_personality; -extern const long __NR_ustat; -extern const long __NR_sysfs; -extern const long __NR_sched_setparam; -extern const long __NR_sched_getparam; -extern const long __NR_sched_setscheduler; -extern const long __NR_sched_getscheduler; -extern const long __NR_sched_get_priority_max; -extern const long __NR_sched_get_priority_min; -extern const long __NR_sched_rr_get_interval; -extern const long __NR_vhangup; -extern const long __NR_modify_ldt; -extern const long __NR_pivot_root; -extern const long __NR__sysctl; -extern const long __NR_prctl; -extern const long __NR_arch_prctl; -extern const long __NR_adjtimex; -extern const long __NR_umount2; -extern const long __NR_swapon; -extern const long __NR_swapoff; -extern const long __NR_sethostname; -extern const long __NR_setdomainname; -extern const long __NR_iopl; -extern const long __NR_ioperm; -extern const long __NR_init_module; -extern const long __NR_delete_module; -extern const long __NR_gettid; -extern const long __NR_readahead; -extern const long __NR_setxattr; -extern const long __NR_fsetxattr; -extern const long __NR_getxattr; -extern const long __NR_fgetxattr; -extern const long __NR_listxattr; -extern const long __NR_flistxattr; -extern const long __NR_removexattr; -extern const long __NR_fremovexattr; -extern const long __NR_lsetxattr; -extern const long __NR_lgetxattr; -extern const long __NR_llistxattr; -extern const long __NR_lremovexattr; -extern const long __NR_sched_setaffinity; -extern const long __NR_sched_getaffinity; -extern const long __NR_cpuset_getaffinity; -extern const long __NR_cpuset_setaffinity; -extern const long __NR_io_setup; -extern const long __NR_io_destroy; -extern const long __NR_io_getevents; -extern const long __NR_io_submit; -extern const long __NR_io_cancel; -extern const long __NR_lookup_dcookie; -extern const long __NR_epoll_create; -extern const long __NR_epoll_wait; -extern const long __NR_epoll_ctl; -extern const long __NR_getdents; -extern const long __NR_set_tid_address; -extern const long __NR_restart_syscall; -extern const long __NR_semtimedop; -extern const long __NR_fadvise; -extern const long __NR_timer_create; -extern const long __NR_timer_settime; -extern const long __NR_timer_gettime; -extern const long __NR_timer_getoverrun; -extern const long __NR_timer_delete; -extern const long __NR_clock_settime; -extern const long __NR_clock_gettime; -extern const long __NR_clock_getres; -extern const long __NR_clock_nanosleep; -extern const long __NR_tgkill; -extern const long __NR_mbind; -extern const long __NR_set_mempolicy; -extern const long __NR_get_mempolicy; -extern const long __NR_mq_open; -extern const long __NR_mq_unlink; -extern const long __NR_mq_timedsend; -extern const long __NR_mq_timedreceive; -extern const long __NR_mq_notify; -extern const long __NR_mq_getsetattr; -extern const long __NR_kexec_load; -extern const long __NR_waitid; -extern const long __NR_add_key; -extern const long __NR_request_key; -extern const long __NR_keyctl; -extern const long __NR_ioprio_set; -extern const long __NR_ioprio_get; -extern const long __NR_inotify_init; -extern const long __NR_inotify_add_watch; -extern const long __NR_inotify_rm_watch; -extern const long __NR_openat; -extern const long __NR_mkdirat; -extern const long __NR_fchownat; -extern const long __NR_utime; -extern const long __NR_utimes; -extern const long __NR_futimesat; -extern const long __NR_futimes; -extern const long __NR_futimens; -extern const long __NR_fstatat; -extern const long __NR_unlinkat; -extern const long __NR_renameat; -extern const long __NR_linkat; -extern const long __NR_symlinkat; -extern const long __NR_readlinkat; -extern const long __NR_fchmodat; -extern const long __NR_faccessat; -extern const long __NR_unshare; -extern const long __NR_splice; -extern const long __NR_tee; -extern const long __NR_sync_file_range; -extern const long __NR_vmsplice; -extern const long __NR_migrate_pages; -extern const long __NR_move_pages; -extern const long __NR_preadv; -extern const long __NR_pwritev; -extern const long __NR_utimensat; -extern const long __NR_fallocate; -extern const long __NR_posix_fallocate; -extern const long __NR_accept4; -extern const long __NR_dup3; -extern const long __NR_pipe2; -extern const long __NR_epoll_pwait; -extern const long __NR_epoll_create1; -extern const long __NR_perf_event_open; -extern const long __NR_inotify_init1; -extern const long __NR_rt_tgsigqueueinfo; -extern const long __NR_signalfd; -extern const long __NR_signalfd4; -extern const long __NR_eventfd; -extern const long __NR_eventfd2; -extern const long __NR_timerfd_create; -extern const long __NR_timerfd_settime; -extern const long __NR_timerfd_gettime; -extern const long __NR_recvmmsg; -extern const long __NR_fanotify_init; -extern const long __NR_fanotify_mark; -extern const long __NR_prlimit; -extern const long __NR_name_to_handle_at; -extern const long __NR_open_by_handle_at; -extern const long __NR_clock_adjtime; -extern const long __NR_syncfs; -extern const long __NR_sendmmsg; -extern const long __NR_setns; -extern const long __NR_getcpu; -extern const long __NR_process_vm_readv; -extern const long __NR_process_vm_writev; -extern const long __NR_kcmp; -extern const long __NR_finit_module; -extern const long __NR_sched_setattr; -extern const long __NR_sched_getattr; -extern const long __NR_renameat2; -extern const long __NR_seccomp; -extern const long __NR_getrandom; -extern const long __NR_memfd_create; -extern const long __NR_kexec_file_load; -extern const long __NR_bpf; -extern const long __NR_execveat; -extern const long __NR_userfaultfd; -extern const long __NR_membarrier; -extern const long __NR_mlock2; -extern const long __NR_copy_file_range; -extern const long __NR_preadv2; -extern const long __NR_pwritev2; -extern const long __NR_pkey_mprotect; -extern const long __NR_pkey_alloc; -extern const long __NR_pkey_free; -extern const long __NR_statx; -extern const long __NR_io_pgetevents; -extern const long __NR_rseq; -extern const long __NR_pidfd_send_signal; -extern const long __NR_io_uring_setup; -extern const long __NR_io_uring_enter; -extern const long __NR_io_uring_register; -extern const long __NR_pledge; -extern const long __NR_msyscall; -extern const long __NR_ktrace; -extern const long __NR_kqueue; -extern const long __NR_kevent; -extern const long __NR_revoke; -extern const long __NR_setlogin; -extern const long __NR_getfh; -extern const long __NR_chflags; -extern const long __NR_getfsstat; -extern const long __NR_nfssvc; -extern const long __NR_adjtime; -extern const long __NR_fchflags; -extern const long __NR_seteuid; -extern const long __NR_setegid; -extern const long __NR_fpathconf; -extern const long __NR_fhopen; -extern const long __NR_unmount; -extern const long __NR_issetugid; -extern const long __NR_minherit; -extern const long __NR_pathconf; -extern const long __NR_sysctl; -extern const long __NR_ntp_adjtime; -extern const long __NR_ntp_gettime; -extern const long __NR_shm_unlink; -extern const long __NR_shm_open; -extern const long __NR_aio_read; -extern const long __NR_aio_suspend; -extern const long __NR_aio_cancel; -extern const long __NR_aio_fsync; -extern const long __NR_aio_error; -extern const long __NR_aio_return; -extern const long __NR_aio_write; -extern const long __NR_aio_waitcomplete; -extern const long __NR_aio_suspend_nocancel; -extern const long __NR_aio_mlock; -extern const long __NR_sigwait; -extern const long __NR_undelete; -extern const long __NR_getlogin; -extern const long __NR_getdtablesize; -extern const long __NR_setauid; -extern const long __NR_audit; -extern const long __NR_auditctl; -extern const long __NR_getaudit_addr; -extern const long __NR_getdirentries; -extern const long __NR_lio_listio; -extern const long __NR_setaudit_addr; -extern const long __NR_getauid; -extern const long __NR_semsys; -extern const long __NR_auditon; -extern const long __NR_msgsys; -extern const long __NR_shmsys; -extern const long __NR_fhstat; -extern const long __NR_chflagsat; -extern const long __NR_profil; -extern const long __NR_fhstatfs; -extern const long __NR_utrace; -extern const long __NR_closefrom; -extern const long __NR_pthread_markcancel; -extern const long __NR_pthread_kill; -extern const long __NR_pthread_fchdir; -extern const long __NR_pthread_sigmask; -extern const long __NR_pthread_chdir; -extern const long __NR_pthread_canceled; -extern const long __NR_disable_threadsignal; -extern const long __NR_abort_with_payload; -extern const long __NR_accept_nocancel; -extern const long __NR_access_extended; -extern const long __NR_audit_session_join; -extern const long __NR_audit_session_port; -extern const long __NR_audit_session_self; -extern const long __NR_bsdthread_create; -extern const long __NR_bsdthread_ctl; -extern const long __NR_bsdthread_register; -extern const long __NR_bsdthread_terminate; -extern const long __NR_change_fdguard_np; -extern const long __NR_chmod_extended; -extern const long __NR_clonefileat; -extern const long __NR_close_nocancel; -extern const long __NR_coalition; -extern const long __NR_coalition_info; -extern const long __NR_connect_nocancel; -extern const long __NR_connectx; -extern const long __NR_copyfile; -extern const long __NR_csops; -extern const long __NR_csops_audittoken; -extern const long __NR_csrctl; -extern const long __NR_delete; -extern const long __NR_disconnectx; -extern const long __NR_exchangedata; -extern const long __NR_fchmod_extended; -extern const long __NR_fclonefileat; -extern const long __NR_fcntl_nocancel; -extern const long __NR_ffsctl; -extern const long __NR_fgetattrlist; -extern const long __NR_fileport_makefd; -extern const long __NR_fileport_makeport; -extern const long __NR_fmount; -extern const long __NR_fs_snapshot; -extern const long __NR_fsctl; -extern const long __NR_fsetattrlist; -extern const long __NR_fstat_extended; -extern const long __NR_fsync_nocancel; -extern const long __NR_getattrlist; -extern const long __NR_getattrlistat; -extern const long __NR_getattrlistbulk; -extern const long __NR_getdirentriesattr; -extern const long __NR_gethostuuid; -extern const long __NR_getsgroups; -extern const long __NR_getwgroups; -extern const long __NR_grab_pgo_data; -extern const long __NR_guarded_close_np; -extern const long __NR_guarded_kqueue_np; -extern const long __NR_guarded_open_np; -extern const long __NR_guarded_pwrite_np; -extern const long __NR_guarded_write_np; -extern const long __NR_guarded_writev_np; -extern const long __NR_identitysvc; -extern const long __NR_initgroups; -extern const long __NR_iopolicysys; -extern const long __NR_kas_info; -extern const long __NR_kdebug_trace; -extern const long __NR_kdebug_trace_string; -extern const long __NR_kdebug_typefilter; -extern const long __NR_kevent_id; -extern const long __NR_kevent_qos; -extern const long __NR_ledger; -extern const long __NR_lstat_extended; -extern const long __NR_memorystatus_control; -extern const long __NR_memorystatus_get_level; -extern const long __NR_microstackshot; -extern const long __NR_mkdir_extended; -extern const long __NR_mkfifo_extended; -extern const long __NR_modwatch; -extern const long __NR_mremap_encrypted; -extern const long __NR_msgrcv_nocancel; -extern const long __NR_msgsnd_nocancel; -extern const long __NR_msync_nocancel; -extern const long __NR_necp_client_action; -extern const long __NR_necp_match_policy; -extern const long __NR_necp_open; -extern const long __NR_necp_session_action; -extern const long __NR_necp_session_open; -extern const long __NR_net_qos_guideline; -extern const long __NR_netagent_trigger; -extern const long __NR_nfsclnt; -extern const long __NR_open_dprotected_np; -extern const long __NR_open_extended; -extern const long __NR_open_nocancel; -extern const long __NR_openat_nocancel; -extern const long __NR_openbyid_np; -extern const long __NR_os_fault_with_payload; -extern const long __NR_peeloff; -extern const long __NR_persona; -extern const long __NR_pid_hibernate; -extern const long __NR_pid_resume; -extern const long __NR_pid_shutdown_sockets; -extern const long __NR_pid_suspend; -extern const long __NR_poll_nocancel; -extern const long __NR_pread_nocancel; -extern const long __NR_proc_info; -extern const long __NR_proc_rlimit_control; -extern const long __NR_proc_trace_log; -extern const long __NR_proc_uuid_policy; -extern const long __NR_process_policy; -extern const long __NR_pselect_nocancel; -extern const long __NR_psynch_cvbroad; -extern const long __NR_psynch_cvclrprepost; -extern const long __NR_psynch_cvsignal; -extern const long __NR_psynch_mutexdrop; -extern const long __NR_psynch_mutexwait; -extern const long __NR_psynch_rw_downgrade; -extern const long __NR_psynch_rw_longrdlock; -extern const long __NR_psynch_rw_rdlock; -extern const long __NR_psynch_rw_unlock; -extern const long __NR_psynch_rw_unlock2; -extern const long __NR_psynch_rw_upgrade; -extern const long __NR_psynch_rw_wrlock; -extern const long __NR_psynch_rw_yieldwrlock; -extern const long __NR_pwrite_nocancel; -extern const long __NR_read_nocancel; -extern const long __NR_readv_nocancel; -extern const long __NR_recvfrom_nocancel; -extern const long __NR_recvmsg_nocancel; -extern const long __NR_recvmsg_x; -extern const long __NR_renameatx_np; -extern const long __NR_searchfs; -extern const long __NR_select_nocancel; -extern const long __NR_sem_close; -extern const long __NR_sem_open; -extern const long __NR_sem_post; -extern const long __NR_sem_trywait; -extern const long __NR_sem_unlink; -extern const long __NR_sem_wait; -extern const long __NR_sem_wait_nocancel; -extern const long __NR_sendmsg_nocancel; -extern const long __NR_sendmsg_x; -extern const long __NR_sendto_nocancel; -extern const long __NR_setattrlist; -extern const long __NR_setattrlistat; -extern const long __NR_setprivexec; -extern const long __NR_setsgroups; -extern const long __NR_settid; -extern const long __NR_settid_with_pid; -extern const long __NR_setwgroups; -extern const long __NR_sfi_ctl; -extern const long __NR_sfi_pidctl; -extern const long __NR_shared_region_check_np; -extern const long __NR_sigsuspend_nocancel; -extern const long __NR_socket_delegate; -extern const long __NR_stat_extended; -extern const long __NR_sysctlbyname; -extern const long __NR_system_override; -extern const long __NR_telemetry; -extern const long __NR_terminate_with_payload; -extern const long __NR_thread_selfcounts; -extern const long __NR_thread_selfid; -extern const long __NR_thread_selfusage; -extern const long __NR_ulock_wait; -extern const long __NR_ulock_wake; -extern const long __NR_umask_extended; -extern const long __NR_usrctl; -extern const long __NR_vfs_purge; -extern const long __NR_vm_pressure_monitor; -extern const long __NR_wait4_nocancel; -extern const long __NR_waitevent; -extern const long __NR_waitid_nocancel; -extern const long __NR_watchevent; -extern const long __NR_work_interval_ctl; -extern const long __NR_workq_kernreturn; -extern const long __NR_workq_open; -extern const long __NR_write_nocancel; -extern const long __NR_writev_nocancel; -extern const long __NR_abort2; -extern const long __NR_afs3_syscall; -extern const long __NR_bindat; -extern const long __NR_break; -extern const long __NR_cap_enter; -extern const long __NR_cap_fcntls_get; -extern const long __NR_cap_fcntls_limit; -extern const long __NR_cap_getmode; -extern const long __NR_cap_ioctls_get; -extern const long __NR_cap_ioctls_limit; -extern const long __NR_cap_rights_limit; -extern const long __NR_clock_getcpuclockid2; -extern const long __NR_connectat; -extern const long __NR_cpuset; -extern const long __NR_cpuset_getdomain; -extern const long __NR_cpuset_getid; -extern const long __NR_cpuset_setdomain; -extern const long __NR_cpuset_setid; -extern const long __NR_eaccess; -extern const long __NR_extattr_delete_fd; -extern const long __NR_extattr_delete_file; -extern const long __NR_extattr_delete_link; -extern const long __NR_extattr_get_fd; -extern const long __NR_extattr_get_file; -extern const long __NR_extattr_get_link; -extern const long __NR_extattr_list_fd; -extern const long __NR_extattr_list_file; -extern const long __NR_extattr_list_link; -extern const long __NR_extattr_set_fd; -extern const long __NR_extattr_set_file; -extern const long __NR_extattr_set_link; -extern const long __NR_extattrctl; -extern const long __NR_fexecve; -extern const long __NR_ffclock_getcounter; -extern const long __NR_ffclock_getestimate; -extern const long __NR_ffclock_setestimate; -extern const long __NR_fhlink; -extern const long __NR_fhlinkat; -extern const long __NR_fhreadlink; -extern const long __NR_getaudit; -extern const long __NR_getcontext; -extern const long __NR_getfhat; -extern const long __NR_gethostid; -extern const long __NR_getkerninfo; -extern const long __NR_getloginclass; -extern const long __NR_getpagesize; -extern const long __NR_gssd_syscall; -extern const long __NR_jail; -extern const long __NR_jail_attach; -extern const long __NR_jail_get; -extern const long __NR_jail_remove; -extern const long __NR_jail_set; -extern const long __NR_kenv; -extern const long __NR_kldfind; -extern const long __NR_kldfirstmod; -extern const long __NR_kldload; -extern const long __NR_kldnext; -extern const long __NR_kldstat; -extern const long __NR_kldsym; -extern const long __NR_kldunload; -extern const long __NR_kldunloadf; -extern const long __NR_kmq_notify; -extern const long __NR_kmq_setattr; -extern const long __NR_kmq_timedreceive; -extern const long __NR_kmq_timedsend; -extern const long __NR_kmq_unlink; -extern const long __NR_ksem_close; -extern const long __NR_ksem_destroy; -extern const long __NR_ksem_getvalue; -extern const long __NR_ksem_init; -extern const long __NR_ksem_open; -extern const long __NR_ksem_post; -extern const long __NR_ksem_timedwait; -extern const long __NR_ksem_trywait; -extern const long __NR_ksem_unlink; -extern const long __NR_ksem_wait; -extern const long __NR_ktimer_create; -extern const long __NR_ktimer_delete; -extern const long __NR_ktimer_getoverrun; -extern const long __NR_ktimer_gettime; -extern const long __NR_ktimer_settime; -extern const long __NR_lchflags; -extern const long __NR_lchmod; -extern const long __NR_lgetfh; -extern const long __NR_lpathconf; -extern const long __NR_lutimes; -extern const long __NR_mac_syscall; -extern const long __NR_modfind; -extern const long __NR_modfnext; -extern const long __NR_modnext; -extern const long __NR_modstat; -extern const long __NR_nfstat; -extern const long __NR_nlm_syscall; -extern const long __NR_nlstat; -extern const long __NR_nmount; -extern const long __NR_nnpfs_syscall; -extern const long __NR_nstat; -extern const long __NR_pdfork; -extern const long __NR_pdgetpid; -extern const long __NR_pdkill; -extern const long __NR_posix_openpt; -extern const long __NR_procctl; -extern const long __NR_psynch_cvwait; -extern const long __NR_quota; -extern const long __NR_rctl_add_rule; -extern const long __NR_rctl_get_limits; -extern const long __NR_rctl_get_racct; -extern const long __NR_rctl_get_rules; -extern const long __NR_rctl_remove_rule; -extern const long __NR_recv; -extern const long __NR_rfork; -extern const long __NR_rtprio; -extern const long __NR_rtprio_thread; -extern const long __NR_send; -extern const long __NR_setaudit; -extern const long __NR_setcontext; -extern const long __NR_setfib; -extern const long __NR_sethostid; -extern const long __NR_setloginclass; -extern const long __NR_sigblock; -extern const long __NR_sigqueue; -extern const long __NR_sigsetmask; -extern const long __NR_sigstack; -extern const long __NR_sigvec; -extern const long __NR_sigwaitinfo; -extern const long __NR_sstk; -extern const long __NR_swapcontext; -extern const long __NR_thr_create; -extern const long __NR_thr_exit; -extern const long __NR_thr_kill; -extern const long __NR_thr_kill2; -extern const long __NR_thr_new; -extern const long __NR_thr_self; -extern const long __NR_thr_set_name; -extern const long __NR_thr_suspend; -extern const long __NR_thr_wake; -extern const long __NR_uuidgen; -extern const long __NR_vadvise; -extern const long __NR_wait; -extern const long __NR_wait6; -extern const long __NR_yield; -extern const long __NR_tfork; -extern const long __NR_thrsleep; -extern const long __NR_thrwakeup; -extern const long __NR_threxit; -extern const long __NR_thrsigdivert; -extern const long __NR_set_tcb; -extern const long __NR_get_tcb; -extern const long __NR_adjfreq; -extern const long __NR_getdtablecount; -extern const long __NR_getlogin_r; -extern const long __NR_getrtable; -extern const long __NR_getthrid; -extern const long __NR_kbind; -extern const long __NR_mquery; -extern const long __NR_obreak; -extern const long __NR_sendsyslog; -extern const long __NR_setrtable; -extern const long __NR_swapctl; -extern const long __NR_thrkill; -extern const long __NR_unveil; -extern const long __NR_mac_get_link; -extern const long __NR_mac_set_link; -extern const long __NR_mac_get_fd; -extern const long __NR_mac_get_file; -extern const long __NR_mac_get_proc; -extern const long __NR_mac_set_fd; -extern const long __NR_mac_get_pid; -extern const long __NR_mac_set_proc; -extern const long __NR_mac_set_file; -extern const long __NR_mac_execve; -extern const long __NR_acl_get_link; -extern const long __NR_sigwait_nocancel; -extern const long __NR_cap_rights_get; -extern const long __NR_semwait_signal; -extern const long __NR_acl_set_link; -extern const long __NR_acl_set_fd; -extern const long __NR_old_semwait_signal; -extern const long __NR_setugid; -extern const long __NR_acl_aclcheck_fd; -extern const long __NR_acl_get_fd; -extern const long __NR___sysctl; -extern const long __NR_mac_getfsstat; -extern const long __NR_mac_get_mount; -extern const long __NR_acl_delete_link; -extern const long __NR_mac_mount; -extern const long __NR_acl_get_file; -extern const long __NR_acl_aclcheck_file; -extern const long __NR_acl_delete_fd; -extern const long __NR_acl_aclcheck_link; -extern const long __NR___mac_syscall; -extern const long __NR_acl_set_file; -extern const long __NR_acl_delete_file; -extern const long __NR_syscall; -extern const long __NR__umtx_op; -extern const long __NR_semwait_signal_nocancel; -extern const long __NR_old_semwait_signal_nocancel; -extern const long __NR_sctp_peeloff; -extern const long __NR_sctp_generic_recvmsg; -extern const long __NR_sctp_generic_sendmsg; -extern const long __NR_sctp_generic_sendmsg_iov; -extern const long __NR_shared_region_map_and_slide_np; -extern const long __NR_guarded_open_dprotected_np; -extern const long __NR_stack_snapshot_with_config; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/w.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_W_H_ - -#define WNOHANG SYMBOLIC(WNOHANG) -#define WUNTRACED SYMBOLIC(WUNTRACED) -#define WCONTINUED SYMBOLIC(WCONTINUED) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long WNOHANG; -extern const long WUNTRACED; -extern const long WCONTINUED; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/** - * @fileoverview GDB Attach Support Code. - * - * The goal of these macros is to make the backtrace into the failing - * code as short as possible. It also helps avoid GDB getting confused - * about how we don't use its readability destroying unwind directives. - */ - -extern volatile int g_gdbsync; - -int gdbexec(const char *); -int attachdebugger(intptr_t); - -#define attachdebugger(CONTINUE_TO_ADDR) /* shorten backtraces */ \ - SYNCHRONIZE_DEBUGGER((attachdebugger)(CONTINUE_TO_ADDR)) - -#define SYNCHRONIZE_DEBUGGER(PID) \ - ({ \ - int Rc, Pid = (PID); \ - if (Pid != -1) { \ - while ((Rc = __inline_wait4(Pid, NULL, WNOHANG, NULL)) == 0) { \ - if (g_gdbsync) { \ - g_gdbsync = 0; \ - if (Rc > 0) Pid = 0; \ - break; \ - } else { \ - sched_yield(); \ - } \ - } \ - } \ - Pid; \ - }) - -#define __inline_wait4(PID, OPT_OUT_WSTATUS, OPTIONS, OPT_OUT_RUSAGE) \ - ({ \ - int64_t WaAx; \ - if (!IsWindows()) { \ - asm volatile("mov\t%5,%%r10\n\t" \ - "syscall" \ - : "=a"(WaAx) \ - : "0"(__NR_wait4), "D"(PID), "S"(OPT_OUT_WSTATUS), \ - "d"(OPTIONS), "g"(OPT_OUT_RUSAGE) \ - : "rcx", "r10", "r11", "cc", "memory"); \ - } else { \ - WaAx = sys_wait4_nt(PID, OPT_OUT_WSTATUS, OPTIONS, OPT_OUT_RUSAGE); \ - } \ - WaAx; \ - }) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/log/log.h */ - -#define COSMOPOLITAN_LIBC_LOG_LOG_H_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § liblog ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kLogFatal 0 -#define kLogError 1 -#define kLogWarn 2 -#define kLogInfo 3 -#define kLogVerbose 4 -#define kLogDebug 5 - -/** - * Log level for compile-time DCE. - */ -#ifndef LOGGABLELEVEL -#ifndef TINY -#define LOGGABLELEVEL kLogDebug -/* #elif IsTiny() */ -/* #define LOGGABLELEVEL kLogInfo */ -#else -#define LOGGABLELEVEL kLogVerbose -#endif -#endif - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern FILE *__log_file; - -void perror(const char *) relegated; /* print the last system error */ -void __die(void) relegated wontreturn; /* print backtrace and abort() */ -void meminfo(int); /* shows malloc statistics &c. */ -void memsummary(int); /* light version of same thing */ -uint16_t getttycols(uint16_t); -int getttysize(int, struct winsize *) paramsnonnull(); -bool IsTerminalInarticulate(void) nosideeffect; -const char *commandvenv(const char *, const char *); -const char *GetAddr2linePath(void); -const char *GetGdbPath(void); - -void showcrashreports(void); -void callexitontermination(struct sigset *); -bool32 IsDebuggerPresent(bool); -bool IsRunningUnderMake(void); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § liblog » logging ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#ifndef __STRICT_ANSI__ - -extern unsigned __log_level; /* log level for runtime check */ - -#define LOGGABLE(LEVEL) \ - ((!__builtin_constant_p(LEVEL) || (LEVEL) <= LOGGABLELEVEL) && \ - (LEVEL) <= __log_level) - -#define LOGF(FMT, ...) \ - do { \ - if (LOGGABLE(kLogInfo)) { \ - flogf(kLogInfo, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - } \ - } while (0) - -#define VFLOG(FMT, VA) \ - do { \ - if (LOGGABLE(kLogInfo)) { \ - vflogf(kLogInfo, __FILE__, __LINE__, NULL, FMT, VA); \ - } \ - } while (0) - -#define FLOGF(F, FMT, ...) \ - do { \ - if (LOGGABLE(kLogInfo)) { \ - flogf(kLogInfo, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - } \ - } while (0) - -#define VFLOGF(F, FMT, VA) \ - do { \ - if (LOGGABLE(kLogInfo)) { \ - vflogf(kLogInfo, __FILE__, __LINE__, F, FMT, VA); \ - } \ - } while (0) - -#define WARNF(FMT, ...) \ - do { \ - if (LOGGABLE(kLogWarn)) { \ - flogf(kLogWarn, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - } \ - } while (0) - -#define VWARNF(FMT, VA) \ - do { \ - if (LOGGABLE(kLogWarn)) { \ - vflogf(kLogWarn, __FILE__, __LINE__, NULL, FMT, VA); \ - } \ - } while (0) - -#define FWARNF(F, FMT, ...) \ - do { \ - if (LOGGABLE(kLogWarn)) { \ - flogf(kLogWarn, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - } \ - } while (0) - -#define VFWARNF(F, FMT, VA) \ - do { \ - if (LOGGABLE(kLogWarn)) { \ - vflogf(kLogWarn, __FILE__, __LINE__, F, FMT, VA); \ - } \ - } while (0) - -#define FATALF(FMT, ...) \ - do { \ - ffatalf(kLogFatal, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - unreachable; \ - } while (0) - -#define VFATALF(FMT, VA) \ - do { \ - vffatalf(kLogFatal, __FILE__, __LINE__, NULL, FMT, VA); \ - unreachable; \ - } while (0) - -#define FFATALF(F, FMT, ...) \ - do { \ - ffatalf(kLogFatal, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - unreachable; \ - } while (0) - -#define VFFATALF(F, FMT, VA) \ - do { \ - vffatalf(kLogFatal, __FILE__, __LINE__, F, FMT, VA); \ - unreachable; \ - } while (0) - -#define DEBUGF(FMT, ...) \ - do { \ - if (LOGGABLE(kLogDebug)) { \ - fdebugf(kLogDebug, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - } \ - } while (0) - -#define VERBOSEF(FMT, ...) \ - do { \ - if (LOGGABLE(kLogVerbose)) { \ - fverbosef(kLogVerbose, __FILE__, __LINE__, NULL, FMT, ##__VA_ARGS__); \ - } \ - } while (0) - -#define VDEBUGF(FMT, VA) \ - do { \ - if (LOGGABLE(kLogDebug)) { \ - vfdebugf(kLogDebug, __FILE__, __LINE__, NULL, FMT, VA); \ - } \ - } while (0) - -#define FDEBUGF(F, FMT, ...) \ - do { \ - if (LOGGABLE(kLogDebug)) { \ - fdebugf(kLogDebug, __FILE__, __LINE__, F, FMT, ##__VA_ARGS__); \ - } \ - } while (0) - -#define VFVERBOSEF(F, FMT, VA) \ - do { \ - if (LOGGABLE(kLogVerbose)) { \ - vfverbosef(kLogVerbose, __FILE__, __LINE__, F, FMT, VA); \ - } \ - } while (0) - -#define VFDEBUGF(F, FMT, VA) \ - do { \ - if (LOGGABLE(kLogDebug)) { \ - vfdebugf(kLogDebug, __FILE__, __LINE__, F, FMT, VA); \ - } \ - } while (0) - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § liblog » on error resume next ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define LOGIFNEG1(FORM) \ - ({ \ - autotype(FORM) Ax = (FORM); \ - if (Ax == (typeof(Ax))(-1) && LOGGABLE(kLogWarn)) { \ - __logerrno(__FILE__, __LINE__, #FORM); \ - } \ - Ax; \ - }) - -#define LOGIFNULL(FORM) \ - ({ \ - autotype(FORM) Ax = (FORM); \ - if (Ax == NULL && LOGGABLE(kLogWarn)) { \ - __logerrno(__FILE__, __LINE__, #FORM); \ - } \ - Ax; \ - }) - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § liblog » implementation details ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -void __logerrno(const char *, int, const char *) relegated; - -#define ARGS unsigned, const char *, int, FILE *, const char * -#define ATTR paramsnonnull((5)) printfesque(5) -#define ATTRV paramsnonnull((5, 6)) -void flogf(ARGS, ...) ATTR libcesque; -void vflogf(ARGS, va_list) ATTRV libcesque; -void fverbosef(ARGS, ...) asm("flogf") ATTR relegated libcesque; -void vfverbosef(ARGS, va_list) asm("vflogf") ATTRV relegated libcesque; -void fdebugf(ARGS, ...) asm("flogf") ATTR relegated libcesque; -void vfdebugf(ARGS, va_list) asm("vflogf") ATTRV relegated libcesque; -void ffatalf(ARGS, ...) asm("flogf") ATTR relegated wontreturn libcesque; -void vffatalf(ARGS, va_list) asm("vflogf") ATTRV relegated wontreturn libcesque; -#undef ARGS -#undef ATTR -#undef ATTRV - -#endif /* __STRICT_ANSI__ */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/mem/alloca.h */ - -#define COSMOPOLITAN_LIBC_MEM_ALLOCA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define alloca(size) __builtin_alloca(size) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/mem/fmt.h */ - -#define COSMOPOLITAN_LIBC_MEM_FMT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int asprintf(char **, const char *, ...) printfesque(2) - paramsnonnull((1, 2)) libcesque; -int vasprintf(char **, const char *, va_list) paramsnonnull() libcesque; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define asprintf(SP, FMT, ...) (asprintf)(SP, PFLINK(FMT), ##__VA_ARGS__) -#define vasprintf(SP, FMT, VA) (vasprintf)(SP, PFLINK(FMT), VA) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/bench.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_BENCH_H_ - - -/*!BEGIN libc/nexgen32e/rdtsc.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_RDTSC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/** - * Reads CPU timestamp counter. - * - * This macro inhibits compiler magic. - * This macro does not inhibit CPU magic. - * - * @see X86_HAVE(INVTSC) - */ -#define rdtsc() __RDTSC("rdtsc") - -/** - * Reads CPU timestamp counter w/ full serialization. - * - * This macro inhibits CPU magic. - * This macro inhibits compiler magic. - * - * The clock isn't read until: - * - * 1. previous instructions finish executing; and - * 2. previous loads are globally visible; and - * 3. previous stores are globally visible. - * - * Later instructions won't dispatch until RDTSC completes. - * - * @see X86_HAVE(INVTSC) - */ -#define mfence_lfence_rdtsc_lfence() \ - __RDTSC("mfence\n\tlfence\n\trdtsc\n\tlfence") - -#define __RDTSC(ASM) \ - ({ \ - uint64_t Rax, Rdx; \ - asm volatile(ASM : "=a"(Rax), "=d"(Rdx) : /* no inputs */ : "memory"); \ - Rdx << 32 | Rax; \ - }) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * @fileoverview NexGen32e Microbenchmarking. - * - * @see X86_HAVE(INVTSC) - * @see libc/testlib/bench.h - */ - -#define __startbench() \ - ({ \ - uint64_t Ticks; \ - asm volatile("lfence\n\t" \ - "push\t%%rbx\n\t" \ - "cpuid\n\t" \ - "pop\t%%rbx\n\t" \ - "rdtsc\n\t" \ - "shl\t%2,%%rdx\n\t" \ - "or\t%%rdx,%0" \ - : "=a"(Ticks) \ - : "0"(0), "J"(32) \ - : "rcx", "rdx", "memory", "cc"); \ - Ticks; \ - }) - -#define __endbench() \ - ({ \ - uint64_t Ticks; \ - asm volatile("rdtscp\n\t" \ - "shl\t%1,%%rdx\n\t" \ - "or\t%%rdx,%%rax\n\t" \ - "mov\t%%rax,%0\n\t" \ - "xor\t%%eax,%%eax\n\t" \ - "push\t%%rbx\n\t" \ - "cpuid\n\t" \ - "pop\t%%rbx" \ - : "=r"(Ticks) \ - : "J"(32) \ - : "rax", "rcx", "rdx", "memory", "cc"); \ - Ticks; \ - }) - -#define __startbench_m() mfence_lfence_rdtsc_lfence() -#define __endbench_m() __startbench_m() -#define __marker() asm("nop") -#define __ordered() asm volatile("" ::: "memory") -#define __fakeread(X) asm volatile("" : /* no outputs */ : "g"(X)) -#define __fakereadwrite(X) \ - ({ \ - autotype(X) Res = (X); \ - asm volatile("" : "=g"(Res) : "0"(X)); \ - Res; \ - }) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/bsf.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_BSF_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/* - * BIT SCANNING 101 - * ctz(𝑥) 31^clz(𝑥) clz(𝑥) - * uint32 𝑥 bsf(𝑥) tzcnt(𝑥) ffs(𝑥) bsr(𝑥) lzcnt(𝑥) - * 0x00000000 wut 32 0 wut 32 - * 0x00000001 0 0 1 0 31 - * 0x80000001 0 0 1 31 0 - * 0x80000000 31 31 32 31 0 - * 0x00000010 4 4 5 4 27 - * 0x08000010 4 4 5 27 4 - * 0x08000000 27 27 28 27 4 - * 0xffffffff 0 0 1 31 0 - */ - -int bsf(int); -int bsfl(long); -int bsfll(long long); -int bsfmax(uintmax_t); - -#ifdef __GNUC__ -#define bsf(u) __builtin_ctz(u) -#define bsfl(u) __builtin_ctzl(u) -#define bsfll(u) __builtin_ctzll(u) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/bsr.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_BSR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/* - * BIT SCANNING 101 - * ctz(𝑥) 31^clz(𝑥) clz(𝑥) - * uint32 𝑥 bsf(𝑥) tzcnt(𝑥) ffs(𝑥) bsr(𝑥) lzcnt(𝑥) - * 0x00000000 wut 32 0 wut 32 - * 0x00000001 0 0 1 0 31 - * 0x80000001 0 0 1 31 0 - * 0x80000000 31 31 32 31 0 - * 0x00000010 4 4 5 4 27 - * 0x08000010 4 4 5 27 4 - * 0x08000000 27 27 28 27 4 - * 0xffffffff 0 0 1 31 0 - */ - -int bsr(int); -int bsrl(long); -int bsrll(long long); -int bsrmax(uintmax_t); - -#ifdef __GNUC__ -#define bsr(u) ((sizeof(int) * 8 - 1) ^ __builtin_clz(u)) -#define bsrl(u) ((sizeof(long) * 8 - 1) ^ __builtin_clzl(u)) -#define bsrll(u) ((sizeof(long long) * 8 - 1) ^ __builtin_clzll(u)) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/cachesize.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_CACHESIZE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define kCpuCacheTypeData 1 -#define kCpuCacheTypeInstruction 2 -#define kCpuCacheTypeUnified 3 - -unsigned getcachesize(int, int); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/crc32.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_CRC32_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const uint32_t kCrc32cTab[256]; - -void crc32init(uint32_t[hasatleast 256], uint32_t); -uint32_t crc32c(uint32_t, const void *, size_t); -uint32_t crc32_z(uint32_t, const void *, size_t); -uint32_t crc32c_pure(uint32_t, const void *, size_t) strlenesque hidden; -uint32_t crc32c_sse42(uint32_t, const void *, size_t) strlenesque hidden; -uint32_t crc32_pclmul(uint32_t, const void *, size_t) hidden; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/ffs.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_FFS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/* - * BIT SCANNING 101 - * ctz(𝑥) 31^clz(𝑥) clz(𝑥) - * uint32 𝑥 bsf(𝑥) tzcnt(𝑥) ffs(𝑥) bsr(𝑥) lzcnt(𝑥) - * 0x00000000 wut 32 0 wut 32 - * 0x00000001 0 0 1 0 31 - * 0x80000001 0 0 1 31 0 - * 0x80000000 31 31 32 31 0 - * 0x00000010 4 4 5 4 27 - * 0x08000010 4 4 5 27 4 - * 0x08000000 27 27 28 27 4 - * 0xffffffff 0 0 1 31 0 - */ - -int ffs(int) pureconst; -int ffsl(long) pureconst; -int ffsll(long long) pureconst; - -#ifdef __GNUC__ -#define ffs(u) __builtin_ffs(u) -#define ffsl(u) __builtin_ffsl(u) -#define ffsll(u) __builtin_ffsll(u) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/kompressor.h */ - -#define COSMOPOLITAN_LIBC_KOMPRESSOR_KOMPRESSOR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -#if 0 -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § standard library » compression ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#endif - -struct RlDecode { - uint8_t repititions; - uint8_t byte; -}; - -void rldecode(void *dest, const struct RlDecode *) hidden; -const uint8_t *lz4check(const void *data) hidden; -void *lz4cpy(void *dest, const void *blockdata, size_t blocksize) hidden; -void *lz4decode(void *dest, const void *src) hidden; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/lz4.h */ - -#define COSMOPOLITAN_LIBC_LZ4_H_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § lz4 ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - LZ4 is a framing format for REP MOVSB designed by Yann Collet. - - @see https://github.com/lz4/lz4/blob/master/doc/lz4_Frame_format.md - @see https://github.com/lz4/lz4/blob/master/doc/lz4_Block_format.md - @see http://ticki.github.io/blog/how-lz4-works/ */ - -#define LZ4_EOF 0 -#define LZ4_VERSION 1 -#define LZ4_MAGICNUMBER 0x184D2204 -#define LZ4_SKIPPABLE0 0x184D2A50 -#define LZ4_SKIPPABLEMASK 0xFFFFFFF0 -#define LZ4_MAXHEADERSIZE (MAGICNUMBER_SIZE + 2 + 8 + 4 + 1) -#define LZ4_BLOCKMAXSIZE_64KB 4 -#define LZ4_BLOCKMAXSIZE_256KB 5 -#define LZ4_BLOCKMAXSIZE_1MB 6 -#define LZ4_BLOCKMAXSIZE_4MB 7 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § lz4 » frames ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define LZ4_MAGIC(FRAME) READ32LE(FRAME) -#define LZ4_FRAME_VERSION(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 6) & 3) -#define LZ4_FRAME_BLOCKINDEPENDENCE(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 5) & 1) -#define LZ4_FRAME_BLOCKCHECKSUMFLAG(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 4) & 1) -#define LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 3) & 1) -#define LZ4_FRAME_BLOCKCONTENTCHECKSUMFLAG(FRAME) \ - ((_LZ4_FRAME_FLG(FRAME) >> 2) & 1) -#define LZ4_FRAME_DICTIONARYIDFLAG(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 0) & 1) -#define LZ4_FRAME_BLOCKMAXSIZE(FRAME) ((_LZ4_FRAME_BD(FRAME) >> 4) & 7) -#define LZ4_FRAME_RESERVED1(FRAME) ((_LZ4_FRAME_FLG(FRAME) >> 1) & 1) -#define LZ4_FRAME_RESERVED2(FRAME) ((_LZ4_FRAME_BD(FRAME) >> 7) & 1) -#define LZ4_FRAME_RESERVED3(FRAME) ((_LZ4_FRAME_BD(FRAME) >> 0) & 15) -#define LZ4_FRAME_BLOCKCONTENTSIZE(FRAME) \ - (LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) ? READ64LE((FRAME) + 4 + 1 + 1) : 0) -#define LZ4_FRAME_DICTIONARYID(FRAME) \ - (LZ4_FRAME_DICTIONARYIDFLAG(FRAME) \ - ? READ32LE(((FRAME) + 4 + 1 + 1 + \ - 8 * LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME))) \ - : 0) -#define LZ4_FRAME_HEADERCHECKSUM(FRAME) \ - (*((FRAME) + 4 + 1 + 1 + 8 * LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) + \ - 4 * LZ4_FRAME_DICTIONARYIDFLAG(FRAME))) -#define LZ4_FRAME_HEADERSIZE(FRAME) \ - (4 + 1 + 1 + 8 * LZ4_FRAME_BLOCKCONTENTSIZEFLAG(FRAME) + \ - 4 * LZ4_FRAME_DICTIONARYIDFLAG(FRAME) + 1) -#define _LZ4_FRAME_FLG(FRAME) (*((FRAME) + 4)) -#define _LZ4_FRAME_BD(FRAME) (*((FRAME) + 5)) - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § lz4 » blocks ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define LZ4_BLOCK_DATA(block) (block + sizeof(uint32_t)) -#define LZ4_BLOCK_DATASIZE(block) (READ32LE(block) & 0x7fffffff) -#define LZ4_BLOCK_ISEOF(block) (READ32LE(block) == LZ4_EOF) -#define LZ4_BLOCK_ISCOMPRESSED(block) ((READ32LE(block) & 0x80000000) == 0) -#define LZ4_BLOCK_SIZE(frame, block) \ - (sizeof(uint32_t) + LZ4_BLOCK_DATASIZE(block) + \ - (LZ4_FRAME_BLOCKCHECKSUMFLAG(frame) ? sizeof(uint8_t) : 0)) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/lzcnt.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_LZCNT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -unsigned lzcnt(unsigned) libcesque pureconst; -unsigned long lzcntl(unsigned long) libcesque pureconst; - -#define lzcnt(X) \ - ({ \ - typeof(X) Res; \ - if (X86_HAVE(ABM)) { \ - /* amd piledriver+ (a.k.a. bdver1) c. 2011 */ \ - /* intel haswell+ c. 2013 */ \ - asm("lzcnt\t%1,%0" : "=r,r"(Res) : "r,m"(X) : "cc"); \ - } else { \ - Res = (lzcnt)(X); \ - } \ - Res; \ - }) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/macros.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_MACROS_H_ -#ifdef __ASSEMBLER__ -#else - -/* let's give auto-import tooling a helping hand */ -#define pbroadcastb pbroadcastb - -#endif /* __ASSEMBLER__ */ - - -/*!BEGIN libc/nexgen32e/msr.h */ - -#define COSMOPOLITAN_LIBC_MSR_H_ -/*─────────────────────────────────────────────────────────────────────────────╗ -│ cosmopolitan § model specific registers │ -╚─────────────────────────────────────────────────────────────────────────────*/ - -#define MSR_P5_TSC 0x10 /* time stamp register */ -#define MSR_P5_CESR 0x11 /* control and event select register */ -#define MSR_P5_CTR0 0x12 /* counter #0 */ -#define MSR_P5_CTR1 0x13 /* counter #1 */ -#define MSR_P5_CESR_PC 0x0200 /* pin control */ -#define MSR_P5_CESR_CC 0x01C0 /* counter control mask */ -#define MSR_P5_CESR_ES 0x003F /* event control mask */ -#define MSR_P5_CESR_SHIFT 16 /* shift to get counter 1 */ -#define MSR_P5_CESR_MASK /* mask Counter */ \ - (MSR_P5_CESR_PC | MSR_P5_CESR_CC | MSR_P5_CESR_ES) - -#define MSR_CORE_THREAD_COUNT 0x35 -#define MSR_FLEX_RATIO 0x194 -#define MSR_IA32_APERF 0xE8 -#define MSR_IA32_APIC_BASE 0x1b -#define MSR_IA32_APIC_BASE_BASE (0xfffff << 12) -#define MSR_IA32_APIC_BASE_BSP (1 << 8) -#define MSR_IA32_APIC_BASE_ENABLE (1 << 11) -#define MSR_IA32_APIC_BASE_EXTENDED (1 << 10) -#define MSR_IA32_BBL_CR_CTL 0x119 -#define MSR_IA32_BIOS_SIGN_ID 0x8b -#define MSR_IA32_CLOCK_MODULATION 0x19a -#define MSR_IA32_CORE_C3_RESIDENCY 0x3FC -#define MSR_IA32_CORE_C6_RESIDENCY 0x3FD -#define MSR_IA32_CORE_C7_RESIDENCY 0x3FE -#define MSR_IA32_CR_PAT 0x277 -#define MSR_IA32_CSTAR 0xC0000083 -#define MSR_IA32_DDR_ENERGY_STATUS 0x619 -#define MSR_IA32_DEBUGCTLMSR 0x1d9 -#define MSR_IA32_DS_AREA 0x600 -#define MSR_IA32_EBL_CR_POWERON 0x2a -#define MSR_IA32_EFER 0xC0000080 -#define MSR_IA32_EFER_LMA 0x00000400 -#define MSR_IA32_EFER_LME 0x00000100 -#define MSR_IA32_EFER_NXE 0x00000800 -#define MSR_IA32_EFER_SCE 0x00000001 -#define MSR_IA32_EVNTSEL0 0x186 -#define MSR_IA32_EVNTSEL1 0x187 -#define MSR_IA32_EVNTSEL2 0x188 -#define MSR_IA32_EVNTSEL3 0x189 -#define MSR_IA32_FEATCTL_CSTATE_SMI (1 << 16) -#define MSR_IA32_FEATCTL_LOCK (1 << 0) -#define MSR_IA32_FEATCTL_VMXON (1 << 2) -#define MSR_IA32_FEATCTL_VMXON_SMX (1 << 1) -#define MSR_IA32_FEATURE_CONTROL 0x3a -#define MSR_IA32_FMASK 0xC0000084 -#define MSR_IA32_FS_BASE 0xC0000100 -#define MSR_IA32_GS_BASE 0xC0000101 -#define MSR_IA32_GS_BASE_KERNEL 0xC0000102 -#define MSR_IA32_GT_PERF_LIMIT_REASONS 0x6B0 -#define MSR_IA32_IA_PERF_LIMIT_REASONS 0x690 -#define MSR_IA32_IA_PERF_LIMIT_REASONS_SKL 0x64F -#define MSR_IA32_LASTBRANCHFROMIP 0x1db -#define MSR_IA32_LASTBRANCHTOIP 0x1dc -#define MSR_IA32_LASTINTFROMIP 0x1dd -#define MSR_IA32_LASTINTTOIP 0x1de -#define MSR_IA32_LLC_FLUSHED_RESIDENCY_TIMER 0x61D -#define MSR_IA32_LSTAR 0xC0000082 -#define MSR_IA32_MC0_ADDR 0x402 -#define MSR_IA32_MC0_CTL 0x400 -#define MSR_IA32_MC0_MISC 0x403 -#define MSR_IA32_MC0_STATUS 0x401 -#define MSR_IA32_MCG_CAP 0x179 -#define MSR_IA32_MCG_CTL 0x17b -#define MSR_IA32_MCG_STATUS 0x17a -#define MSR_IA32_MISC_ENABLE 0x1a0 -#define MSR_IA32_MPERF 0xE7 -#define MSR_IA32_MTRRCAP 0xfe -#define MSR_IA32_MTRR_DEF_TYPE 0x2ff -#define MSR_IA32_MTRR_FIX16K_80000 0x258 -#define MSR_IA32_MTRR_FIX16K_A0000 0x259 -#define MSR_IA32_MTRR_FIX4K_C0000 0x268 -#define MSR_IA32_MTRR_FIX4K_C8000 0x269 -#define MSR_IA32_MTRR_FIX4K_D0000 0x26a -#define MSR_IA32_MTRR_FIX4K_D8000 0x26b -#define MSR_IA32_MTRR_FIX4K_E0000 0x26c -#define MSR_IA32_MTRR_FIX4K_E8000 0x26d -#define MSR_IA32_MTRR_FIX4K_F0000 0x26e -#define MSR_IA32_MTRR_FIX4K_F8000 0x26f -#define MSR_IA32_MTRR_FIX64K_00000 0x250 -#define MSR_IA32_MTRR_PHYSBASE(n) (0x200 + 2 * (n)) -#define MSR_IA32_MTRR_PHYSMASK(n) (0x200 + 2 * (n) + 1) -#define MSR_IA32_P5_MC_ADDR 0 -#define MSR_IA32_P5_MC_TYPE 1 -#define MSR_IA32_PACKAGE_THERM_INTERRUPT 0x1b2 -#define MSR_IA32_PACKAGE_THERM_STATUS 0x1b1 -#define MSR_IA32_PERFCTR0 0xc1 -#define MSR_IA32_PERFCTR1 0xc2 -#define MSR_IA32_PERFCTR3 0xc3 -#define MSR_IA32_PERFCTR4 0xc4 -#define MSR_IA32_PERF_CTL 0x199 -#define MSR_IA32_PERF_FIXED_CTR0 0x309 -#define MSR_IA32_PERF_FIXED_CTR_CTRL 0x38D -#define MSR_IA32_PERF_GLOBAL_CTRL 0x38F -#define MSR_IA32_PERF_GLOBAL_OVF_CTRL 0x390 -#define MSR_IA32_PERF_GLOBAL_STATUS 0x38E -#define MSR_IA32_PERF_STS 0x198 -#define MSR_IA32_PKG_C10_RESIDENCY 0x632 -#define MSR_IA32_PKG_C2_RESIDENCY 0x60D -#define MSR_IA32_PKG_C3_RESIDENCY 0x3F8 -#define MSR_IA32_PKG_C6_RESIDENCY 0x3F9 -#define MSR_IA32_PKG_C7_RESIDENCY 0x3FA -#define MSR_IA32_PKG_C8_RESIDENCY 0x630 -#define MSR_IA32_PKG_C9_RESIDENCY 0x631 -#define MSR_IA32_PKG_ENERGY_STATUS 0x611 -#define MSR_IA32_PKG_POWER_SKU_UNIT 0x606 -#define MSR_IA32_PLATFORM_ID 0x17 -#define MSR_IA32_PP0_ENERGY_STATUS 0x639 -#define MSR_IA32_PP1_ENERGY_STATUS 0x641 -#define MSR_IA32_RING_PERF_STATUS 0x621 -#define MSR_IA32_STAR 0xC0000081 -#define MSR_IA32_SYSENTER_CS 0x174 -#define MSR_IA32_SYSENTER_EIP 0x176 -#define MSR_IA32_SYSENTER_ESP 0x175 -#define MSR_IA32_TSC_AUX 0xC0000103 -#define MSR_IA32_TSC_DEADLINE 0x6e0 -#define MSR_IA32_UCODE_REV MSR_IA32_BIOS_SIGN_ID -#define MSR_IA32_UCODE_WRITE MSR_IA32_UPDT_TRIG -#define MSR_IA32_UPDT_TRIG 0x79 -#define MSR_IA32_VMX_BASE 0x480 -#define MSR_IA32_VMX_BASIC MSR_IA32_VMX_BASE -#define MSR_IA32_VMX_CR0_FIXED0 MSR_IA32_VMX_BASE + 6 -#define MSR_IA32_VMX_CR0_FIXED1 MSR_IA32_VMX_BASE + 7 -#define MSR_IA32_VMX_CR4_FIXED0 MSR_IA32_VMX_BASE + 8 -#define MSR_IA32_VMX_CR4_FIXED1 MSR_IA32_VMX_BASE + 9 -#define MSR_IA32_VMX_ENTRY_CTLS MSR_IA32_VMX_BASE + 4 -#define MSR_IA32_VMX_EPT_VPID_CAP MSR_IA32_VMX_BASE + 12 -#define MSR_IA32_VMX_EPT_VPID_CAP_AD_SHIFT 21 -#define MSR_IA32_VMX_EXIT_CTLS MSR_IA32_VMX_BASE + 3 -#define MSR_IA32_VMX_MISC MSR_IA32_VMX_BASE + 5 -#define MSR_IA32_VMX_PINBASED_CTLS MSR_IA32_VMX_BASE + 1 -#define MSR_IA32_VMX_PROCBASED_CTLS MSR_IA32_VMX_BASE + 2 -#define MSR_IA32_VMX_PROCBASED_CTLS2 MSR_IA32_VMX_BASE + 11 -#define MSR_IA32_VMX_TRUE_PINBASED_CTLS MSR_IA32_VMX_BASE + 13 -#define MSR_IA32_VMX_TRUE_PROCBASED_CTLS MSR_IA32_VMX_BASE + 14 -#define MSR_IA32_VMX_TRUE_VMENTRY_CTLS MSR_IA32_VMX_BASE + 16 -#define MSR_IA32_VMX_TRUE_VMEXIT_CTLS MSR_IA32_VMX_BASE + 15 -#define MSR_IA32_VMX_VMCS_ENUM MSR_IA32_VMX_BASE + 10 -#define MSR_IA32_VMX_VMFUNC MSR_IA32_VMX_BASE + 17 -#define MSR_P5_CESR_CC_CLOCK 0x0100 /* Clock Counting (otherwise Event) */ -#define MSR_P5_CESR_CC_CPL 0x00C0 /* Count regardless of the CPL */ -#define MSR_P5_CESR_CC_CPL012 0x0040 /* Count if the CPL == 0, 1, 2 */ -#define MSR_P5_CESR_CC_CPL3 0x0080 /* Count if the CPL == 3 */ -#define MSR_P5_CESR_CC_DISABLE 0x0000 /* Disable counter */ -#define MSR_P5_CESR_ES_AGI 0x011111 /* Stall because of AGI */ -#define MSR_P5_CESR_ES_BANK_CONFLICTS 0x001010 /* Bank conflicts */ -#define MSR_P5_CESR_ES_BRANCHE 0x010010 /* Branches */ -#define MSR_P5_CESR_ES_BRANCHE_BTB 0x010100 /* Taken branch or BTB Hit */ -#define MSR_P5_CESR_ES_BREAK_DR0 0x100011 /* Breakpoint matches on DR0 */ -#define MSR_P5_CESR_ES_BREAK_DR1 0x100100 /* Breakpoint matches on DR1 */ -#define MSR_P5_CESR_ES_BREAK_DR2 0x100101 /* Breakpoint matches on DR2 */ -#define MSR_P5_CESR_ES_BREAK_DR3 0x100110 /* Breakpoint matches on DR3 */ -#define MSR_P5_CESR_ES_BTB_HIT 0x010011 /* BTB Hits */ -#define MSR_P5_CESR_ES_BUS_CYCLE 0x011000 /* Clocks while bus cycle */ -#define MSR_P5_CESR_ES_CACHE_SNOOP_HIT 0x001000 /* Data cache snoop hits */ -#define MSR_P5_CESR_ES_CODE_CACHE_MISS 0x001110 /* Code Cache miss */ -#define MSR_P5_CESR_ES_CODE_READ 0x001100 /* Code Read */ -#define MSR_P5_CESR_ES_CODE_TLB_MISS 0x001101 /* Code TLB miss */ -#define MSR_P5_CESR_ES_DATA_CACHE_WB 0x000110 /* Cache lines written back */ -#define MSR_P5_CESR_ES_DATA_MEM_READ 0x011010 /* Pipeline waiting for read */ -#define MSR_P5_CESR_ES_DATA_READ 0x000000 /* Data Read */ -#define MSR_P5_CESR_ES_DATA_READ_MISS 0x000011 /* Data Read Miss */ -#define MSR_P5_CESR_ES_DATA_RW 0x101000 /* Data Read or Write */ -#define MSR_P5_CESR_ES_DATA_RW_MISS 0x101001 /* Data Read or Write Miss */ -#define MSR_P5_CESR_ES_DATA_TLB_MISS 0x000010 /* Data TLB Miss */ -#define MSR_P5_CESR_ES_DATA_WRITE 0x000001 /* Data Write */ -#define MSR_P5_CESR_ES_DATA_WRITE_MISS 0x000100 /* Data Write Miss */ -#define MSR_P5_CESR_ES_EXTERNAL_SNOOP 0x000111 /* External Snoop */ -#define MSR_P5_CESR_ES_FLOP 0x100010 /* Floating Point operations */ -#define MSR_P5_CESR_ES_FULL_WRITE_BUF 0x011001 /* Clocks while full wrt buf */ -#define MSR_P5_CESR_ES_HARDWARE_IT 0x100111 /* Hardware interrupts */ -#define MSR_P5_CESR_ES_HIT_EM 0x000101 /* Write (hit) to M|E state */ -#define MSR_P5_CESR_ES_INSTRUCTION 0x010110 /* Instruction executed */ -#define MSR_P5_CESR_ES_INSTRUCTION_V 0x010111 /* Inst. executed (v-pipe) */ -#define MSR_P5_CESR_ES_IO_CYCLE 0x011101 /* I/O Read or Write cycles */ -#define MSR_P5_CESR_ES_LOCKED_CYCLE 0x011100 /* Locked bus cycles */ -#define MSR_P5_CESR_ES_MEM_ACCESS_PIPE 0x001001 /* mem access both pipes */ -#define MSR_P5_CESR_ES_MISALIGNED 0x001011 /* Misaligned Memory or I/O */ -#define MSR_P5_CESR_ES_NON_CACHEABLE 0x011110 /* Non-cacheable Mem. read */ -#define MSR_P5_CESR_ES_PIPELINE_FLUSH 0x010101 /* Pipeline Flushes */ -#define MSR_P5_CESR_ES_SEGMENT_LOADED 0x001111 /* Any segment reg. loaded */ -#define MSR_P5_CESR_ES_WRITE_EM 0x011011 /* Stall on write E|M state */ -#define MSR_PLATFORM_INFO 0xce - - - -/*!BEGIN libc/nexgen32e/nexgen32e.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_NEXGEN32E_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern long kHalfCache3; - -void imapxlatab(void *); -void insertionsort(int32_t *, size_t); - -int64_t div10int64(int64_t) libcesque pureconst; -int64_t div100int64(int64_t) libcesque pureconst; -int64_t div1000int64(int64_t) libcesque pureconst; -int64_t div10000int64(int64_t) libcesque pureconst; -int64_t div1000000int64(int64_t) libcesque pureconst; -int64_t div1000000000int64(int64_t) libcesque pureconst; - -int64_t rem10int64(int64_t) libcesque pureconst; -int64_t rem100int64(int64_t) libcesque pureconst; -int64_t rem1000int64(int64_t) libcesque pureconst; -int64_t rem10000int64(int64_t) libcesque pureconst; -int64_t rem1000000int64(int64_t) libcesque pureconst; -int64_t rem1000000000int64(int64_t) libcesque pureconst; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/nt2sysv.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_NT2SYSV_H_ - - -/*!BEGIN libc/nexgen32e/trampoline.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_TRAMPOLINE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define TRAMPOLINE(FUNCTION, THUNK) \ - ({ \ - typeof(FUNCTION) *Tramp; \ - asm(".section .text.trampoline\n" \ - "183:\n\t" \ - "mov\t%1,%%eax\n\t" \ - "jmp\t" #THUNK "\n\t" \ - ".previous\n\t" \ - "mov\t$183b,%k0" \ - : "=r"(Tramp) \ - : "i"(FUNCTION)); \ - Tramp; \ - }) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * Creates function to thunk FUNCTION from MSX64 to System V ABI. - * - * This macro should be used when specifying callbacks in the WIN32 API. - */ -#define NT2SYSV(FUNCTION) TRAMPOLINE(FUNCTION, __nt2sysv) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/rdtscp.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_RDTSCP_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define TSC_AUX_CORE(MSR) ((MSR)&0xfff) -#define TSC_AUX_NODE(MSR) (((MSR) >> 12) & 0xfff) - -/** - * Reads CPU timestamp counter and IA32_TSC_AUX. - * - * This macro inhibits compiler magic. - * This macro does not inhibit CPU magic. - * - * @see X86_HAVE(RDTSCP) - */ -#define rdtscp(OPT_OUT_IA32_TSC_AUX) \ - ({ \ - uint32_t Ecx, *EcxOut; \ - uint64_t Rax, Rcx, Rdx; \ - asm volatile("rdtscp" \ - : "=a"(Rax), "=c"(Ecx), "=d"(Rdx) \ - : /* no inputs */ \ - : "memory"); \ - EcxOut = (OPT_OUT_IA32_TSC_AUX); \ - if (EcxOut) *EcxOut = Ecx; \ - Rdx << 32 | Rax; \ - }) - -/** - * Reads timestamp counter auxiliary model specific register value. - */ -#define rdpid() \ - ({ \ - bool Ok; \ - long Msr; \ - Ok = false; \ - if (X86_HAVE(RDPID)) { \ - asm volatile("rdpid\t%0" : "=r"(Msr) : /* no inputs */ : "memory"); \ - Ok = true; \ - } else if (IsLinux()) { \ - asm volatile(ZFLAG_ASM("lsl\t%2,%1") \ - : ZFLAG_CONSTRAINT(Ok), "=r"(Msr) \ - : "r"(0x7b) \ - : "memory"); \ - } \ - if (!Ok && X86_HAVE(RDTSCP)) { \ - asm volatile("rdtscp" \ - : "=c"(Msr) \ - : /* no inputs */ \ - : "eax", "edx", "memory"); \ - Ok = true; \ - } \ - if (!Ok) { \ - Msr = -1; \ - } \ - Msr; \ - }) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/slowcall.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_SLOWCALL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define slowcall(fn, arg1, arg2, arg3, arg4, arg5, arg6) \ - ({ \ - void *ax; \ - asm volatile("push\t%7\n\t" \ - "push\t%6\n\t" \ - "push\t%5\n\t" \ - "push\t%4\n\t" \ - "push\t%3\n\t" \ - "push\t%2\n\t" \ - "push\t%1\n\t" \ - "call\tslowcall" \ - : "=a"(ax) \ - : "g"(fn), "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), \ - "g"(arg5), "g"(arg6) \ - : "memory"); \ - ax; \ - }) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/stackframe.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_STACKFRAME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct StackFrame { - struct StackFrame *next; - intptr_t addr; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/tzcnt.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_TZCNT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -unsigned tzcnt(unsigned) libcesque pureconst; -unsigned long tzcntl(unsigned long) libcesque pureconst; - -#define tzcnt(X) \ - ({ \ - typeof(X) Res; \ - if (X86_HAVE(BMI)) { \ - /* amd piledriver+ (a.k.a. bdver1) c. 2011 */ \ - /* intel haswell+ c. 2013 */ \ - asm("tzcnt\t%1,%0" : "=r,r"(Res) : "r,m"(X) : "cc"); \ - } else { \ - Res = (tzcnt)(X); \ - } \ - Res; \ - }) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nexgen32e/x86info.h */ - -#define COSMOPOLITAN_LIBC_NEXGEN32E_X86INFO_H_ - -#define kX86CpuStepping ((KCPUIDS(1H, EAX) >> 0) & 15) -#define kX86CpuModelid ((KCPUIDS(1H, EAX) >> 4) & 15) -#define kX86CpuFamilyid ((KCPUIDS(1H, EAX) >> 8) & 15) -#define kX86CpuType ((KCPUIDS(1H, EAX) >> 12) & 3) -#define kX86CpuExtmodelid ((KCPUIDS(1H, EAX) >> 16) & 15) -#define kX86CpuExtfamilyid ((KCPUIDS(1H, EAX) >> 20) & 255) - -#define kX86CpuFamily \ - (kX86CpuFamilyid + (kX86CpuFamily == 15 ? kX86CpuExtfamilyid : 0)) - -#define kX86CpuModel \ - (kX86CpuModelid | \ - (kX86CpuFamily == 6 || kX86CpuFamily == 15 ? kX86CpuExtmodelid : 0) << 4) - -#define kX86ProcessorModelKey \ - (kX86CpuExtfamilyid << 12 | kX86CpuFamilyid << 8 | kX86CpuExtmodelid << 4 | \ - kX86CpuModelid) - -#define X86_MARCH_UNKNOWN 0 -#define X86_MARCH_CORE2 1 -#define X86_MARCH_NEHALEM 2 -#define X86_MARCH_WESTMERE 3 -#define X86_MARCH_SANDYBRIDGE 4 -#define X86_MARCH_IVYBRIDGE 5 -#define X86_MARCH_HASWELL 6 -#define X86_MARCH_BROADWELL 7 -#define X86_MARCH_SKYLAKE 8 -#define X86_MARCH_KABYLAKE 9 -#define X86_MARCH_CANNONLAKE 10 -#define X86_MARCH_ICELAKE 11 -#define X86_MARCH_TIGERLAKE 12 -#define X86_MARCH_BONNELL 13 -#define X86_MARCH_SALTWELL 14 -#define X86_MARCH_SILVERMONT 15 -#define X86_MARCH_AIRMONT 16 -#define X86_MARCH_GOLDMONT 17 -#define X86_MARCH_GOLDMONTPLUS 18 -#define X86_MARCH_TREMONT 19 -#define X86_MARCH_KNIGHTSLANDING 20 -#define X86_MARCH_KNIGHTSMILL 21 - -#define X86_GRADE_UNKNOWN 0 -#define X86_GRADE_APPLIANCE 1 -#define X86_GRADE_MOBILE 2 -#define X86_GRADE_TABLET 3 -#define X86_GRADE_DESKTOP 4 -#define X86_GRADE_CLIENT 5 -#define X86_GRADE_DENSITY 6 -#define X86_GRADE_SERVER 7 -#define X86_GRADE_SCIENCE 8 - -struct X86ProcessorModel { - short key; - unsigned char march; - unsigned char grade; -}; - -extern const size_t kX86ProcessorModelCount; -extern const struct X86ProcessorModel kX86ProcessorModels[]; - -const struct X86ProcessorModel *getx86processormodel(short) nosideeffect; - - - -/*!BEGIN libc/nt/enum/accessmask.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_ACCESSMASK_H_ - -/** - * Can also be described as follows: - * - * struct NtAccessMask { - * union { - * uint32_t value; - * struct { - * uint16_t SpecificRights; - * unsigned char StandardRights; - * unsigned AccessSystemAcl : 1; - * unsigned Reserved : 3; - * unsigned GenericAll : 1; - * unsigned GenericExecute : 1; - * unsigned GenericWrite : 1; - * unsigned GenericRead : 1; - * }; - * }; - * }; - */ -#define kNtGenericRead 0x80000000u -#define kNtGenericWrite 0x40000000u -#define kNtGenericExecute 0x20000000u -#define kNtGenericAll 0x10000000u -#define kNtDelete 0x00010000u -#define kNtReadControl 0x00020000u -#define kNtWriteDac 0x00040000u -#define kNtWriteOwner 0x00080000u -#define kNtSynchronize 0x00100000u -#define kNtStandardRightsRequired 0x000F0000u -#define kNtStandardRightsRead kNtReadControl -#define kNtStandardRightsWrite kNtReadControl -#define kNtStandardRightsExecute kNtReadControl -#define kNtStandardRightsAll 0x001F0000u -#define kNtSpecificRightsAll 0x0000FFFFu -#define kNtAccessSystemSecurity 0x01000000u -#define kNtMaximumAllowed 0x02000000u -#define kNtFileReadData 0x0001u -#define kNtFileListDirectory 0x0001u -#define kNtFileWriteData 0x0002u -#define kNtFileAddFile 0x0002u -#define kNtFileAppendData 0x0004u -#define kNtFileAddSubdirectory 0x0004u -#define kNtFileCreatePipeInstance 0x0004u -#define kNtFileReadEa 0x0008u -#define kNtFileWriteEa 0x0010u -#define kNtFileExecute 0x0020u -#define kNtFileTraverse 0x0020u -#define kNtFileDeleteChild 0x0040u -#define kNtFileReadAttributes 0x0080u -#define kNtFileWriteAttributes 0x0100u -#define kNtFileAllAccess (kNtStandardRightsRequired | kNtSynchronize | 0x1FFu) -#define kNtFileGenericRead \ - (kNtStandardRightsRead | kNtFileReadData | kNtFileReadAttributes | \ - kNtFileReadEa | kNtSynchronize) -#define kNtFileGenericWrite \ - (kNtStandardRightsWrite | kNtFileWriteData | kNtFileWriteAttributes | \ - kNtFileWriteEa | kNtFileAppendData | kNtSynchronize) -#define kNtFileGenericExecute \ - (kNtStandardRightsExecute | kNtFileReadAttributes | kNtFileExecute | \ - kNtSynchronize) -#define kNtTokenAssignPrimary 0x0001u -#define kNtTokenDuplicate 0x0002u -#define kNtTokenImpersonate 0x0004u -#define kNtTokenQuery 0x0008u -#define kNtTokenQuerySource 0x0010u -#define kNtTokenAdjustPrivileges 0x0020u -#define kNtTokenAdjustGroups 0x0040u -#define kNtTokenAdjustDefault 0x0080u -#define kNtTokenAdjustSessionid 0x0100u -#define kNtTokenAllAccessP \ - (kNtStandardRightsRequired | kNtTokenAssignPrimary | kNtTokenDuplicate | \ - kNtTokenImpersonate | kNtTokenQuery | kNtTokenQuerySource | \ - kNtTokenAdjustPrivileges | kNtTokenAdjustGroups | kNtTokenAdjustDefault) -#define kNtTokenAllAccess kNtTokenAllAccessP | kNtTokenAdjustSessionid -#define kNtTokenRead kNtStandardRightsRead | kNtTokenQuery -#define kNtTokenWrite \ - (kNtStandardRightsWrite | kNtTokenAdjustPrivileges | kNtTokenAdjustGroups | \ - kNtTokenAdjustDefault) -#define kNtTokenExecute kNtStandardRightsExecute -#define kNtTokenTrustConstraintMask \ - (kNtStandardRightsRead | kNtTokenQuery | kNtTokenQuerySource) -#define kNtTokenAccessPseudoHandleWin8 kNtTokenQuery | kNtTokenQuerySource -#define kNtTokenAccessPseudoHandle kNtTokenAccessPseudoHandleWin8 - - - -/*!BEGIN libc/nt/enum/afd.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_AFD_H_ - -#define kNtAfdPollReceive 0x0001 -#define kNtAfdPollReceiveExpedited 0x0002 -#define kNtAfdPollSend 0x0004 -#define kNtAfdPollDisconnect 0x0008 -#define kNtAfdPollAbort 0x0010 -#define kNtAfdPollLocalClose 0x0020 -#define kNtAfdPollAccept 0x0080 -#define kNtAfdPollConnectFail 0x0100 - - - -/*!BEGIN libc/nt/enum/bitblt.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_BITBLT_H_ - -#define kNtSrccopy 0x00CC0020u /* src */ -#define kNtSrcpaint 0x00EE0086u /* src | dst */ -#define kNtSrcand 0x008800C6u /* src & dst */ -#define kNtSrcinvert 0x00660046u /* src ^ dst */ -#define kNtSrcerase 0x00440328u /* src & ~dst */ -#define kNtNotsrccopy 0x00330008u /* ~src */ -#define kNtNotsrcerase 0x001100A6u /* ~src & ~dst */ -#define kNtMergecopy 0x00C000CAu /* (src & pattern) */ -#define kNtMergepaint 0x00BB0226u /* ~src | dst */ -#define kNtPatcopy 0x00F00021u /* pat */ -#define kNtPatpaint 0x00FB0A09u /* wut */ -#define kNtPatinvert 0x005A0049u /* pat ^ dst */ -#define kNtDstinvert 0x00550009u /* ~dst */ -#define kNtBlackness 0x00000042u /* black */ -#define kNtWhiteness 0x00FF0062u /* white */ - - - -/*!BEGIN libc/nt/enum/callback.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_CALLBACK_H_ - -#define kNtCallbackChunkFinished 0 -#define kNtCallbackStreamSwitch 1 - - - -/*!BEGIN libc/nt/enum/color.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_COLOR_H_ - -#define kNtColorScrollbar 0 -#define kNtColorBackground 1 -#define kNtColorActivecaption 2 -#define kNtColorInactivecaption 3 -#define kNtColorMenu 4 -#define kNtColorWindow 5 -#define kNtColorWindowframe 6 -#define kNtColorMenutext 7 -#define kNtColorWindowtext 8 -#define kNtColorCaptiontext 9 -#define kNtColorActiveborder 10 -#define kNtColorInactiveborder 11 -#define kNtColorAppworkspace 12 -#define kNtColorHighlight 13 -#define kNtColorHighlighttext 14 -#define kNtColorBtnface 15 -#define kNtColorBtnshadow 16 -#define kNtColorGraytext 17 -#define kNtColorBtntext 18 -#define kNtColorInactivecaptiontext 19 -#define kNtColorBtnhighlight 20 -#define kNtColor3ddkshadow 21 -#define kNtColor3dlight 22 -#define kNtColorInfotext 23 -#define kNtColorInfobk 24 -#define kNtColorHotlight 26 -#define kNtColorGradientactivecaption 27 -#define kNtColorGradientinactivecaption 28 -#define kNtColorMenuhilight 29 -#define kNtColorMenubar 30 - - - -/*!BEGIN libc/nt/enum/computernameformat.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_COMPUTERNAMEFORMAT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtComputerNameNetBios 0 -#define kNtComputerNameDnsHostname 1 -#define kNtComputerNameDnsDomain 2 -#define kNtComputerNameDnsFullyQualified 3 -#define kNtComputerNamePhysicalNetBios 4 -#define kNtComputerNamePhysicalDnsHostname 5 -#define kNtComputerNamePhysicalDnsDomain 6 -#define kNtComputerNamePhysicalDnsFullyQualified 7 -#define kNtComputerName_MAX 8 - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/consolemodeflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_CONSOLEMODEFLAGS_H_ - -/* input mode */ -#define kNtEnableProcessedInput 0x0001u -#define kNtEnableLineInput 0x0002u -#define kNtEnableEchoInput 0x0004u -#define kNtEnableWindowInput 0x0008u -#define kNtEnableMouseInput 0x0010u -#define kNtEnableInsertMode 0x0020u -#define kNtEnableQuickEditMode 0x0040u -#define kNtEnableExtendedFlags 0x0080u -#define kNtEnableAutoPosition 0x0100u -#define kNtEnableVirtualTerminalInput 0x0200u - -/* output mode */ -#define kNtEnableProcessedOutput 0x0001u -#define kNtEnableWrapAtEolOutput 0x0002u -#define kNtEnableVirtualTerminalProcessing 0x0004u -#define kNtDisableNewlineAutoReturn 0x0008u -#define kNtEnableLvbGridWorldwide 0x0010u - - - -/*!BEGIN libc/nt/enum/consoleselectionflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_CONSOLESELECTIONFLAGS_H_ - -#define kNtConsoleNoSelection 0x0000u -#define kNtConsoleSelectionInProgress 0x0001u -#define kNtConsoleSelectionNotEmpty 0x0002u -#define kNtConsoleMouseSelection 0x0004u -#define kNtConsoleMouseDown 0x0008u - - - -/*!BEGIN libc/nt/enum/copyfile.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_COPYFILE_H_ - -#define kNtCopyFileFailIfExists 0x00000001 -#define kNtCopyFileRestartable 0x00000002 -#define kNtCopyFileOpenSourceForWrite 0x00000004 -#define kNtCopyFileAllowDecryptedDestination 0x00000008 -#define kNtCopyFileCopySymlink 0x00000800 -#define kNtCopyFileNoBuffering 0x00001000 -#define kNtCopyFileRequestSecurityPrivileges 0x00002000 /* Win8+ */ -#define kNtCopyFileResumeFromPause 0x00004000 /* Win8+ */ -#define kNtCopyFileRequestSecurityPrivileges 0x00002000 /* Win8+ */ -#define kNtCopyFileNoOffload 0x00040000 /* Win8+ */ -#define kNtCopyFileIgnoreEdpBlock 0x00400000 /* Win10+ */ -#define kNtCopyFileIgnoreSourceEncryption 0x00800000 /* Win10+ */ - - - -/*!BEGIN libc/nt/enum/creationdisposition.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_CREATIONDISPOSITION_H_ - -#define kNtCreateNew 1 -#define kNtCreateAlways 2 -#define kNtOpenExisting 3 -#define kNtOpenAlways 4 -#define kNtTruncateExisting 5 - - - -/*!BEGIN libc/nt/enum/cs.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_CS_H_ - -#define kNtCsVredraw 0x00000001 -#define kNtCsHredraw 0x00000002 -#define kNtCsDblclks 0x00000008 -#define kNtCsOwndc 0x00000020 -#define kNtCsClassdc 0x00000040 -#define kNtCsParentdc 0x00000080 -#define kNtCsNoclose 0x00000200 -#define kNtCsSavebits 0x00000800 -#define kNtCsBytealignclient 0x00001000 -#define kNtCsBytealignwindow 0x00002000 -#define kNtCsGlobalclass 0x00004000 -#define kNtCsIme 0x00010000 -#define kNtCsDropshadow 0x00020000 - - - -/*!BEGIN libc/nt/enum/ctrlevent.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_CTRLEVENT_H_ - -#define kNtCtrlCEvent 0 /* SIGINT */ -#define kNtCtrlBreakEvent 1 /* SIGQUIT */ -#define kNtCtrlCloseEvent 2 /* SIGHUP */ -#define kNtCtrlLogoffEvent 5 /* SIGTERM */ -#define kNtCtrlShutdownEvent 6 - - - -/*!BEGIN libc/nt/enum/cw.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_CW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtCwUsedefault ((int)0x80000000) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/dialogresult.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_DIALOGRESULT_H_ - -#define kNtIdok 1 -#define kNtIdcancel 2 -#define kNtIdabort 3 -#define kNtIdretry 4 -#define kNtIdignore 5 -#define kNtIdyes 6 -#define kNtIdno 7 -#define kNtIdclose 8 -#define kNtIdhelp 9 -#define kNtIdtryagain 10 -#define kNtIdcontinue 11 - - - -/*!BEGIN libc/nt/enum/errormodeflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_ERRORMODEFLAGS_H_ - -#define kNtErrorModeDefault 0x0 -#define kNtSemFailcriticalerrors 0x1 -#define kNtSemNogpfaulterrorbox 0x2 -#define kNtSemNoopenfileerrorbox 0x8000 - - - -/*!BEGIN libc/nt/enum/event.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_EVENT_H_ - -#define kNtEventSystemSound 0x0001 -#define kNtEventSystemAlert 0x0002 -#define kNtEventSystemForeground 0x0003 -#define kNtEventSystemMenustart 0x0004 -#define kNtEventSystemMenuend 0x0005 -#define kNtEventSystemMenupopupstart 0x0006 -#define kNtEventSystemMenupopupend 0x0007 -#define kNtEventSystemCapturestart 0x0008 -#define kNtEventSystemCaptureend 0x0009 -#define kNtEventSystemMovesizestart 0x000A -#define kNtEventSystemMovesizeend 0x000B -#define kNtEventSystemContexthelpstart 0x000C -#define kNtEventSystemContexthelpend 0x000D -#define kNtEventSystemDragdropstart 0x000E -#define kNtEventSystemDragdropend 0x000F -#define kNtEventSystemDialogstart 0x0010 -#define kNtEventSystemDialogend 0x0011 -#define kNtEventSystemScrollingstart 0x0012 -#define kNtEventSystemScrollingend 0x0013 -#define kNtEventSystemSwitchstart 0x0014 -#define kNtEventSystemSwitchend 0x0015 -#define kNtEventSystemMinimizestart 0x0016 -#define kNtEventSystemMinimizeend 0x0017 - -#define kNtEventConsoleCaret 0x4001 -#define kNtEventConsoleUpdateRegion 0x4002 -#define kNtEventConsoleUpdateSimple 0x4003 -#define kNtEventConsoleUpdateScroll 0x4004 -#define kNtEventConsoleLayout 0x4005 -#define kNtEventConsoleStartApplication 0x4006 -#define kNtEventConsoleEndApplication 0x4007 - -#define kNtEventObjectCreate 0x8000 -#define kNtEventObjectDestroy 0x8001 -#define kNtEventObjectShow 0x8002 -#define kNtEventObjectHide 0x8003 -#define kNtEventObjectReorder 0x8004 -#define kNtEventObjectFocus 0x8005 -#define kNtEventObjectSelection 0x8006 -#define kNtEventObjectSelectionadd 0x8007 -#define kNtEventObjectSelectionremove 0x8008 -#define kNtEventObjectSelectionwithin 0x8009 -#define kNtEventObjectStatechange 0x800A -#define kNtEventObjectLocationchange 0x800B -#define kNtEventObjectNamechange 0x800C -#define kNtEventObjectDescriptionchange 0x800D -#define kNtEventObjectValuechange 0x800E -#define kNtEventObjectParentchange 0x800F -#define kNtEventObjectHelpchange 0x8010 -#define kNtEventObjectDefactionchange 0x8011 -#define kNtEventObjectAcceleratorchange 0x8012 - - - -/*!BEGIN libc/nt/enum/eventtype.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_EVENTTYPE_H_ - -#define kNtNotificationEvent 0 -#define kNtSynchronizationEvent 1 - - - -/*!BEGIN libc/nt/enum/exceptionhandleractions.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_EXCEPTIONHANDLERACTIONS_H_ - -#define kNtExceptionExecuteHandler 0x1u -#define kNtExceptionContinueExecution 0xffffffffu -#define kNtExceptionContinueSearch 0x0u - - - -/*!BEGIN libc/nt/enum/fileflagandattributes.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILEFLAGANDATTRIBUTES_H_ - -/** - * MS-DOS File Attributes. - * - * @see GetFileInformationByHandle() - * @see libc/sysv/consts.sh - */ -#define kNtFileAttributeReadonly 0x00000001u -#define kNtFileAttributeHidden 0x00000002u -#define kNtFileAttributeSystem 0x00000004u -#define kNtFileAttributeVolumelabel 0x00000008u -#define kNtFileAttributeDirectory 0x00000010u -#define kNtFileAttributeArchive 0x00000020u - -/** - * NT File Attributes. - */ -#define kNtFileAttributeDevice 0x00000040u -#define kNtFileAttributeNormal 0x00000080u -#define kNtFileAttributeTemporary 0x00000100u -#define kNtFileAttributeSparseFile 0x00000200u -#define kNtFileAttributeReparsePoint 0x00000400u -#define kNtFileAttributeCompressed 0x00000800u -#define kNtFileAttributeOffline 0x00001000u -#define kNtFileAttributeNotContentIndexed 0x00002000u -#define kNtFileAttributeEncrypted 0x00004000u - -/** - * NT File Flags. - */ -#define kNtFileFlagWriteThrough 0x80000000u -#define kNtFileFlagOverlapped 0x40000000u -#define kNtFileFlagNoBuffering 0x20000000u -#define kNtFileFlagRandomAccess 0x10000000u -#define kNtFileFlagSequentialScan 0x08000000u -#define kNtFileFlagDeleteOnClose 0x04000000u -#define kNtFileFlagBackupSemantics 0x02000000u -#define kNtFileFlagPosixSemantics 0x01000000u -#define kNtFileFlagOpenReparsePoint 0x00200000u /* or symlink */ -#define kNtFileFlagOpenNoRecall 0x00100000u -#define kNtFileFlagFirstPipeInstance 0x00080000u - - - -/*!BEGIN libc/nt/enum/fileinfobyhandleclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILEINFOBYHANDLECLASS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtFileBasicInfo 0 /* struct NtFileBasicInformation */ -#define kNtFileStandardInfo 1 /* struct NtFileStandardInformation */ -#define kNtFileNameInfo 2 /* struct NtFileNameInformation */ -#define kNtFileStreamInfo 7 /* struct NtFileStreamInformation */ -#define kNtFileCompressionInfo 8 /* struct NtFileCompressionInfo */ -#define kNtFileAttributeTagInfo 9 /* struct NtFileAttributeTagInformation */ -#define kNtFileIdBothDirectoryInfo 10 -#define kNtFileIdBothDirectoryRestartInfo 11 -#define kNtFileRemoteProtocolInfo 13 -#define kNtFileFullDirectoryInfo 14 /* NtFileFullDirectoryInformation */ -#define kNtFileFullDirectoryRestartInfo 15 -#define kNtFileStorageInfo 16 /* win8+ */ -#define kNtFileAlignmentInfo 17 /* win8+ */ -#define kNtFileIdInfo 18 /* win8+ */ -#define kNtFileIdExtdDirectoryInfo 19 /* win8+ */ -#define kNtFileIdExtdDirectoryRestartInfo 20 /* win8+ */ - -/* #define kNtFileRenameInfo 4 */ -/* #define kNtFileDispositionInfo 5 */ -/* #define kNtFileAllocationInfo 6 */ -/* #define kNtFileEndOfFileInfo 7 */ -/* #define kNtFileIoPriorityHintInfo 13 */ -/* #define kNtFileDispositionInfoEx 22 /\* win10+ *\/ */ -/* #define kNtFileRenameInfoEx 23 /\* win10+ *\/ */ - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/fileinformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILEINFORMATIONCLASS_H_ - -#define kNtFileDirectoryInformation 1 /*→ struct NtFileDirectoryInformation */ -#define kNtFileFullDirectoryInformation 2 /*→ etc. */ -#define kNtFileBothDirectoryInformation 3 -#define kNtFileBasicInformation 4 -#define kNtFileStandardInformation 5 -#define kNtFileInternalInformation 6 -#define kNtFileEaInformation 7 -#define kNtFileAccessInformation 8 -#define kNtFileNameInformation 9 -#define kNtFileRenameInformation 10 -#define kNtFileLinkInformation 11 -#define kNtFileNamesInformation 12 -#define kNtFileDispositionInformation 13 -#define kNtFilePositionInformation 14 -#define kNtFileFullEaInformation 15 -#define kNtFileModeInformation 16 -#define kNtFileAlignmentInformation 17 -#define kNtFileAllInformation 18 -#define kNtFileAllocationInformation 19 -#define kNtFileEndOfFileInformation 20 -#define kNtFileAlternateNameInformation 21 -#define kNtFileStreamInformation 22 -#define kNtFilePipeInformation 23 -#define kNtFilePipeLocalInformation 24 -#define kNtFilePipeRemoteInformation 25 -#define kNtFileMailslotQueryInformation 26 -#define kNtFileMailslotSetInformation 27 -#define kNtFileCompressionInformation 28 -#define kNtFileObjectIdInformation 29 -#define kNtFileCompletionInformation 30 -#define kNtFileMoveClusterInformation 31 -#define kNtFileQuotaInformation 32 -#define kNtFileReparsePointInformation 33 -#define kNtFileNetworkOpenInformation 34 -#define kNtFileAttributeTagInformation 35 -#define kNtFileTrackingInformation 36 -#define kNtFileIdBothDirectoryInformation 37 -#define kNtFileIdFullDirectoryInformation 38 -#define kNtFileValidDataLengthInformation 39 -#define kNtFileShortNameInformation 40 -#define kNtFileInformation_MAX 40 - - - -/*!BEGIN libc/nt/enum/filelockflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILELOCKFLAGS_H_ - -#define kNtLockfileFailImmediately 1 -#define kNtLockfileExclusiveLock 2 - - - -/*!BEGIN libc/nt/enum/filemapflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILEMAPFLAGS_H_ - -#define kNtFileMapCopy 0x00000001u -#define kNtFileMapWrite 0x00000002u -#define kNtFileMapRead 0x00000004u -#define kNtFileMapExecute 0x00000020u -#define kNtFileMapReserve 0x80000000u -#define kNtFileMapTargetsInvalid 0x40000000u -#define kNtFileMapLargePages 0x20000000u - - - -/*!BEGIN libc/nt/enum/filemovemethod.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILEMOVEMETHOD_H_ - -#define kNtFileBegin 0 -#define kNtFileCurrent 1 -#define kNtFileEnd 2 - - - -/*!BEGIN libc/nt/enum/filesharemode.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILESHAREFLAGS_H_ - -#define kNtFileShareExclusive 0x00000000u -#define kNtFileShareRead 0x00000001u -#define kNtFileShareWrite 0x00000002u -#define kNtFileShareDelete 0x00000004u - - - -/*!BEGIN libc/nt/enum/filetype.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FILETYPE_H_ - -#define kNtFileTypeUnknown 0x0000 -#define kNtFileTypeDisk 0x0001 /* @see S_ISBLK() */ -#define kNtFileTypeChar 0x0002 /* @see S_ISCHR() */ -#define kNtFileTypePipe 0x0003 /* @see S_ISFIFO() */ -#define kNtFileTypeRemote 0x8000 /* unused -MSDN */ - - - -/*!BEGIN libc/nt/enum/fillattribute.h */ - -#define COSMOPOLITAN_LIBC_NT_NTFILLATTRIBUTE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtForegroundBlue 0x0001 -#define kNtForegroundGreen 0x0002 -#define kNtForegroundRed 0x0004 -#define kNtForegroundIntensity 0x0008 -#define kNtBackgroundBlue 0x0010 -#define kNtBackgroundGreen 0x0020 -#define kNtBackgroundRed 0x0040 -#define kNtBackgroundIntensity 0x0080 - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/findexinfolevels.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FINDEXINFOLEVELS_H_ - -#define kNtFindExInfoStandard 0 -#define kNtFindExInfoBasic 1 -#define kNtFindExInfoMaxInfoLevel 2 - - - -/*!BEGIN libc/nt/enum/findexsearchops.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FINDEXSEARCHOPS_H_ - -#define kNtFindExSearchNameMatch 0 -#define kNtFindExSearchLimitToDirectories 1 -#define kNtFindExSearchLimitToDevices 2 -#define kNtFindExSearchMaxSearchOp 3 - - - -/*!BEGIN libc/nt/enum/formatmessageflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FORMATMESSAGEFLAGS_H_ - -#define kNtFormatMessageAllocateBuffer 0x100 -#define kNtFormatMessageIgnoreInserts 0x200 -#define kNtFormatMessageFromString 0x400 -#define kNtFormatMessageFromHmodule 0x800 -#define kNtFormatMessageFromSystem 0x1000 -#define kNtFormatMessageArgumentArray 0x2000 -#define kNtFormatMessageMaxWidthMask 0xff - - - -/*!BEGIN libc/nt/enum/fsctl.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FSCTL_H_ - -#define kNtFsctlDisableLocalBuffering 0x000902B8u -#define kNtFsctlFilePrefetch 0x00090120u -#define kNtFsctlFilesystemGetStatistics 0x00090060u -#define kNtFsctlGetCompression 0x0009003Cu -#define kNtFsctlGetNtfsFileRecord 0x00090068u -#define kNtFsctlGetNtfsVolumeData 0x00090064u -#define kNtFsctlQueryAllocatedRanges 0x000940CFu -#define kNtFsctlScrubData 0x000902B0u -#define kNtFsctlSetCompression 0x0009C040u -#define kNtFsctlSetSparse 0x000900C4u -#define kNtFsctlSetZeroData 0x000980C8u - - - -/*!BEGIN libc/nt/enum/fsinformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_FSINFORMATIONCLASS_H_ - -#define kNtFileFsVolumeInformation 1 -#define kNtFileFsLabelInformation 2 -#define kNtFileFsSizeInformation 3 -#define kNtFileFsDeviceInformation 4 -#define kNtFileFsAttributeInformation 5 -#define kNtFileFsControlInformation 6 -#define kNtFileFsFullSizeInformation 7 -#define kNtFileFsObjectIdInformation 8 -#define kNtFileFsDriverPathInformation 9 -#define kNtFileFsInformation_MAX 10 - - - -/*!BEGIN libc/nt/enum/getfileexinfolevels.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_GETFILEEXINFOLEVELS_H_ - -#define kNtGetFileExInfoStandard 0 - - - -/*!BEGIN libc/nt/enum/ht.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_HT_H_ - -#define kNtHterror -2 -#define kNtHttransparent -1 -#define kNtHtnowhere 0 -#define kNtHtclient 1 -#define kNtHtcaption 2 -#define kNtHtsysmenu 3 -#define kNtHtgrowbox 4 -#define kNtHtsize kNtHtgrowbox -#define kNtHtmenu 5 -#define kNtHthscroll 6 -#define kNtHtvscroll 7 -#define kNtHtminbutton 8 -#define kNtHtmaxbutton 9 -#define kNtHtleft 10 -#define kNtHtright 11 -#define kNtHttop 12 -#define kNtHttopleft 13 -#define kNtHttopright 14 -#define kNtHtbottom 15 -#define kNtHtbottomleft 16 -#define kNtHtbottomright 17 -#define kNtHtborder 18 -#define kNtHtreduce kNtHtminbutton -#define kNtHtzoom kNtHtmaxbutton -#define kNtHtsizefirst kNtHtleft -#define kNtHtsizelast kNtHtbottomright -#define kNtHtobject 19 -#define kNtHtclose 20 -#define kNtHthelp 21 - - - -/*!BEGIN libc/nt/enum/idc.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_IDC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define kNtIdcArrow ((const char16_t *)32512) -#define kNtIdcIbeam ((const char16_t *)32513) -#define kNtIdcWait ((const char16_t *)32514) -#define kNtIdcCross ((const char16_t *)32515) -#define kNtIdcUparrow ((const char16_t *)32516) -#define kNtIdcSizenwse ((const char16_t *)32642) -#define kNtIdcSizenesw ((const char16_t *)32643) -#define kNtIdcSizewe ((const char16_t *)32644) -#define kNtIdcSizens ((const char16_t *)32645) -#define kNtIdcSizeall ((const char16_t *)32646) -#define kNtIdcNo ((const char16_t *)32648) -#define kNtIdcHand ((const char16_t *)32649) -#define kNtIdcHelp ((const char16_t *)32651) -#define kNtIdcPin ((const char16_t *)32671) -#define kNtIdcPerson ((const char16_t *)32672) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/imageauxsymboltype.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_IMAGEAUXSYMBOLTYPE_H_ - -#define kNtImageAuxSymbolTypeTokenDef 1 - - - -/*!BEGIN libc/nt/enum/importobjectnametype.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_IMPORTOBJECTNAMETYPE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -enum NtImportObjectNameType { - IMPORT_OBJECT_ORDINAL, - IMPORT_OBJECT_NAME, - IMPORT_OBJECT_NAME_NO_PREFIX, - IMPORT_OBJECT_NAME_UNDECORATE, - IMPORT_OBJECT_NAME_EXPORTAS -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/importobjecttype.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_IMPORTOBJECTTYPE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -enum NtImportObjectType { - IMPORT_OBJECT_CODE, - IMPORT_OBJECT_DATA, - IMPORT_OBJECT_CONST -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/ioctl.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_IOCTL_H_ - -#define kNtIoctlDiskGetDriveGeometry 0x00070000u -#define kNtIoctlAfdPoll 0x00012024u - - - -/*!BEGIN libc/nt/enum/jobobjectinfoclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_JOBOBJECTINFOCLASS_H_ - -#define kNtJobObjectBasicAccountingInformation 1 -#define kNtJobObjectBasicLimitInformation 2 -#define kNtJobObjectBasicProcessIdList 3 -#define kNtJobObjectBasicUIRestrictions 4 -#define kNtJobObjectSecurityLimitInformation 5 -#define kNtJobObjectEndOfJobTimeInformation 6 -#define kNtJobObjectAssociateCompletionPortInformation 7 -#define kNtJobObjectBasicAndIoAccountingInformation 8 -#define kNtJobObjectExtendedLimitInformation 9 -#define kNtJobObjectJobSetInformation 10 - - - -/*!BEGIN libc/nt/enum/keyaccess.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_KEYACCESS_H_ - -#define kNtKeyRead 0x00020019 -#define kNtKeyWrite 0x00020006 -#define kNtKeyExecute 0x00020019 -#define kNtKeyAllAccess 0x000f003f - - - -/*!BEGIN libc/nt/enum/keyedevent.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_KEYEDEVENT_H_ - -#define kNtKeyedeventWait 0x00000001u -#define kNtKeyedeventWake 0x00000002u -#define kNtKeyedeventAllAccess \ - (kNtStandardRightsRequired | kNtKeyedeventWait | kNtKeyedeventWake) - - - -/*!BEGIN libc/nt/enum/keyinformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_KEYINFORMATIONCLASS_H_ - -#define kNtKeyBasicInformation 0 -#define kNtKeyNodeInformation 1 -#define kNtKeyFullInformation 2 -#define kNtKeyNameInformation 3 - - - -/*!BEGIN libc/nt/enum/kwaitreason.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_KWAITREASON_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtExecutive 0 -#define kNtFreePage 1 -#define kNtPageIn 2 -#define kNtPoolAllocation 3 -#define kNtDelayExecution 4 -#define kNtSuspended 5 -#define kNtUserRequest 6 -#define kNtWrExecutive 7 -#define kNtWrFreePage 8 -#define kNtWrPageIn 9 -#define kNtWrPoolAllocation 10 -#define kNtWrDelayExecution 11 -#define kNtWrSuspended 12 -#define kNtWrUserRequest 13 -#define kNtWrEventPair 14 -#define kNtWrQueue 15 -#define kNtWrLpcReceive 16 -#define kNtWrLpcReply 17 -#define kNtWrVirtualMemory 18 -#define kNtWrPageOut 19 -#define kNtWrRendezvous 20 -#define kNtSpare2 21 -#define kNtSpare3 22 -#define kNtSpare4 23 -#define kNtSpare5 24 -#define kNtSpare6 25 -#define kNtWrKernel 26 -#define kNtMaximumWaitReason 27 - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/loadlibrarysearch.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_LOADLIBRARYSEARCH_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtLoadLibrarySearchApplicationDir 0x00000200u -#define kNtLoadLibrarySearchSearchSystem32 0x00000800u -#define kNtLoadLibrarySearchUserDirs 0x00000400u -#define kNtLoadLibrarySearchDefaultDirs 0x00001000u - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/lockfile.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_LOCKFILE_H_ - -#define kNtLockfileFailImmediately 1 -#define kNtLockfileExclusiveLock 2 - - - -/*!BEGIN libc/nt/enum/mb.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_MB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtMbOk 0x00000000 -#define kNtMbOkcancel 0x00000001 -#define kNtMbAbortretryignore 0x00000002 -#define kNtMbYesnocancel 0x00000003 -#define kNtMbYesno 0x00000004 -#define kNtMbRetrycancel 0x00000005 -#define kNtMbCanceltrycontinue 0x00000006 -#define kNtMbIconhand 0x00000010 -#define kNtMbIconquestion 0x00000020 -#define kNtMbIconexclamation 0x00000030 -#define kNtMbIconasterisk 0x00000040 -#define kNtMbUsericon 0x00000080 -#define kNtMbIconwarning kNtMbIconexclamation -#define kNtMbIconerror kNtMbIconhand -#define kNtMbIconinformation kNtMbIconasterisk -#define kNtMbIconstop kNtMbIconhand -#define kNtMbDefbutton1 0x00000000 -#define kNtMbDefbutton2 0x00000100 -#define kNtMbDefbutton3 0x00000200 -#define kNtMbDefbutton4 0x00000300 -#define kNtMbApplmodal 0x00000000 -#define kNtMbSystemmodal 0x00001000 -#define kNtMbTaskmodal 0x00002000 -#define kNtMbHelp 0x00004000 -#define kNtMbNofocus 0x00008000 -#define kNtMbSetforeground 0x00010000 -#define kNtMbDefaultDesktopOnly 0x00020000 -#define kNtMbTopmost 0x00040000 -#define kNtMbRight 0x00080000 -#define kNtMbRtlreading 0x00100000 -#define kNtMbServiceNotification 0x00200000 -#define kNtMbServiceNotificationNt3x 0x00040000 -#define kNtMbTypemask 0x0000000F -#define kNtMbIconmask 0x000000F0 -#define kNtMbDefmask 0x00000F00 -#define kNtMbModemask 0x00003000 -#define kNtMbMiscmask 0x0000C000 - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/memflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_MEMFLAGS_H_ - -#define kNtMemCommit 0x1000 /* perform physical memory reservation step */ -#define kNtMemReserve 0x2000 /* perform virtual memory reservation step */ -#define kNtMemDecommit 0x4000 -#define kNtMemRelease 0x8000 -#define kNtMemFree 0x10000 -#define kNtMemPrivate 0x20000 -#define kNtMemMapped 0x40000 -#define kNtMemReset 0x80000 -#define kNtMemTopDown 0x100000 -#define kNtMemWriteWatch 0x200000 -#define kNtMemPhysical 0x400000 -#define kNtMemLargePages 0x20000000 -#define kNtMem4mbPages 0x80000000 - - - -/*!BEGIN libc/nt/enum/memoryinformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_MEMORYINFORMATIONCLASS_H_ - -#define kNtMemoryBasicInformation 0 -#define kNtMemoryWorkingSetList 1 -#define kNtMemorySectionName 2 -#define kNtMemoryBasicVlmInformation 3 - - - -/*!BEGIN libc/nt/enum/mf.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_MF_H_ - -#define kNtMfInsert 0x00000000 -#define kNtMfChange 0x00000080 -#define kNtMfAppend 0x00000100 -#define kNtMfDelete 0x00000200 -#define kNtMfRemove 0x00001000 -#define kNtMfBycommand 0x00000000 -#define kNtMfByposition 0x00000400 -#define kNtMfSeparator 0x00000800 -#define kNtMfEnabled 0x00000000 -#define kNtMfGrayed 0x00000001 -#define kNtMfDisabled 0x00000002 -#define kNtMfUnchecked 0x00000000 -#define kNtMfChecked 0x00000008 -#define kNtMfUsecheckbitmaps 0x00000200 -#define kNtMfString 0x00000000 -#define kNtMfBitmap 0x00000004 -#define kNtMfOwnerdraw 0x00000100 -#define kNtMfPopup 0x00000010 -#define kNtMfMenubarbreak 0x00000020 -#define kNtMfMenubreak 0x00000040 -#define kNtMfUnhilite 0x00000000 -#define kNtMfHilite 0x00000080 -#define kNtMfDefault 0x00001000 -#define kNtMfSysmenu 0x00002000 -#define kNtMfHelp 0x00004000 -#define kNtMfRightjustify 0x00004000 -#define kNtMfMouseselect 0x00008000 - - - -/*!BEGIN libc/nt/enum/mk.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_MK_H_ - -#define kNtMkLbutton 0x0001 -#define kNtMkRbutton 0x0002 -#define kNtMkShift 0x0004 -#define kNtMkControl 0x0008 -#define kNtMkMbutton 0x0010 -#define kNtMkXbutton1 0x0020 -#define kNtMkXbutton2 0x0040 - - - -/*!BEGIN libc/nt/enum/movefileexflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_MOVEFILEEXFLAGS_H_ - -#define kNtMovefileReplaceExisting 1 -#define kNtMovefileCopyAllowed 2 -#define kNtMovefileDelayUntilReboot 4 -#define kNtMovefileCreateHardlink 16 -#define kNtMovefileFailIfNotTrackable 32 -#define kNtMovefileWriteThrough 8 - - - -/*!BEGIN libc/nt/enum/objectinformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_OBJECTINFORMATIONCLASS_H_ - -#define kNtObjectBasicInformation 0 /*→ struct NtObjectBasicInformation */ -#define kNtObjectNameInformation 1 /*→ etc. */ -#define kNtObjectTypeInformation 2 -#define kNtObjectAllInformation 3 -#define kNtObjectDataInformation 4 - - - -/*!BEGIN libc/nt/enum/offerpriority.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_OFFERPRIORITY_H_ - -/* TODO(jart): Are these values correct? */ -#define kNtVmOfferPriorityVeryLow 1 /* 0x00001000? */ -#define kNtVmOfferPriorityLow 2 /* 0x00002000? */ -#define kNtVmOfferPriorityBelowNormal 3 /* 0x00002000? */ -#define kNtVmOfferPriorityNormal 4 /* 0x00002000? */ - - - -/*!BEGIN libc/nt/enum/ofn.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_OFN_H_ - -#define kNtOfnReadonly 0x00000001 -#define kNtOfnOverwriteprompt 0x00000002 -#define kNtOfnHidereadonly 0x00000004 -#define kNtOfnNochangedir 0x00000008 -#define kNtOfnShowhelp 0x00000010 -#define kNtOfnEnablehook 0x00000020 -#define kNtOfnEnabletemplate 0x00000040 -#define kNtOfnEnabletemplatehandle 0x00000080 -#define kNtOfnNovalidate 0x00000100 -#define kNtOfnAllowmultiselect 0x00000200 -#define kNtOfnExtensiondifferent 0x00000400 -#define kNtOfnPathmustexist 0x00000800 -#define kNtOfnFilemustexist 0x00001000 -#define kNtOfnCreateprompt 0x00002000 -#define kNtOfnShareaware 0x00004000 -#define kNtOfnNoreadonlyreturn 0x00008000 -#define kNtOfnNotestfilecreate 0x00010000 -#define kNtOfnNonetworkbutton 0x00020000 -#define kNtOfnNolongnames 0x00040000 -#define kNtOfnExplorer 0x00080000 -#define kNtOfnNodereferencelinks 0x00100000 -#define kNtOfnLongnames 0x00200000 -#define kNtOfnEnableincludenotify 0x00400000 -#define kNtOfnEnablesizing 0x00800000 -#define kNtOfnDontaddtorecent 0x02000000 -#define kNtOfnForceshowhidden 0x10000000 - - - -/*!BEGIN libc/nt/enum/pageflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_PAGEFLAGS_H_ - -/* Pick One */ -#define kNtPageNoaccess 0x01 -#define kNtPageReadonly 0x02 -#define kNtPageReadwrite 0x04 -#define kNtPageWritecopy 0x08 -#define kNtPageExecute 0x10 -#define kNtPageExecuteRead 0x20 -#define kNtPageExecuteReadwrite 0x40 -#define kNtPageExecuteWritecopy 0x80 -#define kNtPageGuard 0x100 -#define kNtPageNocache 0x200 -#define kNtPageWritecombine 0x400 - -/* These may be OR'd */ -#define kNtSecReserve 0x4000000 -#define kNtSecCommit 0x8000000 /* ←default */ -#define kNtSecImage 0x1000000 -#define kNtSecImageNoExecute 0x11000000 -#define kNtSecLargePages 0x80000000 -#define kNtSecNocache 0x10000000 -#define kNtSecWritecombine 0x40000000 - - - -/*!BEGIN libc/nt/enum/processaccess.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_PROCESSACCESS_H_ - -#define kNtProcessCreateProcess 0x0080u -#define kNtProcessCreateThread 0x0002u -#define kNtProcessDupHandle 0x0040u -#define kNtProcessQueryInformation 0x0400u -#define kNtProcessQueryLimitedInformation 0x1000u -#define kNtProcessSetInformation 0x0200u -#define kNtProcessSetQuota 0x0100u -#define kNtProcessSuspendResume 0x0800u -#define kNtProcessTerminate 0x0001u -#define kNtProcessVmOperation 0x0008u -#define kNtProcessVmRead 0x0010u -#define kNtProcessVmWrite 0x0020u -#define kNtProcessSynchronize kNtSynchronize -#define kNtProcessAllAccess \ - (kNtStandardRightsRequired | kNtSynchronize | 0xffffu) - - - -/*!BEGIN libc/nt/enum/processcreationflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_PROCESSCREATIONFLAGS_H_ - -#define kNtIdlePriorityClass 0x00000040u -#define kNtBelowNormalPriorityClass 0x00004000u -#define kNtNormalPriorityClass 0x00000020u -#define kNtAboveNormalPriorityClass 0x00008000u -#define kNtHighPriorityClass 0x00000080u -#define kNtRealtimePriorityClass 0x00000100u - -#define kNtDebugProcess 0x00000001u -#define kNtDebugOnlyThisProcess 0x00000002u -#define kNtCreateSuspended 0x00000004u -#define kNtDetachedProcess 0x00000008u -#define kNtCreateNewConsole 0x00000010u -#define kNtCreateNewProcessGroup 0x00000200u -#define kNtCreateUnicodeEnvironment 0x00000400u -#define kNtCreateSeparateWowVdm 0x00000800u -#define kNtCreateSharedWowVdm 0x00001000u -#define kNtCreateForcedos 0x00002000u -#define kNtInheritParentAffinity 0x00010000u -#define kNtCreateProtectedProcess 0x00040000u -#define kNtExtendedStartupinfoPresent 0x00080000u -#define kNtProcessModeBackgroundBegin 0x00100000u -#define kNtProcessModeBackgroundEnd 0x00200000u -#define kNtCreateSecureProcess 0x00400000u -#define kNtCreateBreakawayFromJob 0x01000000u -#define kNtCreatePreserveCodeAuthzLevel 0x02000000u -#define kNtCreateDefaultErrorMode 0x04000000u -#define kNtCreateNoWindow 0x08000000u -#define kNtProfileUser 0x10000000u -#define kNtProfileKernel 0x20000000u -#define kNtProfileServer 0x40000000u -#define kNtCreateIgnoreSystemDefault 0x80000000u - - - -/*!BEGIN libc/nt/enum/processinfoclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_PROCESSINFOCLASS_H_ - -#define kNtProcessBasicInformation 0 -#define kNtProcessQuotaLimits 1 -#define kNtProcessIoCounters 2 -#define kNtProcessVmCounters 3 -#define kNtProcessTimes 4 -#define kNtProcessBasePriority 5 -#define kNtProcessRaisePriority 6 -#define kNtProcessDebugPort 7 -#define kNtProcessExceptionPort 8 -#define kNtProcessAccessToken 9 -#define kNtProcessWow64Information 26 -#define kNtProcessImageFileName 27 - - - -/*!BEGIN libc/nt/enum/procthreadattributes.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_PROCTHREADATTRIBUTES_H_ - -#define kNtProcThreadAttributeReplaceValue 1 -#define kNtProcThreadAttributeHandleList 0x00020002 - - - -/*!BEGIN libc/nt/enum/progress.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_PROGRESS_H_ - -#define kNtProgressContinue 0 -#define kNtProgressCancel 1 -#define kNtProgressStop 2 -#define kNtProgressQuiet 3 - - - -/*!BEGIN libc/nt/enum/pwr.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_PWR_H_ - -#define kNtPwrOk 1 -#define kNtPwrFail (-1) -#define kNtPwrSuspendrequest 1 -#define kNtPwrSuspendresume 2 -#define kNtPwrCriticalresume 3 - - - -/*!BEGIN libc/nt/enum/rdw.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_RDW_H_ - -#define kNtRdwInvalidate 0x0001 -#define kNtRdwInternalpaint 0x0002 -#define kNtRdwErase 0x0004 -#define kNtRdwValidate 0x0008 -#define kNtRdwNointernalpaint 0x0010 -#define kNtRdwNoerase 0x0020 -#define kNtRdwNochildren 0x0040 -#define kNtRdwAllchildren 0x0080 -#define kNtRdwUpdatenow 0x0100 -#define kNtRdwErasenow 0x0200 -#define kNtRdwFrame 0x0400 -#define kNtRdwNoframe 0x0800 - - - -/*!BEGIN libc/nt/enum/reggetvalueflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_REGGETVALUEFLAGS_H_ - -#define kNtRrfRtRegNone 0x00000001 -#define kNtRrfRtRegSz 0x00000002 -#define kNtRrfRtRegExpandSz 0x00000004 -#define kNtRrfRtRegBinary 0x00000008 -#define kNtRrfRtRegDword 0x00000010 -#define kNtRrfRtRegMultiSz 0x00000020 -#define kNtRrfRtRegQword 0x00000040 -#define kNtRrfRtDword (kNtRrfRtRegBinary | kNtRrfRtRegDword) -#define kNtRrfRtQword (kNtRrfRtRegBinary | kNtRrfRtRegQword) -#define kNtRrfRtAny 0x0000ffff -#define kNtRrfSubkeyWow6464key 0x00010000 -#define kNtRrfSubkeyWow6432key 0x00020000 -#define kNtRrfWow64Mask 0x00030000 -#define kNtRrfNoexpand 0x10000000 -#define kNtRrfZeroonfailure 0x20000000 - - - -/*!BEGIN libc/nt/enum/regtype.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_REGTYPE_H_ - -#define kNtRegNone 0 -#define kNtRegSz 1 /* UTF-16 string */ -#define kNtRegExpandSz 2 /* UTF-16 string w/ env vars refs */ -#define kNtRegBinary 3 -#define kNtRegDword 4 -#define kNtRegDwordBigEndian 5 -#define kNtRegLink 6 -#define kNtRegMultiSz 7 /* UTF-16 double-nul-terminated */ -#define kNtRegResourceList 8 -#define kNtRegFullResourceDescriptor 9 -#define kNtRegResourceRequirementsList 10 -#define kNtRegQword 11 - - - -/*!BEGIN libc/nt/enum/replacefile.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_REPLACEFILE_H_ - -#define kNtReplacefileWriteThrough 1 -#define kNtReplacefileIgnoreMergeErrors 2 -#define kNtReplacefileIgnoreAclErrors 4 - - - -/*!BEGIN libc/nt/enum/sc.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SC_H_ - -#define kNtScSize 0xF000 -#define kNtScMove 0xF010 -#define kNtScMinimize 0xF020 -#define kNtScMaximize 0xF030 -#define kNtScNextwindow 0xF040 -#define kNtScPrevwindow 0xF050 -#define kNtScClose 0xF060 -#define kNtScVscroll 0xF070 -#define kNtScHscroll 0xF080 -#define kNtScMousemenu 0xF090 -#define kNtScKeymenu 0xF100 -#define kNtScArrange 0xF110 -#define kNtScRestore 0xF120 -#define kNtScTasklist 0xF130 -#define kNtScScreensave 0xF140 -#define kNtScHotkey 0xF150 -#define kNtScDefault 0xF160 -#define kNtScMonitorpower 0xF170 -#define kNtScContexthelp 0xF180 -#define kNtScSeparator 0xF00F - - - -/*!BEGIN libc/nt/enum/sectioninformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SECTIONINFORMATIONCLASS_H_ - -#define kNtSectionBasicInformation 0 -#define kNtSectionImageInformation 1 - - - -/*!BEGIN libc/nt/enum/sectioninherit.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SECTIONINHERIT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -enum NtSectionInherit { kNtViewShare = 1, kNtViewUnmap = 2 }; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/sectionmapflags.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SECTIONMAPFLAGS_H_ - -#define kNtSectionQuery 0x0001 -#define kNtSectionMapWrite 0x0002 -#define kNtSectionMapRead 0x0004 -#define kNtSectionMapExecute 0x0008 -#define kNtSectionExtendSize 0x0010 -#define kNtSectionMapExecuteExplicit 0x0020 - - - -/*!BEGIN libc/nt/enum/securityimpersonationlevel.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SECURITYIMPERSONATIONLEVEL_H_ - -#define kNtSecurityAnonymous 0 -#define kNtSecurityIdentification 1 -#define kNtSecurityImpersonation 2 -#define kNtSecurityDelegation 3 - - - -/*!BEGIN libc/nt/enum/securityinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SECURITYINFORMATION_H_ - -#define kNtOwnerSecurityInformation 0x00000001 -#define kNtGroupSecurityInformation 0x00000002 -#define kNtDaclSecurityInformation 0x00000004 -#define kNtSaclSecurityInformation 0x00000008 -#define kNtLabelSecurityInformation 0x00000010 -#define kNtAttributeSecurityInformation 0x00000020 -#define kNtScopeSecurityInformation 0x00000040 -#define kNtProcessTrustLabelSecurityInformation 0x00000080 -#define kNtAccessFilterSecurityInformation 0x00000100 -#define kNtBackupSecurityInformation 0x00010000 -#define kNtProtectedDaclSecurityInformation 0x80000000 -#define kNtProtectedSaclSecurityInformation 0x40000000 -#define kNtUnprotectedDaclSecurityInformation 0x20000000 -#define kNtUnprotectedSaclSecurityInformation 0x10000000 - - - -/*!BEGIN libc/nt/enum/signal.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SIGNAL_H_ - -#define kNtSignalBreakpoint 0x80000003u -#define kNtSignalIllegalInstruction 0xC000001Du -#define kNtSignalPrivInstruction 0xC0000096u -#define kNtSignalGuardPage 0x80000001u -#define kNtSignalAccessViolation 0xC0000005u -#define kNtSignalInPageError 0xC0000006u -#define kNtSignalInvalidHandle 0xC0000008u -#define kNtSignalInvalidParameter 0xC000000du -#define kNtSignalFltDenormalOperand 0xC000008Du -#define kNtSignalFltDivideByZero 0xC000008Eu -#define kNtSignalFltInexactResult 0xC000008Fu -#define kNtSignalFltInvalidOperation 0xC0000090u -#define kNtSignalFltOverflow 0xC0000091u -#define kNtSignalFltStackCheck 0xC0000092u -#define kNtSignalFltUnderflow 0xC0000093u -#define kNtSignalIntegerDivideByZero 0xC0000094u -#define kNtSignalDllNotFound 0xC0000135u -#define kNtSignalOrdinalNotFound 0xC0000138u -#define kNtSignalEntrypointNotFound 0xC0000139u -#define kNtSignalControlCExit 0xC000013Au -#define kNtSignalDllInitFailed 0xC0000142u -#define kNtSignalFloatMultipleFaults 0xC00002B4u -#define kNtSignalFloatMultipleTraps 0xC00002B5u -#define kNtSignalAssertionFailure 0xC0000420u - - - -/*!BEGIN libc/nt/enum/sio.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SIO_H_ - -#define kNtSioBspHandlePoll 0x4800001D -#define kNtSioBaseHandle 0x48000022 - - - -/*!BEGIN libc/nt/enum/size.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SIZE_H_ - -#define kNtSizeRestored 0 -#define kNtSizeMinimized 1 -#define kNtSizeMaximized 2 -#define kNtSizeMaxshow 3 -#define kNtSizeMaxhide 4 - - - -/*!BEGIN libc/nt/enum/startf.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_STARTF_H_ - -#define kNtStartfUseshowwindow 0x00000001 /* otherwise wShowWindow ignored */ -#define kNtStartfUsesize 0x00000002 /* otherwise dwX / dwY ignored */ -#define kNtStartfUseposition 0x00000004 /* otherwise dwX/YSize ignored */ -#define kNtStartfUsecountchars 0x00000008 /* otherwise dwX/YCountChars ign. */ -#define kNtStartfUsefillattribute 0x00000010 /* etc. */ -#define kNtStartfRunfullscreen 0x00000020 -#define kNtStartfForceonfeedback 0x00000040 -#define kNtStartfForceofffeedback 0x00000080 -#define kNtStartfUsestdhandles 0x00000100 /* otherwise hStd... ignored */ -#define kNtStartfUsehotkey 0x00000200 -#define kNtStartfTitleislinkname 0x00000800 -#define kNtStartfTitleisappid 0x00001000 -#define kNtStartfPreventpinning 0x00002000 -#define kNtStartfUntrustedsource 0x00008000 - - - -/*!BEGIN libc/nt/enum/status.h */ - -#define COSMOPOLITAN_LIBC_NT_STATUS_H_ - -/* high two bits = {success,informational,warning,error} */ -#define kNtStatusSuccess 0x00000000 /* success statuses */ -#define kNtStatusWait0 0x00000000 -#define kNtStatusAbandonedWait0 0x00000080 -#define kNtStatusUserApc 0x000000C0 -#define kNtStatusTimeout 0x00000102 -#define kNtStatusPending 0x00000103 -#define kNtStatusGuardPageViolation 0x80000001 /* warning statuses */ -#define kNtStatusDatatypeMisalignment 0x80000002 -#define kNtStatusBreakpoint 0x80000003 -#define kNtStatusSingleStep 0x80000004 -#define kNtStatusLongjump 0x80000026 -#define kNtStatusUnwindConsolidate 0x80000029 -#define kNtStatusAccessViolation 0xC0000005 /* error statuses */ -#define kNtStatusInPageError 0xC0000006 -#define kNtStatusInvalidHandle 0xC0000008 -#define kNtStatusInvalidParameter 0xC000000D -#define kNtStatusNoMemory 0xC0000017 -#define kNtStatusIllegalInstruction 0xC000001D -#define kNtStatusNoncontinuableException 0xC0000025 -#define kNtStatusInvalidDisposition 0xC0000026 -#define kNtStatusArrayBoundsExceeded 0xC000008C -#define kNtStatusFloatDenormalOperand 0xC000008D -#define kNtStatusFloatDivideByZero 0xC000008E -#define kNtStatusFloatInexactResult 0xC000008F -#define kNtStatusFloatInvalidOperation 0xC0000090 -#define kNtStatusFloatOverflow 0xC0000091 -#define kNtStatusFloatStackCheck 0xC0000092 -#define kNtStatusFloatUnderflow 0xC0000093 -#define kNtStatusIntegerDivideBYZero 0xC0000094 -#define kNtStatusIntegerOverflow 0xC0000095 -#define kNtStatusPrivilegedInstruction 0xC0000096 -#define kNtStatusStackOverflow 0xC00000FD -#define kNtStatusDllNotFound 0xC0000135 -#define kNtStatusOrdinalNotFound 0xC0000138 -#define kNtStatusEntrypointNotFound 0xC0000139 -#define kNtStatusControlCExit 0xC000013A -#define kNtStatusDllInitFailed 0xC0000142 -#define kNtStatusFloatMultipleFaults 0xC00002B4 -#define kNtStatusFloatMultipleTraps 0xC00002B5 -#define kNtStatusRegNatConsumption 0xC00002C9 -#define kNtStatusHeapCorruption 0xC0000374 -#define kNtStatusStackBufferOverrun 0xC0000409 -#define kNtStatusInvalidCruntimeParameter 0xC0000417 -#define kNtStatusAssertionFailure 0xC0000420 -#define kNtStatusEnclaveViolation 0xC00004A2 -#define kNtStatusSegmentNotification 0x40000005 -#define kNtStatusFatalAppExit 0x40000015 -#define kNtStatusNotFound 0xC0000225 -#define kNtStatusCancelled 0xC0000120 - -#define kNtDbgExceptionHandled 0x00010001 -#define kNtDbgContinue 0x00010002 -#define kNtDbgReplyLater 0x40010001 -#define kNtDbgTerminateThread 0x40010003 -#define kNtDbgTerminateProcess 0x40010004 -#define kNtDbgControlC 0x40010005 -#define kNtDbgPrintexceptionC 0x40010006 -#define kNtDbgRipexception 0x40010007 -#define kNtDbgControlBreak 0x40010008 -#define kNtDbgCommandException 0x40010009 -#define kNtDbgPrintexceptionWideC 0x4001000A -#define kNtDbgExceptionNotHandled 0x80010001 -#define kNtStillActive kNtStatusPending - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef uint32_t NtStatus; - -#define NtSuccess(s) ((NtStatus)(s) >= 0) -#define NtInformation(s) (NtSeverity(s) == 1) -#define NtWarning(s) (NtSeverity(s) == 2) -#define NtError(s) (NtSeverity(s) == 3) -#define NtCode(s) ((NtStatus)(s)&0xffff) -#define NtSeverity(s) ((NtStatus)(s) >> 30) -#define NtFacility(s) (((NtStatus)(s) >> 16) & 0xfff) -#define NtFacilityCode(s) ((NtStatus)(s)&0x0FFFFFFF) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/sw.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SW_H_ - -#define kNtSwHide 0 -#define kNtSwShownormal 1 -#define kNtSwNormal 1 -#define kNtSwShowminimized 2 -#define kNtSwShowmaximized 3 -#define kNtSwMaximize 3 -#define kNtSwShownoactivate 4 -#define kNtSwShow 5 -#define kNtSwMinimize 6 -#define kNtSwShowminnoactive 7 -#define kNtSwShowna 8 -#define kNtSwRestore 9 -#define kNtSwShowdefault 10 -#define kNtSwForceminimize 11 - - - -/*!BEGIN libc/nt/enum/systeminformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SYSTEMINFORMATIONCLASS_H_ - -#define kNtSystemBasicInformation 0 -#define kNtSystemProcessorInformation 1 -#define kNtSystemPerformanceInformation 2 -#define kNtSystemTimeOfDayInformation 3 -#define kNtSystemProcessInformation 5 -#define kNtSystemProcessorTimes 8 -#define kNtSystemGlobalFlag 9 -#define kNtSystemModuleInformation 11 -#define kNtSystemLockInformation 12 -#define kNtSystemHandleInformation 16 -#define kNtSystemObjectInformation 17 -#define kNtSystemInterruptInformation 23 -#define kNtSystemExceptionInformation 33 -#define kNtSystemRegistryQuotaInformation 37 -#define kNtSystemLookasideInformation 45 - - - -/*!BEGIN libc/nt/enum/threadaccess.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_THREADACCESS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#define kNtThreadTerminate 0x0001 -#define kNtThreadSuspendResume 0x0002 -#define kNtThreadGetContext 0x0008 -#define kNtThreadSetContext 0x0010 -#define kNtThreadQueryInformation 0x0040 -#define kNtThreadSetInformation 0x0020 -#define kNtThreadSetThreadToken 0x0080 -#define kNtThreadImpersonate 0x0100 -#define kNtThreadDirectImpersonation 0x0200 -#define kNtThreadSetLimitedInformation 0x0400 -#define kNtThreadQueryLimitedInformation 0x0800 -#define kNtThreadResume 0x1000 -#define kNtThreadAllAccess (kNtStandardRightsRequired | kNtSynchronize | 0xFFFF) - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/threadinfoclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_THREADINFOCLASS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -enum NtThreadInfoClass { - kNtThreadBasicInformation, - kNtThreadTimes, - kNtThreadPriority, - kNtThreadBasePriority, - kNtThreadAffinityMask, - kNtThreadImpersonationToken, - kNtThreadDescriptorTableEntry, - kNtThreadEnableAlignmentFaultFixup, - kNtThreadEventPair_Reusable, - kNtThreadQuerySetWin32StartAddress, - kNtThreadZeroTlsCell, - kNtThreadPerformanceCount, - kNtThreadAmILastThread, - kNtThreadIdealProcessor, - kNtThreadPriorityBoost, - kNtThreadSetTlsArrayAddress, - kNtThreadIsIoPending, - kNtThreadHideFromDebugger, - kNtThreadInfoClass_MAX -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/threadpriority.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_THREADPRIORITY_H_ - -#define kNtThreadBasePriorityIdle (-15) -#define kNtThreadBasePriorityMin (-2) -#define kNtThreadBasePriorityMax 2 -#define kNtThreadBasePriorityLowrt 15 - -#define kNtThreadPriorityIdle kNtThreadBasePriorityIdle -#define kNtThreadPriorityLowest kNtThreadBasePriorityMin -#define kNtThreadPriorityBelowNormal (kNtThreadPriorityLowest + 1) -#define kNtThreadPriorityNormal 0 -#define kNtThreadPriorityAboveNormal (kNtThreadPriorityHighest - 1) -#define kNtThreadPriorityHighest kNtThreadBasePriorityMax -#define kNtThreadPriorityTimeCritical kNtThreadBasePriorityLowrt - - - -/*!BEGIN libc/nt/enum/threadstate.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_THREADSTATE_H_ - -#define kNtStateInitialized 0 -#define kNtStateReady 1 -#define kNtStateRunning 2 -#define kNtStateStandby 3 -#define kNtStateTerminated 4 -#define kNtStateWait 5 -#define kNtStateTransition 6 -#define kNtStateUnknown 7 - - - -/*!BEGIN libc/nt/enum/tokeninformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_TOKENINFORMATIONCLASS_H_ - -#define kNtTokenUser 1 -#define kNtTokenGroups 2 -#define kNtTokenPrivileges 3 -#define kNtTokenOwner 4 -#define kNtTokenPrimaryGroup 5 -#define kNtTokenDefaultDacl 6 -#define kNtTokenSource 7 -#define kNtTokenType 8 -#define kNtTokenImpersonationLevel 9 -#define kNtTokenStatistics 10 -#define kNtTokenRestrictedSids 11 -#define kNtTokenSessionId 12 -#define kNtTokenGroupsAndPrivileges 13 -#define kNtTokenSessionReference 14 -#define kNtTokenSandBoxInert 15 -#define kNtTokenAuditPolicy 16 -#define kNtTokenOrigin 17 -#define kNtTokenInfoClass_MAX 18 - - - -/*!BEGIN libc/nt/enum/tokentype.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_TOKENTYPE_H_ - -#define kNtTokenPrimary 1 -#define kNtTokenImpersonation 2 - - - -/*!BEGIN libc/nt/enum/tpm.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_TPM_H_ - -#define kNtTpmLeftbutton 0x00000 -#define kNtTpmRightbutton 0x00002 -#define kNtTpmLeftalign 0x00000 -#define kNtTpmCenteralign 0x00004 -#define kNtTpmRightalign 0x00008 -#define kNtTpmTopalign 0x00000 -#define kNtTpmVcenteralign 0x00010 -#define kNtTpmBottomalign 0x00020 -#define kNtTpmHorizontal 0x00000 -#define kNtTpmVertical 0x00040 -#define kNtTpmNonotify 0x00080 -#define kNtTpmReturncmd 0x00100 -#define kNtTpmRecurse 0x00001 -#define kNtTpmHorposanimation 0x00400 -#define kNtTpmHorneganimation 0x00800 -#define kNtTpmVerposanimation 0x01000 -#define kNtTpmVerneganimation 0x02000 -#define kNtTpmNoanimation 0x04000 -#define kNtTpmLayoutrtl 0x08000 -#define kNtTpmWorkarea 0x10000 - - - -/*!BEGIN libc/nt/enum/valueinformationclass.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_VALUEINFORMATIONCLASS_H_ - -#define kNtKeyValueBasicInformation 0 -#define kNtKeyValueFullInformation 1 -#define kNtKeyValuePartialInformation 2 -#define kNtKeyValueFullInformationAlign64 3 -#define kNtKeyValuePartialInformationAlign64 4 - - - -/*!BEGIN libc/nt/enum/version.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_VERSION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * Known versions of the New Technology executive. - * @see NtGetVersion() - */ -#define kNtVersionWindows10 0x0a00 -#define kNtVersionWindows81 0x0603 -#define kNtVersionWindows8 0x0602 -#define kNtVersionWindows7 0x0601 -#define kNtVersionWindowsVista 0x0600 /* intended baseline */ -#define kNtVersionWindowsXp64 0x0502 /* end of the road */ -#define kNtVersionWindowsXp 0x0501 /* snowball's chance */ -#define kNtVersionWindows2000 0x0500 /* the golden age */ -#define kNtVersionFuture 0x0b00 - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/enum/vk.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_VK_H_ - -#define kNtVkLbutton 0x01 -#define kNtVkRbutton 0x02 -#define kNtVkCancel 0x03 -#define kNtVkMbutton 0x04 -#define kNtVkXbutton1 0x05 -#define kNtVkXbutton2 0x06 -#define kNtVkBack 0x08 -#define kNtVkTab 0x09 -#define kNtVkClear 0x0C -#define kNtVkReturn 0x0D -#define kNtVkShift 0x10 -#define kNtVkControl 0x11 -#define kNtVkMenu 0x12 /* alt? */ -#define kNtVkPause 0x13 -#define kNtVkCapital 0x14 -#define kNtVkKana 0x15 -#define kNtVkHangul 0x15 -#define kNtVkJunja 0x17 -#define kNtVkFinal 0x18 -#define kNtVkHanja 0x19 -#define kNtVkKanji 0x19 -#define kNtVkEscape 0x1B -#define kNtVkConvert 0x1C -#define kNtVkNonconvert 0x1D -#define kNtVkAccept 0x1E -#define kNtVkModechange 0x1F -#define kNtVkSpace 0x20 -#define kNtVkPrior 0x21 -#define kNtVkNext 0x22 -#define kNtVkEnd 0x23 -#define kNtVkHome 0x24 -#define kNtVkLeft 0x25 -#define kNtVkUp 0x26 -#define kNtVkRight 0x27 -#define kNtVkDown 0x28 -#define kNtVkSelect 0x29 -#define kNtVkPrint 0x2A -#define kNtVkExecute 0x2B -#define kNtVkSnapshot 0x2C -#define kNtVkInsert 0x2D -#define kNtVkDelete 0x2E -#define kNtVkHelp 0x2F -#define kNtVkLwin 0x5B -#define kNtVkRwin 0x5C -#define kNtVkApps 0x5D -#define kNtVkSleep 0x5F -#define kNtVkNumpad0 0x60 -#define kNtVkNumpad1 0x61 -#define kNtVkNumpad2 0x62 -#define kNtVkNumpad3 0x63 -#define kNtVkNumpad4 0x64 -#define kNtVkNumpad5 0x65 -#define kNtVkNumpad6 0x66 -#define kNtVkNumpad7 0x67 -#define kNtVkNumpad8 0x68 -#define kNtVkNumpad9 0x69 -#define kNtVkMultiply 0x6A -#define kNtVkAdd 0x6B -#define kNtVkSeparator 0x6C -#define kNtVkSubtract 0x6D -#define kNtVkDecimal 0x6E -#define kNtVkDivide 0x6F -#define kNtVkF1 0x70 -#define kNtVkF2 0x71 -#define kNtVkF3 0x72 -#define kNtVkF4 0x73 -#define kNtVkF5 0x74 -#define kNtVkF6 0x75 -#define kNtVkF7 0x76 -#define kNtVkF8 0x77 -#define kNtVkF9 0x78 -#define kNtVkF10 0x79 -#define kNtVkF11 0x7A -#define kNtVkF12 0x7B -#define kNtVkF13 0x7C -#define kNtVkF14 0x7D -#define kNtVkF15 0x7E -#define kNtVkF16 0x7F -#define kNtVkF17 0x80 -#define kNtVkF18 0x81 -#define kNtVkF19 0x82 -#define kNtVkF20 0x83 -#define kNtVkF21 0x84 -#define kNtVkF22 0x85 -#define kNtVkF23 0x86 -#define kNtVkF24 0x87 -#define kNtVkNumlock 0x90 -#define kNtVkScroll 0x91 -#define kNtVkLshift 0xA0 -#define kNtVkRshift 0xA1 -#define kNtVkLcontrol 0xA2 -#define kNtVkRcontrol 0xA3 -#define kNtVkLmenu 0xA4 -#define kNtVkRmenu 0xA5 -#define kNtVkBrowserBack 0xA6 -#define kNtVkBrowserForward 0xA7 -#define kNtVkBrowserRefresh 0xA8 -#define kNtVkBrowserStop 0xA9 -#define kNtVkBrowserSearch 0xAA -#define kNtVkBrowserFavorites 0xAB -#define kNtVkBrowserHome 0xAC -#define kNtVkVolumeMute 0xAD -#define kNtVkVolumeDown 0xAE -#define kNtVkVolumeUp 0xAF -#define kNtVkMediaNextTrack 0xB0 -#define kNtVkMediaPrevTrack 0xB1 -#define kNtVkMediaStop 0xB2 -#define kNtVkMediaPlayPause 0xB3 -#define kNtVkLaunchMail 0xB4 -#define kNtVkLaunchMediaSelect 0xB5 -#define kNtVkLaunchApp1 0xB6 -#define kNtVkLaunchApp2 0xB7 -#define kNtVkOem_1 0xBA -#define kNtVkOemPlus 0xBB -#define kNtVkOemComma 0xBC -#define kNtVkOemMinus 0xBD -#define kNtVkOemPeriod 0xBE -#define kNtVkOem_2 0xBF -#define kNtVkOem_3 0xC0 -#define kNtVkGamepadA 0xC3 -#define kNtVkGamepadB 0xC4 -#define kNtVkGamepadX 0xC5 -#define kNtVkGamepadY 0xC6 -#define kNtVkGamepadRightShoulder 0xC7 -#define kNtVkGamepadLeftShoulder 0xC8 -#define kNtVkGamepadLeftTrigger 0xC9 -#define kNtVkGamepadRightTrigger 0xCA -#define kNtVkGamepadDpadUp 0xCB -#define kNtVkGamepadDpadDown 0xCC -#define kNtVkGamepadDpadLeft 0xCD -#define kNtVkGamepadDpadRight 0xCE -#define kNtVkGamepadMenu 0xCF -#define kNtVkGamepadView 0xD0 -#define kNtVkGamepadLeftThumbstickButton 0xD1 -#define kNtVkGamepadRightThumbstickButton 0xD2 -#define kNtVkGamepadLeftThumbstickUp 0xD3 -#define kNtVkGamepadLeftThumbstickDown 0xD4 -#define kNtVkGamepadLeftThumbstickRight 0xD5 -#define kNtVkGamepadLeftThumbstickLeft 0xD6 -#define kNtVkGamepadRightThumbstickUp 0xD7 -#define kNtVkGamepadRightThumbstickDown 0xD8 -#define kNtVkGamepadRightThumbstickRight 0xD9 -#define kNtVkGamepadRightThumbstickLeft 0xDA -#define kNtVkOem_4 0xDB -#define kNtVkOem_5 0xDC -#define kNtVkOem_6 0xDD -#define kNtVkOem_7 0xDE -#define kNtVkOem_8 0xDF -#define kNtVkOemAx 0xE1 -#define kNtVkOem_102 0xE2 -#define kNtVkIcoHelp 0xE3 -#define kNtVkIco_00 0xE4 -#define kNtVkProcesskey 0xE5 -#define kNtVkIcoClear 0xE6 -#define kNtVkPacket 0xE7 -#define kNtVkOemReset 0xE9 -#define kNtVkOemJump 0xEA -#define kNtVkOemPa1 0xEB -#define kNtVkOemPa2 0xEC -#define kNtVkOemPa3 0xED -#define kNtVkOemWsctrl 0xEE -#define kNtVkOemCusel 0xEF -#define kNtVkOemAttn 0xF0 -#define kNtVkOemFinish 0xF1 -#define kNtVkOemCopy 0xF2 -#define kNtVkOemAuto 0xF3 -#define kNtVkOemEnlw 0xF4 -#define kNtVkOemBacktab 0xF5 -#define kNtVkAttn 0xF6 -#define kNtVkCrsel 0xF7 -#define kNtVkExsel 0xF8 -#define kNtVkEreof 0xF9 -#define kNtVkPlay 0xFA -#define kNtVkZoom 0xFB -#define kNtVkNoname 0xFC -#define kNtVkPa1 0xFD -#define kNtVkOemClear 0xFE - - - -/*!BEGIN libc/nt/enum/wa.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_WA_H_ - -#define kNtWaInactive 0 -#define kNtWaActive 1 -#define kNtWaClickactive 2 - - - -/*!BEGIN libc/nt/enum/wait.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_WAIT_H_ - -#define kNtWaitFailed 0xffffffffu -#define kNtWaitTimeout 0x00000102u - - - -/*!BEGIN libc/nt/enum/wm.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_WM_H_ - -#define kNtWmNull 0x0000 -#define kNtWmCreate 0x0001 -#define kNtWmDestroy 0x0002 -#define kNtWmMove 0x0003 -#define kNtWmSize 0x0005 -#define kNtWmActivate 0x0006 -#define kNtWmSetfocus 0x0007 -#define kNtWmKillfocus 0x0008 -#define kNtWmEnable 0x000A -#define kNtWmSetredraw 0x000B -#define kNtWmSettext 0x000C -#define kNtWmGettext 0x000D -#define kNtWmGettextlength 0x000E -#define kNtWmPaint 0x000F -#define kNtWmClose 0x0010 -#define kNtWmQueryendsession 0x0011 -#define kNtWmQueryopen 0x0013 -#define kNtWmEndsession 0x0016 -#define kNtWmQuit 0x0012 -#define kNtWmErasebkgnd 0x0014 -#define kNtWmSyscolorchange 0x0015 -#define kNtWmShowwindow 0x0018 -#define kNtWmWininichange 0x001A -#define kNtWmSettingchange kNtWmWininichange -#define kNtWmDevmodechange 0x001B -#define kNtWmActivateapp 0x001C -#define kNtWmFontchange 0x001D -#define kNtWmTimechange 0x001E -#define kNtWmCancelmode 0x001F -#define kNtWmSetcursor 0x0020 -#define kNtWmMouseactivate 0x0021 -#define kNtWmChildactivate 0x0022 -#define kNtWmQueuesync 0x0023 -#define kNtWmGetminmaxinfo 0x0024 -#define kNtWmPainticon 0x0026 -#define kNtWmIconerasebkgnd 0x0027 -#define kNtWmNextdlgctl 0x0028 -#define kNtWmSpoolerstatus 0x002A -#define kNtWmDrawitem 0x002B -#define kNtWmMeasureitem 0x002C -#define kNtWmDeleteitem 0x002D -#define kNtWmVkeytoitem 0x002E -#define kNtWmChartoitem 0x002F -#define kNtWmSetfont 0x0030 -#define kNtWmGetfont 0x0031 -#define kNtWmSethotkey 0x0032 -#define kNtWmGethotkey 0x0033 -#define kNtWmQuerydragicon 0x0037 -#define kNtWmCompareitem 0x0039 -#define kNtWmGetobject 0x003D -#define kNtWmCompacting 0x0041 -#define kNtWmWindowposchanging 0x0046 -#define kNtWmWindowposchanged 0x0047 -#define kNtWmPower 0x0048 -#define kNtWmCopydata 0x004A -#define kNtWmCanceljournal 0x004B -#define kNtWmNotify 0x004E -#define kNtWmInputlangchangerequest 0x0050 -#define kNtWmInputlangchange 0x0051 -#define kNtWmTcard 0x0052 -#define kNtWmHelp 0x0053 -#define kNtWmUserchanged 0x0054 -#define kNtWmNotifyformat 0x0055 -#define kNtWmContextmenu 0x007B -#define kNtWmStylechanging 0x007C -#define kNtWmStylechanged 0x007D -#define kNtWmDisplaychange 0x007E -#define kNtWmGeticon 0x007F -#define kNtWmSeticon 0x0080 -#define kNtWmNccreate 0x0081 -#define kNtWmNcdestroy 0x0082 -#define kNtWmNccalcsize 0x0083 -#define kNtWmNchittest 0x0084 -#define kNtWmNcpaint 0x0085 -#define kNtWmNcactivate 0x0086 -#define kNtWmGetdlgcode 0x0087 -#define kNtWmNcmousemove 0x00A0 -#define kNtWmNclbuttondown 0x00A1 -#define kNtWmNclbuttonup 0x00A2 -#define kNtWmNclbuttondblclk 0x00A3 -#define kNtWmNcrbuttondown 0x00A4 -#define kNtWmNcrbuttonup 0x00A5 -#define kNtWmNcrbuttondblclk 0x00A6 -#define kNtWmNcmbuttondown 0x00A7 -#define kNtWmNcmbuttonup 0x00A8 -#define kNtWmNcmbuttondblclk 0x00A9 -#define kNtWmNcxbuttondown 0x00AB -#define kNtWmNcxbuttonup 0x00AC -#define kNtWmNcxbuttondblclk 0x00AD -#define kNtWmKeyfirst 0x0100 -#define kNtWmKeydown 0x0100 -#define kNtWmKeyup 0x0101 -#define kNtWmChar 0x0102 -#define kNtWmDeadchar 0x0103 -#define kNtWmSyskeydown 0x0104 -#define kNtWmSyskeyup 0x0105 -#define kNtWmSyschar 0x0106 -#define kNtWmSysdeadchar 0x0107 -#define kNtWmUnichar 0x0109 -#define kNtWmKeylast 0x0109 -#define kNtWmInitdialog 0x0110 -#define kNtWmCommand 0x0111 -#define kNtWmSyscommand 0x0112 -#define kNtWmTimer 0x0113 -#define kNtWmHscroll 0x0114 -#define kNtWmVscroll 0x0115 -#define kNtWmInitmenu 0x0116 -#define kNtWmInitmenupopup 0x0117 -#define kNtWmGesture 0x0119 -#define kNtWmGesturenotify 0x011A -#define kNtWmMenuselect 0x011F -#define kNtWmMenuchar 0x0120 -#define kNtWmEnteridle 0x0121 -#define kNtWmMenurbuttonup 0x0122 -#define kNtWmMenudrag 0x0123 -#define kNtWmMenugetobject 0x0124 -#define kNtWmUninitmenupopup 0x0125 -#define kNtWmMenucommand 0x0126 -#define kNtWmChangeuistate 0x0127 -#define kNtWmUpdateuistate 0x0128 -#define kNtWmQueryuistate 0x0129 -#define kNtWmMousefirst 0x0200 -#define kNtWmMousemove 0x0200 -#define kNtWmLbuttondown 0x0201 -#define kNtWmLbuttonup 0x0202 -#define kNtWmLbuttondblclk 0x0203 -#define kNtWmRbuttondown 0x0204 -#define kNtWmRbuttonup 0x0205 -#define kNtWmRbuttondblclk 0x0206 -#define kNtWmMbuttondown 0x0207 -#define kNtWmMbuttonup 0x0208 -#define kNtWmMbuttondblclk 0x0209 -#define kNtWmMousewheel 0x020A -#define kNtWmXbuttondown 0x020B -#define kNtWmXbuttonup 0x020C -#define kNtWmXbuttondblclk 0x020D -#define kNtWmMousehwheel 0x020E -#define kNtWmMouselast 0x020E -#define kNtWmParentnotify 0x0210 -#define kNtWmEntermenuloop 0x0211 -#define kNtWmExitmenuloop 0x0212 -#define kNtWmNextmenu 0x0213 -#define kNtWmSizing 0x0214 -#define kNtWmCapturechanged 0x0215 -#define kNtWmMoving 0x0216 -#define kNtWmPowerbroadcast 0x0218 -#define kNtWmMdicreate 0x0220 -#define kNtWmMdidestroy 0x0221 -#define kNtWmMdiactivate 0x0222 -#define kNtWmMdirestore 0x0223 -#define kNtWmMdinext 0x0224 -#define kNtWmMdimaximize 0x0225 -#define kNtWmMditile 0x0226 -#define kNtWmMdicascade 0x0227 -#define kNtWmMdiiconarrange 0x0228 -#define kNtWmMdigetactive 0x0229 -#define kNtWmMdisetmenu 0x0230 -#define kNtWmEntersizemove 0x0231 -#define kNtWmExitsizemove 0x0232 -#define kNtWmDropfiles 0x0233 -#define kNtWmMdirefreshmenu 0x0234 -#define kNtWmCut 0x0300 -#define kNtWmCopy 0x0301 -#define kNtWmPaste 0x0302 -#define kNtWmClear 0x0303 -#define kNtWmUndo 0x0304 -#define kNtWmRenderformat 0x0305 -#define kNtWmRenderallformats 0x0306 -#define kNtWmDestroyclipboard 0x0307 -#define kNtWmDrawclipboard 0x0308 -#define kNtWmPaintclipboard 0x0309 -#define kNtWmVscrollclipboard 0x030A -#define kNtWmSizeclipboard 0x030B -#define kNtWmAskcbformatname 0x030C -#define kNtWmChangecbchain 0x030D -#define kNtWmHscrollclipboard 0x030E -#define kNtWmQuerynewpalette 0x030F -#define kNtWmPaletteischanging 0x0310 -#define kNtWmPalettechanged 0x0311 -#define kNtWmHotkey 0x0312 - - - -/*!BEGIN libc/nt/enum/ws.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_WS_H_ - -#define kNtWsOverlapped 0x00000000 -#define kNtWsPopup 0x80000000 -#define kNtWsChild 0x40000000 -#define kNtWsMinimize 0x20000000 -#define kNtWsVisible 0x10000000 -#define kNtWsDisabled 0x08000000 -#define kNtWsClipsiblings 0x04000000 -#define kNtWsClipchildren 0x02000000 -#define kNtWsMaximize 0x01000000 -#define kNtWsCaption 0x00C00000 -#define kNtWsBorder 0x00800000 -#define kNtWsDlgframe 0x00400000 -#define kNtWsVscroll 0x00200000 -#define kNtWsHscroll 0x00100000 -#define kNtWsSysmenu 0x00080000 -#define kNtWsThickframe 0x00040000 -#define kNtWsGroup 0x00020000 -#define kNtWsTabstop 0x00010000 -#define kNtWsMinimizebox 0x00020000 -#define kNtWsMaximizebox 0x00010000 -#define kNtWsTiled kNtWsOverlapped -#define kNtWsIconic kNtWsMinimize -#define kNtWsSizebox kNtWsThickframe -#define kNtWsTiledwindow kNtWsOverlappedwindow -#define kNtWsOverlappedwindow \ - (kNtWsOverlapped | kNtWsCaption | kNtWsSysmenu | kNtWsThickframe | \ - kNtWsMinimizebox | kNtWsMaximizebox) -#define kNtWsPopupwindow (kNtWsPopup | kNtWsBorder | kNtWsSysmenu) - -#define kNtWsExDlgmodalframe 0x00000001 -#define kNtWsExNoparentnotify 0x00000004 -#define kNtWsExTopmost 0x00000008 -#define kNtWsExAcceptfiles 0x00000010 -#define kNtWsExTransparent 0x00000020 -#define kNtWsExMdichild 0x00000040 -#define kNtWsExToolwindow 0x00000080 -#define kNtWsExWindowedge 0x00000100 -#define kNtWsExClientedge 0x00000200 -#define kNtWsExContexthelp 0x00000400 -#define kNtWsExRight 0x00001000 -#define kNtWsExLeft 0x00000000 -#define kNtWsExRtlreading 0x00002000 -#define kNtWsExLtrreading 0x00000000 -#define kNtWsExLeftscrollbar 0x00004000 -#define kNtWsExRightscrollbar 0x00000000 -#define kNtWsExControlparent 0x00010000 -#define kNtWsExStaticedge 0x00020000 -#define kNtWsExAppwindow 0x00040000 -#define kNtWsExNoinheritlayout 0x00100000 -#define kNtWsExNoredirectionbitmap 0x00200000 -#define kNtWsExLayoutrtl 0x00400000 -#define kNtWsExComposited 0x02000000 -#define kNtWsExNoactivate 0x08000000 - -#define kNtWsExOverlappedwindow (kNtWsExWindowedge | kNtWsExClientedge) -#define kNtWsExPalettewindow \ - (kNtWsExWindowedge | kNtWsExToolwindow | kNtWsExTopmost) - - - -/*!BEGIN libc/nt/enum/wt.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_WT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define kNtWtExecuteonlyonce 8 - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/afd.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_AFD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtAfdPollHandleInfo { - int64_t Handle; - uint32_t Events; - NtStatus Status; -}; - -struct NtAfdPollInfo { - int64_t Timeout; - uint32_t NumberOfHandles; - uint32_t Exclusive; - struct NtAfdPollHandleInfo Handles[1]; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/ansistring.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_ANSISTRING_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtAnsiString { - unsigned short Length; - unsigned short MaximumLength; - char *Buffer; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/byhandlefileinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_BYHANDLEFILEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtByHandleFileInformation { - uint32_t dwFileAttributes; /* ←NtFileFlagAndAttributes */ - struct NtFileTime ftCreationFileTime; - struct NtFileTime ftLastAccessFileTime; - struct NtFileTime ftLastWriteFileTime; - uint32_t dwVolumeSerialNumber; - uint32_t nFileSizeHigh; - uint32_t nFileSizeLow; - uint32_t nNumberOfLinks; - uint32_t nFileIndexHigh; - uint32_t nFileIndexLow; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/charinfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CHARINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtCharInfo { - union { - char16_t UnicodeChar; - char AsciiChar; - } Char; - uint16_t Attributes; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/clientid.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CLIENTID_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtClientId { - void *UniqueProcess; - void *UniqueThread; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/consolecursorinfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLECURSORINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtConsoleCursorInfo { - uint32_t dwSize; - bool32 bVisible; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/consolescreenbufferinfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLESCREENBUFFERINFO_H_ - - -/*!BEGIN libc/nt/struct/coord.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_COORD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtCoord { - int16_t X; - int16_t Y; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/smallrect.h */ - -#define COSMOPOLITAN_LIBC_NT_ENUM_SMALLRECT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSmallRect { - int16_t Left; - int16_t Top; - int16_t Right; - int16_t Bottom; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtConsoleScreenBufferInfo { - struct NtCoord dwSize; - struct NtCoord dwCursorPosition; - uint16_t wAttributes; - struct NtSmallRect srWindow; - struct NtCoord dwMaximumWindowSize; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/consolescreenbufferinfoex.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLESCREENBUFFERINFOEX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtConsoleScreenBufferInfoEx { - uint32_t cbSize; /* sizeof(struct NtConsoleScreenBufferInfoEx) */ - struct NtCoord dwSize; - struct NtCoord dwCursorPosition; - uint16_t wAttributes; /* kNt{Foreground,Background}... */ - struct NtSmallRect srWindow; - struct NtCoord dwMaximumWindowSize; - uint16_t wPopupAttributes; - bool32 bFullscreenSupported; - uint32_t ColorTable[16]; /* 0x00BBGGRR */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/consoleselectioninfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CONSOLESELECTIONINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtConsoleSelectionInfo { - uint32_t dwFlags; - struct NtCoord dwSelectionAnchor; - struct NtSmallRect srSelection; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/context.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CONTEXT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtM128A { - uint64_t Low; - int64_t High; -}; - -struct NtXmmSaveArea32 { /* basically same as struct FpuState */ - uint16_t ControlWord; - uint16_t StatusWord; - uint8_t TagWord; - uint8_t Reserved1; - uint16_t ErrorOpcode; - uint32_t ErrorOffset; - uint16_t ErrorSelector; - uint16_t Reserved2; - uint32_t DataOffset; - uint16_t DataSelector; - uint16_t Reserved3; - uint32_t MxCsr; - uint32_t MxCsr_Mask; - struct NtM128A FloatRegisters[8]; - struct NtM128A XmmRegisters[16]; - uint8_t Reserved4[96]; -}; - -struct NtContext { - uint64_t P1Home, P2Home, P3Home, P4Home, P5Home, P6Home; - uint32_t ContextFlags; - uint32_t MxCsr; - uint16_t SegCs, SegDs, SegEs, SegFs, SegGs, SegSs; - uint32_t EFlags; - uint64_t Dr0, Dr1, Dr2, Dr3, Dr6, Dr7; - uint64_t Rax, Rcx, Rdx, Rbx, Rsp, Rbp, Rsi, Rdi; - uint64_t R8, R9, R10, R11, R12, R13, R14, R15; - uint64_t Rip; - union { - struct NtXmmSaveArea32 FltSave; - struct NtXmmSaveArea32 FloatSave; - struct { - struct NtM128A Header[2]; - struct NtM128A Legacy[8]; - struct NtM128A Xmm0, Xmm1, Xmm2, Xmm3, Xmm4, Xmm5, Xmm6, Xmm7; - struct NtM128A Xmm8, Xmm9, Xmm10, Xmm11, Xmm12, Xmm13, Xmm14, Xmm15; - }; - }; - struct NtM128A VectorRegister[26]; - uint64_t VectorControl; - uint64_t DebugControl; - uint64_t LastBranchToRip; - uint64_t LastBranchFromRip; - uint64_t LastExceptionToRip; - uint64_t LastExceptionFromRip; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/criticalsection.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CRITICALSECTION_H_ - - -/*!BEGIN libc/nt/struct/criticalsectiondebug.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_CRITICALSECTIONDEBUG_H_ - - -/*!BEGIN libc/nt/struct/linkedlist.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_LINKEDLIST_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * Dynamic linked list overlay. - */ -struct NtLinkedList { - struct NtLinkedList *Next; - struct NtLinkedList *Prev; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtCriticalSectionDebug { - uint16_t Type; - uint16_t CreatorBackTraceIndex; - struct NtCriticalSection *CriticalSection; - struct NtLinkedList ProcessLocksList; - uint32_t EntryCount; - uint32_t ContentionCount; - uint32_t Spare[2]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtCriticalSection { - struct NtCriticalSectionDebug *DebugInfo; - int32_t LockCount; - int32_t RecursionCount; - void *OwningThread; - void *LockSemaphore; - uintptr_t SpinCount; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/drawtextparams.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_DRAWTEXTPARAMS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtDrawTextParams { - uint32_t cbSize; - int32_t iTabLength; - int32_t iLeftMargin; - int32_t iRightMargin; - uint32_t uiLengthDrawn; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/editmenu.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_EDITMENU_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtEditMenu { - int64_t hmenu; - uint16_t idEdit; - uint16_t idCut; - uint16_t idCopy; - uint16_t idPaste; - uint16_t idClear; - uint16_t idUndo; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/exceptionframe.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_EXCEPTIONFRAME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtExceptionFrame { - struct NtExceptionFrame *Prev; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fileaccessinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEACCESSINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileAccessInformation { - uint32_t AccessFlags; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filealignmentinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEALIGNMENTINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileAlignmentInformation { - uint32_t AlignmentRequirement; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fileallinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEALLINFORMATION_H_ - - -/*!BEGIN libc/nt/struct/filebasicinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEBASICINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileBasicInformation { - int64_t CreationTime; /* in 100ns units */ - int64_t LastAccessTime; /* in 100ns units */ - int64_t LastWriteTime; /* in 100ns units */ - int64_t ChangeTime; /* in 100ns units */ - uint32_t FileAttributes; /* kNtFileAttributeXXX */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fileeainformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEEAINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileEaInformation { - uint32_t EaSize; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fileinternalinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEINTERNALINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileInternalInformation { - int64_t IndexNumber; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filemodeinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEMODEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileModeInformation { - uint32_t Mode; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filenameinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILENAMEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileNameInformation { - uint32_t FileNameLength; - char16_t FileName[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filepositioninformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEPOSITIONINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFilePositionInformation { - int64_t CurrentByteOffset; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filestandardinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILESTANDARDINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileStandardInformation { - int64_t AllocationSize; - int64_t EndOfFile; - uint32_t NumberOfLinks; - bool32 DeletePending; - bool32 Directory; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileAllInformation { - struct NtFileBasicInformation BasicInformation; - struct NtFileStandardInformation StandardInformation; - struct NtFileInternalInformation InternalInformation; - struct NtFileEaInformation EaInformation; - struct NtFileAccessInformation AccessInformation; - struct NtFilePositionInformation PositionInformation; - struct NtFileModeInformation ModeInformation; - struct NtFileAlignmentInformation AlignmentInformation; - struct NtFileNameInformation NameInformation; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fileallocationinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEALLOCATIONINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileAllocationInformation { - int64_t AllocationSize; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fileattributetaginformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEATTRIBUTETAGINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileAttributeTagInformation { - uint32_t FileAttributes; - uint32_t ReparseTag; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filebasicinfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEBASICINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileBasicInfo { - int64_t CreationTime; /* in 100ns units */ - int64_t LastAccessTime; /* in 100ns units */ - int64_t LastWriteTime; /* in 100ns units */ - int64_t ChangeTime; /* in 100ns units */ - uint32_t FileAttributes; /* kNtFileAttributeXXX */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filebothdirectoryinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEBOTHDIRECTORYINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtFileBothDirectoryInformation { - uint32_t NextEntryOffset; - uint32_t FileIndex; - int64_t CreationTime; - int64_t LastAccessTime; - int64_t LastWriteTime; - int64_t ChangeTime; - int64_t EndOfFile; - int64_t AllocationSize; - uint32_t FileAttributes; - uint32_t FileNameLength; - uint32_t EaSize; - unsigned char ShortNameLength; - char16_t ShortName[12]; - char16_t FileName[1]; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filecompressioninfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILECOMPRESSIONINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileCompressionInfo { - int64_t CompressedFileSize; - uint16_t CompressionFormat; - uint8_t CompressionUnitShift; - uint8_t ChunkShift; - uint8_t ClusterShift; - uint8_t Reserved[3]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filedirectoryinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEDIRECTORYINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileDirectoryInformation { - uint32_t NextEntryOffset; - uint32_t FileIndex; - int64_t CreationTime; - int64_t LastAccessTime; - int64_t LastWriteTime; - int64_t ChangeTime; - int64_t EndOfFile; - int64_t AllocationSize; - uint32_t FileAttributes; - uint32_t FileNameLength; - char16_t FileName[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filedispositioninformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEDISPOSITIONINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileDispositionInformation { - bool32 DoDeleteFile; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fileendoffileinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEENDOFFILEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct FileEndOfFileInformation { - int64_t EndOfFile; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filefulldirectoryinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEFULLDIRECTORYINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileFullDirectoryInformation { - uint32_t NextEntryOffset; - uint32_t FileIndex; - int64_t CreationTime; - int64_t LastAccessTime; - int64_t LastWriteTime; - int64_t ChangeTime; - int64_t EndOfFile; - int64_t AllocationSize; - uint32_t FileAttributes; - uint32_t FileNameLength; - uint32_t EaSize; - char16_t FileName[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filefulleainformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEFULLEAINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileFullEaInformation { - uint32_t NextEntryOffset; - uint8_t Flags; - uint8_t EaNameLength; - uint16_t EaValueLength; - char EaName[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filemailslotqueryinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEMAILSLOTQUERYINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileMailslotQueryInformation { - uint32_t MaximumMessageSize; - uint32_t MailslotQuota; - uint32_t NextMessageSize; - uint32_t MessagesAvailable; - int64_t ReadTimeout; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filemailslotsetinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEMAILSLOTSETINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileMailslotSetInformation { - int64_t ReadTimeout; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filenamesinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILENAMESINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileNamesInformation { - uint32_t NextEntryOffset; - uint32_t FileIndex; - uint32_t FileNameLength; - char16_t FileName[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filenetworkopeninformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILENETWORKOPENINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileNetworkOpenInformation { - int64_t CreationTime; - int64_t LastAccessTime; - int64_t LastWriteTime; - int64_t ChangeTime; - int64_t AllocationSize; - int64_t EndOfFile; - uint32_t FileAttributes; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filepipelocalinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEPIPELOCALINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFilePipeLocalInformation { - uint32_t NamedPipeType; - uint32_t NamedPipeConfiguration; - uint32_t MaximumInstances; - uint32_t CurrentInstances; - uint32_t InboundQuota; - uint32_t ReadDataAvailable; - uint32_t OutboundQuota; - uint32_t WriteQuotaAvailable; - uint32_t NamedPipeState; - uint32_t NamedPipeEnd; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filerenameinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILERENAMEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileRenameInformation { - bool32 Replace; - void *RootDir; - uint32_t FileNameLength; - char16_t FileName[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filesegmentelement.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILESEGMENTELEMENT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -union NtFileSegmentElement { - void *Buffer; - uint64_t Alignment; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filestreaminformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILESTREAMINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileStreamInformation { - uint32_t NextEntryOffset; - uint32_t StreamNameLength; - int64_t StreamSize; - int64_t StreamAllocationSize; - char16_t StreamName[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/filezerodatainformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FILEZERODATAINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFileZeroDataInformation { - uint64_t FileOffset; - uint64_t BeyondFinalZero; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/fpodata.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_FPODATA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtFpoData { - /* TODO(jart): No bitfields. */ - uint32_t ulOffStart; - uint32_t cbProcSize; - uint32_t cdwLocals; - uint16_t cdwParams; - uint16_t cbProlog : 8; - uint16_t cbRegs : 3; - uint16_t fHasSEH : 1; - uint16_t fUseBP : 1; - uint16_t reserved : 1; - uint16_t cbFrame : 2; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/genericmapping.h */ - -#define COSMOPOLITAN_LIBC_NT_GENERICMAPPING_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtGenericMapping { - unsigned int GenericRead; - unsigned int GenericWrite; - unsigned int GenericExecute; - unsigned int GenericAll; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/guid.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_GUID_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtGuid { - uint32_t Data1; - uint16_t Data2; - uint16_t Data3; - uint8_t Data4[8]; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/inputrecord.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_INPUTRECORD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtKeyEventRecord { - bool32 bKeyDown; - uint16_t wRepeatCount; - uint16_t wVirtualKeyCode; - uint16_t wVirtualScanCode; - union { - int16_t UnicodeChar; - char AsciiChar; - } uChar; - unsigned int dwControlKeyState; -}; - -struct NtMouseEventRecord { - struct NtCoord dwMousePosition; - uint32_t dwButtonState; - uint32_t dwControlKeyState; - uint32_t dwEventFlags; -}; - -struct NtWindowBufferSizeRecord { - struct NtCoord dwSize; -}; - -struct NtMenuEventRecord { - uint32_t dwCommandId; -}; - -struct NtFocusEventRecord { - bool32 bSetFocus; -}; - -struct NtInputRecord { - uint16_t EventType; - union { - struct NtKeyEventRecord KeyEvent; - struct NtMouseEventRecord MouseEvent; - struct NtWindowBufferSizeRecord WindowBufferSizeEvent; - struct NtMenuEventRecord MenuEvent; - struct NtFocusEventRecord FocusEvent; - } Event; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/iocounters.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_IOCOUNTERS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtIoCounters { - uint64_t ReadOperationCount; - uint64_t WriteOperationCount; - uint64_t OtherOperationCount; - uint64_t ReadTransferCount; - uint64_t WriteTransferCount; - uint64_t OtherTransferCount; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/iostatusblock.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_IOSTATUSBLOCK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtIoStatusBlock { - union { - NtStatus Status; - void *Pointer; /* reserved for internal use */ - }; - uint32_t *Information; /* request dependent */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/kernelusertimes.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_KERNELUSERTIMES_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtKernelUserTimes { - uint64_t CreateFileTime; - uint64_t ExitFileTime; - int64_t KernelTime; - int64_t UserTime; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/ldr.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_LDR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtLdr { - uint32_t SizeOfThis; /* msdn:reserved */ - uint32_t IsInitialized; /* msdn:reserved */ - void *SsHandle; /* msdn:reserved */ - struct NtLinkedList InLoadOrderModuleList; /* msdn:reserved */ - struct NtLinkedList /*∩NtLdrDataTableEntry*/ InMemoryOrderModuleList; - struct NtLinkedList InInitOrderModuleList; /* msdn:reserved */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/ldrdatatableentry.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_LDRDATATABLEENTRY_H_ - - -/*!BEGIN libc/nt/struct/unicodestring.h */ - -#define COSMOPOLITAN_LIBC_NT_UNICODE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtUnicodeString { - uint16_t Length; - uint16_t MaxLength; - char16_t *Data; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtLdrDataTableEntry { - struct NtLinkedList InLoadOrderLinks; /* msdn:reserved */ - struct NtLinkedList InMemoryOrderLinks; - struct NtLinkedList InInitOrderLinks; /* msdn:reserved */ - void *DllBase; - void *EntryPoint; - union { - uint32_t SizeOfImage; - unsigned char SizeOfImagePadding[__SIZEOF_POINTER__]; - }; - struct NtUnicodeString FullDllName; - struct NtUnicodeString BaseDllName; - uint32_t Flags; - uint16_t Load_Count; - uint16_t TlsIndex; - union { - struct NtLinkedList HashLinks; - struct { - void *SectionPointer; - uint32_t CheckSum; - }; - }; - union { - void *LoadedImports; - uint32_t TimeDateStamp; - }; - void *EntryPointActivationContext; - void *PatchInformation; - struct NtLinkedList ForwarderLinks; - struct NtLinkedList ServiceTagLinks; - struct NtLinkedList StaticLinks; - void *ContextInformation; - uintptr_t OriginalBase; - int64_t LoadTime; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/luid.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_LUID_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtLuid { - uint32_t LowPart; - int32_t HighPart; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/luidandattributes.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_LUIDANDATTRIBUTES_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtLuidAndAttributes { - struct NtLuid Luid; - uint32_t Attributes; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/memorybasicinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_MEMORYBASICINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtMemoryBasicInformation { - void *BaseAddress; - void *AllocationBase; - uint32_t AllocationProtect; - uint64_t RegionSize; - uint32_t State; - uint32_t Protect; - uint32_t Type; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/memoryrangeentry.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_MEMORYRANGEENTRY_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtMemoryRangeEntry { - void *VirtualAddress; - size_t NumberOfBytes; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/memorystatusex.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_MEMORYSTATUSEX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtMemoryStatusEx { - uint32_t dwLength; - uint32_t dwMemoryLoad; - uint64_t ullTotalPhys; - uint64_t ullAvailPhys; - uint64_t ullTotalPageFile; - uint64_t ullAvailPageFile; - uint64_t ullTotalVirtual; - uint64_t ullAvailVirtual; - uint64_t ullAvailExtendedVirtual; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/msg.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_MSG_H_ - - -/*!BEGIN libc/nt/struct/point.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_POINT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtPoint { - int32_t x; - int32_t y; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtMsg { - int64_t hwnd; - uint32_t message; - uint64_t wParam; - int64_t lParam; - uint32_t time; - struct NtPoint pt; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/nonpageddebuginfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_NONPAGEDDEBUGINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtNonPagedDebugInfo { - uint16_t Signature; - uint16_t Flags; - uint32_t Size; - uint16_t Machine; - uint16_t Characteristics; - uint32_t TimeDateStamp; - uint32_t CheckSum; - uint32_t SizeOfImage; - uint64_t ImageBase; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/ntexceptionpointers.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_NTEXCEPTIONPOINTERS_H_ - - -/*!BEGIN libc/nt/struct/ntexceptionrecord.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_NTEXCEPTIONRECORD_H_ - -#define kNtExceptionMaximumParameters 15 -#define kNtExceptionNoncontinuable 1 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtExceptionRecord { - uint32_t ExceptionCode; /* kNtException... */ - uint32_t ExceptionFlags; /* kNtExceptionNoncontinuable */ - struct NtExceptionRecord *ExceptionRecord; /* nested exceptions */ - void *ExceptionAddress; /* %rip */ - uint32_t NumberParameters; /* #ExceptionInformation */ - uint32_t *ExceptionInformation[kNtExceptionMaximumParameters]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtExceptionPointers { - struct NtExceptionRecord *ExceptionRecord; - struct NtContext *ContextRecord; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/objectallinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTALLINFORMATION_H_ - - -/*!BEGIN libc/nt/struct/objecttypeinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTTYPEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtObjectTypeInformation { - struct NtUnicodeString TypeName; - uint32_t TotalNumberOfObjects; - uint32_t TotalNumberOfHandles; - uint32_t TotalPagedPoolUsage; - uint32_t TotalNonPagedPoolUsage; - uint32_t TotalNamePoolUsage; - uint32_t TotalHandleTableUsage; - uint32_t HighWaterNumberOfObjects; - uint32_t HighWaterNumberOfHandles; - uint32_t HighWaterPagedPoolUsage; - uint32_t HighWaterNonPagedPoolUsage; - uint32_t HighWaterNamePoolUsage; - uint32_t HighWaterHandleTableUsage; - uint32_t InvalidAttributes; - struct NtGenericMapping GenericMapping; - uint32_t ValidAccessMask; - bool32 SecurityRequired; - bool32 MaintainHandleCount; - uint32_t PoolType; - uint32_t DefaultPagedPoolCharge; - uint32_t DefaultNonPagedPoolCharge; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtObjectAllInformation { - uint32_t NumberOfObjects; - struct NtObjectTypeInformation ObjectTypeInformation[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/objectattributes.h */ - -#define COSMOPOLITAN_LIBC_NT_I_OBJECTATTRIBUTES_H_ - - -/*!BEGIN libc/nt/struct/rtluserprocessparameters.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_RTLUSERPROCESSPARAMETERS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtRtlUserProcessParameters { - uint32_t MaximumLength; - uint32_t Length; - uint32_t Flags; - uint32_t DebugFlags; - int64_t ConsoleHandle; - uint32_t ConsoleFlags; - int64_t StdInputHandle; - int64_t StdOutputHandle; - int64_t StdErrorHandle; - struct NtUnicodeString *CurrentDirectoryPath; - int64_t CurrentDirectoryHandle; - struct NtUnicodeString *DllPath; - struct NtUnicodeString *ImagePathName; - struct NtUnicodeString *CommandLine; - void *Environment; - uint32_t StartingPositionLeft; - uint32_t StartingPositionTop; - uint32_t Width; - uint32_t Height; - uint32_t CharWidth; - uint32_t CharHeight; - uint32_t ConsoleTextAttributes; - uint32_t WindowFlags; - uint32_t ShowWindowFlags; - struct NtUnicodeString *WindowTitle; - struct NtUnicodeString *DesktopName; - struct NtUnicodeString *ShellInfo; - struct NtUnicodeString *RuntimeData; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtObjectAttributes { - uint32_t Length; - int64_t RootDirectory; - struct NtUnicodeString *ObjectName; - uint32_t Attributes; /* OBJ_INHERIT, etc. */ - struct NtSecurityDescriptor *SecurityDescriptor; - void *SecurityQualityOfService; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/objectbasicinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTBASICINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtObjectBasicInformation { - uint32_t Attributes; - uint32_t GrantedAccess; - uint32_t HandleCount; - uint32_t PointerCount; - uint32_t PagedPoolUsage; - uint32_t NonPagedPoolUsage; - uint32_t Reserved[3]; - uint32_t NameInformationLength; - uint32_t TypeInformationLength; - uint32_t SecurityDescriptorLength; - int64_t CreateTime; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/objectnameinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_OBJECTNAMEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtObjectNameInformation { - struct NtUnicodeString Name; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/openfilename.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_OPENFILENAME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtOpenFilename { - uint32_t lStructSize; - int64_t hwndOwner; - int64_t hInstance; - const char16_t *lpstrFilter; - char16_t *lpstrCustomFilter; - uint32_t nMaxCustFilter; - uint32_t nFilterIndex; - char16_t *lpstrFile; - uint32_t nMaxFile; - char16_t *lpstrFileTitle; - uint32_t nMaxFileTitle; - const char16_t *lpstrInitialDir; - const char16_t *lpstrTitle; - uint32_t Flags; - uint16_t nFileOffset; - uint16_t nFileExtension; - const char16_t *lpstrDefExt; - intptr_t lCustData; - uint64_t (*lpfnHook)(int64_t, uint32_t, uint64_t, int64_t); - const char16_t *lpTemplateName; - void *pvReserved; - uint32_t dwReserved; - uint32_t FlagsEx; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/overlapped.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_OVERLAPPED_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtOverlapped { - uintptr_t Internal; - uintptr_t InternalHigh; - union { - struct { - uint32_t Offset; - uint32_t OffsetHigh; - }; - void *Pointer; - }; - int64_t hEvent; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/overlappedentry.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_OVERLAPPEDENTRY_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtOverlappedEntry { - uint32_t *lpCompletionKey; - struct NtOverlapped *lpOverlapped; - uint32_t *Internal; - uint32_t dwNumberOfBytesTransferred; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/paintstruct.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_PAINTSTRUCT_H_ - - -/*!BEGIN libc/nt/struct/rect.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_RECT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtRect { - int32_t left; - int32_t top; - int32_t right; - int32_t bottom; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtPaintStruct { - int64_t hdc; - bool32 fErase; - struct NtRect rcPaint; - bool32 fRestore; - bool32 fIncUpdate; - uint8_t rgbReserved[32]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/peb.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_PEB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtPeb { - union { - struct { - unsigned char InheritedAddressSpace; - unsigned char ReadImageFileExecOptions; - unsigned char BeingDebugged; - unsigned char __wut1; - }; - uint64_t __wut2; - }; - uint64_t Mutant; - uint64_t ImageBaseAddress; - struct NtLdr *Ldr; - uint64_t ProcessParameters; - uint64_t SubSystemData; - uint64_t ProcessHeap; - uint64_t FastPebLock; - uint64_t __wut3; - uint64_t __wut4; - uint64_t __wut5; - union { - uint64_t KernelCallbackTable; - uint64_t UserSharedInfoPtr; - }; - uint32_t SystemReserved; - uint32_t __wut6; - uint64_t __wut7; - uint64_t TlsExpansionCounter; - uint64_t TlsBitmap; - uint32_t TlsBitmapBits[2]; - uint64_t ReadOnlySharedMemoryBase; - uint64_t __wut8; - uint64_t ReadOnlyStaticServerData; - uint64_t AnsiCodePageData; - uint64_t OemCodePageData; - uint64_t UnicodeCaseTableData; - uint32_t NumberOfProcessors; -#ifdef __x86_64__ - uint32_t NtGlobalFlag; -#else - uint64_t NtGlobalFlag; -#endif - int64_t CriticalSectionTimeout; - uint64_t HeapSegmentReserve; - uint64_t HeapSegmentCommit; - uint64_t HeapDeCommitTotalFreeThreshold; - uint64_t HeapDeCommitFreeBlockThreshold; - uint32_t NumberOfHeaps; - uint32_t MaximumNumberOfHeaps; - uint64_t ProcessHeaps; - uint64_t GdiSharedHandleTable; - uint64_t ProcessStarterHelper; - uint64_t GdiDCAttributeList; - uint64_t LoaderLock; - union { - struct { - uint32_t OSMajorVersion; - uint32_t OSMinorVersion; - }; - uint64_t OSVersion; - }; - uint16_t OSBuildNumber; - uint16_t OSCSDVersion; - uint32_t OSPlatformId; - uint32_t ImageSubsystem; - uint32_t ImageSubsystemMajorVersion; - uint64_t ImageSubsystemMinorVersion; - union { - uint64_t ImageProcessAffinityMask; - uint64_t ActiveProcessAffinityMask; - }; - uint64_t GdiHandleBuffer[38 - __SIZEOF_POINTER__]; - uint64_t PostProcessInitRoutine; - uint64_t TlsExpansionBitmap; - uint32_t TlsExpansionBitmapBits[32]; - uint64_t SessionId; - uint64_t AppCompatFlags; - uint64_t AppCompatFlagsUser; - uint64_t pShimData; - uint64_t AppCompatInfo; - struct NtUnicodeString CSDVersion; - uint64_t ActivationContextData; - uint64_t ProcessAssemblyStorageMap; - uint64_t SystemDefaultActivationContextData; - uint64_t SystemAssemblyStorageMap; - uint64_t MinimumStackCommit; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/pollfd.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_POLLFD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct sys_pollfd_nt { - int64_t handle; - int16_t events; - int16_t revents; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/privilegeset.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_PRIVILEGESET_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtPrivilegeSet { - uint32_t PrivilegeCount; - uint32_t Control; - struct NtLuidAndAttributes Privilege[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/processbasicinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_PROCESSBASICINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtProcessBasicInformation { - int32_t ExitStatus; - struct NtPeb *PebBaseAddress; - uint32_t *AffinityMask; - int32_t BasePriority; - int64_t UniqueProcessId; - int64_t InheritedFromUniqueProcessId; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/procthreadattributelist.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_PROCTHREADATTRIBUTELIST_H_ - -struct NtProcThreadAttributeList; - - - -/*!BEGIN libc/nt/struct/rtluserprocessinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_RTLUSERPROCESSINFORMATION_H_ - - -/*!BEGIN libc/nt/struct/sectionimageinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SECTIONIMAGEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSectionImageInformation { - void *EntryPoint; - uint32_t Unknown1; - uint32_t StackReserve; - uint32_t StackCommit; - uint32_t Subsystem; - uint16_t MinorSubsystemVersion; - uint16_t MajorSubsystemVersion; - uint32_t Unknown2; - uint32_t Characteristics; - uint16_t ImageNumber; - uint32_t IsExecutable; - uint8_t __wut1; - uint32_t __wut2[3]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtRtlUserProcessInformation { - uint32_t SizeOfThis; - int64_t ProcessHandle; - int64_t ThreadHandle; - struct NtClientId ClientId; - struct NtSectionImageInformation ImageInformation; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/size.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SIZE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtSize { - int32_t cx; - int32_t cy; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/startupinfoex.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_STARTUPINFOEX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtStartupInfoEx { - struct NtStartupInfo StartupInfo; - struct NtProcThreadAttributeList *lpAttributeList; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systembasicinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMBASICINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemBasicInformation { - unsigned char Reserved1[4]; - uint32_t MaximumIncrement; - uint32_t PhysicalPageSize; - uint32_t NumberOfPhysicalPages; - uint32_t LowestPhysicalPage; - uint32_t HighestPhysicalPage; - uint32_t AllocationGranularity; - uint32_t LowestUserAddress; - uint32_t HighestUserAddress; - uint32_t ActiveProcessors; - char NumberOfProcessors; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemexceptioninformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMEXCEPTIONINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemExceptionInformation { - unsigned char Reserved1[16]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemhandleentry.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMHANDLEENTRY_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemHandleEntry { - uint32_t OwnerPid; - unsigned char ObjectType; - unsigned char HandleFlags; - unsigned short HandleValue; - void *ObjectPointer; - uint32_t AccessMask; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemhandleinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMHANDLEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemHandleInformation { - uint32_t Count; - struct NtSystemHandleEntry Handle[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systeminfo.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemInfo { - union { - uint32_t dwOemId; - struct { - uint16_t wProcessorArchitecture; - uint16_t wReserved; - }; - }; - uint32_t dwPageSize; - void *lpMinimumApplicationAddress; - void *lpMaximumApplicationAddress; - uintptr_t dwActiveProcessorMask; - uint32_t dwNumberOfProcessors; - uint32_t dwProcessorType; - uint32_t dwAllocationGranularity; - uint16_t wProcessorLevel; - uint16_t wProcessorRevision; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systeminterruptinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMINTERRUPTINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemInterruptInformation { - unsigned char Reserved1[24]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemlookasideinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMLOOKASIDEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemLookasideInformation { - unsigned char Reserved1[32]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemperformanceinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPERFORMANCEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemPerformanceInformation { - int64_t IdleTime; - int64_t ReadTransferCount; - int64_t WriteTransferCount; - int64_t OtherTransferCount; - uint32_t ReadOperationCount; - uint32_t WriteOperationCount; - uint32_t OtherOperationCount; - uint32_t AvailablePages; - uint32_t TotalCommittedPages; - uint32_t TotalCommitLimit; - uint32_t PeakCommitment; - uint32_t PageFaults; - uint32_t WriteCopyFaults; - uint32_t TransitionFaults; - uint32_t CacheTransitionFaults; - uint32_t DemandZeroFaults; - uint32_t PagesRead; - uint32_t PageReadIos; - uint32_t CacheReads; - uint32_t CacheIos; - uint32_t PagefilePagesWritten; - uint32_t PagefilePageWriteIos; - uint32_t MappedFilePagesWritten; - uint32_t MappedFilePageWriteIos; - uint32_t PagedPoolUsage; - uint32_t NonPagedPoolUsage; - uint32_t PagedPoolAllocs; - uint32_t PagedPoolFrees; - uint32_t NonPagedPoolAllocs; - uint32_t NonPagedPoolFrees; - uint32_t TotalFreeSystemPtes; - uint32_t SystemCodePage; - uint32_t TotalSystemDriverPages; - uint32_t TotalSystemCodePages; - uint32_t SmallNonPagedLookasideListAllocateHits; - uint32_t SmallPagedLookasideListAllocateHits; - uint32_t Reserved3; - uint32_t MmSystemCachePage; - uint32_t PagedPoolPage; - uint32_t SystemDriverPage; - uint32_t FastReadNoWait; - uint32_t FastReadWait; - uint32_t FastReadResourceMiss; - uint32_t FastReadNotPossible; - uint32_t FastMdlReadNoWait; - uint32_t FastMdlReadWait; - uint32_t FastMdlReadResourceMiss; - uint32_t FastMdlReadNotPossible; - uint32_t MapDataNoWait; - uint32_t MapDataWait; - uint32_t MapDataNoWaitMiss; - uint32_t MapDataWaitMiss; - uint32_t PinMappedDataCount; - uint32_t PinReadNoWait; - uint32_t PinReadWait; - uint32_t PinReadNoWaitMiss; - uint32_t PinReadWaitMiss; - uint32_t CopyReadNoWait; - uint32_t CopyReadWait; - uint32_t CopyReadNoWaitMiss; - uint32_t CopyReadWaitMiss; - uint32_t MdlReadNoWait; - uint32_t MdlReadWait; - uint32_t MdlReadNoWaitMiss; - uint32_t MdlReadWaitMiss; - uint32_t ReadAheadIos; - uint32_t LazyWriteIos; - uint32_t LazyWritePages; - uint32_t DataFlushes; - uint32_t DataPages; - uint32_t ContextSwitches; - uint32_t FirstLevelTbFills; - uint32_t SecondLevelTbFills; - uint32_t SystemCalls; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemprocessinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPROCESSINFORMATION_H_ - - -/*!BEGIN libc/nt/struct/vmcounters.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_VMCOUNTERS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtVmCounters { - size_t PeakVirtualSize; - size_t VirtualSize; - uint32_t PageFaultCount; - size_t PeakWorkingSetSize; - size_t WorkingSetSize; - size_t QuotaPeakPagedPoolUsage; - size_t QuotaPagedPoolUsage; - size_t QuotaPeakNonPagedPoolUsage; - size_t QuotaNonPagedPoolUsage; - size_t PagefileUsage; - size_t PeakPagefileUsage; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemProcessInformation { - uint32_t NextEntryOffset; - uint32_t NumberOfThreads; - int64_t Reserved[3]; - int64_t CreateTime; - int64_t UserTime; - int64_t KernelTime; - struct NtUnicodeString ImageName; - int32_t BasePriority; - int64_t UniqueProcessId; - int64_t InheritedFromUniqueProcessId; - uint32_t HandleCount; - uint32_t SessionId; - uint32_t PageDirectoryBase; - struct NtVmCounters VirtualMemoryCounters; - size_t PrivatePageCount; - struct NtIoCounters IoCounters; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemprocessorinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPROCESSORINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemProcessorInformation { - unsigned short ProcessorArchitecture; - unsigned short ProcessorLevel; - unsigned short ProcessorRevision; - unsigned short Unknown; - uint32_t FeatureBits; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemprocessorperformanceinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMPROCESSORPERFORMANCEINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemProcessorPerformanceInformation { - int64_t IdleTime; - int64_t KernelTime; - int64_t UserTime; - int64_t Reserved1[2]; - uint32_t Reserved2; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemregistryquotainformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMREGISTRYQUOTAINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemRegistryQuotaInformation { - uint32_t RegistryQuotaAllowed; - uint32_t RegistryQuotaUsed; - void *Reserved1; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemthreads.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMTHREADS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemThreads { - int64_t KernelTime; - int64_t UserTime; - int64_t CreateTime; - uint32_t WaitTime; - void *StartAddress; - struct NtClientId ClientId; - int32_t Priority; - int32_t BasePriority; - uint32_t ContextSwitchCount; - int State; - uint32_t WaitReason; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemtime.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMTIME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemTime { - uint16_t wYear; - uint16_t wMonth; - uint16_t wDayOfWeek; - uint16_t wDay; - uint16_t wHour; - uint16_t wMinute; - uint16_t wSecond; - uint16_t wMilliseconds; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/systemtimeofdayinformation.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_SYSTEMTIMEOFDAYINFORMATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtSystemTimeofdayInformation { - int64_t BootTime; - int64_t CurrentTime; - int64_t TimeZoneBias; - uint32_t CurrentTimeZoneId; - unsigned char Reserved1[20]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/teb.h */ - -#define COSMOPOLITAN_LIBC_NT_TEB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - -/* - * These macros address directly into NT's TEB a.k.a. TIB - * Any function that does this needs the `noasan` keyword - */ -#define NtGetPeb() gs((struct NtPeb **)(0x60ULL)) -#define NtGetTeb() gs((void **)(0x30)) /* %gs:0 linear address */ -#define NtGetPid() gs((uint32_t *)(0x40)) /* GetCurrentProcessId() */ -#define NtGetTid() gs((uint32_t *)(0x48)) /* GetCurrentThreadId() */ -#define NtGetErr() gs((int *)(0x68)) -#define _NtGetSeh() gs((void **)(0x00)) -#define _NtGetStackHigh() gs((void **)(0x08)) -#define _NtGetStackLow() gs((void **)(0x10)) -#define _NtGetSubsystemTib() gs((void **)(0x18)) -#define _NtGetFib() gs((void **)(0x20)) -#define _NtGetEnv() gs((char16_t **)(0x38)) -#define _NtGetRpc() gs((void **)(0x50)) -#define _NtGetTls() gs((void **)(0x58)) - -#endif /* __GNUC__ && !__STRICT_ANSI__ */ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/tokenprivileges.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_TOKENPRIVILEGES_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtTokenPrivileges { - uint32_t PrivilegeCount; - struct NtLuidAndAttributes Privileges[1]; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/userstack.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_NTUSERSTACK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtUserStack { - void *FixedStackBase; - void *FixedStackLimit; - void *ExpandableStackBase; - void *ExpandableStackLimit; - void *ExpandableStackBottom; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/valent.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_VALENT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtValent { - char16_t *ve_valuename; - uint32_t ve_valuelen; - uintptr_t ve_valueptr; - uint32_t ve_type; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/win32fileattributedata.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_WIN32FILEATTRIBUTEDATA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtWin32FileAttributeData { - uint32_t dwFileAttributes; /* ←NtFileFlagAndAttributes */ - struct NtFileTime ftCreationTime; - struct NtFileTime ftLastAccessTime; - struct NtFileTime ftLastWriteTime; - uint32_t nFileSizeHigh; - uint32_t nFileSizeLow; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/win32finddata.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_WIN32FINDDATA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtWin32FindData { - uint32_t dwFileAttributes; - struct NtFileTime ftCreationTime; - struct NtFileTime ftLastAccessTime; - struct NtFileTime ftLastWriteTime; - uint32_t nFileSizeHigh; - uint32_t nFileSizeLow; - uint32_t dwReserved0; - uint32_t dwReserved1; - char16_t cFileName[260]; - char16_t cAlternateFileName[14]; - uint32_t dwFileType; - uint32_t dwCreatorType; - uint16_t wFinderFlags; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/windowplacement.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_WINDOWPLACEMENT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct NtWindowPlacement { - uint32_t length; - uint32_t flags; - uint32_t showCmd; - struct NtPoint ptMinPosition; - struct NtPoint ptMaxPosition; - struct NtRect rcNormalPosition; - struct NtRect rcDevice; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/wndclass.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_WNDCLASS_H_ - - -/*!BEGIN libc/nt/typedef/wndproc.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_WNDPROC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef int64_t (*NtWndProc)(int64_t, uint32_t, uint64_t, int64_t); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtWndClass { - uint32_t style; - NtWndProc lpfnWndProc; - int32_t cbClsExtra; - int32_t cbWndExtra; - int64_t hInstance; - int64_t hIcon; - int64_t hCursor; - int64_t hbrBackground; - const char16_t *lpszMenuName; - const char16_t *lpszClassName; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/struct/wndclassex.h */ - -#define COSMOPOLITAN_LIBC_NT_STRUCT_WNDCLASSEX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtWndClassEx { - uint32_t cbSize; - uint32_t style; - NtWndProc lpfnWndProc; - int32_t cbClsExtra; - int32_t cbWndExtra; - int64_t hInstance; - int64_t hIcon; - int64_t hCursor; - int64_t hbrBackground; - const char16_t *lpszMenuName; - const char16_t *lpszClassName; - int64_t hIconSm; -}; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/exceptionhandler.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_EXCEPTIONHANDLER_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef unsigned (*NtExceptionHandler)(struct NtExceptionRecord *, - struct NtExceptionFrame *, - struct NtContext *, void *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/handlerroutine.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_HANDLERROUTINE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef bool32 (*NtHandlerRoutine)(uint32_t); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/hookproc.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_HOOKPROC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef intptr_t (*NtHookProc)(int code, uintptr_t wParam, intptr_t lParam); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/imagetlscallback.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_IMAGETLSCALLBACK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef void (*NtImageTlsCallback)(void *DllHandle, uint32_t Reason, - void *Reserved); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/ioapcroutine.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_IOAPCROUTINE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef void (*NtIoApcRoutine)(void *ApcContext, - struct NtIoStatusBlock *IoStatusBlock, - uint32_t Reserved); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/pknormalroutine.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_PKNORMALROUTINE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef void (*NtPkNormalRoutine)(void *NormalContext, void *SystemArgument1, - void *SystemArgument2); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/timerproc.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_TIMERPROC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef void (*NtTimerProc)(int64_t, uint32_t, uintptr_t, uint32_t); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/wambda.h */ - -#define COSMOPOLITAN_LIBC_NT_WAMBDA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef intptr_t (*wambda)(); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/typedef/wndenumproc.h */ - -#define COSMOPOLITAN_LIBC_NT_TYPEDEF_WNDENUMPROC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef int (*NtWndEnumProc)(int64_t foo, intptr_t bar); - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/thunk/msabi.h */ - -#define COSMOPOLITAN_LIBC_NT_THUNK_MSABI_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -#if !defined(__STRICT_ANSI__) && \ - (__GNUC__ * 100 + __GNUC_MINOR__ >= 408 || \ - (__has_attribute(__ms_abi__) || defined(__llvm__))) -/** - * Defines function as using Microsoft x64 calling convention. - * - * This can be used to define prototypes that allow modern compilers to - * generate code that calls MS ABI functions directly, without needing - * to jump through the assembly thunks. - */ -#define __msabi __attribute__((__ms_abi__)) -#endif - -/* - * Returns true if header should provide MS-ABI overrides. - */ -#ifndef ShouldUseMsabiAttribute -#if defined(__msabi) && defined(NDEBUG) && !defined(__PG__) -#define ShouldUseMsabiAttribute() 1 -#else -#define ShouldUseMsabiAttribute() 0 -#endif -#endif - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/debug.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_DEBUG_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » debugging ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -NtStatus NtContinue(struct NtContext *Context, int32_t TestAlert); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/file.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_FILE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » files ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -struct NtIoStatusBlock; -struct NtObjectAttributes; - -NtStatus NtClose(int64_t handle); - -NtStatus NtCreateFile(int64_t *out_FileHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - struct NtIoStatusBlock *out_IoStatusBlock, - int64_t *opt_AllocationSize, uint32_t FileAttributes, - uint32_t ShareAccess, uint32_t CreateDisposition, - uint32_t CreateOptions, void *opt_EaBuffer, - uint32_t EaLength); - -NtStatus NtReadFile(int64_t FileHandle, void *opt_Event, - NtIoApcRoutine opt_ApcRoutine, void *opt_ApcContext, - struct NtIoStatusBlock *out_IoStatusBlock, void *out_Buffer, - uint32_t Length, int64_t *opt_ByteOffset, - uint32_t *opt_Key); - -NtStatus NtWriteFile(int64_t FileHandle, void *opt_Event, - NtIoApcRoutine opt_ApcRoutine, void *opt_ApcContext, - struct NtIoStatusBlock *out_IoStatusBlock, - const void *Buffer, uint32_t Length, - int64_t *opt_ByteOffset, uint32_t *opt_Key); - -NtStatus NtDuplicateObject(int64_t SourceProcessHandle, void *SourceHandle, - void *TargetProcessHandle, - void **opt_out_TargetHandle, uint32_t DesiredAcess, - uint32_t Atrributes, uint32_t options_t); - -NtStatus NtQueryInformationFile(int64_t FileHandle, - struct NtIoStatusBlock *out_IoStatusBlock, - void *out_FileInformation, - uint32_t FileInformationLength, - uint32_t FileInformationClass); - -NtStatus NtSetInformationFile(int64_t FileHandle, - struct NtIoStatusBlock *out_IoStatusBlock, - void *FileInformation, - uint32_t FileInformationLength, - uint32_t FileInformationClass); - -NtStatus NtDeviceIoControlFile( - int64_t FileHandle, int64_t opt_Event, NtIoApcRoutine opt_ApcRoutine, - void *opt_ApcContext, struct NtIoStatusBlock *out_IoStatusBlock, - uint32_t IoControlCode, void *opt_InputBuffer, uint32_t InputBufferLength, - void *opt_out_OutputBuffer, uint32_t OutputBufferLength); - -NtStatus NtCancelIoFileEx(int64_t FileHandle, - struct NtIoStatusBlock *IoRequestToCancel, - struct NtIoStatusBlock *IoStatusBlock); - -NtStatus RtlNtStatusToDosError(NtStatus Status); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/ntfile.inc */ - -#define NtQueryInformationFile(...) __imp_NtQueryInformationFile(__VA_ARGS__) - -extern typeof(NtQueryInformationFile) *const - __imp_NtQueryInformationFile __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/ipc.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_IPC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » ipc ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -struct NtIoStatusBlock; -struct NtObjectAttributes; - -NtStatus NtCreateNamedPipeFile(int64_t *out_FileHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - struct NtIoStatusBlock *out_IoStatusBlock, - uint32_t ShareAccess, uint32_t CreateDisposition, - uint32_t CreateOptions, int32_t TypeMessage, - int32_t ReadmodeMessage, int32_t Nonblocking, - uint32_t MaxInstances, uint32_t InBufferSize, - uint32_t OutBufferSize, - int64_t *opt_DefaultTimeout); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/key.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_EVENT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » files ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -NtStatus NtCreateKeyedEvent(int64_t *KeyedEventHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - uint32_t Flags); - -NtStatus NtReleaseKeyedEvent(int64_t KeyedEventHandle, void *KeyValue, - bool32 Alertable, int64_t *Timeout); - -NtStatus NtWaitForKeyedEvent(int64_t KeyedEventHandle, void *KeyValue, - bool32 Alertable, int64_t *Timeout); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/loader.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_LOADER_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » loader ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -struct NtAnsiString; -struct NtLdrDataTableEntry; -struct NtUnicodeString; - -NtStatus LdrLoadDll(const char16_t *opt_PathToFile, uint32_t *opt_Flags, - struct NtUnicodeString *ModuleFileName, - void **out_ModuleHandle); -NtStatus LdrUnloadDll(void *ModuleHandle); -NtStatus LdrGetProcedureAddress(void *ModuleHandle, - struct NtAnsiString *opt_ProcedureName, - uint32_t opt_Ordinal, - wambda *out_ProcedureAddress); -NtStatus LdrGetDllHandle(const char16_t *opt_PathToFile, uint32_t opt_Unused, - struct NtUnicodeString *ModuleFileName, - void **out_ModuleHandle); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/memory.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_MEMORY_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » memory ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -NtStatus NtAllocateVirtualMemory(int64_t ProcessHandle, - void **inout_BaseAddress, uint32_t dwZeroBits, - uint32_t *inout_AllocationSize, - uint32_t dwMemAllocationType, - uint32_t dwPageProtect); -NtStatus NtFreeVirtualMemory(int64_t ProcessHandle, void **inout_BaseAddress, - size_t *inout_FreeSize, uint32_t FreeType); -NtStatus NtQueryVirtualMemory(int64_t ProcessHandle, const void *BaseAddress, - int MemoryInformationClass, - void *out_MemoryInformation, - size_t MemoryInformationLength, - size_t *opt_out_ReturnLength); -NtStatus NtProtectVirtualMemory(int64_t ProcessHandle, void **inout_BaseAddress, - uint32_t *inout_ProtectSize, - uint32_t NewProtect, uint32_t *out_OldProtect); -NtStatus NtWriteVirtualMemory(int64_t ProcessHandle, void *BaseAddress, - const void *Buffer, size_t BufferLength, - size_t *opt_out_ReturnLength); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/process.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_PROCESS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » processes ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -struct NtClientId; -struct NtObjectAttributes; -struct NtRtlUserProcessInformation; -struct NtRtlUserProcessParameters; -struct NtSecurityDescriptor; -struct NtUnicodeString; - -NtStatus NtCreateProcess(int64_t *out_ProcessHandle, uint32_t dwDesiredAccess, - struct NtObjectAttributes *opt_ObjectAttributes, - void *InheritFromProcessHandle, int32_t InheritHandles, - void *opt_SectionHandle, void *opt_DebugPort, - void *opt_ExceptionPort); -NtStatus NtTerminateProcess(int64_t opt_ProcessHandle, int32_t ExitStatus); - -NtStatus NtQueryInformationProcess(int64_t ProcessHandle, - int ProcessInformationClass, - void *out_ProcessInformation, - uint32_t ProcessInformationLength, - uint32_t *opt_out_ReturnLength); -NtStatus NtOpenProcessToken(int64_t ProcessToken, uint32_t DesiredAccess, - int64_t *out_TokenHandle); -NtStatus NtOpenProcess(int64_t *out_ProcessHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - struct NtClientId *ClientId); - -NtStatus RtlCreateProcessParameters( - struct NtRtlUserProcessParameters **out_ProcessParameters, - struct NtUnicodeString *ImageFile, struct NtUnicodeString *opt_DllPath, - struct NtUnicodeString *opt_CurrentDirectory, - struct NtUnicodeString *opt_CommandLine, uint32_t CreationFlags, - struct NtUnicodeString *opt_WindowTitle, - struct NtUnicodeString *opt_Desktop, struct NtUnicodeString *opt_Reserved, - struct NtUnicodeString *opt_Reserved2); - -NtStatus RtlDestroyProcessParameters( - struct NtRtlUserProcessParameters *ProcessParameters); - -NtStatus RtlCloneUserProcess( - uint32_t ProcessFlags, - struct NtSecurityDescriptor *opt_ProcessSecurityDescriptor, - struct NtSecurityDescriptor *opt_ThreadSecurityDescriptor, - void *opt_DebugPort, - struct NtRtlUserProcessInformation *ProcessInformation); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/nt/thunk/process.inc */ - -#define NtQueryInformationProcess(...) \ - __imp_NtQueryInformationProcess(__VA_ARGS__) - -extern typeof(NtQueryInformationProcess) *const - __imp_NtQueryInformationProcess __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/sections.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_SECTIONS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -NtStatus NtCreateSection(int64_t *out_SectionHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - int64_t *opt_SectionSize, uint32_t Protect, - uint32_t Attributes, int64_t FileHandle); -NtStatus NtOpenSection(int64_t *out_SectionHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes); -NtStatus NtMapViewOfSection(int64_t SectionHandle, int64_t ProcessHandle, - void **inout_BaseAddress, uint32_t *ZeroBits, - size_t CommitSize, int64_t *opt_inout_SectionOffset, - size_t *inout_ViewSize, int InheritDisposition, - uint32_t AllocationType, uint32_t Protect); -NtStatus NtUnmapViewOfSection(int64_t ProcessHandle, void *BaseAddress); -NtStatus NtQuerySection(int64_t SectionHandle, int SectionInformationClass, - void *out_SectionInformation, - uint32_t SectionInformationLength, - uint32_t *opt_out_ResultLength); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/signing.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_SIGNING_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » code signing ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -NtStatus CsrClientCallServer(void *inout_Message, void *unknown, - uint32_t Opcode, uint32_t Size); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/thread.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_THREAD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » threads ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -struct NtClientId; -struct NtContext; -struct NtObjectAttributes; -struct NtUserStack; - -NtStatus NtCreateThread(int64_t *out_ThreadHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - int64_t ProcessHandle, struct NtClientId *out_ClientId, - struct NtContext *ThreadContext, - struct NtUserStack *UserStack, int32_t CreateSuspended); - -NtStatus NtTerminateThread(void *opt_ThreadHandle, int32_t ExitStatus); - -NtStatus NtOpenThread(int64_t *out_ThreadHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - struct NtClientId *ClientId); - -NtStatus NtQueryInformationThread(int64_t ThreadHandle, - enum NtThreadInfoClass ThreadInformationClass, - void *out_ThreadInformation, - uint32_t ThreadInformationLength, - uint32_t *opt_out_ReturnLength); - -NtStatus NtGetContextThread(int64_t ThreadHandle, - struct NtContext *out_Context); -NtStatus NtSetContextThread(int64_t ThreadHandle, struct NtContext *Context); -NtStatus NtSuspendThread(int64_t ThreadHandle, - uint32_t *opt_out_PreviousSuspendCount); -NtStatus NtResumeThread(int64_t ThreadHandle, - uint32_t *opt_out_PreviousSuspendCount); - -NtStatus NtOpenThreadToken(int64_t ThreadHandle, uint32_t DesiredAccess, - int32_t OpenAsSelf, int64_t *out_TokenHandle); - -NtStatus NtSetInformationThread(int64_t ThreadHandle, - enum NtThreadInfoClass ThreadInformationClass, - void *ThreadInformation, - uint32_t ThreadInformationLength); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/nt/time.h */ - -#define COSMOPOLITAN_LIBC_NT_NT_THREAD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale » time ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -NtStatus NtDelayExecution(bool32 alertable, int64_t *AbsCobolOrNegRelHectoNano); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/nt/thunk/time.inc */ - -#define NtDelayExecution(...) __imp_NtDelayExecution(__VA_ARGS__) - -extern typeof(NtDelayExecution) *const __imp_NtDelayExecution __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/accounting.h */ - -#define COSMOPOLITAN_LIBC_NT_ACCOUNTING_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » accounting ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int GetUserName(char16_t (*buf)[257], uint32_t *in_out_size); -bool32 GlobalMemoryStatusEx(struct NtMemoryStatusEx *lpBuffer); -int32_t GetExitCodeProcess(int64_t hProcess, uint32_t *lpExitCode); -int32_t GetProcessHandleCount(int64_t hProcess, uint32_t *pdwHandleCount); -bool32 GetProcessTimes(int64_t hProcess, - struct NtFileTime *out_lpCreationFileTime, - struct NtFileTime *out_lpExitFileTime, - struct NtFileTime *out_lpKernelFileTime, - struct NtFileTime *out_lpUserFileTime); -bool32 GetThreadTimes(int64_t hThread, - struct NtFileTime *out_lpCreationFileTime, - struct NtFileTime *out_lpExitFileTime, - struct NtFileTime *out_lpKernelFileTime, - struct NtFileTime *out_lpUserFileTime); -int32_t GetProcessIoCounters(int64_t hProcess, - struct NtIoCounters *lpIoCounters); -int32_t GetProcessWorkingSetSize(int64_t hProcess, - uint64_t *lpMinimumWorkingSetSize, - uint64_t *lpMaximumWorkingSetSize); -int32_t GetProcessWorkingSetSizeEx(int64_t hProcess, - uint64_t *lpMinimumWorkingSetSize, - uint64_t *lpMaximumWorkingSetSize, - uint32_t *Flags); -int32_t SetProcessWorkingSetSize(int64_t hProcess, - uint64_t dwMinimumWorkingSetSize, - uint64_t dwMaximumWorkingSetSize); -int32_t SetProcessWorkingSetSizeEx(int64_t hProcess, - uint64_t dwMinimumWorkingSetSize, - uint64_t dwMaximumWorkingSetSize, - uint32_t Flags); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/accounting.inc */ - -#define GetProcessTimes(...) __imp_GetProcessTimes(__VA_ARGS__) -extern typeof(GetProcessTimes) *const __imp_GetProcessTimes __msabi; - -#define GetThreadTimes(...) __imp_GetThreadTimes(__VA_ARGS__) -extern typeof(GetThreadTimes) *const __imp_GetThreadTimes __msabi; - -#define GetUserName(...) __imp_GetUserNameW(__VA_ARGS__) -extern typeof(GetUserName) *const __imp_GetUserNameW __msabi; - -#define GetExitCodeProcess(...) __imp_GetExitCodeProcess(__VA_ARGS__) -extern typeof(GetExitCodeProcess) *const __imp_GetExitCodeProcess __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/automation.h */ - -#define COSMOPOLITAN_LIBC_NT_AUTOMATION_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » aol hacking ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int64_t GetShellWindow(void); -int64_t GetDesktopWindow(void); -int64_t GetParent(int64_t hWnd); -int64_t SetParent(int64_t hWndChild, int64_t hWndNewParent); -int32_t EnumChildWindows(int64_t hWndParent, NtWndEnumProc lpEnumFunc, - intptr_t lParam); -int64_t FindWindow(const char16_t *lpClassName, const char16_t *lpWindowName); -int64_t FindWindowEx(int64_t hWndParent, int64_t hWndChildAfter, - const char16_t *lpszClass, const char16_t *lpszWindow); -int64_t GetWindow(int64_t hWnd, uint32_t uCmd); -int64_t SetWindowsHook(int nFilterType, NtHookProc pfnFilterProc); -int32_t UnhookWindowsHook(int nCode, NtHookProc pfnFilterProc); -int64_t SetWindowsHookEx(int idHook, NtHookProc lpfn, int64_t hmod, - uint32_t dwThreadId); -int32_t UnhookWindowsHookEx(int64_t hhk); -intptr_t CallNextHookEx(int64_t hhk, int nCode, uintptr_t wParam, - intptr_t lParam); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/codegen.h */ - -#define COSMOPOLITAN_LIBC_NT_CODEGEN_H_ - - -/*!BEGIN libc/nt/comdlg.h */ - -#define COSMOPOLITAN_LIBC_NT_COMDLG_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » common dialogs ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -bool32 GetOpenFileName(struct NtOpenFilename *arg); -bool32 GetSaveFileName(struct NtOpenFilename *arg); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/console.h */ - -#define COSMOPOLITAN_LIBC_NT_CONSOLE_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » console ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kNtAttachParentProcess -1u - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -bool32 WriteConsoleOutput(int64_t hConsoleOutput, - const struct NtCharInfo *lpBuffer, - struct NtCoord dwBufferSize, - struct NtCoord dwBufferCoord, - struct NtSmallRect *lpWriteRegion); -bool32 ReadConsoleInput(int64_t hConsoleInput, struct NtInputRecord *lpBuffer, - uint32_t nLength, uint32_t *lpNumberOfEventsRead); -bool32 PeekConsoleInput(int64_t hConsoleInput, struct NtInputRecord *lpBuffer, - uint32_t nLength, uint32_t *lpNumberOfEventsRead); -bool32 GetNumberOfConsoleInputEvent(int64_t hConsoleInput, - uint32_t *lpNumberOfEvents); -bool32 ReadConsoleOutput(int64_t hConsoleOutput, struct NtCharInfo *lpBuffer, - struct NtCoord dwBufferSize, - struct NtCoord dwBufferCoord, - struct NtSmallRect *lpReadRegion); -bool32 WriteConsoleInput(int64_t hConsoleInput, - const struct NtInputRecord *lpBuffer, uint32_t nLength, - uint32_t *lpNumberOfEventsWritten); -bool32 FlushConsoleInputBuffer(int64_t hConsoleInput); - -int64_t GetConsoleWindow(void); -bool32 GetConsoleMode(int64_t hConsoleHandle, uint32_t *lpMode); -bool32 SetConsoleMode(int64_t hConsoleHandle, uint32_t dwMode); -int32_t AllocConsole(void); -int32_t FreeConsole(void); -int32_t AttachConsole(uint32_t dwProcessId); -uint32_t GetConsoleTitle(char16_t *lpConsoleTitle, uint32_t nSize); -int32_t SetConsoleTitle(const char16_t *lpConsoleTitle); -bool32 GetConsoleScreenBufferInfo( - int64_t hConsoleOutput, - struct NtConsoleScreenBufferInfo *out_lpConsoleScreenBufferInfo); -bool32 GetConsoleScreenBufferInfoEx( - int64_t hConsoleOutput, - struct NtConsoleScreenBufferInfoEx *in_out_lpConsoleScreenBufferInfo); -bool32 SetConsoleScreenBufferInfoEx( - int64_t hConsoleOutput, - const struct NtConsoleScreenBufferInfoEx *lpConsoleScreenBufferInfo); -bool32 SetConsoleScreenBufferSize(int64_t lpConsoleOutput, - struct NtCoord dwSize); -struct NtCoord GetLargestConsoleWindowSize(int64_t hConsoleHandle); -int32_t ReadConsole(int64_t hConsoleInput, void *lpBuffer, - uint32_t nNumberOfCharsToRead, - uint32_t *lpNumberOfCharsRead, void *lpReserved); -int32_t WriteConsole(int64_t hConsoleOutput, const void *lpBuffer, - uint32_t nNumberOfCharsToWrite, - uint32_t *lpNumberOfCharsWritten, void *lpReserved) - paramsnonnull((2, 4)); -bool32 GetNumberOfConsoleMouseButtons(uint32_t *out_lpNumberOfMouseButtons) - paramsnonnull(); -bool32 GetConsoleSelectionInfo( - struct NtConsoleSelectionInfo *out_lpConsoleSelectionInfo); -uint32_t WaitForInputIdle(int64_t hProcess, uint32_t dwMilliseconds); -uint32_t GetConsoleCP(void); -bool32 SetConsoleCP(uint32_t wCodePageID); -bool32 SetConsoleOutputCP(uint32_t wCodePageID); -uint32_t GetConsoleOutputCP(void); -bool32 SetConsoleCtrlHandler(NtHandlerRoutine opt_HandlerRoutine, bool32 Add); -bool32 GenerateConsoleCtrlEvent(uint32_t dwCtrlEvent, - uint32_t dwProcessGroupId); - -bool32 GetConsoleCursorInfo( - int64_t hConsoleOutput, - struct NtConsoleCursorInfo *out_lpConsoleCursorInfo); -bool32 SetConsoleCursorInfo( - int64_t hConsoleOutput, - const struct NtConsoleCursorInfo *lpConsoleCursorInfo); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/console.inc */ - -#define GetConsoleMode(...) __imp_GetConsoleMode(__VA_ARGS__) -extern typeof(GetConsoleMode) *const __imp_GetConsoleMode __msabi; - -#define SetConsoleCP(...) __imp_SetConsoleCP(__VA_ARGS__) -extern typeof(SetConsoleCP) *const __imp_SetConsoleCP __msabi; - -#define GetConsoleCP(...) __imp_GetConsoleCP(__VA_ARGS__) -extern typeof(GetConsoleCP) *const __imp_GetConsoleCP __msabi; - -#define SetConsoleCtrlHandler(...) __imp_SetConsoleCtrlHandler(__VA_ARGS__) -extern typeof(SetConsoleCtrlHandler) *const __imp_SetConsoleCtrlHandler __msabi; - -#define SetConsoleMode(...) __imp_SetConsoleMode(__VA_ARGS__) -extern typeof(SetConsoleMode) *const __imp_SetConsoleMode __msabi; - -#define SetConsoleOutputCP(...) __imp_SetConsoleOutputCP(__VA_ARGS__) -extern typeof(SetConsoleOutputCP) *const __imp_SetConsoleOutputCP __msabi; - -#define GetConsoleOutputCP(...) __imp_GetConsoleOutputCP(__VA_ARGS__) -extern typeof(GetConsoleOutputCP) *const __imp_GetConsoleOutputCP __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/createfile.h */ - -#define COSMOPOLITAN_LIBC_NT_CREATEFILE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int64_t CreateFile( - const char16_t *lpFileName, uint32_t dwDesiredAccess, uint32_t dwShareMode, - struct NtSecurityAttributes *opt_lpSecurityAttributes, - int dwCreationDisposition, - uint32_t dwFlagsAndAttributes, /* libc/nt/enum/fileflagandattributes.h */ - int64_t opt_hTemplateFile) paramsnonnull((1)); - -int64_t CreateFileA( - const char *lpFileName, uint32_t dwDesiredAccess, uint32_t dwShareMode, - struct NtSecurityAttributes *opt_lpSecurityAttributes, - int dwCreationDisposition, - uint32_t dwFlagsAndAttributes, /* libc/nt/enum/fileflagandattributes.h */ - int64_t opt_hTemplateFile) paramsnonnull((1)); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/debug.h */ - -#define COSMOPOLITAN_LIBC_NT_DEBUG_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » debugging ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -/* Some of these APIs were moved to system.h and libc.h */ -int32_t DebugBreakProcess(void *Process); -int32_t DebugActiveProcess(uint32_t dwProcessId); -int32_t DebugActiveProcessStop(uint32_t dwProcessId); -int32_t CheckRemoteDebuggerPresent(int64_t hProcess, int *pbDebuggerPresent); -int32_t ContinueDebugEvent(uint32_t dwProcessId, uint32_t dwThreadId, - uint32_t dwContinueStatus); -void FatalExit(int uExitCode); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/dll.h */ - -#define COSMOPOLITAN_LIBC_NT_DLL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » dynamic link libraries ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int64_t LoadLibrary(const char16_t *lpLibFileName); -int64_t LoadLibraryEx(const char16_t *lpLibFileName, int64_t hFile, - uint32_t dwFlags); -uint32_t GetModuleFileName(int64_t hModule, char16_t *lpFilename, - uint32_t nSize); -uint32_t GetModuleFileNameA(int64_t hModule, char *lpFilename, uint32_t nSize); -intptr_t GetModuleHandle(const char *opt_lpModuleName); -intptr_t GetModuleHandleW(const char16_t *opt_lpModuleName); -void *GetProcAddress(int64_t hModule, const char *lpProcName); -int32_t FreeResource(int64_t hResData); -intptr_t LockResource(int64_t hResData); -int32_t FreeLibrary(int64_t hLibModule); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/efi.h */ - -#define COSMOPOLITAN_LIBC_NT_EFI_H_ -/* - ▐██ ░█████████▓ ▐██▌ ██▓░ ▐█▌ ▐██ ░██░ ▓█▌ ▓██▒ ▓██ - ▐██ ░██░ ▒█▓██░ ████░ ▐█▌ ▐██ ░██░ ▓█▌ ▓███░ ▓███ - ▐██ ░██░ ██░▐█▓ ██▒▓█░ ▐█▌ ▐██ ░██░ ▓█▌ ▓█▌▓█░ ▓█▒██ - ▐██ ░██░ ▐█▌ ▓█▌ ██░░▓█░▐█▌ ▐██ ░██░ ▓█▌ ▓█▌░█▓▓█▒░██ - ▐██ ░██░ ▒██▓█████░ ██░ ░▓▓▓█▌ ▐██ ░██░ ██░ ▓█▌ ░██▌ ░██ - ▐██ ░██░ ▓█▌ ▓█▓ ██░ ░███▌ ▐██ ▐██▄▄▄▓█▓ ▓█▌ ░██ -╔────────────────────────────────────────────────────────────────────────────│─╗ -│ αcτµαlly pδrταblε εxεcµταblε § the unified extensible firmware interface ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define EFI_SUCCESS 0x8000000000000000 -#define EFI_LOAD_ERROR 0x8000000000000001 -#define EFI_INVALID_PARAMETER 0x8000000000000002 -#define EFI_UNSUPPORTED 0x8000000000000003 -#define EFI_BAD_BUFFER_SIZE 0x8000000000000004 -#define EFI_BUFFER_TOO_SMALL 0x8000000000000005 -#define EFI_NOT_READY 0x8000000000000006 -#define EFI_DEVICE_ERROR 0x8000000000000007 -#define EFI_WRITE_PROTECTED 0x8000000000000008 -#define EFI_OUT_OF_RESOURCES 0x8000000000000009 -#define EFI_VOLUME_CORRUPTED 0x800000000000000a -#define EFI_VOLUME_FULL 0x800000000000000b -#define EFI_NO_MEDIA 0x800000000000000c -#define EFI_MEDIA_CHANGED 0x800000000000000d -#define EFI_NOT_FOUND 0x800000000000000e -#define EFI_ACCESS_DENIED 0x800000000000000f -#define EFI_NO_RESPONSE 0x8000000000000010 -#define EFI_NO_MAPPING 0x8000000000000011 -#define EFI_TIMEOUT 0x8000000000000012 -#define EFI_NOT_STARTED 0x8000000000000013 -#define EFI_ALREADY_STARTED 0x8000000000000014 -#define EFI_ABORTED 0x8000000000000015 -#define EFI_ICMP_ERROR 0x8000000000000016 -#define EFI_TFTP_ERROR 0x8000000000000017 -#define EFI_PROTOCOL_ERROR 0x8000000000000018 - -#define EFI_VARIABLE_NON_VOLATILE 0x00000001 -#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 -#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 -#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008 -#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010 -#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020 -#define EFI_VARIABLE_APPEND_WRITE 0x00000040 - -#define EFI_MEMORY_UC 0x0000000000000001U -#define EFI_MEMORY_WC 0x0000000000000002U -#define EFI_MEMORY_WT 0x0000000000000004U -#define EFI_MEMORY_WB 0x0000000000000008U -#define EFI_MEMORY_UCE 0x0000000000000010U -#define EFI_MEMORY_WP 0x0000000000001000U -#define EFI_MEMORY_RP 0x0000000000002000U -#define EFI_MEMORY_XP 0x0000000000004000U -#define EFI_MEMORY_RO 0x0000000000020000U -#define EFI_MEMORY_NV 0x0000000000008000U -#define EFI_MEMORY_MORE_RELIABLE 0x0000000000010000U -#define EFI_MEMORY_RUNTIME 0x8000000000000000U - -#define EFI_OPTIONAL_PTR 0x00000001 - -#define EFI_SCAN_NULL 0x0000 -#define EFI_SCAN_UP 0x0001 -#define EFI_SCAN_DOWN 0x0002 -#define EFI_SCAN_RIGHT 0x0003 -#define EFI_SCAN_LEFT 0x0004 -#define EFI_SCAN_HOME 0x0005 -#define EFI_SCAN_END 0x0006 -#define EFI_SCAN_INSERT 0x0007 -#define EFI_SCAN_DELETE 0x0008 -#define EFI_SCAN_PAGE_UP 0x0009 -#define EFI_SCAN_PAGE_DOWN 0x000A -#define EFI_SCAN_F1 0x000B -#define EFI_SCAN_F2 0x000C -#define EFI_SCAN_F3 0x000D -#define EFI_SCAN_F4 0x000E -#define EFI_SCAN_F5 0x000F -#define EFI_SCAN_F6 0x0010 -#define EFI_SCAN_F7 0x0011 -#define EFI_SCAN_F8 0x0012 -#define EFI_SCAN_F9 0x0013 -#define EFI_SCAN_F10 0x0014 -#define EFI_SCAN_ESC 0x0017 - -#define EFI_EVT_TIMER 0x80000000 -#define EFI_EVT_RUNTIME 0x40000000 -#define EFI_EVT_NOTIFY_WAIT 0x00000100 -#define EFI_EVT_NOTIFY_SIGNAL 0x00000200 -#define EFI_EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201 -#define EFI_EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202 -#define EFI_EVT_RUNTIME_CONTEXT 0x20000000 - -#define LOADED_IMAGE_PROTOCOL \ - { \ - 0x5B1B31A1, 0x9562, 0x11d2, { \ - 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B \ - } \ - } - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define EFIAPI __attribute__((__ms_abi__)) -#define EFI_STATUS uint64_t -#define EFI_EVENT uintptr_t -#define EFI_HANDLE uintptr_t - -typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL; -typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL; - -typedef enum { - EfiReservedMemoryType, - EfiLoaderCode, - EfiLoaderData, - EfiBootServicesCode, - EfiBootServicesData, - EfiRuntimeServicesCode, - EfiRuntimeServicesData, - EfiConventionalMemory, - EfiUnusableMemory, - EfiACPIReclaimMemory, - EfiACPIMemoryNVS, - EfiMemoryMappedIO, - EfiMemoryMappedIOPortSpace, - EfiPalCode, - EfiPersistentMemory, - EfiMaxMemoryType -} EFI_MEMORY_TYPE; - -typedef enum { - EfiResetCold, - EfiResetWarm, - EfiResetShutdown, - EfiResetPlatformSpecific -} EFI_RESET_TYPE; - -typedef enum { - AllocateAnyPages, - AllocateMaxAddress, - AllocateAddress, - MaxAllocateType -} EFI_ALLOCATE_TYPE; - -typedef enum { - TimerCancel, - TimerPeriodic, - TimerRelative, -} EFI_TIMER_DELAY; - -typedef struct { - uint32_t Resolution; - uint32_t Accuracy; - bool SetsToZero; -} EFI_TIME_CAPABILITIES; - -typedef struct { - uint32_t Data1; - uint16_t Data2; - uint16_t Data3; - uint8_t Data4[8]; -} EFI_GUID; - -typedef struct { - uint16_t Year; - uint8_t Month; - uint8_t Day; - uint8_t Hour; - uint8_t Minute; - uint8_t Second; - uint8_t Pad1; - uint32_t Nanosecond; - int16_t TimeZone; - uint8_t Daylight; - uint8_t Pad2; -} EFI_TIME; - -typedef struct { - uint32_t Type; - uint64_t PhysicalStart; - uint64_t VirtualStart; - uint64_t NumberOfPages; - uint64_t Attribute; -} EFI_MEMORY_DESCRIPTOR; - -typedef struct { - EFI_GUID VendorGuid; - void *VendorTable; -} EFI_CONFIGURATION_TABLE; - -typedef struct { - EFI_GUID CapsuleGuid; - uint32_t HeaderSize; - uint32_t Flags; - uint32_t CapsuleImageSize; -} EFI_CAPSULE_HEADER; - -typedef struct { - uint16_t ScanCode; - char16_t UnicodeChar; -} EFI_INPUT_KEY; - -typedef struct { - int32_t MaxMode; - int32_t Mode; - int32_t Attribute; - int32_t CursorColumn; - int32_t CursorRow; - bool CursorVisible; -} EFI_SIMPLE_TEXT_OUTPUT_MODE; - -typedef struct { - uint64_t Signature; - uint32_t Revision; - uint32_t HeaderSize; - uint32_t CRC32; - uint32_t Reserved; -} EFI_TABLE_HEADER; - -typedef struct { - uint8_t Type; - uint8_t SubType; - uint8_t Length[2]; -} EFI_DEVICE_PATH_PROTOCOL; - -typedef EFI_STATUS(EFIAPI *EFI_EXIT)(EFI_HANDLE ImageHandle, - EFI_STATUS ExitStatus, - uintptr_t ExitDataSize, - char16_t *opt_ExitData); - -typedef EFI_STATUS(EFIAPI *EFI_GET_VARIABLE)(char16_t *VariableName, - EFI_GUID *VendorGuid, - uint32_t *outopt_Attributes, - uintptr_t *inout_DataSize, - void *outopt_Data); -typedef EFI_STATUS(EFIAPI *EFI_SET_VARIABLE)(char16_t *VariableName, - EFI_GUID *VendorGuid, - uint32_t Attributes, - uintptr_t DataSize, void *Data); -typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)( - uintptr_t *inout_VariableNameSize, char16_t *inout_VariableName, - EFI_GUID *inout_VendorGuid); -typedef EFI_STATUS(EFIAPI *EFI_QUERY_VARIABLE_INFO)( - uint32_t Attributes, uint64_t *out_MaximumVariableStorageSize, - uint64_t *out_RemainingVariableStorageSize, - uint64_t *out_MaximumVariableSize); - -typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_PAGES)(EFI_ALLOCATE_TYPE Type, - EFI_MEMORY_TYPE MemoryType, - uintptr_t Pages, - uint64_t *inout_Memory); -typedef EFI_STATUS(EFIAPI *EFI_FREE_PAGES)(uint64_t Memory, uintptr_t Pages); -typedef EFI_STATUS(EFIAPI *EFI_GET_MEMORY_MAP)( - uintptr_t *inout_MemoryMapSize, EFI_MEMORY_DESCRIPTOR *inout_MemoryMap, - uintptr_t *out_MapKey, uintptr_t *out_DescriptorSize, - uint32_t *out_DescriptorVersion); - -typedef EFI_STATUS(EFIAPI *EFI_ALLOCATE_POOL)(EFI_MEMORY_TYPE PoolType, - uintptr_t Size, void *out_Buffer); -typedef EFI_STATUS(EFIAPI *EFI_FREE_POOL)(void *Buffer); -typedef void(EFIAPI *EFI_SET_MEM)(void *Buffer, uintptr_t Size, uint8_t Value); -typedef void(EFIAPI *EFI_COPY_MEM)(void *Destination, void *Source, - uintptr_t Length); - -typedef EFI_STATUS(EFIAPI *EFI_CHECK_EVENT)(EFI_EVENT Event); -typedef EFI_STATUS(EFIAPI *EFI_CLOSE_EVENT)(EFI_EVENT Event); -typedef EFI_STATUS(EFIAPI *EFI_SIGNAL_EVENT)(EFI_EVENT Event); -typedef EFI_STATUS(EFIAPI *EFI_WAIT_FOR_EVENT)(uintptr_t NumberOfEvents, - EFI_EVENT *Events, - uintptr_t *out_Index); -typedef EFI_STATUS(EFIAPI *EFI_SET_TIMER)(EFI_EVENT Event, EFI_TIMER_DELAY Type, - uint64_t TriggerTime); -typedef void(EFIAPI *EFI_EVENT_NOTIFY)(EFI_EVENT Event, void *Context); -typedef EFI_STATUS(EFIAPI *EFI_CREATE_EVENT)(uint32_t Type, uintptr_t NotifyTpl, - EFI_EVENT_NOTIFY NotifyFunction, - void *NotifyContext, - EFI_EVENT *out_Event); -typedef EFI_STATUS(EFIAPI *EFI_CREATE_EVENT_EX)( - uint32_t Type, uintptr_t NotifyTpl, EFI_EVENT_NOTIFY opt_NotifyFunction, - const void *opt_NotifyContext, const EFI_GUID *opt_EventGroup, - EFI_EVENT *out_Event); - -typedef EFI_STATUS(EFIAPI *EFI_UPDATE_CAPSULE)( - EFI_CAPSULE_HEADER **CapsuleHeaderArray, uintptr_t CapsuleCount, - uint64_t opt_ScatterGatherList); -typedef EFI_STATUS(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)( - EFI_CAPSULE_HEADER **CapsuleHeaderArray, uintptr_t CapsuleCount, - uint64_t *out_MaximumCapsuleSize, EFI_RESET_TYPE *out_ResetType); -typedef EFI_STATUS(EFIAPI *EFI_GET_WAKEUP_TIME)(bool *out_Enabled, - bool *out_Pending, - EFI_TIME *out_Time); -typedef EFI_STATUS(EFIAPI *EFI_SET_WAKEUP_TIME)(bool Enable, - EFI_TIME *opt_Time); -typedef EFI_STATUS(EFIAPI *EFI_SET_WATCHDOG_TIMER)(uintptr_t Timeout, - uint64_t WatchdogCode, - uintptr_t DataSize, - char16_t *opt_WatchdogData); - -typedef EFI_STATUS(EFIAPI *EFI_SET_TIME)(EFI_TIME *Time); -typedef EFI_STATUS(EFIAPI *EFI_GET_TIME)( - EFI_TIME *out_Time, EFI_TIME_CAPABILITIES *outopt_Capabilities); -typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)( - uint32_t *out_HighCount); -typedef EFI_STATUS(EFIAPI *EFI_STALL)(uintptr_t Microseconds); -typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(uint64_t *out_Count); - -typedef EFI_STATUS(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)( - uintptr_t MemoryMapSize, uintptr_t DescriptorSize, - uint32_t DescriptorVersion, EFI_MEMORY_DESCRIPTOR *VirtualMap); -typedef void(EFIAPI *EFI_RESET_SYSTEM)(EFI_RESET_TYPE ResetType, - EFI_STATUS ResetStatus, - uintptr_t DataSize, void *opt_ResetData); -typedef EFI_STATUS(EFIAPI *EFI_CONVERT_POINTER)(uintptr_t DebugDisposition, - void **inout_Address); - -typedef EFI_STATUS(EFIAPI *EFI_INPUT_RESET)( - EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, bool ExtendedVerification); -typedef EFI_STATUS(EFIAPI *EFI_INPUT_READ_KEY)( - EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, EFI_INPUT_KEY *out_Key); - -typedef EFI_STATUS(EFIAPI *EFI_TEXT_RESET)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, bool ExtendedVerification); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_STRING)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, char16_t *String); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_TEST_STRING)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, char16_t *String); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_QUERY_MODE)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t ModeNumber, - uint64_t *out_Columns, uint64_t *out_Rows); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_SET_MODE)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t ModeNumber); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_SET_ATTRIBUTE)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t Attribute); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_CLEAR_SCREEN)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, uint64_t Column, uint64_t Row); -typedef EFI_STATUS(EFIAPI *EFI_TEXT_ENABLE_CURSOR)( - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, bool Visible); - -typedef EFI_STATUS(EFIAPI *EFI_HANDLE_PROTOCOL)(EFI_HANDLE Handle, - EFI_GUID *Protocol, - void *out_Interface); - -typedef EFI_STATUS(EFIAPI *EFI_IMAGE_LOAD)(bool BootPolicy, - EFI_HANDLE ParentImageHandle, - EFI_DEVICE_PATH_PROTOCOL *DevicePath, - void *opt_SourceBuffer, - uintptr_t SourceSize, - EFI_HANDLE *out_ImageHandle); -typedef EFI_STATUS(EFIAPI *EFI_IMAGE_UNLOAD)(EFI_HANDLE ImageHandle); -typedef EFI_STATUS(EFIAPI *EFI_EXIT_BOOT_SERVICES)(EFI_HANDLE ImageHandle, - uintptr_t MapKey); - -typedef struct { - EFI_TABLE_HEADER Hdr; - EFI_GET_TIME GetTime; - EFI_SET_TIME SetTime; - EFI_GET_WAKEUP_TIME GetWakeupTime; - EFI_SET_WAKEUP_TIME SetWakeupTime; - EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap; - EFI_CONVERT_POINTER ConvertPointer; - EFI_GET_VARIABLE GetVariable; - EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName; - EFI_SET_VARIABLE SetVariable; - EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount; - EFI_RESET_SYSTEM ResetSystem; - EFI_UPDATE_CAPSULE UpdateCapsule; - EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities; - EFI_QUERY_VARIABLE_INFO QueryVariableInfo; -} EFI_RUNTIME_SERVICES; - -typedef struct { - EFI_TABLE_HEADER Hdr; - void *RaiseTPL; - void *RestoreTPL; - EFI_ALLOCATE_PAGES AllocatePages; - EFI_FREE_PAGES FreePages; - EFI_GET_MEMORY_MAP GetMemoryMap; - EFI_ALLOCATE_POOL AllocatePool; - EFI_FREE_POOL FreePool; - EFI_CREATE_EVENT CreateEvent; - EFI_SET_TIMER SetTimer; - EFI_WAIT_FOR_EVENT WaitForEvent; - EFI_SIGNAL_EVENT SignalEvent; - EFI_CLOSE_EVENT CloseEvent; - EFI_CHECK_EVENT CheckEvent; - void *InstallProtocolInterface; - void *ReinstallProtocolInterface; - void *UninstallProtocolInterface; - EFI_HANDLE_PROTOCOL HandleProtocol; - void *Reserved; - void *RegisterProtocolNotify; - void *LocateHandle; - void *LocateDevicePath; - void *InstallConfigurationTable; - EFI_IMAGE_LOAD LoadImage; - void *StartImage; - EFI_EXIT Exit; - EFI_IMAGE_UNLOAD UnloadImage; - EFI_EXIT_BOOT_SERVICES ExitBootServices; - EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; - EFI_STALL Stall; - EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; - void *ConnectController; - void *DisconnectController; - void *OpenProtocol; - void *CloseProtocol; - void *OpenProtocolInformation; - void *ProtocolsPerHandle; - void *LocateHandleBuffer; - void *LocateProtocol; - void *InstallMultipleProtocolInterfaces; - void *UninstallMultipleProtocolInterfaces; - void *CalculateCrc32; - EFI_COPY_MEM CopyMem; - EFI_SET_MEM SetMem; - EFI_CREATE_EVENT_EX CreateEventEx; -} EFI_BOOT_SERVICES; - -typedef struct { - EFI_TABLE_HEADER Hdr; - char16_t *FirmwareVendor; - uint32_t FirmwareRevision; - EFI_HANDLE ConsoleInHandle; - EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn; - EFI_HANDLE ConsoleOutHandle; - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; - EFI_HANDLE StandardErrorHandle; - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr; - EFI_RUNTIME_SERVICES *RuntimeServices; - EFI_BOOT_SERVICES *BootServices; - uintptr_t NumberOfTableEntries; - EFI_CONFIGURATION_TABLE *ConfigurationTable; -} EFI_SYSTEM_TABLE; - -struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL { - EFI_INPUT_RESET Reset; - EFI_INPUT_READ_KEY ReadKeyStroke; - EFI_EVENT WaitForKey; -}; - -struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL { - EFI_TEXT_RESET Reset; - EFI_TEXT_STRING OutputString; - EFI_TEXT_TEST_STRING TestString; - EFI_TEXT_QUERY_MODE QueryMode; - EFI_TEXT_SET_MODE SetMode; - EFI_TEXT_SET_ATTRIBUTE SetAttribute; - EFI_TEXT_CLEAR_SCREEN ClearScreen; - EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; - EFI_TEXT_ENABLE_CURSOR EnableCursor; - EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode; -}; - -typedef struct { - uint32_t Revision; - EFI_HANDLE ParentHandle; - EFI_SYSTEM_TABLE *SystemTable; - EFI_HANDLE DeviceHandle; - EFI_DEVICE_PATH_PROTOCOL *FilePath; - void *Reserved; - uint32_t LoadOptionsSize; - void *LoadOptions; - void *ImageBase; - uint64_t ImageSize; - EFI_MEMORY_TYPE ImageCodeType; - EFI_MEMORY_TYPE ImageDataType; - EFI_IMAGE_UNLOAD Unload; -} EFI_LOADED_IMAGE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/errors.h */ - -#define COSMOPOLITAN_NT_ERRORS_H_ - -#define kNtErrorInsufficientBuffer 122 - -#define kNtErrorSuccess 0 -#define kNtErrorInvalidFunction 1 /* ENOSYS */ -#define kNtErrorFileNotFound 2 /* ENOENT */ -#define kNtErrorPathNotFound 3 /* ENOTDIR */ -#define kNtErrorTooManyOpenFiles 4 /* EMFILE */ -#define kNtErrorAccessDenied 5 /* EACCES */ -#define kNtErrorInvalidHandle 6 /* EBADF */ -#define kNtErrorArenaTrashed 7 -#define kNtErrorNotEnoughMemory 8 -#define kNtErrorInvalidBlock 9 -#define kNtErrorBadEnvironment 10 -#define kNtErrorBadFormat 11 -#define kNtErrorInvalidAccess 12 /* EPERM */ -#define kNtErrorInvalidData 13 -#define kNtErrorOutofmemory 14 /* ENOMEM */ -#define kNtErrorInvalidDrive 15 -#define kNtErrorCurrentDirectory 16 -#define kNtErrorNotSameDevice 17 -#define kNtErrorNoMoreFiles 18 -#define kNtErrorWriteProtect 19 -#define kNtErrorBadUnit 20 -#define kNtErrorNotReady 21 -#define kNtErrorBadCommand 22 -#define kNtErrorCrc 23 -#define kNtErrorBadLength 24 -#define kNtErrorSeek 25 /* ESPIPE */ -#define kNtErrorNotDosDisk 26 /* ENOTBLK */ -#define kNtErrorSectorNotFound 27 -#define kNtErrorOutOfPaper 28 -#define kNtErrorWriteFault 29 -#define kNtErrorReadFault 30 -#define kNtErrorGenFailure 31 -#define kNtErrorSharingViolation 32 -#define kNtErrorLockViolation 33 -#define kNtErrorWrongDisk 34 -#define kNtErrorSharingBufferExceeded 36 -#define kNtErrorHandleEof 38 /* w/ GetOverlappedResult() */ -#define kNtErrorHandleDiskFull 39 -#define kNtErrorNotSupported 50 -#define kNtErrorRemNotList 51 -#define kNtErrorDupName 52 -#define kNtErrorBadNetpath 53 -#define kNtErrorNetworkBusy 54 -#define kNtErrorDevNotExist 55 -#define kNtErrorTooManyCmds 56 -#define kNtErrorAdapHdwErr 57 -#define kNtErrorBadNetResp 58 -#define kNtErrorUnexpNetErr 59 -#define kNtErrorBadRemAdap 60 -#define kNtErrorPrintqFull 61 -#define kNtErrorNoSpoolSpace 62 -#define kNtErrorPrintCancelled 63 -#define kNtErrorNetnameDeleted 64 -#define kNtErrorNetworkAccessDenied 65 -#define kNtErrorBadDevType 66 -#define kNtErrorBadNetName 67 -#define kNtErrorTooManyNames 68 -#define kNtErrorTooManySess 69 -#define kNtErrorSharingPaused 70 -#define kNtErrorReqNotAccep 71 -#define kNtErrorRedirPaused 72 -#define kNtErrorFileExists 80 /* EEXIST */ -#define kNtErrorCannotMake 82 -#define kNtErrorFailI24 83 -#define kNtErrorOutOfStructures 84 -#define kNtErrorAlreadyAssigned 85 -#define kNtErrorInvalidPassword 86 -#define kNtErrorInvalidParameter 87 /* EINVAL */ -#define kNtErrorNetWriteFault 88 -#define kNtErrorNoProcSlots 89 -#define kNtErrorTooManySemaphores 100 -#define kNtErrorExclSemAlreadyOwned 101 -#define kNtErrorSemIsSet 102 -#define kNtErrorTooManySemRequests 103 -#define kNtErrorInvalidAtInterruptTime 104 -#define kNtErrorSemOwnerDied 105 -#define kNtErrorSemUserLimit 106 -#define kNtErrorDiskChange 107 -#define kNtErrorDriveLocked 108 -#define kNtErrorBrokenPipe 109 /* EPIPE; happens on ReadFile() too */ -#define kNtErrorOpenFailed 110 -#define kNtErrorBufferOverflow 111 -#define kNtErrorDiskFull 112 /* ENOSPC */ -#define kNtErrorNoMoreSearchHandles 113 -#define kNtErrorInvalidTargetHandle 114 -#define kNtErrorInvalidCategory 117 -#define kNtErrorInvalidVerifySwitch 118 -#define kNtErrorBadDriverLevel 119 -#define kNtErrorCallNotImplemented 120 -#define kNtErrorSemTimeout 121 -#define kNtErrorInsufficientBuffer 122 -#define kNtErrorInvalidName 123 -#define kNtErrorInvalidLevel 124 -#define kNtErrorNoVolumeLabel 125 -#define kNtErrorModNotFound 126 -#define kNtErrorProcNotFound 127 -#define kNtErrorWaitNoChildren 128 /* ECHILD */ -#define kNtErrorChildNotComplete 129 -#define kNtErrorDirectAccessHandle 130 -#define kNtErrorNegativeSeek 131 -#define kNtErrorSeekOnDevice 132 -#define kNtErrorIsJoinTarget 133 -#define kNtErrorIsJoined 134 -#define kNtErrorIsSubsted 135 -#define kNtErrorNotJoined 136 -#define kNtErrorNotSubsted 137 -#define kNtErrorJoinToJoin 138 -#define kNtErrorSubstToSubst 139 -#define kNtErrorJoinToSubst 140 -#define kNtErrorSubstToJoin 141 -#define kNtErrorBusyDrive 142 -#define kNtErrorSameDrive 143 -#define kNtErrorDirNotRoot 144 -#define kNtErrorDirNotEmpty 145 -#define kNtErrorIsSubstPath 146 -#define kNtErrorIsJoinPath 147 -#define kNtErrorPathBusy 148 /* ETXTBSY */ -#define kNtErrorIsSubstTarget 149 -#define kNtErrorSystemTrace 150 -#define kNtErrorInvalidEventCount 151 -#define kNtErrorTooManyMuxwaiters 152 -#define kNtErrorInvalidListFormat 153 -#define kNtErrorLabelTooLong 154 -#define kNtErrorTooManyTcbs 155 -#define kNtErrorSignalRefused 156 -#define kNtErrorDiscarded 157 -#define kNtErrorNotLocked 158 -#define kNtErrorBadThreadidAddr 159 -#define kNtErrorBadArguments 160 -#define kNtErrorBadPathname 161 -#define kNtErrorSignalPending 162 -#define kNtErrorMaxThrdsReached 164 -#define kNtErrorLockFailed 167 -#define kNtErrorBusy 170 /* EBUSY */ -#define kNtErrorDeviceSupportInProgress 171 -#define kNtErrorCancelViolation 173 -#define kNtErrorAtomicLocksNotSupported 174 -#define kNtErrorInvalidSegmentNumber 180 -#define kNtErrorInvalidOrdinal 182 -#define kNtErrorAlreadyExists 183 /* EEXIST */ -#define kNtErrorInvalidFlagNumber 186 -#define kNtErrorSemNotFound 187 -#define kNtErrorInvalidStartingCodeseg 188 -#define kNtErrorInvalidStackseg 189 -#define kNtErrorInvalidModuletype 190 -#define kNtErrorInvalidExeSignature 191 -#define kNtErrorExeMarkedInvalid 192 -#define kNtErrorBadExeFormat 193 /* ENOEXEC */ -#define kNtErrorIteratedDataExceeds_64k 194 -#define kNtErrorInvalidMinallocsize 195 -#define kNtErrorDynlinkFromInvalidRing 196 -#define kNtErrorIoplNotEnabled 197 -#define kNtErrorInvalidSegdpl 198 -#define kNtErrorAutodatasegExceeds_64k 199 -#define kNtErrorRing2segMustBeMovable 200 -#define kNtErrorRelocChainXeedsSeglim 201 -#define kNtErrorInfloopInRelocChain 202 -#define kNtErrorEnvvarNotFound 203 -#define kNtErrorNoSignalSent 205 -#define kNtErrorFilenameExcedRange 206 -#define kNtErrorRing2StackInUse 207 -#define kNtErrorMetaExpansionTooLong 208 -#define kNtErrorInvalidSignalNumber 209 -#define kNtErrorThread_1Inactive 210 -#define kNtErrorLocked 212 -#define kNtErrorTooManyModules 214 -#define kNtErrorNestingNotAllowed 215 -#define kNtErrorExeMachineTypeMismatch 216 -#define kNtErrorExeCannotModifySignedBinary 217 -#define kNtErrorExeCannotModifyStrongSignedBinary 218 -#define kNtErrorFileCheckedOut 220 -#define kNtErrorCheckoutRequired 221 -#define kNtErrorBadFileType 222 -#define kNtErrorFileTooLarge 223 /* EFBIG */ -#define kNtErrorFormsAuthRequired 224 -#define kNtErrorVirusInfected 225 -#define kNtErrorVirusDeleted 226 -#define kNtErrorPipeLocal 229 -#define kNtErrorBadPipe 230 -#define kNtErrorPipeBusy 231 -#define kNtErrorNoData 232 -#define kNtErrorPipeNotConnected 233 -#define kNtErrorMoreData 234 -#define kNtErrorNoWorkDone 235 -#define kNtErrorVcDisconnected 240 -#define kNtErrorInvalidEaName 254 -#define kNtErrorEaListInconsistent 255 -#define kNtErrorNoMoreItems 259 -#define kNtErrorCannotCopy 266 -#define kNtErrorDirectory 267 -#define kNtErrorEasDidntFit 275 -#define kNtErrorEaFileCorrupt 276 -#define kNtErrorEaTableFull 277 -#define kNtErrorInvalidEaHandle 278 -#define kNtErrorEasNotSupported 282 -#define kNtErrorNotOwner 288 -#define kNtErrorTooManyPosts 298 -#define kNtErrorPartialCopy 299 -#define kNtErrorOplockNotGranted 300 -#define kNtErrorInvalidOplockProtocol 301 -#define kNtErrorDiskTooFragmented 302 -#define kNtErrorDeletePending 303 -#define kNtErrorIncompatibleWithGlobalShortNameRegistrySetting 304 -#define kNtErrorShortNamesNotEnabledOnVolume 305 -#define kNtErrorSecurityStreamIsInconsistent 306 -#define kNtErrorInvalidLockRange 307 -#define kNtErrorImageSubsystemNotPresent 308 -#define kNtErrorNotificationGuidAlreadyDefined 309 -#define kNtErrorInvalidExceptionHandler 310 -#define kNtErrorDuplicatePrivileges 311 -#define kNtErrorNoRangesProcessed 312 -#define kNtErrorNotAllowedOnSystemFile 313 -#define kNtErrorDiskResourcesExhausted 314 -#define kNtErrorInvalidToken 315 -#define kNtErrorDeviceFeatureNotSupported 316 -#define kNtErrorMrMidNotFound 317 -#define kNtErrorScopeNotFound 318 -#define kNtErrorUndefinedScope 319 -#define kNtErrorInvalidCap 320 -#define kNtErrorDeviceUnreachable 321 -#define kNtErrorDeviceNoResources 322 -#define kNtErrorDataChecksumError 323 -#define kNtErrorIntermixedKernelEaOperation 324 -#define kNtErrorFileLevelTrimNotSupported 326 -#define kNtErrorOffsetAlignmentViolation 327 -#define kNtErrorInvalidFieldInParameterList 328 -#define kNtErrorOperationInProgress 329 -#define kNtErrorBadDevicePath 330 -#define kNtErrorTooManyDescriptors 331 /* ENFILE */ -#define kNtErrorScrubDataDisabled 332 -#define kNtErrorNotRedundantStorage 333 -#define kNtErrorResidentFileNotSupported 334 -#define kNtErrorCompressedFileNotSupported 335 -#define kNtErrorDirectoryNotSupported 336 /* EISDIR */ -#define kNtErrorNotReadFromCopy 337 -#define kNtErrorFtWriteFailure 338 -#define kNtErrorFtDiScanRequired 339 -#define kNtErrorInvalidKernelInfoVersion 340 -#define kNtErrorInvalidPepInfoVersion 341 -#define kNtErrorObjectNotExternallyBacked 342 -#define kNtErrorExternalBackingProviderUnknown 343 -#define kNtErrorCompressionNotBeneficial 344 -#define kNtErrorStorageTopologyIdMismatch 345 -#define kNtErrorBlockedByParentalControls 346 -#define kNtErrorBlockTooManyReferences 347 -#define kNtErrorMarkedToDisallowWrites 348 -#define kNtErrorEnclaveFailure 349 -#define kNtErrorFailNoactionReboot 350 -#define kNtErrorFailShutdown 351 -#define kNtErrorFailRestart 352 -#define kNtErrorMaxSessionsReached 353 -#define kNtErrorNetworkAccessDeniedEdp 354 -#define kNtErrorDeviceHintNameBufferTooSmall 355 -#define kNtErrorEdpPolicyDeniesOperation 356 -#define kNtErrorEdpDplPolicyCantBeSatisfied 357 -#define kNtErrorCloudFileSyncRootMetadataCorrupt 358 -#define kNtErrorDeviceInMaintenance 359 -#define kNtErrorNotSupportedOnDax 360 -#define kNtErrorDaxMappingExists 361 -#define kNtErrorCloudFileProviderNotRunning 362 -#define kNtErrorCloudFileMetadataCorrupt 363 -#define kNtErrorCloudFileMetadataTooLarge 364 -#define kNtErrorCloudFilePropertyBlobTooLarge 365 -#define kNtErrorCloudFilePropertyBlobChecksumMismatch 366 -#define kNtErrorChildProcessBlocked 367 -#define kNtErrorStorageLostDataPersistence 368 -#define kNtErrorFileSystemVirtualizationUnavailable 369 -#define kNtErrorFileSystemVirtualizationMetadataCorrupt 370 -#define kNtErrorFileSystemVirtualizationBusy 371 -#define kNtErrorFileSystemVirtualizationProviderUnknown 372 -#define kNtErrorGdiHandleLeak 373 -#define kNtErrorCloudFileTooManyPropertyBlobs 374 -#define kNtErrorCloudFilePropertyVersionNotSupported 375 -#define kNtErrorNotACloudFile 376 -#define kNtErrorCloudFileNotInSync 377 -#define kNtErrorCloudFileAlreadyConnected 378 -#define kNtErrorCloudFileNotSupported 379 -#define kNtErrorCloudFileInvalidRequest 380 -#define kNtErrorCloudFileReadOnlyVolume 381 -#define kNtErrorCloudFileConnectedProviderOnly 382 -#define kNtErrorCloudFileValidationFailed 383 -#define kNtErrorSmb1NotAvailable 384 -#define kNtErrorFileSystemVirtualizationInvalidOperation 385 -#define kNtErrorCloudFileAuthenticationFailed 386 -#define kNtErrorCloudFileInsufficientResources 387 -#define kNtErrorCloudFileNetworkUnavailable 388 -#define kNtErrorCloudFileUnsuccessful 389 -#define kNtErrorCloudFileNotUnderSyncRoot 390 -#define kNtErrorCloudFileInUse 391 -#define kNtErrorCloudFilePinned 392 -#define kNtErrorCloudFileRequestAborted 393 -#define kNtErrorCloudFilePropertyCorrupt 394 -#define kNtErrorCloudFileAccessDenied 395 -#define kNtErrorCloudFileIncompatibleHardlinks 396 -#define kNtErrorCloudFilePropertyLockConflict 397 -#define kNtErrorCloudFileRequestCanceled 398 -#define kNtErrorExternalSyskeyNotSupported 399 -#define kNtErrorThreadModeAlreadyBackground 400 -#define kNtErrorThreadModeNotBackground 401 -#define kNtErrorProcessModeAlreadyBackground 402 -#define kNtErrorProcessModeNotBackground 403 -#define kNtErrorCloudFileProviderTerminated 404 -#define kNtErrorNotACloudSyncRoot 405 -#define kNtErrorFileProtectedUnderDpl 406 -#define kNtErrorVolumeNotClusterAligned 407 -#define kNtErrorNoPhysicallyAlignedFreeSpaceFound 408 -#define kNtErrorAppxFileNotEncrypted 409 -#define kNtErrorRwrawEncryptedFileNotEncrypted 410 -#define kNtErrorRwrawEncryptedInvalidEdatainfoFileoffset 411 -#define kNtErrorRwrawEncryptedInvalidEdatainfoFilerange 412 -#define kNtErrorRwrawEncryptedInvalidEdatainfoParameter 413 -#define kNtErrorLinuxSubsystemNotPresent 414 -#define kNtErrorCapauthzNotDevunlocked 450 -#define kNtErrorCapauthzChangeType 451 -#define kNtErrorCapauthzNotProvisioned 452 -#define kNtErrorCapauthzNotAuthorized 453 -#define kNtErrorCapauthzNoPolicy 454 -#define kNtErrorCapauthzDbCorrupted 455 -#define kNtErrorCapauthzSccdInvalidCatalog 456 -#define kNtErrorCapauthzSccdNoAuthEntity 457 -#define kNtErrorCapauthzSccdParseError 458 -#define kNtErrorCapauthzSccdDevModeRequired 459 -#define kNtErrorCapauthzSccdNoCapabilityMatch 460 -#define kNtErrorPnpQueryRemoveDeviceTimeout 480 -#define kNtErrorPnpQueryRemoveRelatedDeviceTimeout 481 -#define kNtErrorPnpQueryRemoveUnrelatedDeviceTimeout 482 -#define kNtErrorDeviceHardwareError 483 -#define kNtErrorInvalidAddress 487 /* EFAULT */ -#define kNtErrorVrfCfgEnabled 1183 -#define kNtErrorPartitionTerminating 1184 -#define kNtErrorUserProfileLoad 500 -#define kNtErrorArithmeticOverflow 534 -#define kNtErrorPipeConnected 535 -#define kNtErrorPipeListening 536 -#define kNtErrorVerifierStop 537 -#define kNtErrorAbiosError 538 -#define kNtErrorWx86Warning 539 -#define kNtErrorWx86Error 540 -#define kNtErrorTimerNotCanceled 541 -#define kNtErrorUnwind 542 -#define kNtErrorBadStack 543 -#define kNtErrorInvalidUnwindTarget 544 -#define kNtErrorInvalidPortAttributes 545 -#define kNtErrorPortMessageTooLong 546 -#define kNtErrorInvalidQuotaLower 547 -#define kNtErrorDeviceAlreadyAttached 548 -#define kNtErrorInstructionMisalignment 549 -#define kNtErrorProfilingNotStarted 550 -#define kNtErrorProfilingNotStopped 551 -#define kNtErrorCouldNotInterpret 552 -#define kNtErrorProfilingAtLimit 553 -#define kNtErrorCantWait 554 -#define kNtErrorCantTerminateSelf 555 -#define kNtErrorUnexpectedMmCreateErr 556 -#define kNtErrorUnexpectedMmMapError 557 -#define kNtErrorUnexpectedMmExtendErr 558 -#define kNtErrorBadFunctionTable 559 -#define kNtErrorNoGuidTranslation 560 -#define kNtErrorInvalidLdtSize 561 -#define kNtErrorInvalidLdtOffset 563 -#define kNtErrorInvalidLdtDescriptor 564 -#define kNtErrorTooManyThreads 565 -#define kNtErrorThreadNotInProcess 566 /* ESRCH */ -#define kNtErrorPagefileQuotaExceeded 567 -#define kNtErrorLogonServerConflict 568 -#define kNtErrorSynchronizationRequired 569 -#define kNtErrorNetOpenFailed 570 -#define kNtErrorIoPrivilegeFailed 571 -#define kNtErrorControlCExit 572 -#define kNtErrorMissingSystemfile 573 -#define kNtErrorUnhandledException 574 -#define kNtErrorAppInitFailure 575 -#define kNtErrorPagefileCreateFailed 576 -#define kNtErrorInvalidImageHash 577 -#define kNtErrorNoPagefile 578 -#define kNtErrorIllegalFloatContext 579 -#define kNtErrorNoEventPair 580 -#define kNtErrorDomainCtrlrConfigError 581 -#define kNtErrorIllegalCharacter 582 -#define kNtErrorUndefinedCharacter 583 -#define kNtErrorFloppyVolume 584 -#define kNtErrorBiosFailedToConnectInterrupt 585 -#define kNtErrorBackupController 586 -#define kNtErrorMutantLimitExceeded 587 -#define kNtErrorFsDriverRequired 588 -#define kNtErrorCannotLoadRegistryFile 589 -#define kNtErrorDebugAttachFailed 590 -#define kNtErrorSystemProcessTerminated 591 -#define kNtErrorDataNotAccepted 592 -#define kNtErrorVdmHardError 593 -#define kNtErrorDriverCancelTimeout 594 -#define kNtErrorReplyMessageMismatch 595 -#define kNtErrorLostWritebehindData 596 -#define kNtErrorClientServerParametersInvalid 597 -#define kNtErrorNotTinyStream 598 -#define kNtErrorStackOverflowRead 599 -#define kNtErrorConvertToLarge 600 -#define kNtErrorFoundOutOfScope 601 -#define kNtErrorAllocateBucket 602 -#define kNtErrorMarshallOverflow 603 -#define kNtErrorInvalidVariant 604 -#define kNtErrorBadCompressionBuffer 605 -#define kNtErrorAuditFailed 606 -#define kNtErrorTimerResolutionNotSet 607 -#define kNtErrorInsufficientLogonInfo 608 -#define kNtErrorBadDllEntrypoint 609 -#define kNtErrorBadServiceEntrypoint 610 -#define kNtErrorIpAddressConflict1 611 -#define kNtErrorIpAddressConflict2 612 -#define kNtErrorRegistryQuotaLimit 613 -#define kNtErrorNoCallbackActive 614 -#define kNtErrorPwdTooShort 615 -#define kNtErrorPwdTooRecent 616 -#define kNtErrorPwdHistoryConflict 617 -#define kNtErrorUnsupportedCompression 618 -#define kNtErrorInvalidHwProfile 619 -#define kNtErrorInvalidPlugplayDevicePath 620 -#define kNtErrorQuotaListInconsistent 621 -#define kNtErrorEvaluationExpiration 622 -#define kNtErrorIllegalDllRelocation 623 -#define kNtErrorDllInitFailedLogoff 624 -#define kNtErrorValidateContinue 625 -#define kNtErrorNoMoreMatches 626 -#define kNtErrorRangeListConflict 627 -#define kNtErrorServerSidMismatch 628 -#define kNtErrorCantEnableDenyOnly 629 -#define kNtErrorFloatMultipleFaults 630 -#define kNtErrorFloatMultipleTraps 631 -#define kNtErrorNointerface 632 -#define kNtErrorDriverFailedSleep 633 -#define kNtErrorCorruptSystemFile 634 -#define kNtErrorCommitmentMinimum 635 -#define kNtErrorPnpRestartEnumeration 636 -#define kNtErrorSystemImageBadSignature 637 -#define kNtErrorPnpRebootRequired 638 -#define kNtErrorInsufficientPower 639 -#define kNtErrorMultipleFaultViolation 640 -#define kNtErrorSystemShutdown 641 -#define kNtErrorPortNotSet 642 -#define kNtErrorDsVersionCheckFailure 643 -#define kNtErrorRangeNotFound 644 -#define kNtErrorNotSafeModeDriver 646 -#define kNtErrorFailedDriverEntry 647 -#define kNtErrorDeviceEnumerationError 648 -#define kNtErrorMountPointNotResolved 649 -#define kNtErrorInvalidDeviceObjectParameter 650 -#define kNtErrorMcaOccured 651 -#define kNtErrorDriverDatabaseError 652 -#define kNtErrorSystemHiveTooLarge 653 -#define kNtErrorDriverFailedPriorUnload 654 -#define kNtErrorVolsnapPrepareHibernate 655 -#define kNtErrorHibernationFailure 656 -#define kNtErrorPwdTooLong 657 -#define kNtErrorFileSystemLimitation 665 -#define kNtErrorAssertionFailure 668 -#define kNtErrorAcpiError 669 -#define kNtErrorWowAssertion 670 -#define kNtErrorPnpBadMpsTable 671 -#define kNtErrorPnpTranslationFailed 672 -#define kNtErrorPnpIrqTranslationFailed 673 -#define kNtErrorPnpInvalidId 674 -#define kNtErrorWakeSystemDebugger 675 -#define kNtErrorHandlesClosed 676 -#define kNtErrorExtraneousInformation 677 -#define kNtErrorRxactCommitNecessary 678 -#define kNtErrorMediaCheck 679 -#define kNtErrorGuidSubstitutionMade 680 -#define kNtErrorStoppedOnSymlink 681 -#define kNtErrorLongjump 682 -#define kNtErrorPlugplayQueryVetoed 683 -#define kNtErrorUnwindConsolidate 684 -#define kNtErrorRegistryHiveRecovered 685 -#define kNtErrorDllMightBeInsecure 686 -#define kNtErrorDllMightBeIncompatible 687 -#define kNtErrorDbgExceptionNotHandled 688 -#define kNtErrorDbgReplyLater 689 -#define kNtErrorDbgUnableToProvideHandle 690 -#define kNtErrorDbgTerminateThread 691 -#define kNtErrorDbgTerminateProcess 692 -#define kNtErrorDbgControlC 693 -#define kNtErrorDbgPrintexceptionC 694 -#define kNtErrorDbgRipexception 695 -#define kNtErrorDbgControlBreak 696 -#define kNtErrorDbgCommandException 697 -#define kNtErrorObjectNameExists 698 -#define kNtErrorThreadWasSuspended 699 -#define kNtErrorImageNotAtBase 700 -#define kNtErrorRxactStateCreated 701 -#define kNtErrorSegmentNotification 702 -#define kNtErrorBadCurrentDirectory 703 -#define kNtErrorFtReadRecoveryFromBackup 704 -#define kNtErrorFtWriteRecovery 705 -#define kNtErrorImageMachineTypeMismatch 706 -#define kNtErrorReceivePartial 707 -#define kNtErrorReceiveExpedited 708 -#define kNtErrorReceivePartialExpedited 709 -#define kNtErrorEventDone 710 -#define kNtErrorEventPending 711 -#define kNtErrorCheckingFileSystem 712 -#define kNtErrorFatalAppExit 713 -#define kNtErrorPredefinedHandle 714 -#define kNtErrorWasUnlocked 715 -#define kNtErrorServiceNotification 716 -#define kNtErrorWasLocked 717 -#define kNtErrorLogHardError 718 -#define kNtErrorAlreadyWin32 719 -#define kNtErrorImageMachineTypeMismatchExe 720 -#define kNtErrorNoYieldPerformed 721 -#define kNtErrorTimerResumeIgnored 722 -#define kNtErrorArbitrationUnhandled 723 -#define kNtErrorCardbusNotSupported 724 -#define kNtErrorMpProcessorMismatch 725 -#define kNtErrorHibernated 726 -#define kNtErrorResumeHibernation 727 -#define kNtErrorFirmwareUpdated 728 -#define kNtErrorDriversLeakingLockedPages 729 -#define kNtErrorWakeSystem 730 -#define kNtErrorWait_1 731 -#define kNtErrorWait_2 732 -#define kNtErrorWait_3 733 -#define kNtErrorWait_63 734 -#define kNtErrorAbandonedWait_0 735 -#define kNtErrorAbandonedWait_63 736 -#define kNtErrorUserApc 737 -#define kNtErrorKernelApc 738 -#define kNtErrorAlerted 739 -#define kNtErrorElevationRequired 740 -#define kNtErrorReparse 741 -#define kNtErrorOplockBreakInProgress 742 -#define kNtErrorVolumeMounted 743 -#define kNtErrorRxactCommitted 744 -#define kNtErrorNotifyCleanup 745 -#define kNtErrorPrimaryTransportConnectFailed 746 -#define kNtErrorPageFaultTransition 747 -#define kNtErrorPageFaultDemandZero 748 -#define kNtErrorPageFaultCopyOnWrite 749 -#define kNtErrorPageFaultGuardPage 750 -#define kNtErrorPageFaultPagingFile 751 -#define kNtErrorCachePageLocked 752 -#define kNtErrorCrashDump 753 -#define kNtErrorBufferAllZeros 754 -#define kNtErrorReparseObject 755 -#define kNtErrorResourceRequirementsChanged 756 -#define kNtErrorTranslationComplete 757 -#define kNtErrorNothingToTerminate 758 -#define kNtErrorProcessNotInJob 759 -#define kNtErrorProcessInJob 760 -#define kNtErrorVolsnapHibernateReady 761 -#define kNtErrorFsfilterOpCompletedSuccessfully 762 -#define kNtErrorInterruptVectorAlreadyConnected 763 -#define kNtErrorInterruptStillConnected 764 -#define kNtErrorWaitForOplock 765 -#define kNtErrorDbgExceptionHandled 766 -#define kNtErrorDbgContinue 767 -#define kNtErrorCallbackPopStack 768 -#define kNtErrorCompressionDisabled 769 -#define kNtErrorCantfetchbackwards 770 -#define kNtErrorCantscrollbackwards 771 -#define kNtErrorRowsnotreleased 772 -#define kNtErrorBadAccessorFlags 773 -#define kNtErrorErrorsEncountered 774 -#define kNtErrorNotCapable 775 -#define kNtErrorRequestOutOfSequence 776 -#define kNtErrorVersionParseError 777 -#define kNtErrorBadstartposition 778 -#define kNtErrorMemoryHardware 779 -#define kNtErrorDiskRepairDisabled 780 -#define kNtErrorInsufficientResourceForSpecifiedSharedSectionSize 781 -#define kNtErrorSystemPowerstateTransition 782 -#define kNtErrorSystemPowerstateComplexTransition 783 -#define kNtErrorMcaException 784 -#define kNtErrorAccessAuditByPolicy 785 -#define kNtErrorAccessDisabledNoSaferUiByPolicy 786 -#define kNtErrorAbandonHiberfile 787 -#define kNtErrorLostWritebehindDataNetworkDisconnected 788 -#define kNtErrorLostWritebehindDataNetworkServerError 789 -#define kNtErrorLostWritebehindDataLocalDiskError 790 -#define kNtErrorBadMcfgTable 791 -#define kNtErrorDiskRepairRedirected 792 -#define kNtErrorDiskRepairUnsuccessful 793 -#define kNtErrorCorruptLogOverfull 794 -#define kNtErrorCorruptLogCorrupted 795 -#define kNtErrorCorruptLogUnavailable 796 -#define kNtErrorCorruptLogDeletedFull 797 -#define kNtErrorCorruptLogCleared 798 -#define kNtErrorOrphanNameExhausted 799 -#define kNtErrorOplockSwitchedToNewHandle 800 -#define kNtErrorCannotGrantRequestedOplock 801 -#define kNtErrorCannotBreakOplock 802 -#define kNtErrorOplockHandleClosed 803 -#define kNtErrorNoAceCondition 804 -#define kNtErrorInvalidAceCondition 805 -#define kNtErrorFileHandleRevoked 806 -#define kNtErrorImageAtDifferentBase 807 -#define kNtErrorEncryptedIoNotPossible 808 -#define kNtErrorFileMetadataOptimizationInProgress 809 -#define kNtErrorQuotaActivity 810 -#define kNtErrorHandleRevoked 811 -#define kNtErrorCallbackInvokeInline 812 -#define kNtErrorCpuSetInvalid 813 -#define kNtErrorEnclaveNotTerminated 814 -#define kNtErrorEnclaveViolation 815 -#define kNtErrorEaAccessDenied 994 -#define kNtErrorOperationAborted 995 -#define kNtErrorIoIncomplete 996 -#define kNtErrorIoPending 997 -#define kNtErrorNoaccess 998 -#define kNtErrorSwaperror 999 -#define kNtErrorStackOverflow 1001 -#define kNtErrorInvalidMessage 1002 -#define kNtErrorCanNotComplete 1003 -#define kNtErrorInvalidFlags 1004 -#define kNtErrorUnrecognizedVolume 1005 -#define kNtErrorFileInvalid 1006 -#define kNtErrorFullscreenMode 1007 -#define kNtErrorNoToken 1008 -#define kNtErrorBaddb 1009 -#define kNtErrorBadkey 1010 -#define kNtErrorCantopen 1011 -#define kNtErrorCantread 1012 -#define kNtErrorCantwrite 1013 -#define kNtErrorRegistryRecovered 1014 -#define kNtErrorRegistryCorrupt 1015 -#define kNtErrorRegistryIoFailed 1016 -#define kNtErrorNotRegistryFile 1017 -#define kNtErrorKeyDeleted 1018 -#define kNtErrorNoLogSpace 1019 -#define kNtErrorKeyHasChildren 1020 -#define kNtErrorChildMustBeVolatile 1021 -#define kNtErrorNotifyEnumDir 1022 -#define kNtErrorDependentServicesRunning 1051 -#define kNtErrorInvalidServiceControl 1052 -#define kNtErrorServiceRequestTimeout 1053 -#define kNtErrorServiceNoThread 1054 -#define kNtErrorServiceDatabaseLocked 1055 -#define kNtErrorServiceAlreadyRunning 1056 -#define kNtErrorInvalidServiceAccount 1057 -#define kNtErrorServiceDisabled 1058 -#define kNtErrorCircularDependency 1059 -#define kNtErrorServiceDoesNotExist 1060 -#define kNtErrorServiceCannotAcceptCtrl 1061 -#define kNtErrorServiceNotActive 1062 -#define kNtErrorFailedServiceControllerConnect 1063 -#define kNtErrorExceptionInService 1064 -#define kNtErrorDatabaseDoesNotExist 1065 -#define kNtErrorServiceSpecificError 1066 -#define kNtErrorProcessAborted 1067 -#define kNtErrorServiceDependencyFail 1068 -#define kNtErrorServiceLogonFailed 1069 -#define kNtErrorServiceStartHang 1070 -#define kNtErrorInvalidServiceLock 1071 -#define kNtErrorServiceMarkedForDelete 1072 -#define kNtErrorServiceExists 1073 -#define kNtErrorAlreadyRunningLkg 1074 -#define kNtErrorServiceDependencyDeleted 1075 -#define kNtErrorBootAlreadyAccepted 1076 -#define kNtErrorServiceNeverStarted 1077 -#define kNtErrorDuplicateServiceName 1078 -#define kNtErrorDifferentServiceAccount 1079 -#define kNtErrorCannotDetectDriverFailure 1080 -#define kNtErrorCannotDetectProcessAbort 1081 -#define kNtErrorNoRecoveryProgram 1082 -#define kNtErrorServiceNotInExe 1083 -#define kNtErrorNotSafebootService 1084 -#define kNtErrorEndOfMedia 1100 -#define kNtErrorFilemarkDetected 1101 -#define kNtErrorBeginningOfMedia 1102 -#define kNtErrorSetmarkDetected 1103 -#define kNtErrorNoDataDetected 1104 -#define kNtErrorPartitionFailure 1105 -#define kNtErrorInvalidBlockLength 1106 -#define kNtErrorDeviceNotPartitioned 1107 -#define kNtErrorUnableToLockMedia 1108 -#define kNtErrorUnableToUnloadMedia 1109 -#define kNtErrorMediaChanged 1110 -#define kNtErrorBusReset 1111 -#define kNtErrorNoMediaInDrive 1112 /* ENXIO */ -#define kNtErrorNoUnicodeTranslation 1113 -#define kNtErrorDllInitFailed 1114 -#define kNtErrorShutdownInProgress 1115 -#define kNtErrorNoShutdownInProgress 1116 -#define kNtErrorIoDevice 1117 /* EIO */ -#define kNtErrorSerialNoDevice 1118 /* ENOTTY */ -#define kNtErrorIrqBusy 1119 -#define kNtErrorMoreWrites 1120 -#define kNtErrorCounterTimeout 1121 -#define kNtErrorFloppyIdMarkNotFound 1122 -#define kNtErrorFloppyWrongCylinder 1123 -#define kNtErrorFloppyUnknownError 1124 -#define kNtErrorFloppyBadRegisters 1125 -#define kNtErrorDiskRecalibrateFailed 1126 -#define kNtErrorDiskOperationFailed 1127 -#define kNtErrorDiskResetFailed 1128 -#define kNtErrorEomOverflow 1129 -#define kNtErrorNotEnoughServerMemory 1130 -#define kNtErrorPossibleDeadlock 1131 /* EDEADLK */ -#define kNtErrorMappedAlignment 1132 -#define kNtErrorSetPowerStateVetoed 1140 -#define kNtErrorSetPowerStateFailed 1141 -#define kNtErrorTooManyLinks 1142 -#define kNtErrorOldWinVersion 1150 -#define kNtErrorAppWrongOs 1151 -#define kNtErrorSingleInstanceApp 1152 -#define kNtErrorRmodeApp 1153 -#define kNtErrorInvalidDll 1154 -#define kNtErrorNoAssociation 1155 -#define kNtErrorDdeFail 1156 -#define kNtErrorDllNotFound 1157 -#define kNtErrorNoMoreUserHandles 1158 -#define kNtErrorMessageSyncOnly 1159 -#define kNtErrorSourceElementEmpty 1160 -#define kNtErrorDestinationElementFull 1161 -#define kNtErrorIllegalElementAddress 1162 -#define kNtErrorMagazineNotPresent 1163 -#define kNtErrorDeviceReinitializationNeeded 1164 -#define kNtErrorDeviceRequiresCleaning 1165 -#define kNtErrorDeviceDoorOpen 1166 -#define kNtErrorDeviceNotConnected 1167 -#define kNtErrorNotFound 1168 -#define kNtErrorNoMatch 1169 -#define kNtErrorSetNotFound 1170 -#define kNtErrorPointNotFound 1171 -#define kNtErrorNoTrackingService 1172 -#define kNtErrorNoVolumeId 1173 -#define kNtErrorUnableToRemoveReplaced 1175 -#define kNtErrorUnableToMoveReplacement 1176 -#define kNtErrorUnableToMoveReplacement_2 1177 -#define kNtErrorJournalDeleteInProgress 1178 -#define kNtErrorJournalNotActive 1179 -#define kNtErrorPotentialFileFound 1180 -#define kNtErrorJournalEntryDeleted 1181 -#define kNtErrorShutdownIsScheduled 1190 -#define kNtErrorShutdownUsersLoggedOn 1191 -#define kNtErrorBadDevice 1200 /* ENODEV */ -#define kNtErrorConnectionUnavail 1201 -#define kNtErrorDeviceAlreadyRemembered 1202 -#define kNtErrorNoNetOrBadPath 1203 -#define kNtErrorBadProvider 1204 -#define kNtErrorCannotOpenProfile 1205 -#define kNtErrorBadProfile 1206 -#define kNtErrorNotContainer 1207 -#define kNtErrorExtendedError 1208 -#define kNtErrorInvalidGroupname 1209 -#define kNtErrorInvalidComputername 1210 -#define kNtErrorInvalidEventname 1211 -#define kNtErrorInvalidDomainname 1212 -#define kNtErrorInvalidServicename 1213 -#define kNtErrorInvalidNetname 1214 -#define kNtErrorInvalidSharename 1215 -#define kNtErrorInvalidPasswordname 1216 -#define kNtErrorInvalidMessagename 1217 -#define kNtErrorInvalidMessagedest 1218 -#define kNtErrorSessionCredentialConflict 1219 -#define kNtErrorRemoteSessionLimitExceeded 1220 -#define kNtErrorDupDomainname 1221 -#define kNtErrorNoNetwork 1222 -#define kNtErrorCancelled 1223 -#define kNtErrorUserMappedFile 1224 -#define kNtErrorConnectionRefused 1225 -#define kNtErrorGracefulDisconnect 1226 -#define kNtErrorAddressAlreadyAssociated 1227 -#define kNtErrorAddressNotAssociated 1228 -#define kNtErrorConnectionInvalid 1229 -#define kNtErrorConnectionActive 1230 -#define kNtErrorNetworkUnreachable 1231 -#define kNtErrorHostUnreachable 1232 -#define kNtErrorProtocolUnreachable 1233 -#define kNtErrorPortUnreachable 1234 -#define kNtErrorRequestAborted 1235 -#define kNtErrorConnectionAborted 1236 -#define kNtErrorRetry 1237 -#define kNtErrorConnectionCountLimit 1238 -#define kNtErrorLoginTimeRestriction 1239 -#define kNtErrorLoginWkstaRestriction 1240 -#define kNtErrorIncorrectAddress 1241 -#define kNtErrorAlreadyRegistered 1242 -#define kNtErrorServiceNotFound 1243 -#define kNtErrorNotAuthenticated 1244 -#define kNtErrorNotLoggedOn 1245 -#define kNtErrorContinue 1246 -#define kNtErrorAlreadyInitialized 1247 -#define kNtErrorNoMoreDevices 1248 -#define kNtErrorNoSuchSite 1249 -#define kNtErrorDomainControllerExists 1250 -#define kNtErrorOnlyIfConnected 1251 -#define kNtErrorOverrideNochanges 1252 -#define kNtErrorBadUserProfile 1253 -#define kNtErrorNotSupportedOnSbs 1254 -#define kNtErrorServerShutdownInProgress 1255 -#define kNtErrorHostDown 1256 -#define kNtErrorNonAccountSid 1257 -#define kNtErrorNonDomainSid 1258 -#define kNtErrorApphelpBlock 1259 -#define kNtErrorAccessDisabledByPolicy 1260 -#define kNtErrorRegNatConsumption 1261 -#define kNtErrorCscshareOffline 1262 -#define kNtErrorPkinitFailure 1263 -#define kNtErrorSmartcardSubsystemFailure 1264 -#define kNtErrorDowngradeDetected 1265 -#define kNtErrorMachineLocked 1271 -#define kNtErrorSmbGuestLogonBlocked 1272 -#define kNtErrorCallbackSuppliedInvalidData 1273 -#define kNtErrorSyncForegroundRefreshRequired 1274 -#define kNtErrorDriverBlocked 1275 -#define kNtErrorInvalidImportOfNonDll 1276 -#define kNtErrorAccessDisabledWebblade 1277 -#define kNtErrorAccessDisabledWebbladeTamper 1278 -#define kNtErrorRecoveryFailure 1279 -#define kNtErrorAlreadyFiber 1280 -#define kNtErrorAlreadyThread 1281 -#define kNtErrorStackBufferOverrun 1282 -#define kNtErrorParameterQuotaExceeded 1283 -#define kNtErrorDebuggerInactive 1284 -#define kNtErrorDelayLoadFailed 1285 -#define kNtErrorVdmDisallowed 1286 -#define kNtErrorUnidentifiedError 1287 -#define kNtErrorInvalidCruntimeParameter 1288 -#define kNtErrorBeyondVdl 1289 -#define kNtErrorIncompatibleServiceSidType 1290 -#define kNtErrorDriverProcessTerminated 1291 -#define kNtErrorImplementationLimit 1292 -#define kNtErrorProcessIsProtected 1293 -#define kNtErrorServiceNotifyClientLagging 1294 -#define kNtErrorDiskQuotaExceeded 1295 -#define kNtErrorContentBlocked 1296 -#define kNtErrorIncompatibleServicePrivilege 1297 -#define kNtErrorAppHang 1298 -#define kNtErrorInvalidLabel 1299 -#define kNtErrorNotAllAssigned 1300 -#define kNtErrorSomeNotMapped 1301 -#define kNtErrorNoQuotasForAccount 1302 -#define kNtErrorLocalUserSessionKey 1303 -#define kNtErrorNullLmPassword 1304 -#define kNtErrorUnknownRevision 1305 -#define kNtErrorRevisionMismatch 1306 -#define kNtErrorInvalidOwner 1307 -#define kNtErrorInvalidPrimaryGroup 1308 -#define kNtErrorNoImpersonationToken 1309 -#define kNtErrorCantDisableMandatory 1310 -#define kNtErrorNoLogonServers 1311 -#define kNtErrorNoSuchLogonSession 1312 -#define kNtErrorNoSuchPrivilege 1313 -#define kNtErrorPrivilegeNotHeld 1314 -#define kNtErrorInvalidAccountName 1315 -#define kNtErrorUserExists 1316 -#define kNtErrorNoSuchUser 1317 -#define kNtErrorGroupExists 1318 -#define kNtErrorNoSuchGroup 1319 -#define kNtErrorMemberInGroup 1320 -#define kNtErrorMemberNotInGroup 1321 -#define kNtErrorLastAdmin 1322 -#define kNtErrorWrongPassword 1323 -#define kNtErrorIllFormedPassword 1324 -#define kNtErrorPasswordRestriction 1325 -#define kNtErrorLogonFailure 1326 -#define kNtErrorAccountRestriction 1327 -#define kNtErrorInvalidLogonHours 1328 -#define kNtErrorInvalidWorkstation 1329 -#define kNtErrorPasswordExpired 1330 -#define kNtErrorAccountDisabled 1331 -#define kNtErrorNoneMapped 1332 -#define kNtErrorTooManyLuidsRequested 1333 -#define kNtErrorLuidsExhausted 1334 -#define kNtErrorInvalidSubAuthority 1335 -#define kNtErrorInvalidAcl 1336 -#define kNtErrorInvalidSid 1337 -#define kNtErrorInvalidSecurityDescr 1338 -#define kNtErrorBadInheritanceAcl 1340 -#define kNtErrorServerDisabled 1341 -#define kNtErrorServerNotDisabled 1342 -#define kNtErrorInvalidIdAuthority 1343 -#define kNtErrorAllottedSpaceExceeded 1344 -#define kNtErrorInvalidGroupAttributes 1345 -#define kNtErrorBadImpersonationLevel 1346 -#define kNtErrorCantOpenAnonymous 1347 -#define kNtErrorBadValidationClass 1348 -#define kNtErrorBadTokenType 1349 -#define kNtErrorNoSecurityOnObject 1350 -#define kNtErrorCantAccessDomainInfo 1351 -#define kNtErrorInvalidServerState 1352 -#define kNtErrorInvalidDomainState 1353 -#define kNtErrorInvalidDomainRole 1354 -#define kNtErrorNoSuchDomain 1355 -#define kNtErrorDomainExists 1356 -#define kNtErrorDomainLimitExceeded 1357 -#define kNtErrorInternalDbCorruption 1358 -#define kNtErrorInternalError 1359 -#define kNtErrorGenericNotMapped 1360 -#define kNtErrorBadDescriptorFormat 1361 -#define kNtErrorNotLogonProcess 1362 -#define kNtErrorLogonSessionExists 1363 -#define kNtErrorNoSuchPackage 1364 -#define kNtErrorBadLogonSessionState 1365 -#define kNtErrorLogonSessionCollision 1366 -#define kNtErrorInvalidLogonType 1367 -#define kNtErrorCannotImpersonate 1368 -#define kNtErrorRxactInvalidState 1369 -#define kNtErrorRxactCommitFailure 1370 -#define kNtErrorSpecialAccount 1371 -#define kNtErrorSpecialGroup 1372 -#define kNtErrorSpecialUser 1373 -#define kNtErrorMembersPrimaryGroup 1374 -#define kNtErrorTokenAlreadyInUse 1375 -#define kNtErrorNoSuchAlias 1376 -#define kNtErrorMemberNotInAlias 1377 -#define kNtErrorMemberInAlias 1378 -#define kNtErrorAliasExists 1379 -#define kNtErrorLogonNotGranted 1380 -#define kNtErrorTooManySecrets 1381 -#define kNtErrorSecretTooLong 1382 -#define kNtErrorInternalDbError 1383 -#define kNtErrorTooManyContextIds 1384 -#define kNtErrorLogonTypeNotGranted 1385 -#define kNtErrorNtCrossEncryptionRequired 1386 -#define kNtErrorNoSuchMember 1387 -#define kNtErrorInvalidMember 1388 -#define kNtErrorTooManySids 1389 -#define kNtErrorLmCrossEncryptionRequired 1390 -#define kNtErrorNoInheritance 1391 -#define kNtErrorFileCorrupt 1392 -#define kNtErrorDiskCorrupt 1393 -#define kNtErrorNoUserSessionKey 1394 -#define kNtErrorLicenseQuotaExceeded 1395 -#define kNtErrorWrongTargetName 1396 -#define kNtErrorMutualAuthFailed 1397 -#define kNtErrorTimeSkew 1398 -#define kNtErrorCurrentDomainNotAllowed 1399 -#define kNtErrorInvalidWindowHandle 1400 -#define kNtErrorInvalidMenuHandle 1401 -#define kNtErrorInvalidCursorHandle 1402 -#define kNtErrorInvalidAccelHandle 1403 -#define kNtErrorInvalidHookHandle 1404 -#define kNtErrorInvalidDwpHandle 1405 -#define kNtErrorTlwWithWschild 1406 -#define kNtErrorCannotFindWndClass 1407 -#define kNtErrorWindowOfOtherThread 1408 -#define kNtErrorHotkeyAlreadyRegistered 1409 -#define kNtErrorClassAlreadyExists 1410 -#define kNtErrorClassDoesNotExist 1411 -#define kNtErrorClassHasWindows 1412 -#define kNtErrorInvalidIndex 1413 -#define kNtErrorInvalidIconHandle 1414 -#define kNtErrorPrivateDialogIndex 1415 -#define kNtErrorListboxIdNotFound 1416 -#define kNtErrorNoWildcardCharacters 1417 -#define kNtErrorClipboardNotOpen 1418 -#define kNtErrorHotkeyNotRegistered 1419 -#define kNtErrorWindowNotDialog 1420 -#define kNtErrorControlIdNotFound 1421 -#define kNtErrorInvalidComboboxMessage 1422 -#define kNtErrorWindowNotCombobox 1423 -#define kNtErrorInvalidEditHeight 1424 -#define kNtErrorDcNotFound 1425 -#define kNtErrorInvalidHookFilter 1426 -#define kNtErrorInvalidFilterProc 1427 -#define kNtErrorHookNeedsHmod 1428 -#define kNtErrorGlobalOnlyHook 1429 -#define kNtErrorJournalHookSet 1430 -#define kNtErrorHookNotInstalled 1431 -#define kNtErrorInvalidLbMessage 1432 -#define kNtErrorSetcountOnBadLb 1433 -#define kNtErrorLbWithoutTabstops 1434 -#define kNtErrorDestroyObjectOfOtherThread 1435 -#define kNtErrorChildWindowMenu 1436 -#define kNtErrorNoSystemMenu 1437 -#define kNtErrorInvalidMsgboxStyle 1438 -#define kNtErrorInvalidSpiValue 1439 -#define kNtErrorScreenAlreadyLocked 1440 -#define kNtErrorHwndsHaveDiffParent 1441 -#define kNtErrorNotChildWindow 1442 -#define kNtErrorInvalidGwCommand 1443 -#define kNtErrorInvalidThreadId 1444 -#define kNtErrorNonMdichildWindow 1445 -#define kNtErrorPopupAlreadyActive 1446 -#define kNtErrorNoScrollbars 1447 -#define kNtErrorInvalidScrollbarRange 1448 -#define kNtErrorInvalidShowwinCommand 1449 -#define kNtErrorNoSystemResources 1450 -#define kNtErrorNonpagedSystemResources 1451 -#define kNtErrorPagedSystemResources 1452 -#define kNtErrorWorkingSetQuota 1453 -#define kNtErrorPagefileQuota 1454 -#define kNtErrorCommitmentLimit 1455 -#define kNtErrorMenuItemNotFound 1456 -#define kNtErrorInvalidKeyboardHandle 1457 -#define kNtErrorHookTypeNotAllowed 1458 -#define kNtErrorRequiresInteractiveWindowstation 1459 -#define kNtErrorTimeout 1460 -#define kNtErrorInvalidMonitorHandle 1461 -#define kNtErrorIncorrectSize 1462 -#define kNtErrorSymlinkClassDisabled 1463 -#define kNtErrorSymlinkNotSupported 1464 -#define kNtErrorXmlParseError 1465 -#define kNtErrorXmldsigError 1466 -#define kNtErrorRestartApplication 1467 -#define kNtErrorWrongCompartment 1468 -#define kNtErrorAuthipFailure 1469 -#define kNtErrorNoNvramResources 1470 -#define kNtErrorNotGuiProcess 1471 -#define kNtErrorEventlogFileCorrupt 1500 -#define kNtErrorEventlogCantStart 1501 -#define kNtErrorLogFileFull 1502 -#define kNtErrorEventlogFileChanged 1503 -#define kNtErrorContainerAssigned 1504 -#define kNtErrorJobNoContainer 1505 -#define kNtErrorInvalidTaskName 1550 -#define kNtErrorInvalidTaskIndex 1551 -#define kNtErrorThreadAlreadyInTask 1552 -#define kNtErrorInstallServiceFailure 1601 -#define kNtErrorInstallUserexit 1602 -#define kNtErrorInstallFailure 1603 -#define kNtErrorInstallSuspend 1604 -#define kNtErrorUnknownProduct 1605 -#define kNtErrorUnknownFeature 1606 -#define kNtErrorUnknownComponent 1607 -#define kNtErrorUnknownProperty 1608 -#define kNtErrorInvalidHandleState 1609 -#define kNtErrorBadConfiguration 1610 -#define kNtErrorIndexAbsent 1611 -#define kNtErrorInstallSourceAbsent 1612 -#define kNtErrorInstallPackageVersion 1613 -#define kNtErrorProductUninstalled 1614 -#define kNtErrorBadQuerySyntax 1615 -#define kNtErrorInvalidField 1616 -#define kNtErrorDeviceRemoved 1617 -#define kNtErrorInstallAlreadyRunning 1618 -#define kNtErrorInstallPackageOpenFailed 1619 -#define kNtErrorInstallPackageInvalid 1620 -#define kNtErrorInstallUiFailure 1621 -#define kNtErrorInstallLogFailure 1622 -#define kNtErrorInstallLanguageUnsupported 1623 -#define kNtErrorInstallTransformFailure 1624 -#define kNtErrorInstallPackageRejected 1625 -#define kNtErrorFunctionNotCalled 1626 -#define kNtErrorFunctionFailed 1627 -#define kNtErrorInvalidTable 1628 -#define kNtErrorDatatypeMismatch 1629 -#define kNtErrorUnsupportedType 1630 -#define kNtErrorCreateFailed 1631 -#define kNtErrorInstallTempUnwritable 1632 -#define kNtErrorInstallPlatformUnsupported 1633 -#define kNtErrorInstallNotused 1634 -#define kNtErrorPatchPackageOpenFailed 1635 -#define kNtErrorPatchPackageInvalid 1636 -#define kNtErrorPatchPackageUnsupported 1637 -#define kNtErrorProductVersion 1638 -#define kNtErrorInvalidCommandLine 1639 /* E2BIG */ -#define kNtErrorInstallRemoteDisallowed 1640 -#define kNtErrorSuccessRebootInitiated 1641 -#define kNtErrorPatchTargetNotFound 1642 -#define kNtErrorPatchPackageRejected 1643 -#define kNtErrorInstallTransformRejected 1644 -#define kNtErrorInstallRemoteProhibited 1645 -#define kNtErrorPatchRemovalUnsupported 1646 -#define kNtErrorUnknownPatch 1647 -#define kNtErrorPatchNoSequence 1648 -#define kNtErrorPatchRemovalDisallowed 1649 -#define kNtErrorInvalidPatchXml 1650 -#define kNtErrorPatchManagedAdvertisedProduct 1651 -#define kNtErrorInstallServiceSafeboot 1652 -#define kNtErrorFailFastException 1653 -#define kNtErrorInstallRejected 1654 -#define kNtErrorDynamicCodeBlocked 1655 -#define kNtErrorNotSameObject 1656 -#define kNtErrorStrictCfgViolation 1657 -#define kNtErrorSetContextDenied 1660 -#define kNtErrorCrossPartitionViolation 1661 -#define kNtErrorInvalidUserBuffer 1784 -#define kNtErrorUnrecognizedMedia 1785 -#define kNtErrorNoTrustLsaSecret 1786 -#define kNtErrorNoTrustSamAccount 1787 -#define kNtErrorTrustedDomainFailure 1788 -#define kNtErrorTrustedRelationshipFailure 1789 -#define kNtErrorTrustFailure 1790 -#define kNtErrorNetlogonNotStarted 1792 -#define kNtErrorAccountExpired 1793 -#define kNtErrorRedirectorHasOpenHandles 1794 -#define kNtErrorPrinterDriverAlreadyInstalled 1795 -#define kNtErrorUnknownPort 1796 -#define kNtErrorUnknownPrinterDriver 1797 -#define kNtErrorUnknownPrintprocessor 1798 -#define kNtErrorInvalidSeparatorFile 1799 -#define kNtErrorInvalidPriority 1800 -#define kNtErrorInvalidPrinterName 1801 -#define kNtErrorPrinterAlreadyExists 1802 -#define kNtErrorInvalidPrinterCommand 1803 -#define kNtErrorInvalidDatatype 1804 -#define kNtErrorInvalidEnvironment 1805 -#define kNtErrorNologonInterdomainTrustAccount 1807 -#define kNtErrorNologonWorkstationTrustAccount 1808 -#define kNtErrorNologonServerTrustAccount 1809 -#define kNtErrorDomainTrustInconsistent 1810 -#define kNtErrorServerHasOpenHandles 1811 -#define kNtErrorResourceDataNotFound 1812 -#define kNtErrorResourceTypeNotFound 1813 -#define kNtErrorResourceNameNotFound 1814 -#define kNtErrorResourceLangNotFound 1815 -#define kNtErrorNotEnoughQuota 1816 -#define kNtErrorInvalidTime 1901 -#define kNtErrorInvalidFormName 1902 -#define kNtErrorInvalidFormSize 1903 -#define kNtErrorAlreadyWaiting 1904 -#define kNtErrorPrinterDeleted 1905 -#define kNtErrorInvalidPrinterState 1906 -#define kNtErrorPasswordMustChange 1907 -#define kNtErrorDomainControllerNotFound 1908 -#define kNtErrorAccountLockedOut 1909 -#define kNtErrorNoSitename 1919 -#define kNtErrorCantAccessFile 1920 -#define kNtErrorCantResolveFilename 1921 -#define kNtErrorKmDriverBlocked 1930 -#define kNtErrorContextExpired 1931 -#define kNtErrorPerUserTrustQuotaExceeded 1932 -#define kNtErrorAllUserTrustQuotaExceeded 1933 -#define kNtErrorUserDeleteTrustQuotaExceeded 1934 -#define kNtErrorAuthenticationFirewallFailed 1935 -#define kNtErrorRemotePrintConnectionsBlocked 1936 -#define kNtErrorNtlmBlocked 1937 -#define kNtErrorPasswordChangeRequired 1938 -#define kNtErrorLostModeLogonRestriction 1939 -#define kNtErrorInvalidPixelFormat 2000 -#define kNtErrorBadDriver 2001 -#define kNtErrorInvalidWindowStyle 2002 -#define kNtErrorMetafileNotSupported 2003 -#define kNtErrorTransformNotSupported 2004 -#define kNtErrorClippingNotSupported 2005 -#define kNtErrorInvalidCmm 2010 -#define kNtErrorInvalidProfile 2011 -#define kNtErrorTagNotFound 2012 -#define kNtErrorTagNotPresent 2013 -#define kNtErrorDuplicateTag 2014 -#define kNtErrorProfileNotAssociatedWithDevice 2015 -#define kNtErrorProfileNotFound 2016 -#define kNtErrorInvalidColorspace 2017 -#define kNtErrorIcmNotEnabled 2018 -#define kNtErrorDeletingIcmXform 2019 -#define kNtErrorInvalidTransform 2020 -#define kNtErrorColorspaceMismatch 2021 -#define kNtErrorInvalidColorindex 2022 -#define kNtErrorProfileDoesNotMatchDevice 2023 -#define kNtErrorConnectedOtherPassword 2108 -#define kNtErrorConnectedOtherPasswordDefault 2109 -#define kNtErrorBadUsername 2202 -#define kNtErrorNotConnected 2250 -#define kNtErrorOpenFiles 2401 -#define kNtErrorActiveConnections 2402 -#define kNtErrorDeviceInUse 2404 -#define kNtErrorUnknownPrintMonitor 3000 -#define kNtErrorPrinterDriverInUse 3001 -#define kNtErrorSpoolFileNotFound 3002 -#define kNtErrorSplNoStartdoc 3003 -#define kNtErrorSplNoAddjob 3004 -#define kNtErrorPrintProcessorAlreadyInstalled 3005 -#define kNtErrorPrintMonitorAlreadyInstalled 3006 -#define kNtErrorInvalidPrintMonitor 3007 -#define kNtErrorPrintMonitorInUse 3008 -#define kNtErrorPrinterHasJobsQueued 3009 -#define kNtErrorSuccessRebootRequired 3010 -#define kNtErrorSuccessRestartRequired 3011 -#define kNtErrorPrinterNotFound 3012 -#define kNtErrorPrinterDriverWarned 3013 -#define kNtErrorPrinterDriverBlocked 3014 -#define kNtErrorPrinterDriverPackageInUse 3015 -#define kNtErrorCoreDriverPackageNotFound 3016 -#define kNtErrorFailRebootRequired 3017 -#define kNtErrorFailRebootInitiated 3018 -#define kNtErrorPrinterDriverDownloadNeeded 3019 -#define kNtErrorPrintJobRestartRequired 3020 -#define kNtErrorInvalidPrinterDriverManifest 3021 -#define kNtErrorPrinterNotShareable 3022 -#define kNtErrorRequestPaused 3050 -#define kNtErrorAppexecConditionNotSatisfied 3060 -#define kNtErrorAppexecHandleInvalidated 3061 -#define kNtErrorAppexecInvalidHostGeneration 3062 -#define kNtErrorAppexecUnexpectedProcessRegistration 3063 -#define kNtErrorAppexecInvalidHostState 3064 -#define kNtErrorAppexecNoDonor 3065 -#define kNtErrorAppexecHostIdMismatch 3066 -#define kNtErrorIoReissueAsCached 3950 -#define kNtErrorWinsInternal 4000 -#define kNtErrorCanNotDelLocalWins 4001 -#define kNtErrorStaticInit 4002 -#define kNtErrorIncBackup 4003 -#define kNtErrorFullBackup 4004 -#define kNtErrorRecNonExistent 4005 -#define kNtErrorRplNotAllowed 4006 -#define kNtErrorDhcpAddressConflict 4100 -#define kNtErrorWmiGuidNotFound 4200 -#define kNtErrorWmiInstanceNotFound 4201 -#define kNtErrorWmiItemidNotFound 4202 -#define kNtErrorWmiTryAgain 4203 -#define kNtErrorWmiDpNotFound 4204 -#define kNtErrorWmiUnresolvedInstanceRef 4205 -#define kNtErrorWmiAlreadyEnabled 4206 -#define kNtErrorWmiGuidDisconnected 4207 -#define kNtErrorWmiServerUnavailable 4208 -#define kNtErrorWmiDpFailed 4209 -#define kNtErrorWmiInvalidMof 4210 -#define kNtErrorWmiInvalidReginfo 4211 -#define kNtErrorWmiAlreadyDisabled 4212 -#define kNtErrorWmiReadOnly 4213 -#define kNtErrorWmiSetFailure 4214 -#define kNtErrorNotAppcontainer 4250 -#define kNtErrorAppcontainerRequired 4251 -#define kNtErrorNotSupportedInAppcontainer 4252 -#define kNtErrorInvalidPackageSidLength 4253 -#define kNtErrorInvalidMedia 4300 -#define kNtErrorInvalidLibrary 4301 -#define kNtErrorInvalidMediaPool 4302 -#define kNtErrorDriveMediaMismatch 4303 -#define kNtErrorMediaOffline 4304 -#define kNtErrorLibraryOffline 4305 -#define kNtErrorEmpty 4306 -#define kNtErrorNotEmpty 4307 -#define kNtErrorMediaUnavailable 4308 -#define kNtErrorResourceDisabled 4309 -#define kNtErrorInvalidCleaner 4310 -#define kNtErrorUnableToClean 4311 -#define kNtErrorObjectNotFound 4312 -#define kNtErrorDatabaseFailure 4313 -#define kNtErrorDatabaseFull 4314 -#define kNtErrorMediaIncompatible 4315 -#define kNtErrorResourceNotPresent 4316 -#define kNtErrorInvalidOperation 4317 -#define kNtErrorMediaNotAvailable 4318 -#define kNtErrorDeviceNotAvailable 4319 -#define kNtErrorRequestRefused 4320 -#define kNtErrorInvalidDriveObject 4321 -#define kNtErrorLibraryFull 4322 -#define kNtErrorMediumNotAccessible 4323 -#define kNtErrorUnableToLoadMedium 4324 -#define kNtErrorUnableToInventoryDrive 4325 -#define kNtErrorUnableToInventorySlot 4326 -#define kNtErrorUnableToInventoryTransport 4327 -#define kNtErrorTransportFull 4328 -#define kNtErrorControllingIeport 4329 -#define kNtErrorUnableToEjectMountedMedia 4330 -#define kNtErrorCleanerSlotSet 4331 -#define kNtErrorCleanerSlotNotSet 4332 -#define kNtErrorCleanerCartridgeSpent 4333 -#define kNtErrorUnexpectedOmid 4334 -#define kNtErrorCantDeleteLastItem 4335 -#define kNtErrorMessageExceedsMaxSize 4336 -#define kNtErrorVolumeContainsSysFiles 4337 -#define kNtErrorIndigenousType 4338 -#define kNtErrorNoSupportingDrives 4339 -#define kNtErrorCleanerCartridgeInstalled 4340 -#define kNtErrorIeportFull 4341 -#define kNtErrorFileOffline 4350 -#define kNtErrorRemoteStorageNotActive 4351 -#define kNtErrorRemoteStorageMediaError 4352 -#define kNtErrorNotAReparsePoint 4390 -#define kNtErrorReparseAttributeConflict 4391 -#define kNtErrorInvalidReparseData 4392 -#define kNtErrorReparseTagInvalid 4393 -#define kNtErrorReparseTagMismatch 4394 -#define kNtErrorReparsePointEncountered 4395 -#define kNtErrorAppDataNotFound 4400 -#define kNtErrorAppDataExpired 4401 -#define kNtErrorAppDataCorrupt 4402 -#define kNtErrorAppDataLimitExceeded 4403 -#define kNtErrorAppDataRebootRequired 4404 -#define kNtErrorSecurebootRollbackDetected 4420 -#define kNtErrorSecurebootPolicyViolation 4421 -#define kNtErrorSecurebootInvalidPolicy 4422 -#define kNtErrorSecurebootPolicyPublisherNotFound 4423 -#define kNtErrorSecurebootPolicyNotSigned 4424 -#define kNtErrorSecurebootNotEnabled 4425 -#define kNtErrorSecurebootFileReplaced 4426 -#define kNtErrorSecurebootPolicyNotAuthorized 4427 -#define kNtErrorSecurebootPolicyUnknown 4428 -#define kNtErrorSecurebootPolicyMissingAntirollbackversion 4429 -#define kNtErrorSecurebootPlatformIdMismatch 4430 -#define kNtErrorSecurebootPolicyRollbackDetected 4431 -#define kNtErrorSecurebootPolicyUpgradeMismatch 4432 -#define kNtErrorSecurebootRequiredPolicyFileMissing 4433 -#define kNtErrorSecurebootNotBasePolicy 4434 -#define kNtErrorSecurebootNotSupplementalPolicy 4435 -#define kNtErrorOffloadReadFltNotSupported 4440 -#define kNtErrorOffloadWriteFltNotSupported 4441 -#define kNtErrorOffloadReadFileNotSupported 4442 -#define kNtErrorOffloadWriteFileNotSupported 4443 -#define kNtErrorAlreadyHasStreamId 4444 -#define kNtErrorSmrGarbageCollectionRequired 4445 -#define kNtErrorWofWimHeaderCorrupt 4446 -#define kNtErrorWofWimResourceTableCorrupt 4447 -#define kNtErrorWofFileResourceTableCorrupt 4448 -#define kNtErrorVolumeNotSisEnabled 4500 -#define kNtErrorSystemIntegrityRollbackDetected 4550 -#define kNtErrorSystemIntegrityPolicyViolation 4551 -#define kNtErrorSystemIntegrityInvalidPolicy 4552 -#define kNtErrorSystemIntegrityPolicyNotSigned 4553 -#define kNtErrorVsmNotInitialized 4560 -#define kNtErrorVsmDmaProtectionNotInUse 4561 -#define kNtErrorPlatformManifestNotAuthorized 4570 -#define kNtErrorPlatformManifestInvalid 4571 -#define kNtErrorPlatformManifestFileNotAuthorized 4572 -#define kNtErrorPlatformManifestCatalogNotAuthorized 4573 -#define kNtErrorPlatformManifestBinaryIdNotFound 4574 -#define kNtErrorPlatformManifestNotActive 4575 -#define kNtErrorPlatformManifestNotSigned 4576 -#define kNtErrorDependentResourceExists 5001 -#define kNtErrorDependencyNotFound 5002 -#define kNtErrorDependencyAlreadyExists 5003 -#define kNtErrorResourceNotOnline 5004 -#define kNtErrorHostNodeNotAvailable 5005 -#define kNtErrorResourceNotAvailable 5006 -#define kNtErrorResourceNotFound 5007 -#define kNtErrorShutdownCluster 5008 -#define kNtErrorCantEvictActiveNode 5009 -#define kNtErrorObjectAlreadyExists 5010 -#define kNtErrorObjectInList 5011 -#define kNtErrorGroupNotAvailable 5012 -#define kNtErrorGroupNotFound 5013 -#define kNtErrorGroupNotOnline 5014 -#define kNtErrorHostNodeNotResourceOwner 5015 -#define kNtErrorHostNodeNotGroupOwner 5016 -#define kNtErrorResmonCreateFailed 5017 -#define kNtErrorResmonOnlineFailed 5018 -#define kNtErrorResourceOnline 5019 -#define kNtErrorQuorumResource 5020 -#define kNtErrorNotQuorumCapable 5021 -#define kNtErrorClusterShuttingDown 5022 -#define kNtErrorInvalidState 5023 -#define kNtErrorResourcePropertiesStored 5024 -#define kNtErrorNotQuorumClass 5025 -#define kNtErrorCoreResource 5026 -#define kNtErrorQuorumResourceOnlineFailed 5027 -#define kNtErrorQuorumlogOpenFailed 5028 -#define kNtErrorClusterlogCorrupt 5029 -#define kNtErrorClusterlogRecordExceedsMaxsize 5030 -#define kNtErrorClusterlogExceedsMaxsize 5031 -#define kNtErrorClusterlogChkpointNotFound 5032 -#define kNtErrorClusterlogNotEnoughSpace 5033 -#define kNtErrorQuorumOwnerAlive 5034 -#define kNtErrorNetworkNotAvailable 5035 -#define kNtErrorNodeNotAvailable 5036 -#define kNtErrorAllNodesNotAvailable 5037 -#define kNtErrorResourceFailed 5038 -#define kNtErrorClusterInvalidNode 5039 -#define kNtErrorClusterNodeExists 5040 -#define kNtErrorClusterJoinInProgress 5041 -#define kNtErrorClusterNodeNotFound 5042 -#define kNtErrorClusterLocalNodeNotFound 5043 -#define kNtErrorClusterNetworkExists 5044 -#define kNtErrorClusterNetworkNotFound 5045 -#define kNtErrorClusterNetinterfaceExists 5046 -#define kNtErrorClusterNetinterfaceNotFound 5047 -#define kNtErrorClusterInvalidRequest 5048 -#define kNtErrorClusterInvalidNetworkProvider 5049 -#define kNtErrorClusterNodeDown 5050 -#define kNtErrorClusterNodeUnreachable 5051 -#define kNtErrorClusterNodeNotMember 5052 -#define kNtErrorClusterJoinNotInProgress 5053 -#define kNtErrorClusterInvalidNetwork 5054 -#define kNtErrorClusterNodeUp 5056 -#define kNtErrorClusterIpaddrInUse 5057 -#define kNtErrorClusterNodeNotPaused 5058 -#define kNtErrorClusterNoSecurityContext 5059 -#define kNtErrorClusterNetworkNotInternal 5060 -#define kNtErrorClusterNodeAlreadyUp 5061 -#define kNtErrorClusterNodeAlreadyDown 5062 -#define kNtErrorClusterNetworkAlreadyOnline 5063 -#define kNtErrorClusterNetworkAlreadyOffline 5064 -#define kNtErrorClusterNodeAlreadyMember 5065 -#define kNtErrorClusterLastInternalNetwork 5066 -#define kNtErrorClusterNetworkHasDependents 5067 -#define kNtErrorInvalidOperationOnQuorum 5068 -#define kNtErrorDependencyNotAllowed 5069 -#define kNtErrorClusterNodePaused 5070 -#define kNtErrorNodeCantHostResource 5071 -#define kNtErrorClusterNodeNotReady 5072 -#define kNtErrorClusterNodeShuttingDown 5073 -#define kNtErrorClusterJoinAborted 5074 -#define kNtErrorClusterIncompatibleVersions 5075 -#define kNtErrorClusterMaxnumOfResourcesExceeded 5076 -#define kNtErrorClusterSystemConfigChanged 5077 -#define kNtErrorClusterResourceTypeNotFound 5078 -#define kNtErrorClusterRestypeNotSupported 5079 -#define kNtErrorClusterResnameNotFound 5080 -#define kNtErrorClusterNoRpcPackagesRegistered 5081 -#define kNtErrorClusterOwnerNotInPreflist 5082 -#define kNtErrorClusterDatabaseSeqmismatch 5083 -#define kNtErrorResmonInvalidState 5084 -#define kNtErrorClusterGumNotLocker 5085 -#define kNtErrorQuorumDiskNotFound 5086 -#define kNtErrorDatabaseBackupCorrupt 5087 -#define kNtErrorClusterNodeAlreadyHasDfsRoot 5088 -#define kNtErrorResourcePropertyUnchangeable 5089 -#define kNtErrorNoAdminAccessPoint 5090 -#define kNtErrorClusterMembershipInvalidState 5890 -#define kNtErrorClusterQuorumlogNotFound 5891 -#define kNtErrorClusterMembershipHalt 5892 -#define kNtErrorClusterInstanceIdMismatch 5893 -#define kNtErrorClusterNetworkNotFoundForIp 5894 -#define kNtErrorClusterPropertyDataTypeMismatch 5895 -#define kNtErrorClusterEvictWithoutCleanup 5896 -#define kNtErrorClusterParameterMismatch 5897 -#define kNtErrorNodeCannotBeClustered 5898 -#define kNtErrorClusterWrongOsVersion 5899 -#define kNtErrorClusterCantCreateDupClusterName 5900 -#define kNtErrorCluscfgAlreadyCommitted 5901 -#define kNtErrorCluscfgRollbackFailed 5902 -#define kNtErrorCluscfgSystemDiskDriveLetterConflict 5903 -#define kNtErrorClusterOldVersion 5904 -#define kNtErrorClusterMismatchedComputerAcctName 5905 -#define kNtErrorClusterNoNetAdapters 5906 -#define kNtErrorClusterPoisoned 5907 -#define kNtErrorClusterGroupMoving 5908 -#define kNtErrorClusterResourceTypeBusy 5909 -#define kNtErrorResourceCallTimedOut 5910 -#define kNtErrorInvalidClusterIpv6Address 5911 -#define kNtErrorClusterInternalInvalidFunction 5912 -#define kNtErrorClusterParameterOutOfBounds 5913 -#define kNtErrorClusterPartialSend 5914 -#define kNtErrorClusterRegistryInvalidFunction 5915 -#define kNtErrorClusterInvalidStringTermination 5916 -#define kNtErrorClusterInvalidStringFormat 5917 -#define kNtErrorClusterDatabaseTransactionInProgress 5918 -#define kNtErrorClusterDatabaseTransactionNotInProgress 5919 -#define kNtErrorClusterNullData 5920 -#define kNtErrorClusterPartialRead 5921 -#define kNtErrorClusterPartialWrite 5922 -#define kNtErrorClusterCantDeserializeData 5923 -#define kNtErrorDependentResourcePropertyConflict 5924 -#define kNtErrorClusterNoQuorum 5925 -#define kNtErrorClusterInvalidIpv6Network 5926 -#define kNtErrorClusterInvalidIpv6TunnelNetwork 5927 -#define kNtErrorQuorumNotAllowedInThisGroup 5928 -#define kNtErrorDependencyTreeTooComplex 5929 -#define kNtErrorExceptionInResourceCall 5930 -#define kNtErrorClusterRhsFailedInitialization 5931 -#define kNtErrorClusterNotInstalled 5932 -#define kNtErrorClusterResourcesMustBeOnlineOnTheSameNode 5933 -#define kNtErrorClusterMaxNodesInCluster 5934 -#define kNtErrorClusterTooManyNodes 5935 -#define kNtErrorClusterObjectAlreadyUsed 5936 -#define kNtErrorNoncoreGroupsFound 5937 -#define kNtErrorFileShareResourceConflict 5938 -#define kNtErrorClusterEvictInvalidRequest 5939 -#define kNtErrorClusterSingletonResource 5940 -#define kNtErrorClusterGroupSingletonResource 5941 -#define kNtErrorClusterResourceProviderFailed 5942 -#define kNtErrorClusterResourceConfigurationError 5943 -#define kNtErrorClusterGroupBusy 5944 -#define kNtErrorClusterNotSharedVolume 5945 -#define kNtErrorClusterInvalidSecurityDescriptor 5946 -#define kNtErrorClusterSharedVolumesInUse 5947 -#define kNtErrorClusterUseSharedVolumesApi 5948 -#define kNtErrorClusterBackupInProgress 5949 -#define kNtErrorNonCsvPath 5950 -#define kNtErrorCsvVolumeNotLocal 5951 -#define kNtErrorClusterWatchdogTerminating 5952 -#define kNtErrorClusterResourceVetoedMoveIncompatibleNodes 5953 -#define kNtErrorClusterInvalidNodeWeight 5954 -#define kNtErrorClusterResourceVetoedCall 5955 -#define kNtErrorResmonSystemResourcesLacking 5956 -#define kNtErrorClusterResourceVetoedMoveNotEnoughResourcesOnSource 5958 -#define kNtErrorClusterGroupQueued 5959 -#define kNtErrorClusterResourceLockedStatus 5960 -#define kNtErrorClusterSharedVolumeFailoverNotAllowed 5961 -#define kNtErrorClusterNodeDrainInProgress 5962 -#define kNtErrorClusterDiskNotConnected 5963 -#define kNtErrorDiskNotCsvCapable 5964 -#define kNtErrorResourceNotInAvailableStorage 5965 -#define kNtErrorClusterSharedVolumeRedirected 5966 -#define kNtErrorClusterSharedVolumeNotRedirected 5967 -#define kNtErrorClusterCannotReturnProperties 5968 -#define kNtErrorClusterResourceIsInMaintenanceMode 5970 -#define kNtErrorClusterAffinityConflict 5971 -#define kNtErrorClusterResourceIsReplicaVirtualMachine 5972 -#define kNtErrorClusterUpgradeIncompatibleVersions 5973 -#define kNtErrorClusterUpgradeFixQuorumNotSupported 5974 -#define kNtErrorClusterUpgradeRestartRequired 5975 -#define kNtErrorClusterUpgradeInProgress 5976 -#define kNtErrorClusterUpgradeIncomplete 5977 -#define kNtErrorClusterNodeInGracePeriod 5978 -#define kNtErrorClusterCsvIoPauseTimeout 5979 -#define kNtErrorNodeNotActiveClusterMember 5980 -#define kNtErrorClusterResourceNotMonitored 5981 -#define kNtErrorClusterResourceDoesNotSupportUnmonitored 5982 -#define kNtErrorClusterResourceIsReplicated 5983 -#define kNtErrorClusterNodeIsolated 5984 -#define kNtErrorClusterNodeQuarantined 5985 -#define kNtErrorClusterDatabaseUpdateConditionFailed 5986 -#define kNtErrorClusterSpaceDegraded 5987 -#define kNtErrorClusterTokenDelegationNotSupported 5988 -#define kNtErrorClusterCsvInvalidHandle 5989 -#define kNtErrorClusterCsvSupportedOnlyOnCoordinator 5990 -#define kNtErrorGroupsetNotAvailable 5991 -#define kNtErrorGroupsetNotFound 5992 -#define kNtErrorGroupsetCantProvide 5993 -#define kNtErrorClusterFaultDomainParentNotFound 5994 -#define kNtErrorClusterFaultDomainInvalidHierarchy 5995 -#define kNtErrorClusterFaultDomainFailedS2dValidation 5996 -#define kNtErrorClusterFaultDomainS2dConnectivityLoss 5997 -#define kNtErrorClusterInvalidInfrastructureFileserverName 5998 -#define kNtErrorClustersetManagementClusterUnreachable 5999 -#define kNtErrorEncryptionFailed 6000 -#define kNtErrorDecryptionFailed 6001 -#define kNtErrorFileEncrypted 6002 -#define kNtErrorNoRecoveryPolicy 6003 -#define kNtErrorNoEfs 6004 -#define kNtErrorWrongEfs 6005 -#define kNtErrorNoUserKeys 6006 -#define kNtErrorFileNotEncrypted 6007 -#define kNtErrorNotExportFormat 6008 -#define kNtErrorFileReadOnly 6009 /* EROFS */ -#define kNtErrorDirEfsDisallowed 6010 -#define kNtErrorEfsServerNotTrusted 6011 -#define kNtErrorBadRecoveryPolicy 6012 -#define kNtErrorEfsAlgBlobTooBig 6013 -#define kNtErrorVolumeNotSupportEfs 6014 -#define kNtErrorEfsDisabled 6015 -#define kNtErrorEfsVersionNotSupport 6016 -#define kNtErrorCsEncryptionInvalidServerResponse 6017 -#define kNtErrorCsEncryptionUnsupportedServer 6018 -#define kNtErrorCsEncryptionExistingEncryptedFile 6019 -#define kNtErrorCsEncryptionNewEncryptedFile 6020 -#define kNtErrorCsEncryptionFileNotCse 6021 -#define kNtErrorEncryptionPolicyDeniesOperation 6022 -#define kNtErrorNoBrowserServersFound 6118 -#define kNtErrorLogSectorInvalid 6600 -#define kNtErrorLogSectorParityInvalid 6601 -#define kNtErrorLogSectorRemapped 6602 -#define kNtErrorLogBlockIncomplete 6603 -#define kNtErrorLogInvalidRange 6604 -#define kNtErrorLogBlocksExhausted 6605 -#define kNtErrorLogReadContextInvalid 6606 -#define kNtErrorLogRestartInvalid 6607 -#define kNtErrorLogBlockVersion 6608 -#define kNtErrorLogBlockInvalid 6609 -#define kNtErrorLogReadModeInvalid 6610 -#define kNtErrorLogNoRestart 6611 -#define kNtErrorLogMetadataCorrupt 6612 -#define kNtErrorLogMetadataInvalid 6613 -#define kNtErrorLogMetadataInconsistent 6614 -#define kNtErrorLogReservationInvalid 6615 -#define kNtErrorLogCantDelete 6616 -#define kNtErrorLogContainerLimitExceeded 6617 -#define kNtErrorLogStartOfLog 6618 -#define kNtErrorLogPolicyAlreadyInstalled 6619 -#define kNtErrorLogPolicyNotInstalled 6620 -#define kNtErrorLogPolicyInvalid 6621 -#define kNtErrorLogPolicyConflict 6622 -#define kNtErrorLogPinnedArchiveTail 6623 -#define kNtErrorLogRecordNonexistent 6624 -#define kNtErrorLogRecordsReservedInvalid 6625 -#define kNtErrorLogSpaceReservedInvalid 6626 -#define kNtErrorLogTailInvalid 6627 -#define kNtErrorLogFull 6628 -#define kNtErrorCouldNotResizeLog 6629 -#define kNtErrorLogMultiplexed 6630 -#define kNtErrorLogDedicated 6631 -#define kNtErrorLogArchiveNotInProgress 6632 -#define kNtErrorLogArchiveInProgress 6633 -#define kNtErrorLogEphemeral 6634 -#define kNtErrorLogNotEnoughContainers 6635 -#define kNtErrorLogClientAlreadyRegistered 6636 -#define kNtErrorLogClientNotRegistered 6637 -#define kNtErrorLogFullHandlerInProgress 6638 -#define kNtErrorLogContainerReadFailed 6639 -#define kNtErrorLogContainerWriteFailed 6640 -#define kNtErrorLogContainerOpenFailed 6641 -#define kNtErrorLogContainerStateInvalid 6642 -#define kNtErrorLogStateInvalid 6643 -#define kNtErrorLogPinned 6644 -#define kNtErrorLogMetadataFlushFailed 6645 -#define kNtErrorLogInconsistentSecurity 6646 -#define kNtErrorLogAppendedFlushFailed 6647 -#define kNtErrorLogPinnedReservation 6648 -#define kNtErrorInvalidTransaction 6700 -#define kNtErrorTransactionNotActive 6701 -#define kNtErrorTransactionRequestNotValid 6702 -#define kNtErrorTransactionNotRequested 6703 -#define kNtErrorTransactionAlreadyAborted 6704 -#define kNtErrorTransactionAlreadyCommitted 6705 -#define kNtErrorTmInitializationFailed 6706 -#define kNtErrorResourcemanagerReadOnly 6707 -#define kNtErrorTransactionNotJoined 6708 -#define kNtErrorTransactionSuperiorExists 6709 -#define kNtErrorCrmProtocolAlreadyExists 6710 -#define kNtErrorTransactionPropagationFailed 6711 -#define kNtErrorCrmProtocolNotFound 6712 -#define kNtErrorTransactionInvalidMarshallBuffer 6713 -#define kNtErrorCurrentTransactionNotValid 6714 -#define kNtErrorTransactionNotFound 6715 -#define kNtErrorResourcemanagerNotFound 6716 -#define kNtErrorEnlistmentNotFound 6717 -#define kNtErrorTransactionmanagerNotFound 6718 -#define kNtErrorTransactionmanagerNotOnline 6719 -#define kNtErrorTransactionmanagerRecoveryNameCollision 6720 -#define kNtErrorTransactionNotRoot 6721 -#define kNtErrorTransactionObjectExpired 6722 -#define kNtErrorTransactionResponseNotEnlisted 6723 -#define kNtErrorTransactionRecordTooLong 6724 -#define kNtErrorImplicitTransactionNotSupported 6725 -#define kNtErrorTransactionIntegrityViolated 6726 -#define kNtErrorTransactionmanagerIdentityMismatch 6727 -#define kNtErrorRmCannotBeFrozenForSnapshot 6728 -#define kNtErrorTransactionMustWritethrough 6729 -#define kNtErrorTransactionNoSuperior 6730 -#define kNtErrorHeuristicDamagePossible 6731 -#define kNtErrorTransactionalConflict 6800 -#define kNtErrorRmNotActive 6801 -#define kNtErrorRmMetadataCorrupt 6802 -#define kNtErrorDirectoryNotRm 6803 -#define kNtErrorTransactionsUnsupportedRemote 6805 -#define kNtErrorLogResizeInvalidSize 6806 -#define kNtErrorObjectNoLongerExists 6807 -#define kNtErrorStreamMiniversionNotFound 6808 -#define kNtErrorStreamMiniversionNotValid 6809 -#define kNtErrorMiniversionInaccessibleFromSpecifiedTransaction 6810 -#define kNtErrorCantOpenMiniversionWithModifyIntent 6811 -#define kNtErrorCantCreateMoreStreamMiniversions 6812 -#define kNtErrorRemoteFileVersionMismatch 6814 -#define kNtErrorHandleNoLongerValid 6815 -#define kNtErrorNoTxfMetadata 6816 -#define kNtErrorLogCorruptionDetected 6817 -#define kNtErrorCantRecoverWithHandleOpen 6818 -#define kNtErrorRmDisconnected 6819 -#define kNtErrorEnlistmentNotSuperior 6820 -#define kNtErrorRecoveryNotNeeded 6821 -#define kNtErrorRmAlreadyStarted 6822 -#define kNtErrorFileIdentityNotPersistent 6823 -#define kNtErrorCantBreakTransactionalDependency 6824 -#define kNtErrorCantCrossRmBoundary 6825 -#define kNtErrorTxfDirNotEmpty 6826 -#define kNtErrorIndoubtTransactionsExist 6827 -#define kNtErrorTmVolatile 6828 -#define kNtErrorRollbackTimerExpired 6829 -#define kNtErrorTxfAttributeCorrupt 6830 -#define kNtErrorEfsNotAllowedInTransaction 6831 -#define kNtErrorTransactionalOpenNotAllowed 6832 -#define kNtErrorLogGrowthFailed 6833 -#define kNtErrorTransactedMappingUnsupportedRemote 6834 -#define kNtErrorTxfMetadataAlreadyPresent 6835 -#define kNtErrorTransactionScopeCallbacksNotSet 6836 -#define kNtErrorTransactionRequiredPromotion 6837 -#define kNtErrorCannotExecuteFileInTransaction 6838 -#define kNtErrorTransactionsNotFrozen 6839 -#define kNtErrorTransactionFreezeInProgress 6840 -#define kNtErrorNotSnapshotVolume 6841 -#define kNtErrorNoSavepointWithOpenFiles 6842 -#define kNtErrorDataLostRepair 6843 -#define kNtErrorSparseNotAllowedInTransaction 6844 -#define kNtErrorTmIdentityMismatch 6845 -#define kNtErrorFloatedSection 6846 -#define kNtErrorCannotAcceptTransactedWork 6847 -#define kNtErrorCannotAbortTransactions 6848 -#define kNtErrorBadClusters 6849 -#define kNtErrorCompressionNotAllowedInTransaction 6850 -#define kNtErrorVolumeDirty 6851 -#define kNtErrorNoLinkTrackingInTransaction 6852 -#define kNtErrorOperationNotSupportedInTransaction 6853 -#define kNtErrorExpiredHandle 6854 -#define kNtErrorTransactionNotEnlisted 6855 -#define kNtErrorCtxWinstationNameInvalid 7001 -#define kNtErrorCtxInvalidPd 7002 -#define kNtErrorCtxPdNotFound 7003 -#define kNtErrorCtxWdNotFound 7004 -#define kNtErrorCtxCannotMakeEventlogEntry 7005 -#define kNtErrorCtxServiceNameCollision 7006 -#define kNtErrorCtxClosePending 7007 -#define kNtErrorCtxNoOutbuf 7008 -#define kNtErrorCtxModemInfNotFound 7009 -#define kNtErrorCtxInvalidModemname 7010 -#define kNtErrorCtxModemResponseError 7011 -#define kNtErrorCtxModemResponseTimeout 7012 -#define kNtErrorCtxModemResponseNoCarrier 7013 -#define kNtErrorCtxModemResponseNoDialtone 7014 -#define kNtErrorCtxModemResponseBusy 7015 -#define kNtErrorCtxModemResponseVoice 7016 -#define kNtErrorCtxTdError 7017 -#define kNtErrorCtxWinstationNotFound 7022 -#define kNtErrorCtxWinstationAlreadyExists 7023 -#define kNtErrorCtxWinstationBusy 7024 -#define kNtErrorCtxBadVideoMode 7025 -#define kNtErrorCtxGraphicsInvalid 7035 -#define kNtErrorCtxLogonDisabled 7037 -#define kNtErrorCtxNotConsole 7038 -#define kNtErrorCtxClientQueryTimeout 7040 -#define kNtErrorCtxConsoleDisconnect 7041 -#define kNtErrorCtxConsoleConnect 7042 -#define kNtErrorCtxShadowDenied 7044 -#define kNtErrorCtxWinstationAccessDenied 7045 -#define kNtErrorCtxInvalidWd 7049 -#define kNtErrorCtxShadowInvalid 7050 -#define kNtErrorCtxShadowDisabled 7051 -#define kNtErrorCtxClientLicenseInUse 7052 -#define kNtErrorCtxClientLicenseNotSet 7053 -#define kNtErrorCtxLicenseNotAvailable 7054 -#define kNtErrorCtxLicenseClientInvalid 7055 -#define kNtErrorCtxLicenseExpired 7056 -#define kNtErrorCtxShadowNotRunning 7057 -#define kNtErrorCtxShadowEndedByModeChange 7058 -#define kNtErrorActivationCountExceeded 7059 -#define kNtErrorCtxWinstationsDisabled 7060 -#define kNtErrorCtxEncryptionLevelRequired 7061 -#define kNtErrorCtxSessionInUse 7062 -#define kNtErrorCtxNoForceLogoff 7063 -#define kNtErrorCtxAccountRestriction 7064 -#define kNtErrorRdpProtocolError 7065 -#define kNtErrorCtxCdmConnect 7066 -#define kNtErrorCtxCdmDisconnect 7067 -#define kNtErrorCtxSecurityLayerError 7068 -#define kNtErrorTsIncompatibleSessions 7069 -#define kNtErrorTsVideoSubsystemError 7070 -#define kNtErrorDsNotInstalled 8200 -#define kNtErrorDsMembershipEvaluatedLocally 8201 -#define kNtErrorDsNoAttributeOrValue 8202 -#define kNtErrorDsInvalidAttributeSyntax 8203 -#define kNtErrorDsAttributeTypeUndefined 8204 -#define kNtErrorDsAttributeOrValueExists 8205 -#define kNtErrorDsBusy 8206 -#define kNtErrorDsUnavailable 8207 -#define kNtErrorDsNoRidsAllocated 8208 -#define kNtErrorDsNoMoreRids 8209 -#define kNtErrorDsIncorrectRoleOwner 8210 -#define kNtErrorDsRidmgrInitError 8211 -#define kNtErrorDsObjClassViolation 8212 -#define kNtErrorDsCantOnNonLeaf 8213 -#define kNtErrorDsCantOnRdn 8214 -#define kNtErrorDsCantModObjClass 8215 -#define kNtErrorDsCrossDomMoveError 8216 -#define kNtErrorDsGcNotAvailable 8217 -#define kNtErrorSharedPolicy 8218 -#define kNtErrorPolicyObjectNotFound 8219 -#define kNtErrorPolicyOnlyInDs 8220 -#define kNtErrorPromotionActive 8221 -#define kNtErrorNoPromotionActive 8222 -#define kNtErrorDsOperationsError 8224 -#define kNtErrorDsProtocolError 8225 -#define kNtErrorDsTimelimitExceeded 8226 -#define kNtErrorDsSizelimitExceeded 8227 -#define kNtErrorDsAdminLimitExceeded 8228 -#define kNtErrorDsCompareFalse 8229 -#define kNtErrorDsCompareTrue 8230 -#define kNtErrorDsAuthMethodNotSupported 8231 -#define kNtErrorDsStrongAuthRequired 8232 -#define kNtErrorDsInappropriateAuth 8233 -#define kNtErrorDsAuthUnknown 8234 -#define kNtErrorDsReferral 8235 -#define kNtErrorDsUnavailableCritExtension 8236 -#define kNtErrorDsConfidentialityRequired 8237 -#define kNtErrorDsInappropriateMatching 8238 -#define kNtErrorDsConstraintViolation 8239 -#define kNtErrorDsNoSuchObject 8240 -#define kNtErrorDsAliasProblem 8241 -#define kNtErrorDsInvalidDnSyntax 8242 -#define kNtErrorDsIsLeaf 8243 -#define kNtErrorDsAliasDerefProblem 8244 -#define kNtErrorDsUnwillingToPerform 8245 -#define kNtErrorDsLoopDetect 8246 -#define kNtErrorDsNamingViolation 8247 -#define kNtErrorDsObjectResultsTooLarge 8248 -#define kNtErrorDsAffectsMultipleDsas 8249 -#define kNtErrorDsServerDown 8250 -#define kNtErrorDsLocalError 8251 -#define kNtErrorDsEncodingError 8252 -#define kNtErrorDsDecodingError 8253 -#define kNtErrorDsFilterUnknown 8254 -#define kNtErrorDsParamError 8255 -#define kNtErrorDsNotSupported 8256 -#define kNtErrorDsNoResultsReturned 8257 -#define kNtErrorDsControlNotFound 8258 -#define kNtErrorDsClientLoop 8259 -#define kNtErrorDsReferralLimitExceeded 8260 -#define kNtErrorDsSortControlMissing 8261 -#define kNtErrorDsOffsetRangeError 8262 -#define kNtErrorDsRidmgrDisabled 8263 -#define kNtErrorDsRootMustBeNc 8301 -#define kNtErrorDsAddReplicaInhibited 8302 -#define kNtErrorDsAttNotDefInSchema 8303 -#define kNtErrorDsMaxObjSizeExceeded 8304 -#define kNtErrorDsObjStringNameExists 8305 -#define kNtErrorDsNoRdnDefinedInSchema 8306 -#define kNtErrorDsRdnDoesntMatchSchema 8307 -#define kNtErrorDsNoRequestedAttsFound 8308 -#define kNtErrorDsUserBufferToSmall 8309 -#define kNtErrorDsAttIsNotOnObj 8310 -#define kNtErrorDsIllegalModOperation 8311 -#define kNtErrorDsObjTooLarge 8312 -#define kNtErrorDsBadInstanceType 8313 -#define kNtErrorDsMasterdsaRequired 8314 -#define kNtErrorDsObjectClassRequired 8315 -#define kNtErrorDsMissingRequiredAtt 8316 -#define kNtErrorDsAttNotDefForClass 8317 -#define kNtErrorDsAttAlreadyExists 8318 -#define kNtErrorDsCantAddAttValues 8320 -#define kNtErrorDsSingleValueConstraint 8321 -#define kNtErrorDsRangeConstraint 8322 -#define kNtErrorDsAttValAlreadyExists 8323 -#define kNtErrorDsCantRemMissingAtt 8324 -#define kNtErrorDsCantRemMissingAttVal 8325 -#define kNtErrorDsRootCantBeSubref 8326 -#define kNtErrorDsNoChaining 8327 -#define kNtErrorDsNoChainedEval 8328 -#define kNtErrorDsNoParentObject 8329 -#define kNtErrorDsParentIsAnAlias 8330 -#define kNtErrorDsCantMixMasterAndReps 8331 -#define kNtErrorDsChildrenExist 8332 -#define kNtErrorDsObjNotFound 8333 -#define kNtErrorDsAliasedObjMissing 8334 -#define kNtErrorDsBadNameSyntax 8335 -#define kNtErrorDsAliasPointsToAlias 8336 -#define kNtErrorDsCantDerefAlias 8337 -#define kNtErrorDsOutOfScope 8338 -#define kNtErrorDsObjectBeingRemoved 8339 -#define kNtErrorDsCantDeleteDsaObj 8340 -#define kNtErrorDsGenericError 8341 -#define kNtErrorDsDsaMustBeIntMaster 8342 -#define kNtErrorDsClassNotDsa 8343 -#define kNtErrorDsInsuffAccessRights 8344 -#define kNtErrorDsIllegalSuperior 8345 -#define kNtErrorDsAttributeOwnedBySam 8346 -#define kNtErrorDsNameTooManyParts 8347 -#define kNtErrorDsNameTooLong 8348 -#define kNtErrorDsNameValueTooLong 8349 -#define kNtErrorDsNameUnparseable 8350 -#define kNtErrorDsNameTypeUnknown 8351 -#define kNtErrorDsNotAnObject 8352 -#define kNtErrorDsSecDescTooShort 8353 -#define kNtErrorDsSecDescInvalid 8354 -#define kNtErrorDsNoDeletedName 8355 -#define kNtErrorDsSubrefMustHaveParent 8356 -#define kNtErrorDsNcnameMustBeNc 8357 -#define kNtErrorDsCantAddSystemOnly 8358 -#define kNtErrorDsClassMustBeConcrete 8359 -#define kNtErrorDsInvalidDmd 8360 -#define kNtErrorDsObjGuidExists 8361 -#define kNtErrorDsNotOnBacklink 8362 -#define kNtErrorDsNoCrossrefForNc 8363 -#define kNtErrorDsShuttingDown 8364 -#define kNtErrorDsUnknownOperation 8365 -#define kNtErrorDsInvalidRoleOwner 8366 -#define kNtErrorDsCouldntContactFsmo 8367 -#define kNtErrorDsCrossNcDnRename 8368 -#define kNtErrorDsCantModSystemOnly 8369 -#define kNtErrorDsReplicatorOnly 8370 -#define kNtErrorDsObjClassNotDefined 8371 -#define kNtErrorDsObjClassNotSubclass 8372 -#define kNtErrorDsNameReferenceInvalid 8373 -#define kNtErrorDsCrossRefExists 8374 -#define kNtErrorDsCantDelMasterCrossref 8375 -#define kNtErrorDsSubtreeNotifyNotNcHead 8376 -#define kNtErrorDsNotifyFilterTooComplex 8377 -#define kNtErrorDsDupRdn 8378 -#define kNtErrorDsDupOid 8379 -#define kNtErrorDsDupMapiId 8380 -#define kNtErrorDsDupSchemaIdGuid 8381 -#define kNtErrorDsDupLdapDisplayName 8382 -#define kNtErrorDsSemanticAttTest 8383 -#define kNtErrorDsSyntaxMismatch 8384 -#define kNtErrorDsExistsInMustHave 8385 -#define kNtErrorDsExistsInMayHave 8386 -#define kNtErrorDsNonexistentMayHave 8387 -#define kNtErrorDsNonexistentMustHave 8388 -#define kNtErrorDsAuxClsTestFail 8389 -#define kNtErrorDsNonexistentPossSup 8390 -#define kNtErrorDsSubClsTestFail 8391 -#define kNtErrorDsBadRdnAttIdSyntax 8392 -#define kNtErrorDsExistsInAuxCls 8393 -#define kNtErrorDsExistsInSubCls 8394 -#define kNtErrorDsExistsInPossSup 8395 -#define kNtErrorDsRecalcschemaFailed 8396 -#define kNtErrorDsTreeDeleteNotFinished 8397 -#define kNtErrorDsCantDelete 8398 -#define kNtErrorDsAttSchemaReqId 8399 -#define kNtErrorDsBadAttSchemaSyntax 8400 -#define kNtErrorDsCantCacheAtt 8401 -#define kNtErrorDsCantCacheClass 8402 -#define kNtErrorDsCantRemoveAttCache 8403 -#define kNtErrorDsCantRemoveClassCache 8404 -#define kNtErrorDsCantRetrieveDn 8405 -#define kNtErrorDsMissingSupref 8406 -#define kNtErrorDsCantRetrieveInstance 8407 -#define kNtErrorDsCodeInconsistency 8408 -#define kNtErrorDsDatabaseError 8409 -#define kNtErrorDsGovernsidMissing 8410 -#define kNtErrorDsMissingExpectedAtt 8411 -#define kNtErrorDsNcnameMissingCrRef 8412 -#define kNtErrorDsSecurityCheckingError 8413 -#define kNtErrorDsSchemaNotLoaded 8414 -#define kNtErrorDsSchemaAllocFailed 8415 -#define kNtErrorDsAttSchemaReqSyntax 8416 -#define kNtErrorDsGcverifyError 8417 -#define kNtErrorDsDraSchemaMismatch 8418 -#define kNtErrorDsCantFindDsaObj 8419 -#define kNtErrorDsCantFindExpectedNc 8420 -#define kNtErrorDsCantFindNcInCache 8421 -#define kNtErrorDsCantRetrieveChild 8422 -#define kNtErrorDsSecurityIllegalModify 8423 -#define kNtErrorDsCantReplaceHiddenRec 8424 -#define kNtErrorDsBadHierarchyFile 8425 -#define kNtErrorDsBuildHierarchyTableFailed 8426 -#define kNtErrorDsConfigParamMissing 8427 -#define kNtErrorDsCountingAbIndicesFailed 8428 -#define kNtErrorDsHierarchyTableMallocFailed 8429 -#define kNtErrorDsInternalFailure 8430 -#define kNtErrorDsUnknownError 8431 -#define kNtErrorDsRootRequiresClassTop 8432 -#define kNtErrorDsRefusingFsmoRoles 8433 -#define kNtErrorDsMissingFsmoSettings 8434 -#define kNtErrorDsUnableToSurrenderRoles 8435 -#define kNtErrorDsDraGeneric 8436 -#define kNtErrorDsDraInvalidParameter 8437 -#define kNtErrorDsDraBusy 8438 -#define kNtErrorDsDraBadDn 8439 -#define kNtErrorDsDraBadNc 8440 -#define kNtErrorDsDraDnExists 8441 -#define kNtErrorDsDraInternalError 8442 -#define kNtErrorDsDraInconsistentDit 8443 -#define kNtErrorDsDraConnectionFailed 8444 -#define kNtErrorDsDraBadInstanceType 8445 -#define kNtErrorDsDraOutOfMem 8446 -#define kNtErrorDsDraMailProblem 8447 -#define kNtErrorDsDraRefAlreadyExists 8448 -#define kNtErrorDsDraRefNotFound 8449 -#define kNtErrorDsDraObjIsRepSource 8450 -#define kNtErrorDsDraDbError 8451 -#define kNtErrorDsDraNoReplica 8452 -#define kNtErrorDsDraAccessDenied 8453 -#define kNtErrorDsDraNotSupported 8454 -#define kNtErrorDsDraRpcCancelled 8455 -#define kNtErrorDsDraSourceDisabled 8456 -#define kNtErrorDsDraSinkDisabled 8457 -#define kNtErrorDsDraNameCollision 8458 -#define kNtErrorDsDraSourceReinstalled 8459 -#define kNtErrorDsDraMissingParent 8460 -#define kNtErrorDsDraPreempted 8461 -#define kNtErrorDsDraAbandonSync 8462 -#define kNtErrorDsDraShutdown 8463 -#define kNtErrorDsDraIncompatiblePartialSet 8464 -#define kNtErrorDsDraSourceIsPartialReplica 8465 -#define kNtErrorDsDraExtnConnectionFailed 8466 -#define kNtErrorDsInstallSchemaMismatch 8467 -#define kNtErrorDsDupLinkId 8468 -#define kNtErrorDsNameErrorResolving 8469 -#define kNtErrorDsNameErrorNotFound 8470 -#define kNtErrorDsNameErrorNotUnique 8471 -#define kNtErrorDsNameErrorNoMapping 8472 -#define kNtErrorDsNameErrorDomainOnly 8473 -#define kNtErrorDsNameErrorNoSyntacticalMapping 8474 -#define kNtErrorDsConstructedAttMod 8475 -#define kNtErrorDsWrongOmObjClass 8476 -#define kNtErrorDsDraReplPending 8477 -#define kNtErrorDsDsRequired 8478 -#define kNtErrorDsInvalidLdapDisplayName 8479 -#define kNtErrorDsNonBaseSearch 8480 -#define kNtErrorDsCantRetrieveAtts 8481 -#define kNtErrorDsBacklinkWithoutLink 8482 -#define kNtErrorDsEpochMismatch 8483 -#define kNtErrorDsSrcNameMismatch 8484 -#define kNtErrorDsSrcAndDstNcIdentical 8485 -#define kNtErrorDsDstNcMismatch 8486 -#define kNtErrorDsNotAuthoritiveForDstNc 8487 -#define kNtErrorDsSrcGuidMismatch 8488 -#define kNtErrorDsCantMoveDeletedObject 8489 -#define kNtErrorDsPdcOperationInProgress 8490 -#define kNtErrorDsCrossDomainCleanupReqd 8491 -#define kNtErrorDsIllegalXdomMoveOperation 8492 -#define kNtErrorDsCantWithAcctGroupMembershps 8493 -#define kNtErrorDsNcMustHaveNcParent 8494 -#define kNtErrorDsCrImpossibleToValidate 8495 -#define kNtErrorDsDstDomainNotNative 8496 -#define kNtErrorDsMissingInfrastructureContainer 8497 -#define kNtErrorDsCantMoveAccountGroup 8498 -#define kNtErrorDsCantMoveResourceGroup 8499 -#define kNtErrorDsInvalidSearchFlag 8500 -#define kNtErrorDsNoTreeDeleteAboveNc 8501 -#define kNtErrorDsCouldntLockTreeForDelete 8502 -#define kNtErrorDsCouldntIdentifyObjectsForTreeDelete 8503 -#define kNtErrorDsSamInitFailure 8504 -#define kNtErrorDsSensitiveGroupViolation 8505 -#define kNtErrorDsCantModPrimarygroupid 8506 -#define kNtErrorDsIllegalBaseSchemaMod 8507 -#define kNtErrorDsNonsafeSchemaChange 8508 -#define kNtErrorDsSchemaUpdateDisallowed 8509 -#define kNtErrorDsCantCreateUnderSchema 8510 -#define kNtErrorDsInstallNoSrcSchVersion 8511 -#define kNtErrorDsInstallNoSchVersionInInifile 8512 -#define kNtErrorDsInvalidGroupType 8513 -#define kNtErrorDsNoNestGlobalgroupInMixeddomain 8514 -#define kNtErrorDsNoNestLocalgroupInMixeddomain 8515 -#define kNtErrorDsGlobalCantHaveLocalMember 8516 -#define kNtErrorDsGlobalCantHaveUniversalMember 8517 -#define kNtErrorDsUniversalCantHaveLocalMember 8518 -#define kNtErrorDsGlobalCantHaveCrossdomainMember 8519 -#define kNtErrorDsLocalCantHaveCrossdomainLocalMember 8520 -#define kNtErrorDsHavePrimaryMembers 8521 -#define kNtErrorDsStringSdConversionFailed 8522 -#define kNtErrorDsNamingMasterGc 8523 -#define kNtErrorDsDnsLookupFailure 8524 -#define kNtErrorDsCouldntUpdateSpns 8525 -#define kNtErrorDsCantRetrieveSd 8526 -#define kNtErrorDsKeyNotUnique 8527 -#define kNtErrorDsWrongLinkedAttSyntax 8528 -#define kNtErrorDsSamNeedBootkeyPassword 8529 -#define kNtErrorDsSamNeedBootkeyFloppy 8530 -#define kNtErrorDsCantStart 8531 -#define kNtErrorDsInitFailure 8532 -#define kNtErrorDsNoPktPrivacyOnConnection 8533 -#define kNtErrorDsSourceDomainInForest 8534 -#define kNtErrorDsDestinationDomainNotInForest 8535 -#define kNtErrorDsDestinationAuditingNotEnabled 8536 -#define kNtErrorDsCantFindDcForSrcDomain 8537 -#define kNtErrorDsSrcObjNotGroupOrUser 8538 -#define kNtErrorDsSrcSidExistsInForest 8539 -#define kNtErrorDsSrcAndDstObjectClassMismatch 8540 -#define kNtErrorSamInitFailure 8541 -#define kNtErrorDsDraSchemaInfoShip 8542 -#define kNtErrorDsDraSchemaConflict 8543 -#define kNtErrorDsDraEarlierSchemaConflict 8544 -#define kNtErrorDsDraObjNcMismatch 8545 -#define kNtErrorDsNcStillHasDsas 8546 -#define kNtErrorDsGcRequired 8547 -#define kNtErrorDsLocalMemberOfLocalOnly 8548 -#define kNtErrorDsNoFpoInUniversalGroups 8549 -#define kNtErrorDsCantAddToGc 8550 -#define kNtErrorDsNoCheckpointWithPdc 8551 -#define kNtErrorDsSourceAuditingNotEnabled 8552 -#define kNtErrorDsCantCreateInNondomainNc 8553 -#define kNtErrorDsInvalidNameForSpn 8554 -#define kNtErrorDsFilterUsesContructedAttrs 8555 -#define kNtErrorDsUnicodepwdNotInQuotes 8556 -#define kNtErrorDsMachineAccountQuotaExceeded 8557 -#define kNtErrorDsMustBeRunOnDstDc 8558 -#define kNtErrorDsSrcDcMustBeSp4OrGreater 8559 -#define kNtErrorDsCantTreeDeleteCriticalObj 8560 -#define kNtErrorDsInitFailureConsole 8561 -#define kNtErrorDsSamInitFailureConsole 8562 -#define kNtErrorDsForestVersionTooHigh 8563 -#define kNtErrorDsDomainVersionTooHigh 8564 -#define kNtErrorDsForestVersionTooLow 8565 -#define kNtErrorDsDomainVersionTooLow 8566 -#define kNtErrorDsIncompatibleVersion 8567 -#define kNtErrorDsLowDsaVersion 8568 -#define kNtErrorDsNoBehaviorVersionInMixeddomain 8569 -#define kNtErrorDsNotSupportedSortOrder 8570 -#define kNtErrorDsNameNotUnique 8571 -#define kNtErrorDsMachineAccountCreatedPrent4 8572 -#define kNtErrorDsOutOfVersionStore 8573 -#define kNtErrorDsIncompatibleControlsUsed 8574 -#define kNtErrorDsNoRefDomain 8575 -#define kNtErrorDsReservedLinkId 8576 -#define kNtErrorDsLinkIdNotAvailable 8577 -#define kNtErrorDsAgCantHaveUniversalMember 8578 -#define kNtErrorDsModifydnDisallowedByInstanceType 8579 -#define kNtErrorDsNoObjectMoveInSchemaNc 8580 -#define kNtErrorDsModifydnDisallowedByFlag 8581 -#define kNtErrorDsModifydnWrongGrandparent 8582 -#define kNtErrorDsNameErrorTrustReferral 8583 -#define kNtErrorNotSupportedOnStandardServer 8584 -#define kNtErrorDsCantAccessRemotePartOfAd 8585 -#define kNtErrorDsCrImpossibleToValidateV2 8586 -#define kNtErrorDsThreadLimitExceeded 8587 -#define kNtErrorDsNotClosest 8588 -#define kNtErrorDsCantDeriveSpnWithoutServerRef 8589 -#define kNtErrorDsSingleUserModeFailed 8590 -#define kNtErrorDsNtdscriptSyntaxError 8591 -#define kNtErrorDsNtdscriptProcessError 8592 -#define kNtErrorDsDifferentReplEpochs 8593 -#define kNtErrorDsDrsExtensionsChanged 8594 -#define kNtErrorDsReplicaSetChangeNotAllowedOnDisabledCr 8595 -#define kNtErrorDsNoMsdsIntid 8596 -#define kNtErrorDsDupMsdsIntid 8597 -#define kNtErrorDsExistsInRdnattid 8598 -#define kNtErrorDsAuthorizationFailed 8599 -#define kNtErrorDsInvalidScript 8600 -#define kNtErrorDsRemoteCrossrefOpFailed 8601 -#define kNtErrorDsCrossRefBusy 8602 -#define kNtErrorDsCantDeriveSpnForDeletedDomain 8603 -#define kNtErrorDsCantDemoteWithWriteableNc 8604 -#define kNtErrorDsDuplicateIdFound 8605 -#define kNtErrorDsInsufficientAttrToCreateObject 8606 -#define kNtErrorDsGroupConversionError 8607 -#define kNtErrorDsCantMoveAppBasicGroup 8608 -#define kNtErrorDsCantMoveAppQueryGroup 8609 -#define kNtErrorDsRoleNotVerified 8610 -#define kNtErrorDsWkoContainerCannotBeSpecial 8611 -#define kNtErrorDsDomainRenameInProgress 8612 -#define kNtErrorDsExistingAdChildNc 8613 -#define kNtErrorDsReplLifetimeExceeded 8614 -#define kNtErrorDsDisallowedInSystemContainer 8615 -#define kNtErrorDsLdapSendQueueFull 8616 -#define kNtErrorDsDraOutScheduleWindow 8617 -#define kNtErrorDsPolicyNotKnown 8618 -#define kNtErrorNoSiteSettingsObject 8619 -#define kNtErrorNoSecrets 8620 -#define kNtErrorNoWritableDcFound 8621 -#define kNtErrorDsNoServerObject 8622 -#define kNtErrorDsNoNtdsaObject 8623 -#define kNtErrorDsNonAsqSearch 8624 -#define kNtErrorDsAuditFailure 8625 -#define kNtErrorDsInvalidSearchFlagSubtree 8626 -#define kNtErrorDsInvalidSearchFlagTuple 8627 -#define kNtErrorDsHierarchyTableTooDeep 8628 -#define kNtErrorDsDraCorruptUtdVector 8629 -#define kNtErrorDsDraSecretsDenied 8630 -#define kNtErrorDsReservedMapiId 8631 -#define kNtErrorDsMapiIdNotAvailable 8632 -#define kNtErrorDsDraMissingKrbtgtSecret 8633 -#define kNtErrorDsDomainNameExistsInForest 8634 -#define kNtErrorDsFlatNameExistsInForest 8635 -#define kNtErrorInvalidUserPrincipalName 8636 -#define kNtErrorDsOidMappedGroupCantHaveMembers 8637 -#define kNtErrorDsOidNotFound 8638 -#define kNtErrorDsDraRecycledTarget 8639 -#define kNtErrorDsDisallowedNcRedirect 8640 -#define kNtErrorDsHighAdldsFfl 8641 -#define kNtErrorDsHighDsaVersion 8642 -#define kNtErrorDsLowAdldsFfl 8643 -#define kNtErrorDomainSidSameAsLocalWorkstation 8644 -#define kNtErrorDsUndeleteSamValidationFailed 8645 -#define kNtErrorIncorrectAccountType 8646 -#define kNtErrorDsSpnValueNotUniqueInForest 8647 -#define kNtErrorDsUpnValueNotUniqueInForest 8648 -#define kNtErrorDsMissingForestTrust 8649 -#define kNtErrorDsValueKeyNotUnique 8650 -#define kNtErrorIpsecQmPolicyExists 13000 -#define kNtErrorIpsecQmPolicyNotFound 13001 -#define kNtErrorIpsecQmPolicyInUse 13002 -#define kNtErrorIpsecMmPolicyExists 13003 -#define kNtErrorIpsecMmPolicyNotFound 13004 -#define kNtErrorIpsecMmPolicyInUse 13005 -#define kNtErrorIpsecMmFilterExists 13006 -#define kNtErrorIpsecMmFilterNotFound 13007 -#define kNtErrorIpsecTransportFilterExists 13008 -#define kNtErrorIpsecTransportFilterNotFound 13009 -#define kNtErrorIpsecMmAuthExists 13010 -#define kNtErrorIpsecMmAuthNotFound 13011 -#define kNtErrorIpsecMmAuthInUse 13012 -#define kNtErrorIpsecDefaultMmPolicyNotFound 13013 -#define kNtErrorIpsecDefaultMmAuthNotFound 13014 -#define kNtErrorIpsecDefaultQmPolicyNotFound 13015 -#define kNtErrorIpsecTunnelFilterExists 13016 -#define kNtErrorIpsecTunnelFilterNotFound 13017 -#define kNtErrorIpsecMmFilterPendingDeletion 13018 -#define kNtErrorIpsecTransportFilterPendingDeletion 13019 -#define kNtErrorIpsecTunnelFilterPendingDeletion 13020 -#define kNtErrorIpsecMmPolicyPendingDeletion 13021 -#define kNtErrorIpsecMmAuthPendingDeletion 13022 -#define kNtErrorIpsecQmPolicyPendingDeletion 13023 -#define kNtErrorIpsecIkeNegStatusBegin 13800 -#define kNtErrorIpsecIkeAuthFail 13801 -#define kNtErrorIpsecIkeAttribFail 13802 -#define kNtErrorIpsecIkeNegotiationPending 13803 -#define kNtErrorIpsecIkeGeneralProcessingError 13804 -#define kNtErrorIpsecIkeTimedOut 13805 -#define kNtErrorIpsecIkeNoCert 13806 -#define kNtErrorIpsecIkeSaDeleted 13807 -#define kNtErrorIpsecIkeSaReaped 13808 -#define kNtErrorIpsecIkeMmAcquireDrop 13809 -#define kNtErrorIpsecIkeQmAcquireDrop 13810 -#define kNtErrorIpsecIkeQueueDropMm 13811 -#define kNtErrorIpsecIkeQueueDropNoMm 13812 -#define kNtErrorIpsecIkeDropNoResponse 13813 -#define kNtErrorIpsecIkeMmDelayDrop 13814 -#define kNtErrorIpsecIkeQmDelayDrop 13815 -#define kNtErrorIpsecIkeError 13816 -#define kNtErrorIpsecIkeCrlFailed 13817 -#define kNtErrorIpsecIkeInvalidKeyUsage 13818 -#define kNtErrorIpsecIkeInvalidCertType 13819 -#define kNtErrorIpsecIkeNoPrivateKey 13820 -#define kNtErrorIpsecIkeSimultaneousRekey 13821 -#define kNtErrorIpsecIkeDhFail 13822 -#define kNtErrorIpsecIkeCriticalPayloadNotRecognized 13823 -#define kNtErrorIpsecIkeInvalidHeader 13824 -#define kNtErrorIpsecIkeNoPolicy 13825 -#define kNtErrorIpsecIkeInvalidSignature 13826 -#define kNtErrorIpsecIkeKerberosError 13827 -#define kNtErrorIpsecIkeNoPublicKey 13828 -#define kNtErrorIpsecIkeProcessErr 13829 -#define kNtErrorIpsecIkeProcessErrSa 13830 -#define kNtErrorIpsecIkeProcessErrProp 13831 -#define kNtErrorIpsecIkeProcessErrTrans 13832 -#define kNtErrorIpsecIkeProcessErrKe 13833 -#define kNtErrorIpsecIkeProcessErrId 13834 -#define kNtErrorIpsecIkeProcessErrCert 13835 -#define kNtErrorIpsecIkeProcessErrCertReq 13836 -#define kNtErrorIpsecIkeProcessErrHash 13837 -#define kNtErrorIpsecIkeProcessErrSig 13838 -#define kNtErrorIpsecIkeProcessErrNonce 13839 -#define kNtErrorIpsecIkeProcessErrNotify 13840 -#define kNtErrorIpsecIkeProcessErrDelete 13841 -#define kNtErrorIpsecIkeProcessErrVendor 13842 -#define kNtErrorIpsecIkeInvalidPayload 13843 -#define kNtErrorIpsecIkeLoadSoftSa 13844 -#define kNtErrorIpsecIkeSoftSaTornDown 13845 -#define kNtErrorIpsecIkeInvalidCookie 13846 -#define kNtErrorIpsecIkeNoPeerCert 13847 -#define kNtErrorIpsecIkePeerCrlFailed 13848 -#define kNtErrorIpsecIkePolicyChange 13849 -#define kNtErrorIpsecIkeNoMmPolicy 13850 -#define kNtErrorIpsecIkeNotcbpriv 13851 -#define kNtErrorIpsecIkeSecloadfail 13852 -#define kNtErrorIpsecIkeFailsspinit 13853 -#define kNtErrorIpsecIkeFailqueryssp 13854 -#define kNtErrorIpsecIkeSrvacqfail 13855 -#define kNtErrorIpsecIkeSrvquerycred 13856 -#define kNtErrorIpsecIkeGetspifail 13857 -#define kNtErrorIpsecIkeInvalidFilter 13858 -#define kNtErrorIpsecIkeOutOfMemory 13859 -#define kNtErrorIpsecIkeAddUpdateKeyFailed 13860 -#define kNtErrorIpsecIkeInvalidPolicy 13861 -#define kNtErrorIpsecIkeUnknownDoi 13862 -#define kNtErrorIpsecIkeInvalidSituation 13863 -#define kNtErrorIpsecIkeDhFailure 13864 -#define kNtErrorIpsecIkeInvalidGroup 13865 -#define kNtErrorIpsecIkeEncrypt 13866 -#define kNtErrorIpsecIkeDecrypt 13867 -#define kNtErrorIpsecIkePolicyMatch 13868 -#define kNtErrorIpsecIkeUnsupportedId 13869 -#define kNtErrorIpsecIkeInvalidHash 13870 -#define kNtErrorIpsecIkeInvalidHashAlg 13871 -#define kNtErrorIpsecIkeInvalidHashSize 13872 -#define kNtErrorIpsecIkeInvalidEncryptAlg 13873 -#define kNtErrorIpsecIkeInvalidAuthAlg 13874 -#define kNtErrorIpsecIkeInvalidSig 13875 -#define kNtErrorIpsecIkeLoadFailed 13876 -#define kNtErrorIpsecIkeRpcDelete 13877 -#define kNtErrorIpsecIkeBenignReinit 13878 -#define kNtErrorIpsecIkeInvalidResponderLifetimeNotify 13879 -#define kNtErrorIpsecIkeInvalidMajorVersion 13880 -#define kNtErrorIpsecIkeInvalidCertKeylen 13881 -#define kNtErrorIpsecIkeMmLimit 13882 -#define kNtErrorIpsecIkeNegotiationDisabled 13883 -#define kNtErrorIpsecIkeQmLimit 13884 -#define kNtErrorIpsecIkeMmExpired 13885 -#define kNtErrorIpsecIkePeerMmAssumedInvalid 13886 -#define kNtErrorIpsecIkeCertChainPolicyMismatch 13887 -#define kNtErrorIpsecIkeUnexpectedMessageId 13888 -#define kNtErrorIpsecIkeInvalidAuthPayload 13889 -#define kNtErrorIpsecIkeDosCookieSent 13890 -#define kNtErrorIpsecIkeShuttingDown 13891 -#define kNtErrorIpsecIkeCgaAuthFailed 13892 -#define kNtErrorIpsecIkeProcessErrNatoa 13893 -#define kNtErrorIpsecIkeInvalidMmForQm 13894 -#define kNtErrorIpsecIkeQmExpired 13895 -#define kNtErrorIpsecIkeTooManyFilters 13896 -#define kNtErrorIpsecIkeNegStatusEnd 13897 -#define kNtErrorIpsecIkeKillDummyNapTunnel 13898 -#define kNtErrorIpsecIkeInnerIpAssignmentFailure 13899 -#define kNtErrorIpsecIkeRequireCpPayloadMissing 13900 -#define kNtErrorIpsecKeyModuleImpersonationNegotiationPending 13901 -#define kNtErrorIpsecIkeCoexistenceSuppress 13902 -#define kNtErrorIpsecIkeRatelimitDrop 13903 -#define kNtErrorIpsecIkePeerDoesntSupportMobike 13904 -#define kNtErrorIpsecIkeAuthorizationFailure 13905 -#define kNtErrorIpsecIkeStrongCredAuthorizationFailure 13906 -#define kNtErrorIpsecIkeAuthorizationFailureWithOptionalRetry 13907 -#define kNtErrorIpsecIkeStrongCredAuthorizationAndCertmapFailure 13908 -#define kNtErrorIpsecIkeNegStatusExtendedEnd 13909 -#define kNtErrorIpsecBadSpi 13910 -#define kNtErrorIpsecSaLifetimeExpired 13911 -#define kNtErrorIpsecWrongSa 13912 -#define kNtErrorIpsecReplayCheckFailed 13913 -#define kNtErrorIpsecInvalidPacket 13914 -#define kNtErrorIpsecIntegrityCheckFailed 13915 -#define kNtErrorIpsecClearTextDrop 13916 -#define kNtErrorIpsecAuthFirewallDrop 13917 -#define kNtErrorIpsecThrottleDrop 13918 -#define kNtErrorIpsecDospBlock 13925 -#define kNtErrorIpsecDospReceivedMulticast 13926 -#define kNtErrorIpsecDospInvalidPacket 13927 -#define kNtErrorIpsecDospStateLookupFailed 13928 -#define kNtErrorIpsecDospMaxEntries 13929 -#define kNtErrorIpsecDospKeymodNotAllowed 13930 -#define kNtErrorIpsecDospNotInstalled 13931 -#define kNtErrorIpsecDospMaxPerIpRatelimitQueues 13932 -#define kNtErrorSxsSectionNotFound 14000 -#define kNtErrorSxsCantGenActctx 14001 -#define kNtErrorSxsInvalidActctxdataFormat 14002 -#define kNtErrorSxsAssemblyNotFound 14003 -#define kNtErrorSxsManifestFormatError 14004 -#define kNtErrorSxsManifestParseError 14005 -#define kNtErrorSxsActivationContextDisabled 14006 -#define kNtErrorSxsKeyNotFound 14007 -#define kNtErrorSxsVersionConflict 14008 -#define kNtErrorSxsWrongSectionType 14009 -#define kNtErrorSxsThreadQueriesDisabled 14010 -#define kNtErrorSxsProcessDefaultAlreadySet 14011 -#define kNtErrorSxsUnknownEncodingGroup 14012 -#define kNtErrorSxsUnknownEncoding 14013 -#define kNtErrorSxsInvalidXmlNamespaceUri 14014 -#define kNtErrorSxsRootManifestDependencyNotInstalled 14015 -#define kNtErrorSxsLeafManifestDependencyNotInstalled 14016 -#define kNtErrorSxsInvalidAssemblyIdentityAttribute 14017 -#define kNtErrorSxsManifestMissingRequiredDefaultNamespace 14018 -#define kNtErrorSxsManifestInvalidRequiredDefaultNamespace 14019 -#define kNtErrorSxsPrivateManifestCrossPathWithReparsePoint 14020 -#define kNtErrorSxsDuplicateDllName 14021 -#define kNtErrorSxsDuplicateWindowclassName 14022 -#define kNtErrorSxsDuplicateClsid 14023 -#define kNtErrorSxsDuplicateIid 14024 -#define kNtErrorSxsDuplicateTlbid 14025 -#define kNtErrorSxsDuplicateProgid 14026 -#define kNtErrorSxsDuplicateAssemblyName 14027 -#define kNtErrorSxsFileHashMismatch 14028 -#define kNtErrorSxsPolicyParseError 14029 -#define kNtErrorSxsXmlEMissingquote 14030 -#define kNtErrorSxsXmlECommentsyntax 14031 -#define kNtErrorSxsXmlEBadstartnamechar 14032 -#define kNtErrorSxsXmlEBadnamechar 14033 -#define kNtErrorSxsXmlEBadcharinstring 14034 -#define kNtErrorSxsXmlEXmldeclsyntax 14035 -#define kNtErrorSxsXmlEBadchardata 14036 -#define kNtErrorSxsXmlEMissingwhitespace 14037 -#define kNtErrorSxsXmlEExpectingtagend 14038 -#define kNtErrorSxsXmlEMissingsemicolon 14039 -#define kNtErrorSxsXmlEUnbalancedparen 14040 -#define kNtErrorSxsXmlEInternalerror 14041 -#define kNtErrorSxsXmlEUnexpectedWhitespace 14042 -#define kNtErrorSxsXmlEIncompleteEncoding 14043 -#define kNtErrorSxsXmlEMissingParen 14044 -#define kNtErrorSxsXmlEExpectingclosequote 14045 -#define kNtErrorSxsXmlEMultipleColons 14046 -#define kNtErrorSxsXmlEInvalidDecimal 14047 -#define kNtErrorSxsXmlEInvalidHexidecimal 14048 -#define kNtErrorSxsXmlEInvalidUnicode 14049 -#define kNtErrorSxsXmlEWhitespaceorquestionmark 14050 -#define kNtErrorSxsXmlEUnexpectedendtag 14051 -#define kNtErrorSxsXmlEUnclosedtag 14052 -#define kNtErrorSxsXmlEDuplicateattribute 14053 -#define kNtErrorSxsXmlEMultipleroots 14054 -#define kNtErrorSxsXmlEInvalidatrootlevel 14055 -#define kNtErrorSxsXmlEBadxmldecl 14056 -#define kNtErrorSxsXmlEMissingroot 14057 -#define kNtErrorSxsXmlEUnexpectedeof 14058 -#define kNtErrorSxsXmlEBadperefinsubset 14059 -#define kNtErrorSxsXmlEUnclosedstarttag 14060 -#define kNtErrorSxsXmlEUnclosedendtag 14061 -#define kNtErrorSxsXmlEUnclosedstring 14062 -#define kNtErrorSxsXmlEUnclosedcomment 14063 -#define kNtErrorSxsXmlEUncloseddecl 14064 -#define kNtErrorSxsXmlEUnclosedcdata 14065 -#define kNtErrorSxsXmlEReservednamespace 14066 -#define kNtErrorSxsXmlEInvalidencoding 14067 -#define kNtErrorSxsXmlEInvalidswitch 14068 -#define kNtErrorSxsXmlEBadxmlcase 14069 -#define kNtErrorSxsXmlEInvalidStandalone 14070 -#define kNtErrorSxsXmlEUnexpectedStandalone 14071 -#define kNtErrorSxsXmlEInvalidVersion 14072 -#define kNtErrorSxsXmlEMissingequals 14073 -#define kNtErrorSxsProtectionRecoveryFailed 14074 -#define kNtErrorSxsProtectionPublicKeyTooShort 14075 -#define kNtErrorSxsProtectionCatalogNotValid 14076 -#define kNtErrorSxsUntranslatableHresult 14077 -#define kNtErrorSxsProtectionCatalogFileMissing 14078 -#define kNtErrorSxsMissingAssemblyIdentityAttribute 14079 -#define kNtErrorSxsInvalidAssemblyIdentityAttributeName 14080 -#define kNtErrorSxsAssemblyMissing 14081 -#define kNtErrorSxsCorruptActivationStack 14082 -#define kNtErrorSxsCorruption 14083 -#define kNtErrorSxsEarlyDeactivation 14084 -#define kNtErrorSxsInvalidDeactivation 14085 -#define kNtErrorSxsMultipleDeactivation 14086 -#define kNtErrorSxsProcessTerminationRequested 14087 -#define kNtErrorSxsReleaseActivationContext 14088 -#define kNtErrorSxsSystemDefaultActivationContextEmpty 14089 -#define kNtErrorSxsInvalidIdentityAttributeValue 14090 -#define kNtErrorSxsInvalidIdentityAttributeName 14091 -#define kNtErrorSxsIdentityDuplicateAttribute 14092 -#define kNtErrorSxsIdentityParseError 14093 -#define kNtErrorMalformedSubstitutionString 14094 -#define kNtErrorSxsIncorrectPublicKeyToken 14095 -#define kNtErrorUnmappedSubstitutionString 14096 -#define kNtErrorSxsAssemblyNotLocked 14097 -#define kNtErrorSxsComponentStoreCorrupt 14098 -#define kNtErrorAdvancedInstallerFailed 14099 -#define kNtErrorXmlEncodingMismatch 14100 -#define kNtErrorSxsManifestIdentitySameButContentsDifferent 14101 -#define kNtErrorSxsIdentitiesDifferent 14102 -#define kNtErrorSxsAssemblyIsNotADeployment 14103 -#define kNtErrorSxsFileNotPartOfAssembly 14104 -#define kNtErrorSxsManifestTooBig 14105 -#define kNtErrorSxsSettingNotRegistered 14106 -#define kNtErrorSxsTransactionClosureIncomplete 14107 -#define kNtErrorSmiPrimitiveInstallerFailed 14108 -#define kNtErrorGenericCommandFailed 14109 -#define kNtErrorSxsFileHashMissing 14110 -#define kNtErrorEvtInvalidChannelPath 15000 -#define kNtErrorEvtInvalidQuery 15001 -#define kNtErrorEvtPublisherMetadataNotFound 15002 -#define kNtErrorEvtEventTemplateNotFound 15003 -#define kNtErrorEvtInvalidPublisherName 15004 -#define kNtErrorEvtInvalidEventData 15005 -#define kNtErrorEvtChannelNotFound 15007 -#define kNtErrorEvtMalformedXmlText 15008 -#define kNtErrorEvtSubscriptionToDirectChannel 15009 -#define kNtErrorEvtConfigurationError 15010 -#define kNtErrorEvtQueryResultStale 15011 -#define kNtErrorEvtQueryResultInvalidPosition 15012 -#define kNtErrorEvtNonValidatingMsxml 15013 -#define kNtErrorEvtFilterAlreadyscoped 15014 -#define kNtErrorEvtFilterNoteltset 15015 -#define kNtErrorEvtFilterInvarg 15016 -#define kNtErrorEvtFilterInvtest 15017 -#define kNtErrorEvtFilterInvtype 15018 -#define kNtErrorEvtFilterParseerr 15019 -#define kNtErrorEvtFilterUnsupportedop 15020 -#define kNtErrorEvtFilterUnexpectedtoken 15021 -#define kNtErrorEvtInvalidOperationOverEnabledDirectChannel 15022 -#define kNtErrorEvtInvalidChannelPropertyValue 15023 -#define kNtErrorEvtInvalidPublisherPropertyValue 15024 -#define kNtErrorEvtChannelCannotActivate 15025 -#define kNtErrorEvtFilterTooComplex 15026 -#define kNtErrorEvtMessageNotFound 15027 -#define kNtErrorEvtMessageIdNotFound 15028 -#define kNtErrorEvtUnresolvedValueInsert 15029 -#define kNtErrorEvtUnresolvedParameterInsert 15030 -#define kNtErrorEvtMaxInsertsReached 15031 -#define kNtErrorEvtEventDefinitionNotFound 15032 -#define kNtErrorEvtMessageLocaleNotFound 15033 -#define kNtErrorEvtVersionTooOld 15034 -#define kNtErrorEvtVersionTooNew 15035 -#define kNtErrorEvtCannotOpenChannelOfQuery 15036 -#define kNtErrorEvtPublisherDisabled 15037 -#define kNtErrorEvtFilterOutOfRange 15038 -#define kNtErrorEcSubscriptionCannotActivate 15080 -#define kNtErrorEcLogDisabled 15081 -#define kNtErrorEcCircularForwarding 15082 -#define kNtErrorEcCredstoreFull 15083 -#define kNtErrorEcCredNotFound 15084 -#define kNtErrorEcNoActiveChannel 15085 -#define kNtErrorMuiFileNotFound 15100 -#define kNtErrorMuiInvalidFile 15101 -#define kNtErrorMuiInvalidRcConfig 15102 -#define kNtErrorMuiInvalidLocaleName 15103 -#define kNtErrorMuiInvalidUltimatefallbackName 15104 -#define kNtErrorMuiFileNotLoaded 15105 -#define kNtErrorResourceEnumUserStop 15106 -#define kNtErrorMuiIntlsettingsUilangNotInstalled 15107 -#define kNtErrorMuiIntlsettingsInvalidLocaleName 15108 -#define kNtErrorMrmRuntimeNoDefaultOrNeutralResource 15110 -#define kNtErrorMrmInvalidPriconfig 15111 -#define kNtErrorMrmInvalidFileType 15112 -#define kNtErrorMrmUnknownQualifier 15113 -#define kNtErrorMrmInvalidQualifierValue 15114 -#define kNtErrorMrmNoCandidate 15115 -#define kNtErrorMrmNoMatchOrDefaultCandidate 15116 -#define kNtErrorMrmResourceTypeMismatch 15117 -#define kNtErrorMrmDuplicateMapName 15118 -#define kNtErrorMrmDuplicateEntry 15119 -#define kNtErrorMrmInvalidResourceIdentifier 15120 -#define kNtErrorMrmFilepathTooLong 15121 -#define kNtErrorMrmUnsupportedDirectoryType 15122 -#define kNtErrorMrmInvalidPriFile 15126 -#define kNtErrorMrmNamedResourceNotFound 15127 -#define kNtErrorMrmMapNotFound 15135 -#define kNtErrorMrmUnsupportedProfileType 15136 -#define kNtErrorMrmInvalidQualifierOperator 15137 -#define kNtErrorMrmIndeterminateQualifierValue 15138 -#define kNtErrorMrmAutomergeEnabled 15139 -#define kNtErrorMrmTooManyResources 15140 -#define kNtErrorMrmUnsupportedFileTypeForMerge 15141 -#define kNtErrorMrmUnsupportedFileTypeForLoadUnloadPriFile 15142 -#define kNtErrorMrmNoCurrentViewOnThread 15143 -#define kNtErrorDifferentProfileResourceManagerExist 15144 -#define kNtErrorOperationNotAllowedFromSystemComponent 15145 -#define kNtErrorMrmDirectRefToNonDefaultResource 15146 -#define kNtErrorMrmGenerationCountMismatch 15147 -#define kNtErrorPriMergeVersionMismatch 15148 -#define kNtErrorPriMergeMissingSchema 15149 -#define kNtErrorPriMergeLoadFileFailed 15150 -#define kNtErrorPriMergeAddFileFailed 15151 -#define kNtErrorPriMergeWriteFileFailed 15152 -#define kNtErrorPriMergeMultiplePackageFamiliesNotAllowed 15153 -#define kNtErrorPriMergeMultipleMainPackagesNotAllowed 15154 -#define kNtErrorPriMergeBundlePackagesNotAllowed 15155 -#define kNtErrorPriMergeMainPackageRequired 15156 -#define kNtErrorPriMergeResourcePackageRequired 15157 -#define kNtErrorPriMergeInvalidFileName 15158 -#define kNtErrorMcaInvalidCapabilitiesString 15200 -#define kNtErrorMcaInvalidVcpVersion 15201 -#define kNtErrorMcaMonitorViolatesMccsSpecification 15202 -#define kNtErrorMcaMccsVersionMismatch 15203 -#define kNtErrorMcaUnsupportedMccsVersion 15204 -#define kNtErrorMcaInternalError 15205 -#define kNtErrorMcaInvalidTechnologyTypeReturned 15206 -#define kNtErrorMcaUnsupportedColorTemperature 15207 -#define kNtErrorAmbiguousSystemDevice 15250 -#define kNtErrorSystemDeviceNotFound 15299 -#define kNtErrorHashNotSupported 15300 -#define kNtErrorHashNotPresent 15301 -#define kNtErrorSecondaryIcProviderNotRegistered 15321 -#define kNtErrorGpioClientInformationInvalid 15322 -#define kNtErrorGpioVersionNotSupported 15323 -#define kNtErrorGpioInvalidRegistrationPacket 15324 -#define kNtErrorGpioOperationDenied 15325 -#define kNtErrorGpioIncompatibleConnectMode 15326 -#define kNtErrorGpioInterruptAlreadyUnmasked 15327 -#define kNtErrorCannotSwitchRunlevel 15400 -#define kNtErrorInvalidRunlevelSetting 15401 -#define kNtErrorRunlevelSwitchTimeout 15402 -#define kNtErrorRunlevelSwitchAgentTimeout 15403 -#define kNtErrorRunlevelSwitchInProgress 15404 -#define kNtErrorServicesFailedAutostart 15405 -#define kNtErrorComTaskStopPending 15501 -#define kNtErrorInstallOpenPackageFailed 15600 -#define kNtErrorInstallPackageNotFound 15601 -#define kNtErrorInstallInvalidPackage 15602 -#define kNtErrorInstallResolveDependencyFailed 15603 -#define kNtErrorInstallOutOfDiskSpace 15604 -#define kNtErrorInstallNetworkFailure 15605 -#define kNtErrorInstallRegistrationFailure 15606 -#define kNtErrorInstallDeregistrationFailure 15607 -#define kNtErrorInstallCancel 15608 -#define kNtErrorInstallFailed 15609 -#define kNtErrorRemoveFailed 15610 -#define kNtErrorPackageAlreadyExists 15611 -#define kNtErrorNeedsRemediation 15612 -#define kNtErrorInstallPrerequisiteFailed 15613 -#define kNtErrorPackageRepositoryCorrupted 15614 -#define kNtErrorInstallPolicyFailure 15615 -#define kNtErrorPackageUpdating 15616 -#define kNtErrorDeploymentBlockedByPolicy 15617 -#define kNtErrorPackagesInUse 15618 -#define kNtErrorRecoveryFileCorrupt 15619 -#define kNtErrorInvalidStagedSignature 15620 -#define kNtErrorDeletingExistingApplicationdataStoreFailed 15621 -#define kNtErrorInstallPackageDowngrade 15622 -#define kNtErrorSystemNeedsRemediation 15623 -#define kNtErrorAppxIntegrityFailureClrNgen 15624 -#define kNtErrorResiliencyFileCorrupt 15625 -#define kNtErrorInstallFirewallServiceNotRunning 15626 -#define kNtErrorPackageMoveFailed 15627 -#define kNtErrorInstallVolumeNotEmpty 15628 -#define kNtErrorInstallVolumeOffline 15629 -#define kNtErrorInstallVolumeCorrupt 15630 -#define kNtErrorNeedsRegistration 15631 -#define kNtErrorInstallWrongProcessorArchitecture 15632 -#define kNtErrorDevSideloadLimitExceeded 15633 -#define kNtErrorInstallOptionalPackageRequiresMainPackage 15634 -#define kNtErrorPackageNotSupportedOnFilesystem 15635 -#define kNtErrorPackageMoveBlockedByStreaming 15636 -#define kNtErrorInstallOptionalPackageApplicationidNotUnique 15637 -#define kNtErrorPackageStagingOnhold 15638 -#define kNtErrorInstallInvalidRelatedSetUpdate 15639 -#define kNtErrorPackagesReputationCheckFailed 15643 -#define kNtErrorPackagesReputationCheckTimedout 15644 -#define kNtErrorStateLoadStoreFailed 15800 -#define kNtErrorStateGetVersionFailed 15801 -#define kNtErrorStateSetVersionFailed 15802 -#define kNtErrorStateStructuredResetFailed 15803 -#define kNtErrorStateOpenContainerFailed 15804 -#define kNtErrorStateCreateContainerFailed 15805 -#define kNtErrorStateDeleteContainerFailed 15806 -#define kNtErrorStateReadSettingFailed 15807 -#define kNtErrorStateWriteSettingFailed 15808 -#define kNtErrorStateDeleteSettingFailed 15809 -#define kNtErrorStateQuerySettingFailed 15810 -#define kNtErrorStateReadCompositeSettingFailed 15811 -#define kNtErrorStateWriteCompositeSettingFailed 15812 -#define kNtErrorStateEnumerateContainerFailed 15813 -#define kNtErrorStateEnumerateSettingsFailed 15814 -#define kNtErrorStateCompositeSettingValueSizeLimitExceeded 15815 -#define kNtErrorStateSettingValueSizeLimitExceeded 15816 -#define kNtErrorStateSettingNameSizeLimitExceeded 15817 -#define kNtErrorStateContainerNameSizeLimitExceeded 15818 -#define kNtErrorApiUnavailable 15841 - -#define kNtWaitIoCompletion 0xc0 - -/* WinSock Error Codes: 10000-11999 */ -#define WSABASEERR 10000 -#define WSAEINTR 10004 -#define WSAEBADF 10009 -#define WSAEACCES 10013 -#define WSAEFAULT 10014 -#define WSAEINVAL 10022 -#define WSAEMFILE 10024 -#define WSAEWOULDBLOCK 10035 -#define WSAEINPROGRESS 10036 -#define WSAEALREADY 10037 -#define WSAENOTSOCK 10038 -#define WSAEDESTADDRREQ 10039 -#define WSAEMSGSIZE 10040 -#define WSAEPROTOTYPE 10041 -#define WSAENOPROTOOPT 10042 -#define WSAEPROTONOSUPPORT 10043 -#define WSAESOCKTNOSUPPORT 10044 -#define WSAEOPNOTSUPP 10045 -#define WSAEPFNOSUPPORT 10046 -#define WSAEAFNOSUPPORT 10047 -#define WSAEADDRINUSE 10048 -#define WSAEADDRNOTAVAIL 10049 -#define WSAENETDOWN 10050 -#define WSAENETUNREACH 10051 -#define WSAENETRESET 10052 -#define WSAECONNABORTED 10053 -#define WSAECONNRESET 10054 -#define WSAENOBUFS 10055 -#define WSAEISCONN 10056 -#define WSAENOTCONN 10057 -#define WSAESHUTDOWN 10058 -#define WSAETOOMANYREFS 10059 -#define WSAETIMEDOUT 10060 -#define WSAECONNREFUSED 10061 -#define WSAELOOP 10062 -#define WSAENAMETOOLONG 10063 -#define WSAEHOSTDOWN 10064 -#define WSAEHOSTUNREACH 10065 -#define WSAENOTEMPTY 10066 -#define WSAEPROCLIM 10067 -#define WSAEUSERS 10068 -#define WSAEDQUOT 10069 -#define WSAESTALE 10070 -#define WSAEREMOTE 10071 -#define WSASYSNOTREADY 10091 -#define WSAVERNOTSUPPORTED 10092 -#define WSANOTINITIALISED 10093 -#define WSAEDISCON 10101 -#define WSAENOMORE 10102 -#define WSAECANCELLED 10103 -#define WSAEINVALIDPROCTABLE 10104 -#define WSAEINVALIDPROVIDER 10105 -#define WSAEPROVIDERFAILEDINIT 10106 -#define WSASYSCALLFAILURE 10107 -#define WSASERVICE_NOT_FOUND 10108 -#define WSATYPE_NOT_FOUND 10109 -#define WSA_E_NO_MORE 10110 -#define WSA_E_CANCELLED 10111 -#define WSAEREFUSED 10112 -#define WSAHOST_NOT_FOUND 11001 -#define WSATRY_AGAIN 11002 -#define WSANO_RECOVERY 11003 -#define WSANO_DATA 11004 -#define WSA_QOS_RECEIVERS 11005 -#define WSA_QOS_SENDERS 11006 -#define WSA_QOS_NO_SENDERS 11007 -#define WSA_QOS_NO_RECEIVERS 11008 -#define WSA_QOS_REQUEST_CONFIRMED 11009 -#define WSA_QOS_ADMISSION_FAILURE 11010 -#define WSA_QOS_POLICY_FAILURE 11011 -#define WSA_QOS_BAD_STYLE 11012 -#define WSA_QOS_BAD_OBJECT 11013 -#define WSA_QOS_TRAFFIC_CTRL_ERROR 11014 -#define WSA_QOS_GENERIC_ERROR 11015 -#define WSA_QOS_ESERVICETYPE 11016 -#define WSA_QOS_EFLOWSPEC 11017 -#define WSA_QOS_EPROVSPECBUF 11018 -#define WSA_QOS_EFILTERSTYLE 11019 -#define WSA_QOS_EFILTERTYPE 11020 -#define WSA_QOS_EFILTERCOUNT 11021 -#define WSA_QOS_EOBJLENGTH 11022 -#define WSA_QOS_EFLOWCOUNT 11023 -#define WSA_QOS_EUNKOWNPSOBJ 11024 -#define WSA_QOS_EPOLICYOBJ 11025 -#define WSA_QOS_EFLOWDESC 11026 -#define WSA_QOS_EPSFLOWSPEC 11027 -#define WSA_QOS_EPSFILTERSPEC 11028 -#define WSA_QOS_ESDMODEOBJ 11029 -#define WSA_QOS_ESHAPERATEOBJ 11030 -#define WSA_QOS_RESERVED_PETYPE 11031 -#define WSA_SECURE_HOST_NOT_FOUND 11032 -#define WSA_IPSEC_NAME_POLICY_ERROR 11033 - -#define WSA_WAIT_FAILED -1u -#define WSA_WAIT_EVENT_0 0 -#define WSA_WAIT_IO_COMPLETION 0xc0 -#define WSA_WAIT_TIMEOUT 258 -#define WSA_MAXIMUM_WAIT_EVENTS 64 -#define WSA_IO_PENDING 997 - - - -/*!BEGIN libc/nt/events.h */ - -#define COSMOPOLITAN_LIBC_NT_EVENTS_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » events ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int32_t GetMessage(struct NtMsg *lpMsg, int64_t hWnd, uint32_t wMsgFilterMin, - uint32_t wMsgFilterMax); -int32_t TranslateMessage(const struct NtMsg *lpMsg); -intptr_t DispatchMessage(const struct NtMsg *lpMsg); -void PostQuitMessage(int nExitCode); -bool32 GetCursorPos(struct NtPoint *lpPoint); -int64_t SendMessage(int64_t hWnd, uint32_t Msg, uint64_t wParam, - int64_t lParam); - -#define EVENTLOG_SUCCESS 0x00000000 -#define EVENTLOG_ERROR_TYPE 0x00000001 -#define EVENTLOG_WARNING_TYPE 0x00000002 -#define EVENTLOG_INFORMATION_TYPE 0x00000004 -#define EVENTLOG_AUDIT_SUCCESS 0x00000008 -#define EVENTLOG_AUDIT_FAILURE 0x00000010 - -int32_t ReportEventA(int64_t handle, uint16_t wType, uint16_t wCategory, - uint32_t dwEventID, const char *lpUserId, uint16_t wNumStrings, - uint32_t dwDataSize, const char **lpStrings, void **lpRawData); -int64_t RegisterEventSourceA(const char *lpUNCServerName, const char *lpSourceName); -int32_t DeregisterEventSource(uint64_t handle); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/files.h */ - -#define COSMOPOLITAN_LIBC_NT_FILES_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » files ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kNtHandleFlagInherit 1 /* SetHandleInformation */ -#define kNtHandleFlagProtectFromClose 2 - -#define kNtFindFirstExCaseSensitive 1 -#define kNtFindFirstExLargeFetch 2 - -#define kNtDuplicateCloseSource 1 -#define kNtDuplicateSameAccess 2 - -#define kNtSymbolicLinkFlagDirectory 1 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -intptr_t LoadResource(int64_t hModule, int64_t hResInfo); -uint32_t SetHandleCount(uint32_t uNumber); -uint32_t GetLogicalDrives(void); -bool32 FlushFileBuffers(int64_t hFile); - -int64_t ReOpenFile(int64_t hOriginalFile, uint32_t dwDesiredAccess, - uint32_t dwShareMode, uint32_t dwFlagsAndAttributes); - -bool32 DeleteFile(const char16_t *lpFileName) paramsnonnull(); - -bool32 CopyFile(const char16_t *lpExistingFileName, - const char16_t *lpNewFileName, bool32 bFailIfExists) - paramsnonnull(); - -bool32 MoveFile(const char16_t *lpExistingFileName, - const char16_t *lpNewFileName) paramsnonnull(); -bool32 MoveFileEx(const char16_t *lpExistingFileName, - const char16_t *lpNewFileName, int dwFlags) paramsnonnull(); - -bool32 SetCurrentDirectory(const char16_t *lpPathName); -uint32_t GetCurrentDirectory(uint32_t nBufferLength, char16_t *out_lpBuffer); - -bool32 CreateDirectory(const char16_t *lpPathName, - struct NtSecurityAttributes *lpSecurityAttributes); -bool32 RemoveDirectory(const char16_t *lpPathName); - -bool32 DuplicateHandle(int64_t hSourceProcessHandle, int64_t hSourceHandle, - int64_t hTargetProcessHandle, int64_t *lpTargetHandle, - uint32_t dwDesiredAccess, bool32 bInheritHandle, - uint32_t dwOptions); - -bool32 GetHandleInformation(int64_t hObject, uint32_t *out_lpdwFlags); -bool32 SetHandleInformation(int64_t hObject, uint32_t dwMask, uint32_t dwFlags); -int GetFileType(int64_t hFile); - -bool32 GetFileInformationByHandleEx(int64_t hFile, - uint32_t FileInformationClass, - void *out_lpFileInformation, - uint32_t dwBufferSize); - -bool32 GetFileInformationByHandle( - int64_t hFile, struct NtByHandleFileInformation *lpFileInformation); - -uint32_t GetFileAttributes(const char16_t *lpFileName); -bool32 GetFileAttributesEx( - const char16_t *lpFileName, int fInfoLevelId /* kNtGetFileExInfoStandard */, - void *out_lpFileInformation /* → struct NtWin32FileAttributeData * */) - paramsnonnull(); - -uint32_t GetCompressedFileSize(const char16_t *lpFileName, - uint32_t *lpFileSizeHigh); -bool32 SetFileAttributes(const char16_t *lpFileName, uint32_t dwFileAttributes); -bool32 GetFileTime(int64_t hFile, struct NtFileTime *opt_lpCreationFileTime, - struct NtFileTime *opt_lpLastAccessFileTime, - struct NtFileTime *opt_lpLastWriteFileTime); -bool32 SetFileTime(int64_t hFile, - const struct NtFileTime *opt_lpCreationFileTime, - const struct NtFileTime *opt_lpLastAccessFileTime, - const struct NtFileTime *opt_lpLastWriteFileTime); - -bool32 DeviceIoControl(int64_t hDevice, uint32_t dwIoControlCode, - void *lpInBuffer, uint32_t nInBufferSize, - void *lpOutBuffer, uint32_t nOutBufferSize, - uint32_t *lpBytesReturned, - struct NtOverlapped *lpOverlapped); - -bool32 LockFile(int64_t hFile, uint32_t dwFileOffsetLow, - uint32_t dwFileOffsetHigh, uint32_t nNumberOfBytesToLockLow, - uint32_t nNumberOfBytesToLockHigh); -bool32 LockFileEx(int64_t hFile, uint32_t dwFlags, uint32_t dwReserved, - uint32_t nNumberOfBytesToLockLow, - uint32_t nNumberOfBytesToLockHigh, - struct NtOverlapped *lpOverlapped) paramsnonnull(); -bool32 UnlockFile(int64_t hFile, uint32_t dwFileOffsetLow, - uint32_t dwFileOffsetHigh, uint32_t nNumberOfBytesToUnlockLow, - uint32_t nNumberOfBytesToUnlockHigh); -bool32 UnlockFileEx(int64_t hFile, uint32_t dwReserved, - uint32_t nNumberOfBytesToUnlockLow, - uint32_t nNumberOfBytesToUnlockHigh, - struct NtOverlapped *lpOverlapped) paramsnonnull(); - -bool32 CreateHardLink(const char16_t *lpFileName, - const char16_t *lpExistingFileName, - struct NtSecurityAttributes *reserved) - paramsnonnull((1, 2)); -bool32 CreateSymbolicLink(const char16_t *lpSymlinkFileName, - const char16_t *lpTargetPathName, uint32_t dwFlags) - paramsnonnull(); - -uint32_t SetFilePointer(int64_t hFile, int32_t lDistanceToMove, - int32_t *optional_lpDistanceToMoveHigh, - int dwMoveMethod); -bool32 SetFilePointerEx(int64_t hFile, int64_t liDistanceToMove, - int64_t *optional_lpNewFilePointer, int dwMoveMethod); - -bool32 SetEndOfFile(int64_t hFile); -bool32 SetFileValidData(int64_t hFile, int64_t ValidDataLength); - -bool32 GetFileSecurity(const char16_t *lpFileName, - uint32_t RequestedInformation, - struct NtSecurityDescriptor *pSecurityDescriptor, - uint32_t nLength, uint32_t *lpnLengthNeeded); - -bool32 OpenProcessToken(int64_t hProcessHandle, uint32_t dwDesiredAccess, - int64_t *out_hTokenHandle); -bool32 DuplicateToken(int64_t hExistingTokenHandle, int dwImpersonationLevel, - int64_t *out_hDuplicateTokenHandle); -bool32 DuplicateTokenEx(int64_t hExistingToken, unsigned int dwDesiredAccess, - struct NtSecurityAttributes *lpTokenAttributes, - int ImpersonationLevel, int TokenType, - int64_t *out_phNewToken); - -bool32 AccessCheck(struct NtSecurityDescriptor *pSecurityDescriptor, - int64_t ClientToken, unsigned int DesiredAccess, - struct NtGenericMapping *lpGenericMapping, - struct NtPrivilegeSet *lpPrivilegeSet, - unsigned int *PrivilegeSetLength, - unsigned int *GrantedAccess, bool32 *AccessStatus); - -void MapGenericMask(uint32_t *AccessMask, - struct NtGenericMapping *GenericMapping); - -int64_t FindFirstFile(const char16_t *lpFileName, - struct NtWin32FindData *out_lpFindFileData); -int64_t FindFirstFileEx(const char16_t *lpFileName, int fInfoLevelId, - void *out_lpFindFileData, int fSearchOp, - void *reserved_lpSearchFilter, - uint32_t dwAdditionalFlags); -bool32 FindNextFile(int64_t hFindFile, - struct NtWin32FindData *out_lpFindFileData); -bool32 FindClose(int64_t inout_hFindFile); - -int64_t FindFirstVolume(char16_t *out_lpszVolumeName, uint32_t cchBufferLength); -bool32 FindNextVolume(int64_t inout_hFindVolume, char16_t *out_lpszVolumeName, - uint32_t cchBufferLength); -bool32 FindVolumeClose(int64_t hFindVolume); - -bool32 ReadFileScatter( - int64_t hFileOpenedWithOverlappedAndNoBuffering, - const union NtFileSegmentElement - aNullTerminatedPageAlignedSizedSegmentArray[], - uint32_t nNumberOfBytesToReadThatsMultipleOfFileVolumeSectorSize, - uint32_t *lpReserved, struct NtOverlapped *inout_lpOverlapped) - paramsnonnull(); - -bool32 WriteFileGather(int64_t hFileOpenedWithOverlappedAndNoBuffering, - const union NtFileSegmentElement aSegmentArray[], - uint32_t nNumberOfBytesToWrite, uint32_t *lpReserved, - struct NtOverlapped inout_lpOverlapped) paramsnonnull(); - -#define kNtFileNameNormalized 0x0 -#define kNtFileNameOpened 0x8 -#define kNtVolumeNameDos 0x0 /* e.g. \\?\C:\Users\jart */ -#define kNtVolumeNameGuid 0x1 /* e.g. \\?\Volume{ea38-etc.}\Users\jart */ -#define kNtVolumeNameNt 0x2 /* e.g. \Device\HarddiskVolume4\Users\jart */ -#define kNtVolumeNameNone 0x4 /* e.g. \Users\jart */ -uint32_t GetFinalPathNameByHandle(int64_t hFile, char16_t *out_path, - uint32_t arraylen, uint32_t flags); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/files.inc */ - -#define CopyFile(...) __imp_CopyFileW(__VA_ARGS__) -extern typeof(CopyFile) *const __imp_CopyFileW __msabi; - -#define FlushFileBuffers(...) __imp_FlushFileBuffers(__VA_ARGS__) -extern typeof(FlushFileBuffers) *const __imp_FlushFileBuffers __msabi; - -#define GetFileType(...) __imp_GetFileType(__VA_ARGS__) -extern typeof(GetFileType) *const __imp_GetFileType __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/iocp.h */ - -#define COSMOPOLITAN_LIBC_NT_IOCP_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » i/o completion ports ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kNtFileSkipCompletionPortOnSuccess 1 -#define kNtFileSkipSetEventOnHandle 2 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef void (*NtOverlappedCompletionRoutine)( - uint32_t dwErrorCode, uint32_t dwNumberOfBytesTransfered, - struct NtOverlapped *inout_lpOverlapped); - -int64_t CreateIoCompletionPort(int64_t FileHandleOrNeg1, - int64_t opt_ExistingCompletionPortOrZero, - void *StatePointer, - uint32_t NumberOfConcurrentThreads); - -bool32 GetQueuedCompletionStatus(int64_t CompletionPort, - uint32_t *lpNumberOfBytesTransferred, - void *StatePointerPointer, - struct NtOverlapped **lpOverlapped, - uint32_t dwMilliseconds); - -bool32 GetQueuedCompletionStatusEx( - int64_t CompletionPort, - struct NtOverlappedEntry *out_lpCompletionPortEntries, uint32_t ulCount, - uint32_t *out_ulNumEntriesRemoved, uint32_t dwMilliseconds, - bool32 fAlertable); - -bool32 PostQueuedCompletionStatus(int64_t CompletionPort, - uint32_t dwNumberOfBytesTransferred, - uint32_t *dwCompletionKey, - struct NtOverlapped *opt_lpOverlapped); - -bool32 SetFileCompletionNotificationModes(int64_t FileHandle, - unsigned char Flags); - -bool32 ReadFileEx(int64_t hFile, void *lpBuffer, uint32_t nNumberOfBytesToRead, - uint32_t *lpNumberOfBytesRead, - struct NtOverlapped *opt_lpOverlapped, - NtOverlappedCompletionRoutine lpCompletionRoutine); - -bool32 WriteFileEx(int64_t hFile, const void *lpBuffer, - uint32_t nNumberOfBytesToWrite, - struct NtOverlapped *lpOverlapped, - NtOverlappedCompletionRoutine lpCompletionRoutine); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/ipc.h */ - -#define COSMOPOLITAN_LIBC_NT_IPC_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » ipc ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -/* CreateNamedPipe:dwOpenMode */ -#define kNtPipeAccessInbound 0x00000001 -#define kNtPipeAccessOutbound 0x00000002 -#define kNtPipeAccessDuplex 0x00000003 - -/* CreateNamedPipe::dwPipeMode */ -#define kNtPipeWait 0x00000000 -#define kNtPipeNowait 0x00000001 -#define kNtPipeReadmodeByte 0x00000000 -#define kNtPipeReadmodeMessage 0x00000002 -#define kNtPipeTypeByte 0x00000000 -#define kNtPipeTypeMessage 0x00000004 -#define kNtPipeAcceptRemoteClients 0x00000000 -#define kNtPipeRejectRemoteClients 0x00000008 - -/* CreateNamedPipe::nMaxInstances */ -#define NT_PIPE_UNLIMITED_INSTANCES 255 - -/* CreateNamedPipeInfo */ -#define PIPE_CLIENT_END 0x00000000 -#define PIPE_SERVER_END 0x00000001 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -bool32 CreatePipe(int64_t *out_hReadPipe, int64_t *out_hWritePipe, - const struct NtSecurityAttributes *opt_lpPipeAttributes, - uint32_t nSize) paramsnonnull((1, 2)); - -int64_t CreateNamedPipe( - const char16_t *lpName, uint32_t dwOpenMode, uint32_t dwPipeMode, - uint32_t nMaxInstances, uint32_t nOutBufferSize, uint32_t nInBufferSize, - uint32_t nDefaultTimeOut, - const struct NtSecurityAttributes *opt_lpSecurityAttributes) - paramsnonnull((1)); - -bool32 CallNamedPipe(const char16_t *lpNamedPipeName, void *lpInBuffer, - uint32_t nInBufferSize, void *lpOutBuffer, - uint32_t nOutBufferSize, uint32_t *lpBytesRead, - uint32_t nTimeOut); - -bool32 ConnectNamedPipe(int64_t *hNamedPipe, struct NtOverlapped *lpOverlapped); -bool32 WaitNamedPipe(const char16_t *lpNamedPipeName, uint32_t nTimeOut); -bool32 DisconnectNamedPipe(int64_t *hNamedPipe); - -bool32 SetNamedPipeHandleState(int64_t *hNamedPipe, uint32_t *lpMode, - uint32_t *lpMaxCollectionCount, - uint32_t *lpCollectDataTimeout); - -bool32 PeekNamedPipe(int64_t *hNamedPipe, void *lpBuffer, uint32_t nBufferSize, - uint32_t *lpBytesRead, uint32_t *lpTotalBytesAvail, - uint32_t *lpBytesLeftThisMessage); - -bool32 TransactNamedPipe(int64_t *hNamedPipe, void *lpInBuffer, - uint32_t nInBufferSize, void *lpOutBuffer, - uint32_t nOutBufferSize, uint32_t *lpBytesRead, - struct NtOverlapped *lpOverlapped); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/memory.h */ - -#define COSMOPOLITAN_LIBC_NT_MEMORY_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » memory ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kNtNumaNoPreferredNode 0xffffffffu - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int64_t CreateFileMappingNuma( - int64_t opt_hFile /* -1ul is MAP_ANONYMOUS */, - const struct NtSecurityAttributes *opt_lpFileMappingAttributes, - uint32_t flProtect, uint32_t dwMaximumSizeHigh, uint32_t dwMaximumSizeLow, - const char16_t *opt_lpName, uint32_t nndDesiredNumaNode); - -void *MapViewOfFileExNuma( - int64_t hFileMappingObject, /* @see CreateFileMapping() */ - uint32_t dwDesiredAccess, uint32_t dwFileOffsetHigh, /* high order bits */ - uint32_t dwFileOffsetLow, /* low order bits */ - size_t dwNumberOfBytesToMap, void *opt_lpDesiredBaseAddress, - uint32_t nndDesiredNumaNode); - -bool32 UnmapViewOfFile(const void *lpBaseAddress); -bool32 FlushViewOfFile(const void *lpBaseAddress, - size_t dwNumberOfBytesToFlush); - -void *VirtualAlloc(void *opt_lpAddress, uint64_t dwSize, - uint32_t flAllocationType, uint32_t flProtect); -bool32 VirtualFree(void *lpAddress, uint64_t dwSize, uint32_t dwFreeType); -bool32 VirtualProtect(void *lpAddress, uint64_t dwSize, uint32_t flNewProtect, - uint32_t *lpflOldProtect) paramsnonnull(); -uint64_t VirtualQuery(const void *lpAddress, - struct NtMemoryBasicInformation *lpBuffer, - uint64_t dwLength); -void *VirtualAllocEx(int64_t hProcess, void *lpAddress, uint64_t dwSize, - uint32_t flAllocationType, uint32_t flProtect); - -bool32 PrefetchVirtualMemory(int64_t hProcess, const uint32_t *NumberOfEntries, - struct NtMemoryRangeEntry *VirtualAddresses, - uint32_t reserved_Flags); -bool32 OfferVirtualMemory(void *inout_VirtualAddress, size_t Size, - int Priority); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/memory.inc */ - -#define CreateFileMappingNuma(...) __imp_CreateFileMappingNumaW(__VA_ARGS__) -#define MapViewOfFileExNuma(...) __imp_MapViewOfFileExNuma(__VA_ARGS__) -#define FlushViewOfFile(...) __imp_FlushViewOfFile(__VA_ARGS__) -#define UnmapViewOfFile(...) __imp_UnmapViewOfFile(__VA_ARGS__) - -extern typeof(UnmapViewOfFile) *const __imp_UnmapViewOfFile __msabi; -extern typeof(FlushViewOfFile) *const __imp_FlushViewOfFile __msabi; -extern typeof(MapViewOfFileExNuma) *const __imp_MapViewOfFileExNuma __msabi; -extern typeof(CreateFileMappingNuma) *const - __imp_CreateFileMappingNumaW __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/messagebox.h */ - -#define COSMOPOLITAN_LIBC_NT_MESSAGEBOX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int MessageBox(int64_t hWnd, const char16_t *lpText, const char16_t *lpCaption, - uint32_t mbType); -int MessageBoxEx(int64_t hWnd, const char16_t *lpText, - const char16_t *lpCaption, uint32_t mbType, - uint16_t wLanguageId); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/ntdll.h */ - -#define COSMOPOLITAN_LIBC_NT_NTDLL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » beyond the pale ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - “The functions and structures in [for these APIs] are internal to - the operating system and subject to change from one release of - Windows to the next, and possibly even between service packs for - each release.” ──Quoth MSDN */ - -#define __nt_system_call_dispatcher (wambda *)0x7ffe0308 - -extern const struct NtUnicodeString *const RtlNtdllName; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § new technology » beyond the pale » eponymous runtime ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define NT_PROCESS_FLAGS_CREATE_SUSPENDED 0x00000001 -#define NT_PROCESS_FLAGS_INHERIT_HANDLES 0x00000002 -#define NT_PROCESS_FLAGS_NO_SYNCHRONIZE 0x00000004 -#define NT_RTL_CLONE_PARENT 0 -#define NT_RTL_CLONE_CHILD 297 - -NtStatus NtCallbackReturn(void *opt_Result, uint32_t ResultLength, - int32_t Status); -NtStatus NtTestAlert(void); - -NtStatus NtOpenFile(int64_t *out_FileHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - struct NtIoStatusBlock *out_IoStatusBlock, - uint32_t ShareAccess, uint32_t OpenOptions); - -NtStatus NtQueryInformationToken(int64_t TokenHandle, - uint32_t TokenInformationClass, - void *out_TokenInformation, - uint32_t TokenInformationLength, - uint32_t *out_ReturnLength); -NtStatus NtYieldExecution(void); -NtStatus NtQuerySystemInformation(uint32_t info_class, void *out_info, - uint32_t info_size, - uint32_t *out_bytes_received); -NtStatus NtReadVirtualMemory(int64_t ProcessHandle, const void *BaseAddress, - void *out_Buffer, size_t BufferLength, - size_t *opt_out_ReturnLength); -NtStatus NtCreateTimer(void **out_TimerHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - uint32_t TimerType); -NtStatus NtSetTimer(void *TimerHandle, int64_t *DueTime, void *TimerApcRoutine, - void *TimerContext, int32_t Resume, int32_t Period, - int32_t *out_PreviousState); -NtStatus NtQueryObject(void *ObjectHandle, int ObjectInformationClass, - void *out_ObjectInformation, - uint32_t ObjectInformationLength, - uint32_t *opt_out_ReturnLength); -NtStatus NtQueryFullAttributesFile( - struct NtObjectAttributes *attributes, - struct NtFileNetworkOpenInformation *out_info); -NtStatus NtCreateKey(void **out_KeyHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - uint32_t TitleIndex, struct NtUnicodeString *opt_Class, - uint32_t CreateOptions, uint32_t *opt_out_Disposition); -NtStatus NtOpenKey(void **out_KeyHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes); -NtStatus NtSetValueKey(void *KeyHandle, struct NtUnicodeString *ValueName, - uint32_t opt_TitleIndex, uint32_t Type, void *Data, - uint32_t DataSize); -NtStatus NtDeleteKey(void *KeyHandle); -NtStatus NtQueryValueKey(void *KeyHandle, struct NtUnicodeString *ValueName, - int KeyValueInformationClass, - void *out_KeyValueInformation, uint32_t Length, - uint32_t *out_ResultLength); -NtStatus NtFlushKey(void *KeyHandle); -NtStatus NtEnumerateKey(int64_t hkey, uint32_t index, int info_class, - void *out_key_info, uint32_t key_info_size, - uint32_t *out_bytes_received); -NtStatus NtEnumerateValueKey(int64_t hKey, uint32_t index, int info_class, - void *out_key_info, uint32_t key_info_size, - uint32_t *out_bytes_received); -NtStatus NtQuerySystemTime(int64_t *SystemTime); -NtStatus NtDeleteFile(struct NtObjectAttributes *ObjectAttributes); -NtStatus NtFlushBuffersFile(int64_t FileHandle, - struct NtIoStatusBlock *out_IoStatusBlock); -NtStatus NtCreateIoCompletion(void **out_IoCompletionHandle, - uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - uint32_t NumberOfConcurrentThreads); -NtStatus NtRaiseHardError(int32_t ErrorStatus, uint32_t NumberOfArguments, - uint32_t UnicodeStringArgumentsMask, void *Arguments, - uint32_t MessageBoxType, - uint32_t *out_MessageBoxResult); -NtStatus NtRaiseException(struct NtExceptionRecord *ExceptionRecord, - struct NtContext *Context, int32_t SearchFrames); -NtStatus NtCreateEvent(void **out_EventHandle, uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes, - int EventType, int32_t InitialState); -NtStatus NtWaitForSingleObject(void *ObjectHandle, int32_t Alertable, - int64_t *TimeOut); -NtStatus NtSetEvent(void *EventHandle, int32_t *opt_out_PreviousState); -NtStatus NtClearEvent(void *EventHandle); -NtStatus NtSignalAndWaitForSingleObject(void *ObjectToSignal, - void *WaitableObject, int32_t Alertable, - int64_t *opt_Time); -NtStatus NtQueryPerformanceCounter(int64_t *out_PerformanceCount, - int64_t *opt_out_PerformanceFrequency); -NtStatus NtFsControlFile(int64_t FileHandle, void *opt_Event, - NtIoApcRoutine opt_ApcRoutine, void *opt_ApcContext, - struct NtIoStatusBlock *out_IoStatusBlock, - uint32_t FsControlCode, void *opt_InputBuffer, - uint32_t InputBufferLength, void *opt_out_OutputBuffer, - uint32_t OutputBufferLength); -NtStatus NtCancelIoFile(int64_t FileHandle, - struct NtIoStatusBlock *out_IoStatusBlock); -NtStatus NtCreateProfile(void **out_ProfileHandle, int64_t ProcessHandle, - void *Base, uint32_t Size, uint32_t BucketShift, - uint32_t *Buffer, uint32_t BufferLength, int Source, - uint32_t ProcessorMask); -NtStatus NtSetIntervalProfile(uint32_t Interval, int Source); -NtStatus NtQueryIntervalProfile(int Source, uint32_t *out_Interval); -NtStatus NtStartProfile(void *ProfileHandle); -NtStatus NtStopProfile(void *ProfileHandle); -NtStatus NtCreateDirectoryObject(int64_t *out_DirectoryHandle, - uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes); -NtStatus NtOpenDirectoryObject(int64_t *out_DirectoryHandle, - uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes); -NtStatus NtOpenSymbolicLinkObject(int64_t *out_DirectoryHandle, - uint32_t DesiredAccess, - struct NtObjectAttributes *ObjectAttributes); -NtStatus NtQuerySymbolicLinkObject(int64_t DirectoryHandle, - struct NtUnicodeString *inout_TargetName, - uint32_t *opt_out_ReturnLength); -NtStatus ZwAreMappedFilesTheSame(void *Address1, void *Address2); -NtStatus NtQueryVolumeInformationFile(int64_t FileHandle, - struct NtIoStatusBlock *out_IoStatusBlock, - void *out_FsInformation, uint32_t Length, - uint32_t FsInformationClass); -NtStatus NtQuerySecurityObject( - int64_t handle, int RequestedInformation, - struct NtSecurityDescriptor *out_SecurityDescriptor, - uint32_t SecurityDescriptorLength, uint32_t *out_ReturnLength); -NtStatus NtQueueApcThread(int64_t ThreadHandle, NtPkNormalRoutine ApcRoutine, - void *opt_ApcContext, void *opt_Argument1, - void *opt_Argument2); -NtStatus NtFlushInstructionCache(int64_t ProcessHandle, void *opt_BaseAddress, - size_t FlushSize); -NtStatus NtQueryAttributesFile(const struct NtObjectAttributes *object, - struct NtFileBasicInformation *file_information); -NtStatus NtQueryDirectoryFile( - int64_t FileHandle, void *opt_Event, NtIoApcRoutine opt_ApcRoutine, - void *opt_ApcContext, struct NtIoStatusBlock *out_IoStatusBlock, - void *out_FileInformation, uint32_t FileInformationLength, - uint32_t FileInformationClass, int32_t ReturnSingleEntry, - struct NtUnicodeString *opt_FileName, int32_t RestartScan); -NtStatus NtFlushVirtualMemory(int64_t ProcessHandle, void **inout_BaseAddress, - uint32_t **inout_FlushSize, - struct NtIoStatusBlock *out_IoStatusBlock); -NtStatus NtQueryInformationJobObject(void *JobHandle, int JobInformationClass, - void *out_JobInformation, - uint32_t JobInformationLength, - uint32_t *opt_out_ReturnLength); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § new technology » beyond the pale » runtime library ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -NtStatus RtlInitializeCriticalSection(struct NtCriticalSection *out_crit); -NtStatus RtlDeleteCriticalSection(struct NtCriticalSection *crit); -NtStatus RtlEnterCriticalSection(struct NtCriticalSection *inout_crit); -NtStatus RtlLeaveCriticalSection(struct NtCriticalSection *inout_crit); -NtStatus RtlTryEnterCriticalSection(struct NtCriticalSection *inout_crit); -NtStatus RtlInitUnicodeString(struct NtUnicodeString *inout_DestinationString, - const char16_t *SourceString); -void RtlFreeUnicodeString(struct NtUnicodeString **string); -NtStatus RtlQueryEnvironmentVariable_U(char16_t *Environment, - struct NtUnicodeString *Name, - struct NtUnicodeString *Value); -NtStatus RtlConvertSidToUnicodeString(struct NtUnicodeString *out_UnicodeString, - void *Sid, - int32_t AllocateDestinationString); -void *RtlCreateHeap(uint32_t flags, void *base, size_t reserve_sz, - size_t commit_sz, void *lock, void *params); -NtStatus RtlDestroyHeap(void *base); -void *RtlAllocateHeap(int64_t heap, uint32_t flags, size_t size); -void *RtlReAllocateHeap(int64_t heap, uint32_t flags, void *ptr, size_t size); -NtStatus RtlFreeHeap(int64_t heap, uint32_t flags, void *ptr); -size_t RtlSizeHeap(int64_t heap, uint32_t flags, void *ptr); -NtStatus RtlValidateHeap(int64_t heap, uint32_t flags, void *ptr); -NtStatus RtlLockHeap(int64_t heap); -NtStatus RtlUnlockHeap(int64_t heap); -NtStatus RtlGetProcessHeaps(uint32_t count, void **out_Heaps); -NtStatus RtlWalkHeap(int64_t heap, void *out_Info); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/ntdll.inc */ - -#define NtYieldExecution(...) __imp_NtYieldExecution(__VA_ARGS__) - -extern typeof(NtYieldExecution) *const __imp_NtYieldExecution __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/ntdllimport.h */ - -/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ -│vi: set et ft=asm ts=8 tw=8 fenc=utf-8 :vi│ -╞══════════════════════════════════════════════════════════════════════════════╡ -│ Copyright 2020 Justine Alexandra Roberts Tunney │ -│ │ -│ Permission to use, copy, modify, and/or distribute this software for │ -│ any purpose with or without fee is hereby granted, provided that the │ -│ above copyright notice and this permission notice appear in all copies. │ -│ │ -│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ -│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ -│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ -│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ -│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ -│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ -│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ -│ PERFORMANCE OF THIS SOFTWARE. │ -╚─────────────────────────────────────────────────────────────────────────────*/ -#define COSMOPOLITAN_LIBC_NT_NTDLLIMPORT_H_ - - -/*!BEGIN ape/relocations.h */ - -#define COSMOPOLITAN_APE_RELOCATIONS_H_ -/*─────────────────────────────────────────────────────────────────────────────╗ -│ αcτµαlly pδrταblε εxεcµταblε § relocations │ -╚──────────────────────────────────────────────────────────────────────────────╝ - One of the things αcτµαlly pδrταblε εxεcµταblε does a good job - abstracting, is how a program needs to exist at three addresses - simultaneously during the early stages of the loading process. - - By default, the linker calculates all symbols using virtual addresses. - In some cases it's necessary to use addend macros that change virtual - addresses into the other two types: physical and real. */ - -#define IMAGE_BASE_REAL 0x2000 - -#ifndef IMAGE_BASE_VIRTUAL -#define IMAGE_BASE_VIRTUAL 0x400000 -#endif - -#ifndef IMAGE_BASE_PHYSICAL -#define IMAGE_BASE_PHYSICAL 0x100000 -#endif - -/** - * Returns Relative Virtual Address. - */ -#define RVA(x) ((x) - (IMAGE_BASE_VIRTUAL)) - -/** - * Adjusts virtual address so it's relative to load address. - */ -#define PHYSICAL(x) ((x) - (IMAGE_BASE_VIRTUAL - IMAGE_BASE_PHYSICAL)) - -/** - * Makes high-entropy read-only addresses relocatable in real mode. - */ -#define REAL(x) ((x) - (IMAGE_BASE_VIRTUAL - IMAGE_BASE_REAL)) - -#if IMAGE_BASE_VIRTUAL % 0x200000 != 0 -#error "IMAGE_BASE_VIRTUAL must be 2mb aligned" -#endif -#if IMAGE_BASE_PHYSICAL % 0x1000 != 0 -#error "IMAGE_BASE_PHYSICAL must be 4kb aligned" -#endif -#if IMAGE_BASE_REAL % 0x1000 != 0 -#error "IMAGE_BASE_REAL must be 4kb aligned" -#endif - -#ifdef __ASSEMBLER__ -/* clang-format off */ - -.macro .ntimp fn:req - yoink _init_ntdll - .initbss 202,_init_ntdll.\fn -__imp_\fn: - .quad 0 - .endobj __imp_\fn,globl,hidden - .previous - .initro 202,_init_ntdll.2.\fn - .quad RVA(.L\fn) - .previous - .section .rodata.str1.1,"aSM",@progbits,1 -.L\fn: - .asciz "\fn" - .previous -.endm - -/* clang-format on */ -#endif /* __ASSEMBLER__ */ - - -/*!BEGIN libc/nt/paint.h */ - -#define COSMOPOLITAN_LIBC_NT_PAINT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § new technology » cpu graphics ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int64_t BeginPaint(int64_t hWnd, struct NtPaintStruct *lpPaint); -int32_t EndPaint(int64_t hWnd, const struct NtPaintStruct *lpPaint); -int32_t BitBlt(int64_t hdc, int x, int y, int cx, int cy, int64_t hdcSrc, - int x1, int y1, uint32_t rop); -int32_t GetClientRect(int64_t hWnd, struct NtRect *lpRect); -int32_t GetWindowRect(int64_t hWnd, struct NtRect *lpRect); -int32_t SetBkMode(int64_t hdc, int mode); -uint32_t SetTextColor(int64_t hdc, uint32_t color); -uint32_t SetTextAlign(int64_t hdc, uint32_t align); -int32_t SetTextJustification(int64_t hdc, int extra, int count); -int32_t DrawText(int64_t hdc, const char16_t *lpchText, int cchText, - struct NtRect *lprc, uint32_t format); -int32_t DrawTextEx(int64_t hdc, char16_t *lpchText, int cchText, - struct NtRect *lprc, uint32_t format, - struct NtDrawTextParams *lpdtp); -int32_t FillRect(int64_t hDC, const struct NtRect *lpRC, int64_t hBrush); -uint32_t GetPixel(int64_t hdc, int x, int y); -uint32_t SetPixel(int64_t hdc, int x, int y, uint32_t color); -bool32 RedrawWindow(int64_t hWnd, const struct NtRect *opt_lprcUpdate, - int64_t opt_hrgnUpdate, uint32_t rdwFlags); -int64_t CreateCompatibleDC(int64_t hdc); -int64_t CreateCompatibleBitmap(int64_t hdc, int cx, int cy); -int64_t SelectObject(int64_t hdc, int64_t h); -bool32 DeleteObject(int64_t ho); -bool32 DeleteDC(int64_t hdc); -int SaveDC(int64_t hdc); -bool32 RestoreDC(int64_t hdc, int nSavedDC); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/paint.inc */ - -#define SetPixel(...) __imp_SetPixel(__VA_ARGS__) -#define GetPixel(...) __imp_GetPixel(__VA_ARGS__) - -extern typeof(SetPixel) *const __imp_SetPixel __msabi; -extern typeof(GetPixel) *const __imp_GetPixel __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/privilege.h */ - -#define COSMOPOLITAN_LIBC_NT_PRIVILEGE_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » check your privilege ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kNtSePrivilegeEnabledByDefault 0x00000001u -#define kNtSePrivilegeEnabled 0x00000002u -#define kNtSePrivilegeRemoved 0x00000004u -#define kNtSePrivilegeUsedForAccess 0x80000000u - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -bool32 LookupPrivilegeValue(const char16_t *opt_lpSystemName, - const char16_t *lpName, struct NtLuid *out_lpLuid); - -bool32 AdjustTokenPrivileges(int64_t TokenHandle, bool32 DisableAllPrivileges, - const struct NtTokenPrivileges *opt_NewState, - uint32_t BufferLength, - struct NtTokenPrivileges *opt_out_PreviousState, - uint32_t *opt_out_ReturnLength); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/process.h */ - -#define COSMOPOLITAN_LIBC_NT_PROCESS_H_ - - -/*!BEGIN libc/nt/startupinfo.h */ - -#define COSMOPOLITAN_LIBC_NT_NTSTARTUPINFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void GetStartupInfo(struct NtStartupInfo *lpStartupInfo); - -bool32 InitializeProcThreadAttributeList( - struct NtProcThreadAttributeList *opt_inout_lpAttributeList, - uint32_t dwAttributeCount, uint32_t reserved_dwFlags, size_t *inout_lpSize) - paramsnonnull((4)); -bool32 UpdateProcThreadAttribute( - struct NtProcThreadAttributeList *inout_lpAttributeList, uint32_t dwFlags, - const uint32_t *Attribute, const void *lpValue, size_t cbSize, - void *reserved_lpPreviousValue, size_t *reserved_lpReturnSize) - paramsnonnull((1, 3, 4)); -void DeleteProcThreadAttributeList( - struct NtProcThreadAttributeList *inout_lpAttributeList) paramsnonnull(); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/startupinfo.inc */ - -#define GetStartupInfo(...) __imp_GetStartupInfoW(__VA_ARGS__) - -extern typeof(GetStartupInfo) *const __imp_GetStartupInfoW __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » processes ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -bool32 CreateProcess(const char16_t *opt_lpApplicationName, - char16_t *lpCommandLine, - struct NtSecurityAttributes *opt_lpProcessAttributes, - struct NtSecurityAttributes *opt_lpThreadAttributes, - bool32 bInheritHandles, uint32_t dwCreationFlags, - void *opt_lpEnvironment, - const char16_t *opt_lpCurrentDirectory, - const struct NtStartupInfo *lpStartupInfo, - struct NtProcessInformation *opt_out_lpProcessInformation) - paramsnonnull((2, 9)); - -uint32_t GetThreadId(int64_t hThread); /* cf. NT_TID */ -uint32_t GetProcessId(int64_t hProcess); /* cf. NT_PID */ -void SetLastError(uint32_t dwErrCode); -uint32_t FormatMessage(uint32_t dwFlags, const void *lpSource, - uint32_t dwMessageId, uint32_t dwLanguageId, - char16_t *lpBuffer, uint32_t nSize, va_list *Arguments); -int64_t OpenProcess(uint32_t dwDesiredAccess, bool32 bInheritHandle, - uint32_t dwProcessId); -uint32_t GetCurrentProcessId(void); /* %gs:0x40 */ -uint32_t GetEnvironmentVariable(const char16_t *lpName, char16_t *lpBuffer, - uint32_t nSize); -uint32_t SetEnvironmentVariable(const char16_t *lpName, char16_t *lpValue); -int32_t SetEnvironmentStrings(char16_t *NewEnvironment); -bool32 GetProcessAffinityMask(int64_t hProcess, - uintptr_t *lpProcessAffinityMask, - uintptr_t *lpSystemAffinityMask); -uint64_t /*bool32*/ SetProcessAffinityMask(int64_t hProcess, - uintptr_t dwProcessAffinityMask); - -/* e.g. kNtAboveNormalPriorityClass, kNtHighPriorityClass */ -uint32_t GetPriorityClass(int64_t hProcess); -bool32 SetPriorityClass(int64_t hProcess, uint32_t dwPriorityClass); -bool32 SetProcessPriorityBoost(int64_t hProcess, bool32 bDisablePriorityBoost); -bool32 GetProcessPriorityBoost(int64_t hProcess, bool32 *pDisablePriorityBoost); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/process.inc */ - -#define GetEnvironmentVariable(...) __imp_GetEnvironmentVariableW(__VA_ARGS__) -extern typeof(GetEnvironmentVariable) *const - __imp_GetEnvironmentVariableW __msabi; - -#define SetEnvironmentVariable(...) __imp_SetEnvironmentVariableW(__VA_ARGS__) -extern typeof(SetEnvironmentVariable) *const - __imp_SetEnvironmentVariableW __msabi; - -#define GetPriorityClass(...) __imp_GetPriorityClass(__VA_ARGS__) -extern typeof(GetPriorityClass) *const __imp_GetPriorityClass __msabi; - -#define SetPriorityClass(...) __imp_SetPriorityClass(__VA_ARGS__) -extern typeof(SetPriorityClass) *const __imp_SetPriorityClass __msabi; - -#define GetCurrentProcessId(...) __imp_GetCurrentProcessId(__VA_ARGS__) -extern typeof(GetCurrentProcessId) *const __imp_GetCurrentProcessId __msabi; - -#define CreateProcess(...) __imp_CreateProcessW(__VA_ARGS__) -extern typeof(CreateProcess) *const __imp_CreateProcessW __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/registry.h */ - -#define COSMOPOLITAN_LIBC_NT_REGISTRY_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » registry ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kNtMaxKeyNameChars 255 -#define kNtMaxValueNameChars 16383 -#define kNtMaxValueBytes 0x100000 - -#define kNtHkeyClassesRoot 0x80000000l -#define kNtHkeyCurrentUser 0x80000001l -#define kNtHkeyLocalMachine 0x80000002l -#define kNtHkeyUsers 0x80000003l -#define kNtHkeyPerformanceData 0x80000004l -#define kNtHkeyPerformanceText 0x80000050l -#define kNtHkeyPerformanceNlstext 0x80000060l -#define kNtHkeyCurrentConfig 0x80000005l -#define kNtHkeyDynData 0x80000006l -#define kNtHkeyCurrentUserLocalSettings 0x80000007l - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int RegOpenKey(int64_t hKey, const char16_t *opt_lpSubKey, - int64_t *out_phkResult) paramsnonnull((3)); -int RegOpenKeyEx(int64_t hKey, const char16_t *opt_lpSubKey, - uint32_t opt_ulOptions, int samDesired, int64_t *out_phkResult) - paramsnonnull((5)); -int RegCloseKey(int64_t hKey); - -int RegGetValue(int64_t hkey, const char16_t *opt_lpSubKey, - const char16_t *opt_lpValue, unsigned dwFlags, int *opt_pdwType, - void *opt_out_pvData, uint32_t *opt_inout_pcbDataBytes); -int RegSetValue(int64_t hKey, const char16_t *lpSubKey, int dwType, - const char16_t *lpData, uint32_t cbData); -int RegSetValueEx(int64_t hKey, const char16_t *lpValueName, uint32_t Reserved, - int dwType, const unsigned char *lpData, uint32_t cbData); - -int RegQueryInfoKey(int64_t hKey, char16_t *opt_out_lpClass, - uint32_t *opt_inout_lpClassLen, uint32_t *lpReserved, - uint32_t *opt_out_lpcSubKeys, - uint32_t *opt_out_lpcbMaxSubKeyBytes, - uint32_t *opt_out_lpcbMaxClassBytes, - uint32_t *opt_out_lpcValues, - uint32_t *opt_out_lpcbMaxValueNameBytes, - uint32_t *opt_out_lpcbMaxValueBytes, - uint32_t *opt_out_lpcbSecurityDescriptorBytes, - struct NtFileTime *opt_out_lpftLastWriteTime); -int RegEnumKey(int64_t hKey, uint32_t dwIndex, char16_t *opt_lpName, - uint32_t NameLen); -int RegEnumKeyEx(int64_t hKey, uint32_t dwIndex, char16_t *out_lpName, - uint32_t *inout_lpcchName, uint32_t *lpReserved, - char16_t *opt_out_lpClass, uint32_t *opt_inout_lpcchClassLen, - struct NtFileTime *opt_out_lpftLastWriteTime); - -int RegEnumValue(int64_t hKey, uint32_t dwIndex, char16_t *lpValueName, - uint32_t *lpValueNameLen, uint32_t *lpReserved, - int *opt_out_lpType, unsigned char *opt_out_lpData, - uint32_t *opt_inout_lpcbDataBytes); -int RegQueryValue(int64_t hKey, const char16_t *opt_lpSubKey, - char16_t *opt_out_lpData, int32_t *opt_inout_lpcbDataBytes); -int RegQueryValueEx(int64_t hKey, const char16_t *opt_lpValueName, - uint32_t *lpReserved, int *opt_out_lpType, - unsigned char *opt_out_lpData, - uint32_t *opt_inout_lpcbDataBytes); - -int RegOverridePredefKey(int64_t hKey, int64_t hNewHKey); -int RegOpenUserClassesRoot(void *hToken, uint32_t dwOptions, int samDesired, - int64_t *phkResult); -int RegOpenCurrentUser(int samDesired, int64_t *phkResult); -int RegDisablePredefinedCache(); -int RegConnectRegistry(const char16_t *lpMachineName, int64_t hKey, - int64_t *phkResult); -int RegConnectRegistryEx(const char16_t *lpMachineName, int64_t hKey, - uint32_t Flags, int64_t *phkResult); -int RegCreateKey(int64_t hKey, const char16_t *lpSubKey, int64_t *phkResult); -int RegCreateKeyEx(int64_t hKey, const char16_t *lpSubKey, uint32_t Reserved, - int16_t *lpClass, uint32_t dwOptions, int samDesired, - struct NtSecurityAttributes *lpSecurityAttributes, - int64_t *phkResult, uint32_t *lpdwDisposition); -int RegDeleteKey(int64_t hKey, const char16_t *lpSubKey); -int RegDeleteKeyEx(int64_t hKey, const char16_t *lpSubKey, int samDesired, - uint32_t Reserved); -int RegDeleteTree(int64_t hKey, const char16_t *opt_lpSubKey); -int RegDisableReflectionKey(int64_t hBase); -int RegEnableReflectionKey(int64_t hBase); -int RegQueryReflectionKey(int64_t hBase, bool32 *bIsReflectionDisabled); -int RegDeleteValue(int64_t hKey, const char16_t *lpValueName); -int RegFlushKey(int64_t hKey); -int RegGetKeySecurity(int64_t hKey, uint32_t SecurityInformation, - void *pSecurityDescriptor, - uint32_t *lpcbSecurityDescriptorBytes); -int RegLoadKey(int64_t hKey, const char16_t *lpSubKey, const char16_t *lpFile); -int RegNotifyChangeKeyValue(int64_t hKey, bool32 bWatchSubtree, - uint32_t dwNotifyFilter, void *hEvent, - int fAsynchronous); -int RegQueryMultipleValues(int64_t hKey, struct NtValent *inout_val_list, - uint32_t num_vals, int16_t *out_lpValueBuf, - uint32_t *inout_ldwTotsize) paramsnonnull(); -int RegReplaceKey(int64_t hKey, const char16_t *lpSubKey, - const char16_t *lpNewFile, const char16_t *lpOldFile); -int RegRestoreKey(int64_t hKey, const char16_t *lpFile, uint32_t dwFlags); -int RegSaveKey(int64_t hKey, const char16_t *lpFile, - struct NtSecurityAttributes *lpSecurityAttributes); -int RegSetKeySecurity(int64_t hKey, uint32_t SecurityInformation, - void *pSecurityDescriptor); -int RegUnLoadKey(int64_t hKey, const char16_t *lpSubKey); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/runtime.h */ - -#define COSMOPOLITAN_LIBC_NT_RUNTIME_H_ - -/** - * @fileoverview NT Obligatory Runtime Functions. - * - * These functions are placed in their own file because they're (a) - * abstracted by the Cosmopolitan runtime; and (b) it helps GCC avoid - * bloating binaries with debug information the user doesn't need. - */ - -#define kNtCpUtf8 65001 -#define kNtInvalidHandleValue -1L -#define kNtStdInputHandle -10L -#define kNtStdOutputHandle -11L -#define kNtStdErrorHandle -12L - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -char16_t *GetCommandLine(void) nosideeffect; -char16_t *GetEnvironmentStrings(void) nodiscard; -bool32 FreeEnvironmentStrings(char16_t *) paramsnonnull(); -bool32 ReadFile(int64_t hFile, void *lpBuffer, uint32_t nNumberOfBytesToRead, - uint32_t *lpNumberOfBytesRead, - struct NtOverlapped *opt_lpOverlapped); -bool32 WriteFile(int64_t hFile, const void *lpBuffer, - uint32_t nNumberOfBytesToWrite, - uint32_t *lpNumberOfBytesWritten, - struct NtOverlapped *opt_lpOverlapped); -bool32 TerminateProcess(int64_t hProcess, uint32_t uExitCode); -int64_t GetCurrentProcess(void) pureconst; -void ExitProcess(uint32_t uExitCode) wontreturn; -uint32_t GetLastError(void) nosideeffect; -bool32 CloseHandle(int64_t hObject) nothrow nocallback; -intptr_t GetStdHandle(int64_t nStdHandle) nosideeffect; -bool32 SetStdHandle(int64_t nStdHandle, int64_t hHandle); -bool32 SetDefaultDllDirectories(unsigned dirflags); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/runtime.inc */ - -#define FreeEnvironmentStrings(...) __imp_FreeEnvironmentStringsW(__VA_ARGS__) -extern typeof(FreeEnvironmentStrings) *const - __imp_FreeEnvironmentStringsW __msabi; - -#define GetCommandLine(...) __imp_GetCommandLineW(__VA_ARGS__) -extern typeof(GetCommandLine) *const __imp_GetCommandLineW __msabi; - -#define GetEnvironmentStrings(...) __imp_GetEnvironmentStringsW(__VA_ARGS__) -extern typeof(GetEnvironmentStrings) *const - __imp_GetEnvironmentStringsW __msabi; - -#define GetStdHandle(...) __imp_GetStdHandle(__VA_ARGS__) -extern typeof(GetStdHandle) *const __imp_GetStdHandle __msabi; - -#define SetStdHandle(...) __imp_SetStdHandle(__VA_ARGS__) -extern typeof(SetStdHandle) *const __imp_SetStdHandle __msabi; - -#define ReadFile(...) __imp_ReadFile(__VA_ARGS__) -extern typeof(ReadFile) *const __imp_ReadFile __msabi; - -#define WriteFile(...) __imp_WriteFile(__VA_ARGS__) -extern typeof(WriteFile) *const __imp_WriteFile __msabi; - -#define SetDefaultDllDirectories(...) \ - __imp_SetDefaultDllDirectories(__VA_ARGS__) -extern typeof(SetDefaultDllDirectories) *const - __imp_SetDefaultDllDirectories __msabi; - -#define GetCurrentProcess(...) __imp_GetCurrentProcess(__VA_ARGS__) -extern typeof(GetCurrentProcess) *const __imp_GetCurrentProcess __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/signals.h */ - -#define COSMOPOLITAN_LIBC_NT_EXCEPTIONS_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » signals ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef int (*NtTopLevelExceptionFilter)(const struct NtExceptionPointers *); -typedef int32_t (*NtVectoredExceptionHandler)(struct NtExceptionPointers *); - -int SetErrorMode(int uMode); - -int64_t AddVectoredExceptionHandler(uint32_t First, - NtVectoredExceptionHandler pHandler); -int64_t AddVectoredContinueHandler(uint32_t First, - NtVectoredExceptionHandler pHandler); - -uint32_t RemoveVectoredExceptionHandler(int64_t hHandle); -uint32_t RemoveVectoredContinueHandler(int64_t hHandle); - -NtTopLevelExceptionFilter SetUnhandledExceptionFilter( - NtTopLevelExceptionFilter opt_lpTopLevelExceptionFilter); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/signals.inc */ - -#define SetErrorMode(...) __imp_SetErrorMode(__VA_ARGS__) -#define AddVectoredExceptionHandler(...) \ - __imp_AddVectoredExceptionHandler(__VA_ARGS__) -#define AddVectoredContinueHandler(...) \ - __imp_AddVectoredContinueHandler(__VA_ARGS__) -#define RemoveVectoredExceptionHandler(...) \ - __imp_RemoveVectoredExceptionHandler(__VA_ARGS__) -#define RemoveVectoredContinueHandler(...) \ - __imp_RemoveVectoredContinueHandler(__VA_ARGS__) -#define SetUnhandledExceptionFilter(...) \ - __imp_SetUnhandledExceptionFilter(__VA_ARGS__) - -extern typeof(SetErrorMode) *const __imp_SetErrorMode __msabi; -extern typeof(AddVectoredExceptionHandler) *const - __imp_AddVectoredExceptionHandler __msabi; -extern typeof(AddVectoredContinueHandler) *const - __imp_AddVectoredContinueHandler __msabi; -extern typeof(RemoveVectoredExceptionHandler) *const - __imp_RemoveVectoredExceptionHandler __msabi; -extern typeof(RemoveVectoredContinueHandler) *const - __imp_RemoveVectoredContinueHandler __msabi; -extern typeof(SetUnhandledExceptionFilter) *const - __imp_SetUnhandledExceptionFilter __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/synchronization.h */ - -#define COSMOPOLITAN_LIBC_NT_SYNCHRONIZATION_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » synchronization ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define InterlockedAdd(PTR, VAL) \ - ({ \ - typeof(*(PTR)) Res; \ - typeof(Res) Val = (VAL); \ - asm volatile("lock xadd\t%0,%1" : "=r"(Res), "+m"(*(PTR)) : "0"(Val)); \ - Res + Val; \ - }) - -#define InterlockedExchange(PTR, VAL) \ - ({ \ - typeof(*(PTR)) Res = (VAL); \ - asm volatile("xchg\t%0,%1" : "+r"(Res), "+m"(*(PTR))); \ - Res; \ - }) - -typedef void (*NtTimerapcroutine)(void *lpArgToCompletionRoutine, - uint32_t dwTimerLowValue, - uint32_t dwTimerHighValue); -typedef void (*NtWaitOrTimerCallback)(void *lpParameter, - bool32 TimerOrWaitFired); - -void Sleep(uint32_t dwMilliseconds); -uint32_t SleepEx(uint32_t dwMilliseconds, bool32 bAlertable); - -void GetSystemTime(struct NtSystemTime *lpSystemTime); -bool32 SystemTimeToFileTime(const struct NtSystemTime *lpSystemTime, - struct NtFileTime *lpFileTime); -void GetSystemTimeAsFileTime(struct NtFileTime *); /* win8+ */ -void GetSystemTimePreciseAsFileTime(struct NtFileTime *); /* win8+ */ - -uint32_t WaitForSingleObject(int64_t hHandle, uint32_t dwMilliseconds); -uint32_t WaitForMultipleObjects(uint32_t nCount, const int64_t *lpHandles, - bool32 bWaitAll, uint32_t dwMilliseconds); -uint32_t WaitForSingleObjectEx(int64_t hHandle, uint32_t dwMilliseconds, - bool32 bAlertable); -uint32_t WaitForMultipleObjectsEx(unsigned int nCount, const int64_t *lpHandles, - bool32 bWaitAll, uint32_t dwMilliseconds, - bool32 bAlertable); -bool32 RegisterWaitForSingleObject(int64_t *phNewWaitObject, int64_t hObject, - NtWaitOrTimerCallback Callback, - void *Context, uint32_t dwMilliseconds, - uint32_t dwFlags); - -int64_t CreateWaitableTimer(struct NtSecurityAttributes *lpTimerAttributes, - bool32 bManualReset, const char16_t *lpTimerName); -bool32 SetWaitableTimer(int64_t hTimer, const int64_t *lpDueTimeAsFtOrNegRela, - int32_t opt_lPeriodMs, NtTimerapcroutine opt_callback, - void *lpArgToCallback, bool32 fUnsleepSystem); - -int32_t SetEvent(int64_t hEvent); -int32_t ResetEvent(int64_t hEvent); -int32_t PulseEvent(int64_t hEvent); - -int32_t ReleaseMutex(int64_t hMutex); -int32_t ReleaseSemaphore(int64_t hSemaphore, int32_t lReleaseCount, - int *lpPreviousCount); - -void InitializeCriticalSection(struct NtCriticalSection *lpCriticalSection); -void EnterCriticalSection(struct NtCriticalSection *lpCriticalSection); -void LeaveCriticalSection(struct NtCriticalSection *lpCriticalSection); -int32_t TryEnterCriticalSection(struct NtCriticalSection *lpCriticalSection); -void DeleteCriticalSection(struct NtCriticalSection *lpCriticalSection); -int32_t InitializeCriticalSectionAndSpinCount( - struct NtCriticalSection *lpCriticalSection, uint32_t dwSpinCount); -uint32_t SetCriticalSectionSpinCount( - struct NtCriticalSection *lpCriticalSection, uint32_t dwSpinCount); - -void InitializeSRWLock(intptr_t *); -void AcquireSRWLockExclusive(intptr_t *); -void AcquireSRWLockShared(intptr_t *); -void ReleaseSRWLockExclusive(intptr_t *); -void ReleaseSRWLockShared(intptr_t *); -void TryAcquireSRWLockExclusive(intptr_t *); -void TryAcquireSRWLockShared(intptr_t *); - -uint64_t GetTickCount64(void); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/systeminfo.h */ - -#define COSMOPOLITAN_LIBC_NT_INFO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void GetSystemInfo(struct NtSystemInfo *lpSystemInfo); -uint32_t GetSystemDirectory(char16_t *lpBuffer, uint32_t uSize); -uint32_t GetSystemDirectoryA(char *lpBuffer, uint32_t uSize); -uint32_t GetWindowsDirectory(char16_t *lpBuffer, uint32_t uSize); -uint32_t GetTempPath(uint32_t uSize, char16_t *lpBuffer); - -bool32 GetComputerNameEx(/* enum/computernameformat.h */ int NameType, - char16_t *opt_lpBuffer, uint32_t *nSize); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/systeminfo.inc */ - -#define GetSystemInfo(...) __imp_GetSystemInfo(__VA_ARGS__) -#define GetTempPath(...) __imp_GetTempPathW(__VA_ARGS__) - -extern typeof(GetSystemInfo) *const __imp_GetSystemInfo __msabi; -extern typeof(GetTempPath) *const __imp_GetTempPathW __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/thread.h */ - -#define COSMOPOLITAN_LIBC_NT_THREADS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » threads ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -typedef uint32_t (*NtThreadStartRoutine)(void *lpParameter); - -int64_t CreateThread(struct NtSecurityAttributes *lpThreadAttributes, - size_t dwStackSize, NtThreadStartRoutine lpStartAddress, - void *lpParameter, uint32_t dwCreationFlags, - uint32_t *opt_lpThreadId); - -void ExitThread(uint32_t dwExitCode) wontreturn; -int64_t GetCurrentThread(void); -uint32_t GetCurrentThreadId(void); -uint64_t SetThreadAffinityMask(int64_t hThread, uintptr_t dwThreadAffinityMask); -int64_t OpenThread(uint32_t dwDesiredAccess, bool32 bInheritHandle, - uint32_t dwThreadId); -bool32 TerminateThread(int64_t hThread, uint32_t dwExitCode); -bool32 GetExitCodeThread(int64_t hThread, uint32_t *lpExitCode); - -/* e.g. kNtThreadPriorityAboveNormal, -1u on error */ -uint32_t GetThreadPriority(int64_t hThread); -bool32 SetThreadPriority(int64_t hThread, int32_t nPriority); -bool32 SetThreadPriorityBoost(int64_t hThread, bool32 bDisablePriorityBoost); -bool32 GetThreadPriorityBoost(int64_t hThread, bool32 *pDisablePriorityBoost); -bool32 GetThreadIOPendingFlag(int64_t hThread, bool32 *lpIOIsPending); - -bool32 CancelSynchronousIo(int64_t hThread); -bool32 CancelIo(int64_t hFile); -bool32 CancelIoEx(int64_t hFile, struct NtOverlapped opt_lpOverlapped); - -#if ShouldUseMsabiAttribute() - - -/*!BEGIN libc/nt/thunk/thread.inc */ - -#define GetCurrentThread(...) __imp_GetCurrentThread(__VA_ARGS__) -#define GetThreadPriority(...) __imp_GetThreadPriority(__VA_ARGS__) -#define SetThreadPriority(...) __imp_SetThreadPriority(__VA_ARGS__) - -extern typeof(GetCurrentThread) *const __imp_GetCurrentThread __msabi; -extern typeof(GetThreadPriority) *const __imp_GetThreadPriority __msabi; -extern typeof(SetThreadPriority) *const __imp_SetThreadPriority __msabi; -#endif /* ShouldUseMsabiAttribute() */ -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/windows.h */ - -#define COSMOPOLITAN_LIBC_NT_WINDOWS_H_ -/* ░░░░ - ▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓░ - ▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▒ ▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒▒▒░░░░▒▒▒▒▒▒▓▓▓▓▓▓ █▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓░ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ▒▒▒▒░░░▒▒▒▒▒▒▒▓▓▓▓▓▓ ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒ - ▒▒▒▒▓▓ ▓▒▒▓▓▓▓ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▓ ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓ - ░░░░░░░░░░░▒▒▒▒ ▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓█ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓▓ ▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓ - ░▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓░ ░▓███▓ - ▒▒░░░░░░░░░░▒▒▒▒▒▓▓░ ▒▓▓▓▒▒▒ ░▒▒▒▓ ████████████ - ▒▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▒▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒░ ░███ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ███ - ▒▒░░░░░░░░░░▒▒▒▒▒▒▓▓ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ▓██ - ▒░░░░░░░░░░░▒▒▒▒▒▓▓ ▓▓▓▓▒▒▒▒▒▒▒▒░░░▒▒▒▒▒▓ ▓██ - ▒▒░░░▒▒▒░░░▒▒░▒▒▒▓▓▒ ▒▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒ ███ - ░▒▓ ░▓▓▓▓▒▒▒▒▒▒▒▒░░░░▒▒▒▒▓ ▓██ -╔────────────────────────────────────────────────────────────────▀▀▀─────────│─╗ -│ cosmopolitan § new technology » windows ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -int64_t CreateWindowEx(uint32_t dwExStyle, const char16_t *lpClassName, - const char16_t *lpWindowName, uint32_t dwStyle, int X, - int Y, int nWidth, int nHeight, int64_t hWndParent, - int64_t hMenu, int64_t hInstance, int64_t lpParam); - -uint16_t RegisterClass(const struct NtWndClass *lpWndClass); - -int64_t DefWindowProc(int64_t hWnd, uint32_t Msg, uint64_t wParam, - int64_t lParam); - -int32_t CloseWindow(int64_t hWnd); -int32_t DestroyWindow(int64_t hWnd); -int32_t ShowWindow(int64_t hWnd, int sw); -int32_t ShowCaret(bool32 bShow); -int32_t AnimateWindow(int64_t hWnd, uint32_t dwTime, uint32_t dwFlags); -int64_t LoadIcon(int64_t hInstance, const char16_t *lpIconName); -int32_t MoveWindow(int64_t hWnd, int X, int Y, int nWidth, int nHeight, - bool32 bRepaint); -int32_t BringWindowToTop(int64_t hWnd); -int32_t IsWindowVisible(int64_t hWnd); -int32_t SetWindowText(int64_t hWnd, const char16_t *lpString); -int32_t GetWindowText(int64_t hWnd, char16_t *lpString, int nMaxCount); -int32_t SetWindowPos(int64_t hWnd, int64_t hWndInsertAfter, int X, int Y, - int cx, int cy, uint32_t uFlags); -bool32 GetWindowPlacement(int64_t hWnd, struct NtWindowPlacement *lpwndpl); -bool32 SetWindowPlacement(int64_t hWnd, - const struct NtWindowPlacement *lpwndpl); - -int64_t GetCursor(void); -int64_t SetCursor(int64_t hCursor); -int32_t ShowCursor(bool32 bShow); -int64_t LoadCursor(int64_t opt_hInstance, const char16_t *lpCursorNameOrIdc); - -bool32 IsWindow(int64_t hWnd); -bool32 IsMenu(int64_t hMenu); -bool32 IsChild(int64_t hWndParent, int64_t hWnd); -bool32 IsZoomed(int64_t hWnd); -bool32 IsIconic(int64_t hWnd); - -uintptr_t SetTimer(int64_t opt_hWnd, uintptr_t nIDEvent, uint32_t uElapseMs, - NtTimerProc lpTimerFunc); -int32_t KillTimer(int64_t hWnd, uintptr_t uIDEvent); - -int64_t SetCapture(int64_t hWnd); -bool32 ReleaseCapture(void); -int16_t GetKeyState(int32_t nVirtKey); - -int64_t CreateMenu(void); -int64_t CreatePopupMenu(void); -int64_t GetMenu(int64_t hWnd); -bool32 DestroyMenu(int64_t hMenu); -int64_t GetSystemMenu(int64_t hWnd, bool32 bRevert); -bool32 AppendMenu(int64_t hMenu, uint32_t mfFlags, uintptr_t uIDNewItem, - const char16_t *lpNewItem); -bool32 InsertMenu(int64_t hMenu, uint32_t uPosition, uint32_t uFlags, - uintptr_t uIDNewItem, const char16_t *lpNewItem); -bool32 TrackPopupMenu(int64_t hMenu, uint32_t uFlags, int32_t x, int32_t y, - int32_t nReserved, int64_t hWnd, - const struct NtRect *prcRect); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/nt/winsock.h */ - -#define COSMOPOLITAN_LIBC_NT_WINSOCK_H_ -/* ░▓█████████████████████████████████████████████▓▒ - ░█▓░░░░░░░░░▓██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▓▒░ - ░█▓░ ░▒▒▒▒ ▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▓▒▒ - ░█▓░ ░▓▓▓▒ ▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▓▒▒ - ░█▓░ ░▓██▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▓▒▒ - ░███████████████████████████████████████████████▓▒▒ - ░█▓░ ▒█▓▒▒ - ░█▓░ ▒█▓▒▒ - ░█▓░ ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ ▒█▓▒▒ - ░█▓░ ░▒░ ▒█▓░ ▒█▓▒▒ - ░█▓░ ░░░░ ░░░░░░░░ ▒▓▓▓▒░ ▒█▓▒▒ - ░█▓░ ░░░░ ░░░░░▒▒▓███▓░░░░░░░░▒▓▓▓▓▒ ▒█▓▒▒ - ░█▓░ ░▒▒ ░░░░░░░▒▒████▓░░░░░░░░░░▒██▓ ▒█▓▒▒ - ░█▓░ ░▒▒ ░░░░░░░▒▒▓▓▓▓▓░░░░░░░░░▒▒██▓ ▒█▓▒▒ - ░█▓░ ░▒▒ ░░▒▒▒▒░░░░░ ░▒▒▒▒░░░░░▒▒██▓ ▒█▓▒▒ - ░█▓░ ░▒▒ ░░▒▓█▓░░░░░░░▒▓██▓░░░░▒▒██▓ ▒█▓▒▒ - ░█▓░ ░▒▒ ░░▒▓█▓░░░░░░░▒▓██▓░░░░▒▒██▓ ▒█▓▒▒ - ░█▓░ ░▒▒ ░░▒▓█▓░░░░░░░▒▓██▓░░░░▒▒██▓ ░▓█▓▒▒▒▒ - ░█▓░ ░▒▒ ░░▒▓█▓░░░░░░░▒▓██▓░░░░░▒██▓ ░████▓▒░ - ░█▓░ ░░░░░░░░▒▒░░░░░░░░░▒▒░░░▒▒▓▓▒░░ ░░▓███▓▒░ - ░█▓░ ░░░░░░░░░░░░░░░░░░░░░░▒▓▓▓▒░ ▒████▓▒░░░░░░ - ░█▓░ ░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░ ░▓▓▓▓██▒░░░░░░░░ - ░█▓░ ▒█████████████████▒ ▓█▓▒░ ▒█▓ ░█▓ ░▓▓░ - ░█▓░ ░▓████▒░ ▒█▓▒░ ░░░░░░░ ▓█▓░ - ░█▓░ ░▓████▒░ ░▒░ ░░░░░░░░░░░ ░█▓ - ░█▓ ▒███▓▒▒░ ░░░░░░░░░░░░░░░ ▒▓▓ - ░██████████████████████████████████████▓▒▓█▓░ ░░░░░░░░░░░░░░░░░░ ▒█▓ - ▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░ ░░░░░░░░░░░░░░░░░░░░▒█▓ - ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒██▒▒▒░░░░░░░░░░░░░░░░░░░░░▒█▓ - ░██▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▒█▓ - ░▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░▒▓█▓ - ░▓▓▓▒▒▒▒▒▒░░░░░░░░░░░▒▒▒▒▓▓▒ - ░██▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ░█▓ - ▒█▓▒▒▒▒▒▒▒▒▒▒▒██▓▒░ ░█▓ - ▒█████████████▓▒▒░ ░██▒ -╔────────────────────────────────────────────────────────────────▀▀▀▀───▀▀▀▀─│─╗ -│ cosmopolitan § new technology » winsock ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define kNtCompEqual 0 -#define kNtCompNotless 1 - -#define kNtWsaFlagOverlapped 0x01 -#define kNtWsaFlagNoHandleInherit 0x80 - -#define kNtTfDisconnect 0x01 -#define kNtTfReuseSocket 0x02 -#define kNtTfWriteBehind 0x04 -#define kNtTfUseDefaultWorker 0x00 -#define kNtTfUseSystemThread 0x10 -#define kNtTfUseKernelApc 0x20 - -#define kNtSoConnectTime 0x700C -#define kNtSoUpdateAcceptContext 0x700B -#define kNtSoUpdateConnectContext 0x7010 - -#define kNtSioAddressListChange 0x28000017u -#define kNtSioAddressListQuery 0x48000016u -#define kNtSioAddressListSort 0xC8000019u -#define kNtSioAssociateHandle 0x88000001u -#define kNtSioEnableCircularQueueing 0x28000002u -#define kNtSioFindRoute 0x48000003u -#define kNtSioFlush 0x28000004u -#define kNtSioGetBroadcastAddress 0x48000005u -#define kNtSioGetExtensionFunctionPointer 0xC8000006u -#define kNtSioGetGroupQos 0xC8000008u -#define kNtSioGetQos 0xC8000007u -#define kNtSioMulticastScope 0x8800000Au -#define kNtSioMultipointLoopback 0x88000009u -#define kNtSioQueryRssProcessorInfo 0x48000025u -#define kNtSioQueryTargetPnpHandle 0x48000018u -#define kNtSioReserved1 0x8800001Au -#define kNtSioReserved2 0x88000021u -#define kNtSioRoutingInterfaceChange 0x88000015u -#define kNtSioRoutingInterfaceQuery 0xC8000014u -#define kNtSioSetGroupQos 0x8800000Cu -#define kNtSioSetQos 0x8800000Bu -#define kNtSioSocketCloseNotify 0x9800000Du -#define kNtSioTranslateHandle 0xC800000Du -#define kNtSioUdpConnreset 0x9800000Cu -#define kNtSioUdpNetreset 0x9800000Fu - -#define kNtNspNotifyImmediately 0 -#define kNtNspNotifyHwnd 1 -#define kNtNspNotifyEvent 2 -#define kNtNspNotifyPort 3 -#define kNtNspNotifyApc 4 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct NtTimeval { - int32_t tv_sec; /* [sic] */ - int32_t tv_usec; -}; - -struct NtIovec { - uint32_t len; - char *buf; -}; - -struct NtMsgHdr { - struct sockaddr *name; - int32_t namelen; - struct NtIovec *lpBuffers; - uint32_t dwBufferCount; - struct NtIovec Control; - uint32_t dwFlags; -}; - -struct NtWsaData { - uint16_t wVersion; - uint16_t wHighVersion; - uint16_t iMaxSockets; - uint16_t iMaxUdpDg; - char *lpVendorInfo; - char szDescription[257]; - char szSystemStatus[129]; -}; - -struct NtSocketAddress { - struct sockaddr *lpSockaddr; - int32_t iSockaddrLength; -}; - -struct NtSocketAddressList { - int32_t iAddressCount; - struct NtSocketAddress Address[1]; -}; - -struct NtAddrInfoEx { /* win8+ */ - int32_t ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ - int32_t ai_family; /* PF_XXX */ - int32_t ai_socktype; /* SOCK_XXX */ - int32_t ai_protocol; - uint64_t ai_addrlen; - char16_t *ai_canonname; - struct sockaddr *ai_addr; - void *ai_blob; - uint64_t ai_bloblen; - struct NtGuid *ai_provider; - struct NtAddrInfoEx *ai_next; - int32_t ai_version; /* v2 */ - char16_t *ai_fqdn; /* v2 */ - int32_t ai_interfaceindex; /* v3 */ - int64_t ai_resolutionhandle; /* v4 */ -}; - -struct NtWsaProtocolChain { - int32_t ChainLen; - uint32_t ChainEntries[7]; -}; - -struct NtWsaProtocolInfo { - uint32_t dwServiceFlags1; - uint32_t dwServiceFlags2; - uint32_t dwServiceFlags3; - uint32_t dwServiceFlags4; - uint32_t dwProviderFlags; - struct NtGuid ProviderId; - uint32_t dwCatalogEntryId; - struct NtWsaProtocolChain ProtocolChain; - int32_t iVersion; - int32_t iAddressFamily; - int32_t iMaxSockAddr; - int32_t iMinSockAddr; - int32_t iSocketType; - int32_t iProtocol; - int32_t iProtocolMaxOffset; - int32_t iNetworkByteOrder; - int32_t iSecurityScheme; - uint32_t dwMessageSize; - uint32_t dwProviderReserved; - char16_t szProtocol[256]; -}; - -struct NtFlowSpec { - uint32_t TokenRate; /* bytes/sec */ - uint32_t TokenBucketSize; /* bytes */ - uint32_t PeakBandwidth; /* bytes/sec */ - uint32_t Latency; /* µs */ - uint32_t DelayVariation; /* µs */ - uint32_t ServiceType; /* kNtServicetypeXxx */ - uint32_t MaxSduSize; /* bytes */ - uint32_t MinimumPolicedSize; /* bytes */ -}; - -struct NtQos { - struct NtFlowSpec SendingFlowspec; - struct NtFlowSpec ReceivingFlowspec; - struct NtIovec ProviderSpecific; -}; - -struct NtWsaVersion { - uint32_t dwVersion; - int ecHow; -}; - -struct NtAfProtocols { - int32_t iAddressFamily; - int32_t iProtocol; -}; - -struct NtBlob { - uint32_t cbSize; - uint8_t pBlobData; -}; - -struct NtCsAddrInfo { - struct NtSocketAddress LocalAddr; - struct NtSocketAddress RemoteAddr; - int32_t iSocketType; - int32_t iProtocol; -}; - -struct NtWsaQuerySet { - uint32_t dwSize; /* of this */ - char16_t *lpszServiceInstanceName; - struct NtGuid *lpServiceClassId; - struct NtWsaVersion *lpVersion; - char16_t *lpszComment; - uint32_t dwNameSpace; - struct NtGuid *lpNSProviderId; - char16_t *lpszContext; - uint32_t dwNumberOfProtocols; - struct NtAfProtocols *lpafpProtocols /*[dwNumberOfProtocols]*/; - char16_t *lpszQueryString; - uint32_t dwNumberOfCsAddrs; - struct NtCsAddrInfo *lpcsaBuffer /*[dwNumberOfCsAddrs]*/; - uint32_t dwOutputFlags; - struct NtBlob *lpBlob; -}; - -struct NtWsaNamespaceInfoEx { - struct NtGuid NSProviderId; - uint32_t dwNameSpace; - bool32 fActive; - uint32_t dwVersion; - char16_t *lpszIdentifier; - struct NtBlob *ProviderSpecific; -}; - -struct NtWsansClassInfo { - char16_t *lpszName; - uint32_t dwNameSpace; - uint32_t dwValueType; - uint32_t dwValueSize; - void *lpValue; -}; - -struct NtWsaServiceClassInfo { - struct NtGuid *lpServiceClassId; - char16_t *lpszServiceClassName; - uint32_t dwCount; - struct NtWsansClassInfo *lpClassInfos; -}; - -struct NtWsaNetworkEvents { - int32_t lNetworkEvents; - int32_t iErrorCode[10]; -}; - -struct NtTransmitFileBuffers { - void *Head; - uint32_t HeadLength; - void *Tail; - uint32_t TailLength; -}; - -typedef int (*NtConditionProc)( - const struct NtIovec *lpCallerId, const struct NtIovec *lpCallerData, - struct NtQos *inout_lpSQOS, struct NtQos *inout_lpGQOS, - const struct NtIovec *lpCalleeId, const struct NtIovec *lpCalleeData, - uint32_t *out_group, const uint32_t *dwCallbackData); - -typedef void (*NtWsaOverlappedCompletionRoutine)( - uint32_t dwError, uint32_t cbTransferred, - const struct NtOverlapped *lpOverlapped, uint32_t dwFlags); - -struct NtWsaCompletion { - int Type; - union { - struct { - int64_t hWnd; - uint32_t uMsg; - uintptr_t context; - } WindowMessage; - struct { - struct NtOverlapped *lpOverlapped; - } Event; - struct { - struct NtOverlapped *lpOverlapped; - NtWsaOverlappedCompletionRoutine lpfnCompletionProc; - } Apc; - struct { - struct NtOverlapped *lpOverlapped; - int64_t hPort; - uint32_t Key; - } Port; - } Parameters; -}; - -struct NtFdSet { - uint32_t fd_count; - int64_t fd_array[64]; -}; - -/** - * Winsock2 prototypes. - * - * @note Some of the functions exported by WS2_32.DLL, e.g. bind(), - * overlap with the names used by System V. Prototypes for these - * functions are declared within their respective wrappers. - */ - -int32_t WSAStartup(uint16_t wVersionRequested, struct NtWsaData *lpWSAData) - paramsnonnull() nodiscard; - -int WSACleanup(void); -int WSAGetLastError(void); -void WSASetLastError(int); - -int __sys_bind_nt(uint64_t, const void *, int); -int __sys_closesocket_nt(uint64_t); -int __sys_getpeername_nt(uint64_t, void *, uint32_t *); -int __sys_getsockname_nt(uint64_t, void *, uint32_t *); -int __sys_getsockopt_nt(uint64_t, int, int, void *, uint32_t *); -int __sys_ioctlsocket_nt(uint64_t, int32_t, uint32_t *); -int __sys_listen_nt(uint64_t, int); -int __sys_setsockopt_nt(uint64_t, int, int, const void *, int); -int __sys_shutdown_nt(uint64_t, int); -int __sys_select_nt(int, struct NtFdSet *, struct NtFdSet *, struct NtFdSet *, - struct NtTimeval *); - -uint64_t WSASocket(int af, int type, int protocol, - const struct NtWsaProtocolInfo *opt_lpProtocolInfo, - const uint32_t opt_group, uint32_t dwFlags) nodiscard; - -int WSAConnect(uint64_t s, const struct sockaddr *name, const int namelen, - const struct NtIovec *opt_lpCallerData, - struct NtIovec *opt_out_lpCalleeData, - const struct NtQos *opt_lpSQOS, const struct NtQos *opt_lpGQOS) - paramsnonnull((2)); - -bool32 WSAConnectByName(uint64_t s, const char16_t *nodename, - const char16_t *servicename, - uint32_t *opt_inout_LocalAddressLength, - struct sockaddr *out_LocalAddress, - uint32_t *opt_inout_RemoteAddressLength, - struct sockaddr *out_RemoteAddress, - const struct NtTimeval *opt_timeout, - struct NtOverlapped *__Reserved) paramsnonnull((2, 3)); - -bool32 WSAConnectByList(uint64_t s, - const struct NtSocketAddressList *SocketAddress, - uint32_t *opt_inout_LocalAddressLength, - struct sockaddr *out_LocalAddress, - uint32_t *opt_inout_RemoteAddressLength, - struct sockaddr *out_RemoteAddress, - const struct NtTimeval *opt_timeout, - struct NtOverlapped *__Reserved) paramsnonnull((2)); - -int64_t WSAAccept(uint64_t s, struct sockaddr *out_addr, - int32_t *opt_inout_addrlen, - const NtConditionProc opt_lpfnCondition, - const uint32_t *opt_dwCallbackData) - paramsnonnull((2)) nodiscard; - -int WSASend(uint64_t s, const struct NtIovec *lpBuffers, uint32_t dwBufferCount, - uint32_t *opt_out_lpNumberOfBytesSent, uint32_t dwFlags, - struct NtOverlapped *opt_inout_lpOverlapped, - const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine) - paramsnonnull((2)); - -int WSASendMsg(int64_t Handle, const struct NtMsgHdr *lpMsg, uint32_t dwFlags, - uint32_t *opt_out_lpNumberOfBytesSent, - struct NtOverlapped *opt_inout_lpOverlapped, - const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine) - paramsnonnull((2)); - -int WSASendTo(uint64_t s, const struct NtIovec *lpBuffers, - uint32_t dwBufferCount, - uint32_t *opt_out_lpNumberOfBytesSent /* opt if !overlapped */, - uint32_t dwFlags, const void *opt_tosockaddr, - int32_t tosockaddrlen, - struct NtOverlapped *opt_inout_lpOverlapped, - const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine) - paramsnonnull((2)); - -int WSAPoll(struct sys_pollfd_nt *inout_fdArray, uint32_t nfds, - signed timeout_ms) paramsnonnull(); - -int WSARecv(uint64_t s, const struct NtIovec *out_lpBuffers, - uint32_t dwBufferCount, uint32_t *opt_out_lpNumberOfBytesRecvd, - uint32_t *inout_lpFlags, - struct NtOverlapped *opt_inout_lpOverlapped, - const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine) - paramsnonnull((2, 5)); - -int WSARecvFrom(uint64_t s, const struct NtIovec *out_lpBuffers, - uint32_t dwBufferCount, uint32_t *opt_out_lpNumberOfBytesRecvd, - uint32_t *inout_lpFlags, void *out_fromsockaddr, - uint32_t *inout_fromsockaddrlen, - struct NtOverlapped *opt_inout_lpOverlapped, - const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine) - paramsnonnull((2, 5)); - -int WSARecvDisconnect(uint64_t s, - const struct NtIovec *opt_lpInboundDisconnectData); - -int WSADuplicateSocket(uint64_t s, uint32_t dwProcessId, - struct NtWsaProtocolInfo *out_lpProtocolInfo) - paramsnonnull((3)); - -int WSAIoctl(uint64_t s, uint32_t dwIoControlCode, const void *lpvInBuffer, - uint32_t cbInBuffer, void *out_lpvOutBuffer, uint32_t cbOutBuffer, - uint32_t *out_lpcbBytesReturned, - struct NtOverlapped *opt_inout_lpOverlapped, - const NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine) - paramsnonnull((5, 7)); - -int WSANSPIoctl(int64_t hLookup, uint32_t dwControlCode, - const void *lpvInBuffer, uint32_t cbInBuffer, - void *out_lpvOutBuffer, uint32_t cbOutBuffer, - uint32_t *out_lpcbBytesReturned, - const struct NtWsaCompletion *opt_lpCompletion) - paramsnonnull((3, 5, 7)); - -int64_t WSACreateEvent(void) nodiscard; -bool32 WSACloseEvent(const int64_t hEvent); -bool32 WSAResetEvent(const int64_t hEvent); -bool32 WSASetEvent(const int64_t hEvent); - -int WSAEventSelect(uint64_t s, const int64_t opt_hEventObject, - long lNetworkEvents); - -uint32_t WSAWaitForMultipleEvents(uint32_t cEvents, const int64_t *lphEvents, - bool32 fWaitAll, uint32_t dwTimeout_ms, - bool32 fAlertable) paramsnonnull(); - -int WSAEnumNetworkEvents(uint64_t s, const int64_t hEventObject, - struct NtWsaNetworkEvents *out_lpNetworkEvents) - paramsnonnull(); - -bool32 WSAGetOverlappedResult(uint64_t s, - const struct NtOverlapped *lpOverlapped, - uint32_t *out_lpcbTransfer, bool32 fWait, - uint32_t *out_lpdwFlags) paramsnonnull(); - -int WSAEnumProtocols(const int32_t *opt_lpiProtocols, - struct NtWsaProtocolInfo *out_lpProtocolBuffer, - uint32_t *inout_lpdwBufferLength) paramsnonnull(); - -bool32 WSAGetQOSByName(uint64_t s, const struct NtIovec *lpQOSName, - struct NtQos *out_lpQOS) paramsnonnull(); - -uint64_t WSAJoinLeaf(uint64_t s, const struct sockaddr *name, const int namelen, - const struct NtIovec *opt_lpCallerData, - struct NtIovec *opt_out_lpCalleeData, - const struct NtQos *opt_lpSQOS, - const struct NtQos *opt_lpGQOS, uint32_t dwFlags) - paramsnonnull((2, 4)); - -int WSALookupServiceBegin(const struct NtWsaQuerySet *lpqsRestrictions, - uint32_t dwControlFlags, int64_t *out_lphLookup) - paramsnonnull(); - -int WSALookupServiceNext(const int64_t hLookup, uint32_t dwControlFlags, - uint32_t *inout_lpdwBufferLength, - struct NtWsaQuerySet *out_lpqsResults) paramsnonnull(); - -int WSALookupServiceEnd(int64_t hLookup); - -int WSAAddressToString(const struct sockaddr *lpsaAddress, - uint32_t dwAddressLength, - const struct NtWsaProtocolInfo *opt_lpProtocolInfo, - char16_t *out_lpszAddressString, - uint32_t *inout_lpdwAddressStringLength) - paramsnonnull((1, 4, 5)); - -int WSAStringToAddress(const char16_t *AddressString, int AddressFamily, - const struct NtWsaProtocolInfo *opt_lpProtocolInfo, - struct sockaddr *out_lpAddress, - int *inout_lpAddressLength) paramsnonnull((1, 3, 4)); - -int WSAEnumNameSpaceProvidersEx(uint32_t *inout_lpdwBufferLength, - struct NtWsaNamespaceInfoEx *out_lpnspBuffer) - paramsnonnull(); - -int WSAProviderConfigChange( - int64_t *inout_lpNotificationHandle, - struct NtOverlapped *opt_inout_lpOverlapped, - NtWsaOverlappedCompletionRoutine opt_lpCompletionRoutine) - paramsnonnull((1)); - -int WSAInstallServiceClass( - const struct NtWsaServiceClassInfo *lpServiceClassInfo) paramsnonnull(); - -int WSARemoveServiceClass(const struct NtGuid *lpServiceClassId) - paramsnonnull(); - -int WSAGetServiceClassInfo(const struct NtGuid *lpProviderId, - const struct NtGuid *lpServiceClassId, - uint32_t *inout_lpdwBufSize, - struct NtWsaServiceClassInfo *out_lpServiceClassInfo) - paramsnonnull((1, 2, 3)); - -int WSASetService(const struct NtWsaQuerySet *lpqsRegInfo, int essoperation, - uint32_t dwControlFlags) paramsnonnull(); - -int /* success==0 */ WSAGetServiceClassNameByClassId( - const struct NtGuid *lpServiceClassId, char16_t *out_lpszServiceClassName, - uint32_t *inout_lpdwBufferLength) paramsnonnull(); - -bool32 TransmitFile(int64_t hSocket, int64_t hFile, - uint32_t opt_nNumberOfBytesToWrite, - uint32_t opt_nNumberOfBytesPerSend, - struct NtOverlapped *opt_inout_lpOverlapped, - const struct NtTransmitFileBuffers *opt_lpTransmitBuffers, - uint32_t dwReserved); - -bool32 AcceptEx(int64_t sListenSocket, int64_t sAcceptSocket, - void *out_lpOutputBuffer /*[recvlen+local+remoteaddrlen]*/, - uint32_t dwReceiveDataLength, uint32_t dwLocalAddressLength, - uint32_t dwRemoteAddressLength, uint32_t *out_lpdwBytesReceived, - struct NtOverlapped *inout_lpOverlapped); - -void GetAcceptExSockaddrs( - const void *lpOutputBuffer /*[recvsize+addrsize+addrlen]*/, - uint32_t dwReceiveDataLength, uint32_t dwLocalAddressLength, - uint32_t dwRemoteAddressLength, - struct sockaddr **out_LocalSockaddr /*[*LocalSockaddrLength]*/, - int *out_LocalSockaddrLength, - struct sockaddr **out_RemoteSockaddr /*[*RemoteSockaddrLength]*/, - int *out_RemoteSockaddrLength); - -bool32 ConnectEx(int64_t s, const struct sockaddr *name, int namelen, - const void *opt_lpSendBuffer, uint32_t dwSendDataLength, - uint32_t *out_lpdwBytesSent, - struct NtOverlapped *inout_lpOverlapped); - -bool32 DisconnectEx(int64_t s, struct NtOverlapped *inout_opt_lpOverlapped, - uint32_t dwFlags, uint32_t dwReserved); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/ohmyplus/vector.h */ - -#define COSMOPOLITAN_LIBC_OHMYPLUS_VECTOR_H_ -#ifdef __cplusplus -extern "C" { -void __vector_reserve(size_t, size_t, intptr_t **, size_t *); -} /* extern c */ -namespace std { - -template -class vector { - public: - vector() : data_(NULL), size_(0), toto_(0) { - } - vector(size_t n) : data_(NULL), size_(n), toto_(0) { - VectorReserve(n); - } - size_t size() const { - return size_; - } - size_t capacity() const { - return toto_; - } - T &front() { - return data_[0]; - } - T &back() { - return data_[size_ - 1]; - } - void clear() { - size_ = 0; - } - void reserve(size_t n) { - VectorReserve(n); - } - void resize(size_t n) { - reserve((size_ = n)); - } - bool empty() const { - return !size_; - } - T &operator[](size_t i) { - return data_[i]; - } - - private: - T *data_; - size_t size_; - size_t toto_; - void VectorReserve(size_t n) { - __vector_reserve(n, sizeof(T), (intptr_t **)&data_, &toto_); - } -}; - -}; /* namespace std */ -#endif /* __cplusplus */ - - -/*!BEGIN libc/rand/rand.h */ - -#define COSMOPOLITAN_LIBC_RAND_RAND_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § random ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define RAND_MAX __INT_MAX__ /* only applies to rand() */ -void srand(uint64_t) nothrow nocallback; /* seeds rand() only */ -int rand(void) nothrow nocallback; /* ≥0 unseeded lcg prng */ -uint32_t rand32(void) nothrow nocallback; /* random as possible rng */ -uint64_t rand64(void) nothrow nocallback; /* random as possible rng */ -double poz(double); /* verify our claims */ -double pochisq(double, int); -void rt_init(int); -void rt_add(void *, int); -void rt_end(double *, double *, double *, double *, double *); -void *rngset(void *, size_t, uint64_t (*)(void), size_t) paramsnonnull(); -char *strfry(char *); -int getentropy(void *, size_t); -ssize_t getrandom(void *, size_t, unsigned); -int devrand(void *, size_t); -int64_t winrandish(void); -uint64_t rdrand(void); -uint64_t rdseed(void); -float randf(void); -char *initstate(unsigned, char *, size_t); -char *setstate(char *); -long random(void); -void srandom(unsigned); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/rand/xorshift.h */ - -#define COSMOPOLITAN_LIBC_RAND_XORSHIFT_H_ - -#define kMarsagliaXorshift64Seed 88172645463325252 -#define kMarsagliaXorshift32Seed 2463534242 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -uint32_t MarsagliaXorshift32(uint32_t[hasatleast 1]); -uint64_t MarsagliaXorshift64(uint64_t[hasatleast 1]); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/buffer.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_BUFFER_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct GuardedBuffer { - void *p; -}; - -void *balloc(struct GuardedBuffer *, unsigned, size_t); -void bfree(struct GuardedBuffer *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/carsort.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_CARSORT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void carsort100(size_t, int32_t (*)[2]) paramsnonnull() nocallback nothrow; -void carsort1000(size_t, int32_t (*)[2]) paramsnonnull() nocallback nothrow; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/clktck.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_CLKTCK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define CLK_TCK (__clk_tck()) - -int __clk_tck(void) pureconst; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/dlfcn.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_DLFCN_H_ - -#define RTLD_LOCAL 0 -#define RTLD_LAZY 1 -#define RTLD_NOW 2 -#define RTLD_GLOBAL 256 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define RTLD_NEXT ((void *)-1) -#define RTLD_DEFAULT ((void *)0) - -char *dlerror(void); -void *dlopen(const char *, int); -void *dlsym(void *, const char *); -int dlclose(void *); -int dl_iterate_phdr(int (*)(void *, size_t, void *), void *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/fenv.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_FENV_H_ - -#define FE_TONEAREST 0x0000 -#define FE_DOWNWARD 0x0400 -#define FE_UPWARD 0x0800 -#define FE_TOWARDZERO 0x0c00 - -#define FE_INVALID 1 -#define FE_DIVBYZERO 4 -#define FE_OVERFLOW 8 -#define FE_UNDERFLOW 16 -#define FE_INEXACT 32 -#define FE_ALL_EXCEPT 61 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define FLT_ROUNDS (__flt_rounds()) - -typedef void *fenv_t; -typedef uint16_t fexcept_t; - -int feclearexcept(int); -int fegetenv(fenv_t *); -int fegetexceptflag(fexcept_t *, int); -int fegetround(void); -int feholdexcept(fenv_t *); -int feraiseexcept(int); -int fesetenv(const fenv_t *); -int fesetexceptflag(const fexcept_t *, int); -int fesetround(int); -int fetestexcept(int); -int feupdateenv(const fenv_t *); -int __flt_rounds(void); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/gc.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_GC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void *_gc(void *) hidden; -void *_defer(void *, void *) hidden; -void __defer(struct StackFrame *, void *, void *) hidden; -void __deferer(struct StackFrame *, void *, void *) hidden; -void _gclongjmp(jmp_buf, int) nothrow wontreturn; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define _gc(THING) _defer((void *)_weakfree, (void *)(THING)) -#define _defer(FN, ARG) \ - ({ \ - autotype(ARG) Arg = (ARG); \ - /* prevent weird opts like tail call */ \ - asm volatile("" : "+g"(Arg) : : "memory"); \ - __defer((struct StackFrame *)__builtin_frame_address(0), FN, Arg); \ - asm volatile("" : "+g"(Arg) : : "memory"); \ - Arg; \ - }) -#endif /* defined(__GNUC__) && !defined(__STRICT_ANSI__) */ - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/interruptiblecall.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_INTERRUPTIBLECALL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct InterruptibleCall { - struct InterruptibleCall *prev; - intptr_t returnval; - int sig; - int flags; - jmp_buf jb; - struct sigaction sa_new; - struct sigaction sa_old; -}; - -intptr_t interruptiblecall(struct InterruptibleCall *state, - intptr_t callback(intptr_t p1, intptr_t p2, - intptr_t p3, intptr_t p4), - intptr_t p1, intptr_t p2, intptr_t p3, intptr_t p4); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/memtrack.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_MEMTRACK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define _kAutomapStart 0x0000100080000000 /* asan can't spread its poison */ -#define _kAutomapSize 0x00000fff80000000 /* beyond the above mem address */ -#define _kFixedmapStart 0x0000200000000000 - -/* - * TODO: Why can't we allocate addresses above 4GB on Windows 7 x64? - * https://github.com/jart/cosmopolitan/issues/19 - */ -#define MEMTRACK_ADDRESS(NORMAL, WIN7) \ - (!(IsWindows() && NtGetVersion() < kNtVersionWindows10) ? NORMAL : WIN7) -#define kAutomapStart MEMTRACK_ADDRESS(_kAutomapStart, 0x10000000) -#define kAutomapSize MEMTRACK_ADDRESS(_kAutomapSize, 0x40000000) -#define kFixedmapStart MEMTRACK_ADDRESS(_kFixedmapStart, 0x40000000) - -struct MemoryIntervals { - long i; - struct MemoryInterval { - int x; - int y; - long h; - int prot; - int flags; - } p[128]; -}; - -extern struct MemoryIntervals _mmi; - -unsigned FindMemoryInterval(const struct MemoryIntervals *, int) nosideeffect; -bool AreMemoryIntervalsOk(const struct MemoryIntervals *) nosideeffect; -void PrintMemoryIntervals(int, const struct MemoryIntervals *); -int TrackMemoryInterval(struct MemoryIntervals *, int, int, long, int, int); -int ReleaseMemoryIntervals(struct MemoryIntervals *, int, int, - void (*)(struct MemoryIntervals *, int, int)); -void ReleaseMemoryNt(struct MemoryIntervals *, int, int); -int UntrackMemoryIntervals(void *, size_t); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/runtime/sysconf.h */ - -#define COSMOPOLITAN_LIBC_RUNTIME_SYSCONF_H_ - -#define _SC_ARG_MAX 0 -#define _SC_CLK_TCK 2 -#define _SC_PAGESIZE 30 -#define _SC_PAGE_SIZE 30 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -long sysconf(int); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sock/epoll.h */ - -#define COSMOPOLITAN_LIBC_SOCK_WEPOLL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef union epoll_data { - void *ptr; - int fd; - uint32_t u32; - uint64_t u64; -} epoll_data_t; - -struct thatispacked epoll_event { - uint32_t events; - epoll_data_t data; -}; - -int epoll_create(int); -int epoll_create1(int); -int epoll_ctl(int, int, int, struct epoll_event *); -int epoll_wait(int, struct epoll_event *, int, int); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sock/select.h */ - -#define COSMOPOLITAN_LIBC_SOCK_SELECT_H_ - -#define FD_SETSIZE 1024 /* it's 64 on windows */ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef struct fd_set { - uint64_t fds_bits[FD_SETSIZE / 64]; -} fd_set; - -#define FD_ISSET(FD, SET) (((SET)->fds_bits[(FD) >> 6] >> ((FD)&63)) & 1) -#define FD_SET(FD, SET) ((SET)->fds_bits[(FD) >> 6] |= 1ull << ((FD)&63)) -#define FD_CLR(FD, SET) ((SET)->fds_bits[(FD) >> 6] &= ~(1ull << ((FD)&63))) -#define FD_ZERO(SET) memset((SET)->fds_bits, 0, sizeof((SET)->fds_bits)) - -int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sock/syslog.h */ - -#define COSMOPOLITAN_LIBC_SOCK_SYSLOG_H_ - - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define LOG_PRI(p) ((p) & LOG_PRIMASK) - -int setlogmask(int); -void openlog(const char *, int, int); -void syslog(int, const char *, ...); -void closelog(void); -void vsyslog(int, const char *, va_list); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/stdio/spawn.h */ - -#define COSMOPOLITAN_LIBC_STDIO_SPAWN_H_ - -#define POSIX_SPAWN_RESETIDS 0x01 -#define POSIX_SPAWN_SETPGROUP 0x02 -#define POSIX_SPAWN_SETSIGDEF 0x04 -#define POSIX_SPAWN_SETSIGMASK 0x08 -#define POSIX_SPAWN_SETSCHEDPARAM 0x10 -#define POSIX_SPAWN_SETSCHEDULER 0x20 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef char *posix_spawn_file_actions_t; -typedef struct _posix_spawnattr posix_spawnattr_t; - -int posix_spawn(int *, const char *, const posix_spawn_file_actions_t *, - const posix_spawnattr_t *, char *const[], char *const[]); -int posix_spawnp(int *, const char *, const posix_spawn_file_actions_t *, - const posix_spawnattr_t *, char *const[], char *const[]); - -int posix_spawn_file_actions_init(posix_spawn_file_actions_t *); -int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *); -int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int); -int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int); -int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *, int, - const char *, int, unsigned); - -int posix_spawnattr_init(posix_spawnattr_t *); -int posix_spawnattr_destroy(posix_spawnattr_t *); -int posix_spawnattr_getflags(const posix_spawnattr_t *, short *); -int posix_spawnattr_setflags(posix_spawnattr_t *, short); -int posix_spawnattr_getpgroup(const posix_spawnattr_t *, int *); -int posix_spawnattr_setpgroup(posix_spawnattr_t *, int); -int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *, int *); -int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int); -int posix_spawnattr_getschedparam(const posix_spawnattr_t *, - struct sched_param *); -int posix_spawnattr_setschedparam(posix_spawnattr_t *, - const struct sched_param *); -int posix_spawnattr_getsigmask(const posix_spawnattr_t *, sigset_t *); -int posix_spawnattr_setsigmask(posix_spawnattr_t *, const sigset_t *); -int posix_spawnattr_getdefault(const posix_spawnattr_t *, sigset_t *); -int posix_spawnattr_setsigdefault(posix_spawnattr_t *, const sigset_t *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/stdio/stdio_ext.h */ - -#define COSMOPOLITAN_LIBC_STDIO_STDIO_EXT_H_ - -#define FSETLOCKING_QUERY 0 -#define FSETLOCKING_INTERNAL 1 -#define FSETLOCKING_BYCALLER 2 - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -size_t __fbufsize(FILE *); -size_t __fpending(FILE *); -int __flbf(FILE *); -int __freadable(FILE *); -int __fwritable(FILE *); -int __freading(FILE *); -int __fwriting(FILE *); -int __fsetlocking(FILE *, int); -void _flushlbf(void); -void __fpurge(FILE *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/stdio/temp.h */ - -#define COSMOPOLITAN_LIBC_STDIO_TEMP_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -nodiscard FILE *tmpfile(void); -nodiscard int mkstemp(char *); -nodiscard int mkostemp(char *, unsigned); -nodiscard int mkstemps(char *, int); -nodiscard int mkostemps(char *, int, unsigned); -nodiscard int mkostempsm(char *, int, unsigned, int); -compatfn char *mktemp(char *); - -int mkostempsmi(char *, int, unsigned, uint64_t *, int, - int (*)(const char *, int, ...)) hidden nodiscard; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/stdio/unlocked.h */ - -#define COSMOPOLITAN_LIBC_STDIO_UNLOCKED_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -void flockfile(FILE *); -void funlockfile(FILE *); -int ftrylockfile(FILE *); -int getc_unlocked(FILE *) paramsnonnull(); -int getchar_unlocked(void); -int putc_unlocked(int, FILE *) paramsnonnull(); -int putchar_unlocked(int); -void clearerr_unlocked(FILE *); -int feof_unlocked(FILE *); -int ferror_unlocked(FILE *); -int fileno_unlocked(FILE *); -int fflush_unlocked(FILE *); -int fgetc_unlocked(FILE *); -int fputc_unlocked(int, FILE *); -size_t fread_unlocked(void *, size_t, size_t, FILE *); -size_t fwrite_unlocked(const void *, size_t, size_t, FILE *); -char *fgets_unlocked(char *, int, FILE *); -int fputs_unlocked(const char *, FILE *); -wint_t getwc_unlocked(FILE *); -wint_t getwchar_unlocked(void); -wint_t fgetwc_unlocked(FILE *); -wint_t fputwc_unlocked(wchar_t, FILE *); -wint_t putwc_unlocked(wchar_t, FILE *); -wint_t putwchar_unlocked(wchar_t); -wchar_t *fgetws_unlocked(wchar_t *, int, FILE *); -int fputws_unlocked(const wchar_t *, FILE *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/str/highwayhash64.h */ - -#define COSMOPOLITAN_LIBC_STR_HIGHWAYHASH64_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -uint64_t HighwayHash64(const uint8_t *, size_t, const uint64_t[4]); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/str/thompike.h */ - -#define COSMOPOLITAN_LIBC_STR_THOMPIKE_H_ - -#define ThomPikeCont(x) (((x)&0300) == 0200) -#define ThomPikeByte(x) ((x) & (((1 << ThomPikeMsb(x)) - 1) | 3)) -#define ThomPikeLen(x) (7 - ThomPikeMsb(x)) -#define ThomPikeMsb(x) (((x)&0xff) < 252 ? bsr(~(x)&0xff) : 1) -#define ThomPikeMerge(x, y) ((x) << 6 | (y)&077) - - - -/*!BEGIN libc/str/tpenc.h */ - -#define COSMOPOLITAN_LIBC_STR_TPENC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -uint64_t tpenc(int32_t) pureconst; - -#ifndef __STRICT_ANSI__ -#define tpenc(CODE) \ - ({ \ - long Edi, Buf; \ - asm("call\ttpenc" \ - : "=a"(Buf), "=D"(Edi) \ - : "1"((int)(CODE)) \ - : "rcx", "rdx", "cc"); \ - Buf; \ - }) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/str/undeflate.h */ - -#define COSMOPOLITAN_LIBC_STR_UNDEFLATE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct DeflateState { - uint8_t lenlens[19]; - uint32_t lencodes[19]; - uint32_t distcodes[32]; - uint32_t litcodes[288]; - uint8_t lens[288 + 32]; -}; - -ssize_t undeflate(void *output, size_t outputsize, void *input, - size_t inputsize, struct DeflateState *ds); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/str/utf16.h */ - -#define COSMOPOLITAN_LIBC_STR_UTF16_H_ - -#define UTF16_MASK 0xfc00 -#define UTF16_MOAR 0xd800 /* 0xD800..0xDBFF */ -#define UTF16_CONT 0xdc00 /* 0xDC00..0xDBFF */ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define IsUcs2(wc) (((wc)&UTF16_MASK) != UTF16_MOAR) -#define IsUtf16Cont(wc) (((wc)&UTF16_MASK) == UTF16_CONT) -#define MergeUtf16(lo, hi) ((((lo)-0xD800) << 10) + ((hi)-0xDC00) + 0x10000) -#define EncodeUtf16(wc) \ - (__builtin_expect(((0x0000 <= (wc) && (wc) <= 0xFFFF) || \ - (0xE000 <= (wc) && (wc) <= 0xFFFF)), \ - 1) \ - ? (wc) \ - : 0x10000 <= (wc) && (wc) <= 0x10FFFF \ - ? (((((wc)-0x10000) >> 10) + 0xD800) | \ - (unsigned)((((wc)-0x10000) & 1023) + 0xDC00) << 16) \ - : 0xFFFD) - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/errfuns.h */ - -#define COSMOPOLITAN_LIBC_SYSV_ERRFUNS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * @fileoverview Optimized error return paths. - * - * Saying this: - * - * return einval(); - * - * Instead of this: - * - * errno = EINVAL; - * return -1; - * - * Allows the compiler to generate 11 fewer bytes of code each time. - * - * @return always -1 - * @see libc/sysv/errfuns.inc (for implementation) - */ - -intptr_t einval(void) relegated; -intptr_t eperm(void) relegated; -intptr_t enoent(void) relegated; -intptr_t esrch(void) relegated; -intptr_t eintr(void) relegated; -intptr_t eio(void) relegated; -intptr_t enxio(void) relegated; -intptr_t e2big(void) relegated; -intptr_t enoexec(void) relegated; -intptr_t ebadf(void) relegated; -intptr_t echild(void) relegated; -intptr_t eagain(void) relegated; -intptr_t enomem(void) relegated; -intptr_t eacces(void) relegated; -intptr_t efault(void) relegated; -intptr_t enotblk(void) relegated; -intptr_t ebusy(void) relegated; -intptr_t eexist(void) relegated; -intptr_t exdev(void) relegated; -intptr_t enodev(void) relegated; -intptr_t enotdir(void) relegated; -intptr_t eisdir(void) relegated; -intptr_t enfile(void) relegated; -intptr_t emfile(void) relegated; -intptr_t enotty(void) relegated; -intptr_t enotsup(void) relegated; -intptr_t etxtbsy(void) relegated; -intptr_t efbig(void) relegated; -intptr_t enospc(void) relegated; -intptr_t espipe(void) relegated; -intptr_t erofs(void) relegated; -intptr_t emlink(void) relegated; -intptr_t epipe(void) relegated; -intptr_t edom(void) relegated; -intptr_t erange(void) relegated; -intptr_t edeadlk(void) relegated; -intptr_t enametoolong(void) relegated; -intptr_t enolck(void) relegated; -intptr_t enosys(void) relegated; -intptr_t enotempty(void) relegated; -intptr_t eloop(void) relegated; -intptr_t enomsg(void) relegated; -intptr_t eidrm(void) relegated; -intptr_t echrng(void) relegated; -intptr_t el2nsync(void) relegated; -intptr_t el3hlt(void) relegated; -intptr_t el3rst(void) relegated; -intptr_t elnrng(void) relegated; -intptr_t eunatch(void) relegated; -intptr_t enocsi(void) relegated; -intptr_t el2hlt(void) relegated; -intptr_t ebade(void) relegated; -intptr_t ebadr(void) relegated; -intptr_t exfull(void) relegated; -intptr_t enoano(void) relegated; -intptr_t ebadrqc(void) relegated; -intptr_t ebadslt(void) relegated; -intptr_t enostr(void) relegated; -intptr_t enodata(void) relegated; -intptr_t etime(void) relegated; -intptr_t enosr(void) relegated; -intptr_t enonet(void) relegated; -intptr_t enopkg(void) relegated; -intptr_t eremote(void) relegated; -intptr_t enolink(void) relegated; -intptr_t eadv(void) relegated; -intptr_t esrmnt(void) relegated; -intptr_t ecomm(void) relegated; -intptr_t eproto(void) relegated; -intptr_t emultihop(void) relegated; -intptr_t edotdot(void) relegated; -intptr_t ebadmsg(void) relegated; -intptr_t eoverflow(void) relegated; -intptr_t enotuniq(void) relegated; -intptr_t ebadfd(void) relegated; -intptr_t eremchg(void) relegated; -intptr_t elibacc(void) relegated; -intptr_t elibbad(void) relegated; -intptr_t elibscn(void) relegated; -intptr_t elibmax(void) relegated; -intptr_t elibexec(void) relegated; -intptr_t eilseq(void) relegated; -intptr_t erestart(void) relegated; -intptr_t estrpipe(void) relegated; -intptr_t eusers(void) relegated; -intptr_t enotsock(void) relegated; -intptr_t edestaddrreq(void) relegated; -intptr_t emsgsize(void) relegated; -intptr_t eprototype(void) relegated; -intptr_t enoprotoopt(void) relegated; -intptr_t eprotonosupport(void) relegated; -intptr_t esocktnosupport(void) relegated; -intptr_t eopnotsupp(void) relegated; -intptr_t epfnosupport(void) relegated; -intptr_t eafnosupport(void) relegated; -intptr_t eaddrinuse(void) relegated; -intptr_t eaddrnotavail(void) relegated; -intptr_t enetdown(void) relegated; -intptr_t enetunreach(void) relegated; -intptr_t enetreset(void) relegated; -intptr_t econnaborted(void) relegated; -intptr_t econnreset(void) relegated; -intptr_t enobufs(void) relegated; -intptr_t eisconn(void) relegated; -intptr_t enotconn(void) relegated; -intptr_t eshutdown(void) relegated; -intptr_t etoomanyrefs(void) relegated; -intptr_t etimedout(void) relegated; -intptr_t econnrefused(void) relegated; -intptr_t ehostdown(void) relegated; -intptr_t ehostunreach(void) relegated; -intptr_t ealready(void) relegated; -intptr_t einprogress(void) relegated; -intptr_t estale(void) relegated; -intptr_t euclean(void) relegated; -intptr_t enotnam(void) relegated; -intptr_t enavail(void) relegated; -intptr_t eisnam(void) relegated; -intptr_t eremoteio(void) relegated; -intptr_t edquot(void) relegated; -intptr_t enomedium(void) relegated; -intptr_t emediumtype(void) relegated; -intptr_t ecanceled(void) relegated; -intptr_t enokey(void) relegated; -intptr_t ekeyexpired(void) relegated; -intptr_t ekeyrevoked(void) relegated; -intptr_t ekeyrejected(void) relegated; -intptr_t eownerdead(void) relegated; -intptr_t enotrecoverable(void) relegated; -intptr_t erfkill(void) relegated; -intptr_t ehwpoison(void) relegated; - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define __ERRFUN(FUNC) \ - ({ \ - intptr_t NegOne; \ - asm("call\t" FUNC : "=a"(NegOne), "=m"(errno)); \ - NegOne; \ - }) -#define einval() __ERRFUN("einval") -#define eperm() __ERRFUN("eperm") -#define enoent() __ERRFUN("enoent") -#define esrch() __ERRFUN("esrch") -#define eintr() __ERRFUN("eintr") -#define eio() __ERRFUN("eio") -#define enxio() __ERRFUN("enxio") -#define e2big() __ERRFUN("e2big") -#define enoexec() __ERRFUN("enoexec") -#define ebadf() __ERRFUN("ebadf") -#define echild() __ERRFUN("echild") -#define eagain() __ERRFUN("eagain") -#define enomem() __ERRFUN("enomem") -#define eacces() __ERRFUN("eacces") -#define efault() __ERRFUN("efault") -#define enotblk() __ERRFUN("enotblk") -#define ebusy() __ERRFUN("ebusy") -#define eexist() __ERRFUN("eexist") -#define exdev() __ERRFUN("exdev") -#define enodev() __ERRFUN("enodev") -#define enotdir() __ERRFUN("enotdir") -#define eisdir() __ERRFUN("eisdir") -#define enfile() __ERRFUN("enfile") -#define emfile() __ERRFUN("emfile") -#define enotty() __ERRFUN("enotty") -#define enotsup() __ERRFUN("enotsup") -#define etxtbsy() __ERRFUN("etxtbsy") -#define efbig() __ERRFUN("efbig") -#define enospc() __ERRFUN("enospc") -#define espipe() __ERRFUN("espipe") -#define erofs() __ERRFUN("erofs") -#define emlink() __ERRFUN("emlink") -#define epipe() __ERRFUN("epipe") -#define edom() __ERRFUN("edom") -#define erange() __ERRFUN("erange") -#define edeadlk() __ERRFUN("edeadlk") -#define enametoolong() __ERRFUN("enametoolong") -#define enolck() __ERRFUN("enolck") -#define enosys() __ERRFUN("enosys") -#define enotempty() __ERRFUN("enotempty") -#define eloop() __ERRFUN("eloop") -#define enomsg() __ERRFUN("enomsg") -#define eidrm() __ERRFUN("eidrm") -#define echrng() __ERRFUN("echrng") -#define el2nsync() __ERRFUN("el2nsync") -#define el3hlt() __ERRFUN("el3hlt") -#define el3rst() __ERRFUN("el3rst") -#define elnrng() __ERRFUN("elnrng") -#define eunatch() __ERRFUN("eunatch") -#define enocsi() __ERRFUN("enocsi") -#define el2hlt() __ERRFUN("el2hlt") -#define ebade() __ERRFUN("ebade") -#define ebadr() __ERRFUN("ebadr") -#define exfull() __ERRFUN("exfull") -#define enoano() __ERRFUN("enoano") -#define ebadrqc() __ERRFUN("ebadrqc") -#define ebadslt() __ERRFUN("ebadslt") -#define enostr() __ERRFUN("enostr") -#define enodata() __ERRFUN("enodata") -#define etime() __ERRFUN("etime") -#define enosr() __ERRFUN("enosr") -#define enonet() __ERRFUN("enonet") -#define enopkg() __ERRFUN("enopkg") -#define eremote() __ERRFUN("eremote") -#define enolink() __ERRFUN("enolink") -#define eadv() __ERRFUN("eadv") -#define esrmnt() __ERRFUN("esrmnt") -#define ecomm() __ERRFUN("ecomm") -#define eproto() __ERRFUN("eproto") -#define emultihop() __ERRFUN("emultihop") -#define edotdot() __ERRFUN("edotdot") -#define ebadmsg() __ERRFUN("ebadmsg") -#define eoverflow() __ERRFUN("eoverflow") -#define enotuniq() __ERRFUN("enotuniq") -#define ebadfd() __ERRFUN("ebadfd") -#define eremchg() __ERRFUN("eremchg") -#define elibacc() __ERRFUN("elibacc") -#define elibbad() __ERRFUN("elibbad") -#define elibscn() __ERRFUN("elibscn") -#define elibmax() __ERRFUN("elibmax") -#define elibexec() __ERRFUN("elibexec") -#define eilseq() __ERRFUN("eilseq") -#define erestart() __ERRFUN("erestart") -#define estrpipe() __ERRFUN("estrpipe") -#define eusers() __ERRFUN("eusers") -#define enotsock() __ERRFUN("enotsock") -#define edestaddrreq() __ERRFUN("edestaddrreq") -#define emsgsize() __ERRFUN("emsgsize") -#define eprototype() __ERRFUN("eprototype") -#define enoprotoopt() __ERRFUN("enoprotoopt") -#define eprotonosupport() __ERRFUN("eprotonosupport") -#define esocktnosupport() __ERRFUN("esocktnosupport") -#define eopnotsupp() __ERRFUN("eopnotsupp") -#define epfnosupport() __ERRFUN("epfnosupport") -#define eafnosupport() __ERRFUN("eafnosupport") -#define eaddrinuse() __ERRFUN("eaddrinuse") -#define eaddrnotavail() __ERRFUN("eaddrnotavail") -#define enetdown() __ERRFUN("enetdown") -#define enetunreach() __ERRFUN("enetunreach") -#define enetreset() __ERRFUN("enetreset") -#define econnaborted() __ERRFUN("econnaborted") -#define econnreset() __ERRFUN("econnreset") -#define enobufs() __ERRFUN("enobufs") -#define eisconn() __ERRFUN("eisconn") -#define enotconn() __ERRFUN("enotconn") -#define eshutdown() __ERRFUN("eshutdown") -#define etoomanyrefs() __ERRFUN("etoomanyrefs") -#define etimedout() __ERRFUN("etimedout") -#define econnrefused() __ERRFUN("econnrefused") -#define ehostdown() __ERRFUN("ehostdown") -#define ehostunreach() __ERRFUN("ehostunreach") -#define ealready() __ERRFUN("ealready") -#define einprogress() __ERRFUN("einprogress") -#define estale() __ERRFUN("estale") -#define euclean() __ERRFUN("euclean") -#define enotnam() __ERRFUN("enotnam") -#define enavail() __ERRFUN("enavail") -#define eisnam() __ERRFUN("eisnam") -#define eremoteio() __ERRFUN("eremoteio") -#define edquot() __ERRFUN("edquot") -#define enomedium() __ERRFUN("enomedium") -#define emediumtype() __ERRFUN("emediumtype") -#define ecanceled() __ERRFUN("ecanceled") -#define enokey() __ERRFUN("enokey") -#define ekeyexpired() __ERRFUN("ekeyexpired") -#define ekeyrevoked() __ERRFUN("ekeyrevoked") -#define ekeyrejected() __ERRFUN("ekeyrejected") -#define eownerdead() __ERRFUN("eownerdead") -#define enotrecoverable() __ERRFUN("enotrecoverable") -#define erfkill() __ERRFUN("erfkill") -#define ehwpoison() __ERRFUN("ehwpoison") -#endif - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/_posix.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS__POSIX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long _POSIX_ADVISORY_INFO; -extern const long _POSIX_AIO_LISTIO_MAX; -extern const long _POSIX_AIO_MAX; -extern const long _POSIX_ARG_MAX; -extern const long _POSIX_ASYNCHRONOUS_IO; -extern const long _POSIX_BARRIERS; -extern const long _POSIX_CHILD_MAX; -extern const long _POSIX_CHOWN_RESTRICTED; -extern const long _POSIX_CLOCKRES_MIN; -extern const long _POSIX_CLOCK_SELECTION; -extern const long _POSIX_CPUTIME; -extern const long _POSIX_DELAYTIMER_MAX; -extern const long _POSIX_FSYNC; -extern const long _POSIX_HOST_NAME_MAX; -extern const long _POSIX_IPV6; -extern const long _POSIX_JOB_CONTROL; -extern const long _POSIX_LINK_MAX; -extern const long _POSIX_LOGIN_NAME_MAX; -extern const long _POSIX_MAPPED_FILES; -extern const long _POSIX_MAX_CANON; -extern const long _POSIX_MAX_INPUT; -extern const long _POSIX_MEMLOCK; -extern const long _POSIX_MEMLOCK_RANGE; -extern const long _POSIX_MEMORY_PROTECTION; -extern const long _POSIX_MESSAGE_PASSING; -extern const long _POSIX_MONOTONIC_CLOCK; -extern const long _POSIX_MQ_OPEN_MAX; -extern const long _POSIX_MQ_PRIO_MAX; -extern const long _POSIX_NAME_MAX; -extern const long _POSIX_NGROUPS_MAX; -extern const long _POSIX_NO_TRUNC; -extern const long _POSIX_OPEN_MAX; -extern const long _POSIX_PATH_MAX; -extern const long _POSIX_PIPE_BUF; -extern const long _POSIX_RAW_SOCKETS; -extern const long _POSIX_READER_WRITER_LOCKS; -extern const long _POSIX_REALTIME_SIGNALS; -extern const long _POSIX_REGEXP; -extern const long _POSIX_RE_DUP_MAX; -extern const long _POSIX_RTSIG_MAX; -extern const long _POSIX_SAVED_IDS; -extern const long _POSIX_SEMAPHORES; -extern const long _POSIX_SEM_NSEMS_MAX; -extern const long _POSIX_SEM_VALUE_MAX; -extern const long _POSIX_SHARED_MEMORY_OBJECTS; -extern const long _POSIX_SHELL; -extern const long _POSIX_SIGQUEUE_MAX; -extern const long _POSIX_SPAWN; -extern const long _POSIX_SPIN_LOCKS; -extern const long _POSIX_SSIZE_MAX; -extern const long _POSIX_SS_REPL_MAX; -extern const long _POSIX_STREAM_MAX; -extern const long _POSIX_SYMLINK_MAX; -extern const long _POSIX_SYMLOOP_MAX; -extern const long _POSIX_THREADS; -extern const long _POSIX_THREAD_ATTR_STACKADDR; -extern const long _POSIX_THREAD_ATTR_STACKSIZE; -extern const long _POSIX_THREAD_CPUTIME; -extern const long _POSIX_THREAD_DESTRUCTOR_ITERATIONS; -extern const long _POSIX_THREAD_KEYS_MAX; -extern const long _POSIX_THREAD_PRIORITY_SCHEDULING; -extern const long _POSIX_THREAD_PROCESS_SHARED; -extern const long _POSIX_THREAD_SAFE_FUNCTIONS; -extern const long _POSIX_THREAD_THREADS_MAX; -extern const long _POSIX_TIMEOUTS; -extern const long _POSIX_TIMERS; -extern const long _POSIX_TIMER_MAX; -extern const long _POSIX_TRACE_EVENT_NAME_MAX; -extern const long _POSIX_TRACE_NAME_MAX; -extern const long _POSIX_TRACE_SYS_MAX; -extern const long _POSIX_TRACE_USER_EVENT_MAX; -extern const long _POSIX_TTY_NAME_MAX; -extern const long _POSIX_TZNAME_MAX; -extern const long _POSIX_V6_LP64_OFF64; -extern const long _POSIX_V7_LP64_OFF64; -extern const long _POSIX_VDISABLE; -extern const long _POSIX_VERSION; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define _POSIX_ADVISORY_INFO SYMBOLIC(_POSIX_ADVISORY_INFO) -#define _POSIX_AIO_LISTIO_MAX SYMBOLIC(_POSIX_AIO_LISTIO_MAX) -#define _POSIX_AIO_MAX SYMBOLIC(_POSIX_AIO_MAX) -#define _POSIX_ARG_MAX SYMBOLIC(_POSIX_ARG_MAX) -#define _POSIX_ASYNCHRONOUS_IO SYMBOLIC(_POSIX_ASYNCHRONOUS_IO) -#define _POSIX_BARRIERS SYMBOLIC(_POSIX_BARRIERS) -#define _POSIX_CHILD_MAX SYMBOLIC(_POSIX_CHILD_MAX) -#define _POSIX_CHOWN_RESTRICTED SYMBOLIC(_POSIX_CHOWN_RESTRICTED) -#define _POSIX_CLOCKRES_MIN SYMBOLIC(_POSIX_CLOCKRES_MIN) -#define _POSIX_CLOCK_SELECTION SYMBOLIC(_POSIX_CLOCK_SELECTION) -#define _POSIX_CPUTIME SYMBOLIC(_POSIX_CPUTIME) -#define _POSIX_DELAYTIMER_MAX SYMBOLIC(_POSIX_DELAYTIMER_MAX) -#define _POSIX_FSYNC SYMBOLIC(_POSIX_FSYNC) -#define _POSIX_HOST_NAME_MAX SYMBOLIC(_POSIX_HOST_NAME_MAX) -#define _POSIX_IPV6 SYMBOLIC(_POSIX_IPV6) -#define _POSIX_JOB_CONTROL SYMBOLIC(_POSIX_JOB_CONTROL) -#define _POSIX_LINK_MAX SYMBOLIC(_POSIX_LINK_MAX) -#define _POSIX_LOGIN_NAME_MAX SYMBOLIC(_POSIX_LOGIN_NAME_MAX) -#define _POSIX_MAPPED_FILES SYMBOLIC(_POSIX_MAPPED_FILES) -#define _POSIX_MAX_CANON SYMBOLIC(_POSIX_MAX_CANON) -#define _POSIX_MAX_INPUT SYMBOLIC(_POSIX_MAX_INPUT) -#define _POSIX_MEMLOCK SYMBOLIC(_POSIX_MEMLOCK) -#define _POSIX_MEMLOCK_RANGE SYMBOLIC(_POSIX_MEMLOCK_RANGE) -#define _POSIX_MEMORY_PROTECTION SYMBOLIC(_POSIX_MEMORY_PROTECTION) -#define _POSIX_MESSAGE_PASSING SYMBOLIC(_POSIX_MESSAGE_PASSING) -#define _POSIX_MONOTONIC_CLOCK SYMBOLIC(_POSIX_MONOTONIC_CLOCK) -#define _POSIX_MQ_OPEN_MAX SYMBOLIC(_POSIX_MQ_OPEN_MAX) -#define _POSIX_MQ_PRIO_MAX SYMBOLIC(_POSIX_MQ_PRIO_MAX) -#define _POSIX_NAME_MAX SYMBOLIC(_POSIX_NAME_MAX) -#define _POSIX_NGROUPS_MAX SYMBOLIC(_POSIX_NGROUPS_MAX) -#define _POSIX_NO_TRUNC SYMBOLIC(_POSIX_NO_TRUNC) -#define _POSIX_OPEN_MAX SYMBOLIC(_POSIX_OPEN_MAX) -#define _POSIX_PATH_MAX SYMBOLIC(_POSIX_PATH_MAX) -#define _POSIX_PIPE_BUF SYMBOLIC(_POSIX_PIPE_BUF) -#define _POSIX_RAW_SOCKETS SYMBOLIC(_POSIX_RAW_SOCKETS) -#define _POSIX_READER_WRITER_LOCKS SYMBOLIC(_POSIX_READER_WRITER_LOCKS) -#define _POSIX_REALTIME_SIGNALS SYMBOLIC(_POSIX_REALTIME_SIGNALS) -#define _POSIX_REGEXP SYMBOLIC(_POSIX_REGEXP) -#define _POSIX_RE_DUP_MAX SYMBOLIC(_POSIX_RE_DUP_MAX) -#define _POSIX_RTSIG_MAX SYMBOLIC(_POSIX_RTSIG_MAX) -#define _POSIX_SAVED_IDS SYMBOLIC(_POSIX_SAVED_IDS) -#define _POSIX_SEMAPHORES SYMBOLIC(_POSIX_SEMAPHORES) -#define _POSIX_SEM_NSEMS_MAX SYMBOLIC(_POSIX_SEM_NSEMS_MAX) -#define _POSIX_SEM_VALUE_MAX SYMBOLIC(_POSIX_SEM_VALUE_MAX) -#define _POSIX_SHARED_MEMORY_OBJECTS SYMBOLIC(_POSIX_SHARED_MEMORY_OBJECTS) -#define _POSIX_SHELL SYMBOLIC(_POSIX_SHELL) -#define _POSIX_SIGQUEUE_MAX SYMBOLIC(_POSIX_SIGQUEUE_MAX) -#define _POSIX_SPAWN SYMBOLIC(_POSIX_SPAWN) -#define _POSIX_SPIN_LOCKS SYMBOLIC(_POSIX_SPIN_LOCKS) -#define _POSIX_SSIZE_MAX SYMBOLIC(_POSIX_SSIZE_MAX) -#define _POSIX_SS_REPL_MAX SYMBOLIC(_POSIX_SS_REPL_MAX) -#define _POSIX_STREAM_MAX SYMBOLIC(_POSIX_STREAM_MAX) -#define _POSIX_SYMLINK_MAX SYMBOLIC(_POSIX_SYMLINK_MAX) -#define _POSIX_SYMLOOP_MAX SYMBOLIC(_POSIX_SYMLOOP_MAX) -#define _POSIX_THREADS SYMBOLIC(_POSIX_THREADS) -#define _POSIX_THREAD_ATTR_STACKADDR SYMBOLIC(_POSIX_THREAD_ATTR_STACKADDR) -#define _POSIX_THREAD_ATTR_STACKSIZE SYMBOLIC(_POSIX_THREAD_ATTR_STACKSIZE) -#define _POSIX_THREAD_CPUTIME SYMBOLIC(_POSIX_THREAD_CPUTIME) -#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS \ - SYMBOLIC(_POSIX_THREAD_DESTRUCTOR_ITERATIONS) -#define _POSIX_THREAD_KEYS_MAX SYMBOLIC(_POSIX_THREAD_KEYS_MAX) -#define _POSIX_THREAD_PRIORITY_SCHEDULING \ - SYMBOLIC(_POSIX_THREAD_PRIORITY_SCHEDULING) -#define _POSIX_THREAD_PROCESS_SHARED SYMBOLIC(_POSIX_THREAD_PROCESS_SHARED) -#define _POSIX_THREAD_SAFE_FUNCTIONS SYMBOLIC(_POSIX_THREAD_SAFE_FUNCTIONS) -#define _POSIX_THREAD_THREADS_MAX SYMBOLIC(_POSIX_THREAD_THREADS_MAX) -#define _POSIX_TIMEOUTS SYMBOLIC(_POSIX_TIMEOUTS) -#define _POSIX_TIMERS SYMBOLIC(_POSIX_TIMERS) -#define _POSIX_TIMER_MAX SYMBOLIC(_POSIX_TIMER_MAX) -#define _POSIX_TRACE_EVENT_NAME_MAX SYMBOLIC(_POSIX_TRACE_EVENT_NAME_MAX) -#define _POSIX_TRACE_NAME_MAX SYMBOLIC(_POSIX_TRACE_NAME_MAX) -#define _POSIX_TRACE_SYS_MAX SYMBOLIC(_POSIX_TRACE_SYS_MAX) -#define _POSIX_TRACE_USER_EVENT_MAX SYMBOLIC(_POSIX_TRACE_USER_EVENT_MAX) -#define _POSIX_TTY_NAME_MAX SYMBOLIC(_POSIX_TTY_NAME_MAX) -#define _POSIX_TZNAME_MAX SYMBOLIC(_POSIX_TZNAME_MAX) -#define _POSIX_V6_LP64_OFF64 SYMBOLIC(_POSIX_V6_LP64_OFF64) -#define _POSIX_V7_LP64_OFF64 SYMBOLIC(_POSIX_V7_LP64_OFF64) -#define _POSIX_VDISABLE SYMBOLIC(_POSIX_VDISABLE) -#define _POSIX_VERSION SYMBOLIC(_POSIX_VERSION) - - - -/*!BEGIN libc/sysv/consts/_posix2.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS__POSIX2_H_ - -#define _POSIX2_BC_BASE_MAX SYMBOLIC(_POSIX2_BC_BASE_MAX) -#define _POSIX2_BC_DIM_MAX SYMBOLIC(_POSIX2_BC_DIM_MAX) -#define _POSIX2_BC_SCALE_MAX SYMBOLIC(_POSIX2_BC_SCALE_MAX) -#define _POSIX2_BC_STRING_MAX SYMBOLIC(_POSIX2_BC_STRING_MAX) -#define _POSIX2_CHARCLASS_NAME_MAX SYMBOLIC(_POSIX2_CHARCLASS_NAME_MAX) -#define _POSIX2_COLL_WEIGHTS_MAX SYMBOLIC(_POSIX2_COLL_WEIGHTS_MAX) -#define _POSIX2_C_BIND SYMBOLIC(_POSIX2_C_BIND) -#define _POSIX2_EXPR_NEST_MAX SYMBOLIC(_POSIX2_EXPR_NEST_MAX) -#define _POSIX2_LINE_MAX SYMBOLIC(_POSIX2_LINE_MAX) -#define _POSIX2_RE_DUP_MAX SYMBOLIC(_POSIX2_RE_DUP_MAX) -#define _POSIX2_VERSION SYMBOLIC(_POSIX2_VERSION) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long _POSIX2_BC_BASE_MAX; -extern const long _POSIX2_BC_DIM_MAX; -extern const long _POSIX2_BC_SCALE_MAX; -extern const long _POSIX2_BC_STRING_MAX; -extern const long _POSIX2_CHARCLASS_NAME_MAX; -extern const long _POSIX2_COLL_WEIGHTS_MAX; -extern const long _POSIX2_C_BIND; -extern const long _POSIX2_EXPR_NEST_MAX; -extern const long _POSIX2_LINE_MAX; -extern const long _POSIX2_RE_DUP_MAX; -extern const long _POSIX2_VERSION; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/af.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_AF_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long AF_ALG; -extern const long AF_APPLETALK; -extern const long AF_ASH; -extern const long AF_ATMPVC; -extern const long AF_ATMSVC; -extern const long AF_AX25; -extern const long AF_BLUETOOTH; -extern const long AF_BRIDGE; -extern const long AF_CAIF; -extern const long AF_CAN; -extern const long AF_ECONET; -extern const long AF_FILE; -extern const long AF_IB; -extern const long AF_IEEE802154; -extern const long AF_INET6; -extern const long AF_INET; -extern const long AF_IPX; -extern const long AF_IRDA; -extern const long AF_ISDN; -extern const long AF_IUCV; -extern const long AF_KCM; -extern const long AF_KEY; -extern const long AF_LLC; -extern const long AF_LOCAL; -extern const long AF_MAX; -extern const long AF_MPLS; -extern const long AF_NETBEUI; -extern const long AF_NETLINK; -extern const long AF_NETROM; -extern const long AF_NFC; -extern const long AF_PACKET; -extern const long AF_PHONET; -extern const long AF_PPPOX; -extern const long AF_RDS; -extern const long AF_ROSE; -extern const long AF_ROUTE; -extern const long AF_RXRPC; -extern const long AF_SECURITY; -extern const long AF_SNA; -extern const long AF_TIPC; -extern const long AF_UNIX; -extern const long AF_UNSPEC; -extern const long AF_VSOCK; -extern const long AF_WANPIPE; -extern const long AF_X25; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define AF_ALG SYMBOLIC(AF_ALG) -#define AF_APPLETALK SYMBOLIC(AF_APPLETALK) -#define AF_ASH SYMBOLIC(AF_ASH) -#define AF_ATMPVC SYMBOLIC(AF_ATMPVC) -#define AF_ATMSVC SYMBOLIC(AF_ATMSVC) -#define AF_AX25 SYMBOLIC(AF_AX25) -#define AF_BLUETOOTH SYMBOLIC(AF_BLUETOOTH) -#define AF_BRIDGE SYMBOLIC(AF_BRIDGE) -#define AF_CAIF SYMBOLIC(AF_CAIF) -#define AF_CAN SYMBOLIC(AF_CAN) -#define AF_ECONET SYMBOLIC(AF_ECONET) -#define AF_FILE SYMBOLIC(AF_FILE) -#define AF_IB SYMBOLIC(AF_IB) -#define AF_IEEE802154 SYMBOLIC(AF_IEEE802154) -#define AF_INET LITERALLY(2) -#define AF_INET6 SYMBOLIC(AF_INET6) -#define AF_IPX SYMBOLIC(AF_IPX) -#define AF_IRDA SYMBOLIC(AF_IRDA) -#define AF_ISDN SYMBOLIC(AF_ISDN) -#define AF_IUCV SYMBOLIC(AF_IUCV) -#define AF_KCM SYMBOLIC(AF_KCM) -#define AF_KEY SYMBOLIC(AF_KEY) -#define AF_LLC SYMBOLIC(AF_LLC) -#define AF_LOCAL SYMBOLIC(AF_LOCAL) -#define AF_MAX SYMBOLIC(AF_MAX) -#define AF_MPLS SYMBOLIC(AF_MPLS) -#define AF_NETBEUI SYMBOLIC(AF_NETBEUI) -#define AF_NETLINK SYMBOLIC(AF_NETLINK) -#define AF_NETROM SYMBOLIC(AF_NETROM) -#define AF_NFC SYMBOLIC(AF_NFC) -#define AF_PACKET SYMBOLIC(AF_PACKET) -#define AF_PHONET SYMBOLIC(AF_PHONET) -#define AF_PPPOX SYMBOLIC(AF_PPPOX) -#define AF_RDS SYMBOLIC(AF_RDS) -#define AF_ROSE SYMBOLIC(AF_ROSE) -#define AF_ROUTE SYMBOLIC(AF_ROUTE) -#define AF_RXRPC SYMBOLIC(AF_RXRPC) -#define AF_SECURITY SYMBOLIC(AF_SECURITY) -#define AF_SNA SYMBOLIC(AF_SNA) -#define AF_TIPC SYMBOLIC(AF_TIPC) -#define AF_UNIX LITERALLY(1) -#define AF_UNSPEC LITERALLY(0) -#define AF_VSOCK SYMBOLIC(AF_VSOCK) -#define AF_WANPIPE SYMBOLIC(AF_WANPIPE) -#define AF_X25 SYMBOLIC(AF_X25) - - - -/*!BEGIN libc/sysv/consts/arphrd.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ARPHRD_H_ - -#define ARPHRD_ETHER SYMBOLIC(ARPHRD_ETHER) -#define ARPHRD_FCFABRIC SYMBOLIC(ARPHRD_FCFABRIC) -#define ARPHRD_IEEE80211 SYMBOLIC(ARPHRD_IEEE80211) -#define ARPHRD_IEEE80211_PRISM SYMBOLIC(ARPHRD_IEEE80211_PRISM) -#define ARPHRD_IEEE80211_RADIOTAP SYMBOLIC(ARPHRD_IEEE80211_RADIOTAP) -#define ARPHRD_IEEE802154 SYMBOLIC(ARPHRD_IEEE802154) -#define ARPHRD_IEEE802_TR SYMBOLIC(ARPHRD_IEEE802_TR) -#define ARPHRD_LOCALTLK SYMBOLIC(ARPHRD_LOCALTLK) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long ARPHRD_ETHER; -extern const long ARPHRD_FCFABRIC; -extern const long ARPHRD_IEEE80211; -extern const long ARPHRD_IEEE80211_PRISM; -extern const long ARPHRD_IEEE80211_RADIOTAP; -extern const long ARPHRD_IEEE802154; -extern const long ARPHRD_IEEE802_TR; -extern const long ARPHRD_LOCALTLK; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/at.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_AT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -/** - * @fileoverview AT_xxx constants for fcntl(), fopenat(), etc.. - * @see libc/sysv/consts/auxv.h for getauxval() constants - */ - -extern const long AT_FDCWD; -extern const long AT_SYMLINK_FOLLOW; -extern const long AT_SYMLINK_NOFOLLOW; -extern const long AT_REMOVEDIR; -extern const long AT_EACCESS; -extern const long AT_EMPTY_PATH; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define AT_FDCWD SYMBOLIC(AT_FDCWD) -#define AT_SYMLINK_FOLLOW SYMBOLIC(AT_SYMLINK_FOLLOW) -#define AT_SYMLINK_NOFOLLOW SYMBOLIC(AT_SYMLINK_NOFOLLOW) -#define AT_REMOVEDIR SYMBOLIC(AT_REMOVEDIR) -#define AT_EACCESS SYMBOLIC(AT_EACCESS) -#define AT_EMPTY_PATH SYMBOLIC(AT_EMPTY_PATH) - - - -/*!BEGIN libc/sysv/consts/auxv.h */ - -#define COSMOPOLITAN_LIBC_CALLS_AUXV_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long AT_BASE; -extern const long AT_BASE_PLATFORM; -extern const long AT_CLKTCK; -extern const long AT_DCACHEBSIZE; -extern const long AT_EGID; -extern const long AT_ENTRY; -extern const long AT_EUID; -extern const long AT_EXECFD; -extern const long AT_EXECFN; -extern const long AT_FLAGS; -extern const long AT_GID; -extern const long AT_HWCAP2; -extern const long AT_HWCAP; -extern const long AT_ICACHEBSIZE; -extern const long AT_NOTELF; -extern const long AT_NO_AUTOMOUNT; -extern const long AT_OSRELDATE; -extern const long AT_PAGESZ; -extern const long AT_PHDR; -extern const long AT_PHENT; -extern const long AT_PHNUM; -extern const long AT_PLATFORM; -extern const long AT_RANDOM; -extern const long AT_SECURE; -extern const long AT_SYSINFO_EHDR; -extern const long AT_UCACHEBSIZE; -extern const long AT_UID; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define AT_BASE SYMBOLIC(AT_BASE) -#define AT_BASE_PLATFORM SYMBOLIC(AT_BASE_PLATFORM) -#define AT_CLKTCK SYMBOLIC(AT_CLKTCK) -#define AT_DCACHEBSIZE SYMBOLIC(AT_DCACHEBSIZE) -#define AT_EGID SYMBOLIC(AT_EGID) -#define AT_ENTRY SYMBOLIC(AT_ENTRY) -#define AT_EUID SYMBOLIC(AT_EUID) -#define AT_EXECFD SYMBOLIC(AT_EXECFD) -#define AT_EXECFN SYMBOLIC(AT_EXECFN) -#define AT_FLAGS SYMBOLIC(AT_FLAGS) -#define AT_GID SYMBOLIC(AT_GID) -#define AT_HWCAP SYMBOLIC(AT_HWCAP) -#define AT_HWCAP2 SYMBOLIC(AT_HWCAP2) -#define AT_ICACHEBSIZE SYMBOLIC(AT_ICACHEBSIZE) -#define AT_NOTELF SYMBOLIC(AT_NOTELF) -#define AT_NO_AUTOMOUNT SYMBOLIC(AT_NO_AUTOMOUNT) -#define AT_OSRELDATE SYMBOLIC(AT_OSRELDATE) -#define AT_PAGESZ SYMBOLIC(AT_PAGESZ) -#define AT_PHDR SYMBOLIC(AT_PHDR) -#define AT_PHENT SYMBOLIC(AT_PHENT) -#define AT_PHNUM SYMBOLIC(AT_PHNUM) -#define AT_PLATFORM SYMBOLIC(AT_PLATFORM) -#define AT_RANDOM SYMBOLIC(AT_RANDOM) -#define AT_SECURE SYMBOLIC(AT_SECURE) -#define AT_SYSINFO_EHDR SYMBOLIC(AT_SYSINFO_EHDR) -#define AT_UCACHEBSIZE SYMBOLIC(AT_UCACHEBSIZE) -#define AT_UID SYMBOLIC(AT_UID) - - - -/*!BEGIN libc/sysv/consts/c.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_CPIO_H_ - -#define C_IXOTH 0000001 -#define C_IWOTH 0000002 -#define C_IROTH 0000004 -#define C_IXGRP 0000010 -#define C_IWGRP 0000020 -#define C_IRGRP 0000040 -#define C_IXUSR 0000100 -#define C_IWUSR 0000200 -#define C_IRUSR 0000400 -#define C_ISVTX 0001000 -#define C_ISGID 0002000 -#define C_ISUID 0004000 -#define C_ISFIFO 0010000 -#define C_ISCHR 0020000 -#define C_ISDIR 0040000 -#define C_ISBLK 0060000 -#define C_ISREG 0100000 -#define C_ISCTG 0110000 -#define C_ISLNK 0120000 -#define C_ISSOCK 0140000 - - - -/*!BEGIN libc/sysv/consts/clock.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_CLOCK_H_ - -#define CLOCK_BOOTTIME SYMBOLIC(CLOCK_BOOTTIME) -#define CLOCK_BOOTTIME_ALARM SYMBOLIC(CLOCK_BOOTTIME_ALARM) -#define CLOCK_MONOTONIC SYMBOLIC(CLOCK_MONOTONIC) -#define CLOCK_MONOTONIC_COARSE SYMBOLIC(CLOCK_MONOTONIC_COARSE) -#define CLOCK_MONOTONIC_RAW SYMBOLIC(CLOCK_MONOTONIC_RAW) -#define CLOCK_PROCESS_CPUTIME_ID SYMBOLIC(CLOCK_PROCESS_CPUTIME_ID) -#define CLOCK_REALTIME SYMBOLIC(CLOCK_REALTIME) -#define CLOCK_REALTIME_ALARM SYMBOLIC(CLOCK_REALTIME_ALARM) -#define CLOCK_REALTIME_COARSE SYMBOLIC(CLOCK_REALTIME_COARSE) -#define CLOCK_TAI SYMBOLIC(CLOCK_TAI) -#define CLOCK_THREAD_CPUTIME_ID SYMBOLIC(CLOCK_THREAD_CPUTIME_ID) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long CLOCK_BOOTTIME; -extern const long CLOCK_BOOTTIME_ALARM; -extern const long CLOCK_MONOTONIC; -extern const long CLOCK_MONOTONIC_COARSE; -extern const long CLOCK_MONOTONIC_RAW; -extern const long CLOCK_PROCESS_CPUTIME_ID; -extern const long CLOCK_REALTIME; -extern const long CLOCK_REALTIME_ALARM; -extern const long CLOCK_REALTIME_COARSE; -extern const long CLOCK_TAI; -extern const long CLOCK_THREAD_CPUTIME_ID; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/dt.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_DT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long DT_UNKNOWN; -extern const long DT_FIFO; -extern const long DT_CHR; -extern const long DT_DIR; -extern const long DT_BLK; -extern const long DT_REG; -extern const long DT_LNK; -extern const long DT_SOCK; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define DT_UNKNOWN LITERALLY(0) -#define DT_FIFO LITERALLY(1) -#define DT_CHR LITERALLY(2) -#define DT_DIR LITERALLY(4) -#define DT_BLK LITERALLY(6) -#define DT_REG LITERALLY(8) -#define DT_LNK LITERALLY(10) -#define DT_SOCK LITERALLY(12) - - - -/*!BEGIN libc/sysv/consts/epoll.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_EPOLL_H_ - - -/*!BEGIN libc/sysv/consts/o.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_O_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long O_ACCMODE; -extern const long O_APPEND; -extern const long O_ASYNC; -extern const long O_CLOEXEC; -extern const long O_CREAT; -extern const long O_DIRECT; -extern const long O_DIRECTORY; -extern const long O_DSYNC; -extern const long O_EXCL; -extern const long O_EXEC; -extern const long O_LARGEFILE; -extern const long O_NDELAY; -extern const long O_NOATIME; -extern const long O_NOCTTY; -extern const long O_NOFOLLOW; -extern const long O_NONBLOCK; -extern const long O_PATH; -extern const long O_RDONLY; -extern const long O_RDWR; -extern const long O_RSYNC; -extern const long O_SPARSE; -extern const long O_SYNC; -extern const long O_TMPFILE; -extern const long O_TRUNC; -extern const long O_TTY_INIT; -extern const long O_WRONLY; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define O_ACCMODE SYMBOLIC(O_ACCMODE) -#define O_APPEND SYMBOLIC(O_APPEND) -#define O_ASYNC SYMBOLIC(O_ASYNC) -#define O_CLOEXEC SYMBOLIC(O_CLOEXEC) -#define O_CREAT SYMBOLIC(O_CREAT) -#define O_DIRECT SYMBOLIC(O_DIRECT) -#define O_DIRECTORY SYMBOLIC(O_DIRECTORY) -#define O_DSYNC SYMBOLIC(O_DSYNC) -#define O_EXCL SYMBOLIC(O_EXCL) -#define O_EXEC SYMBOLIC(O_EXEC) -#define O_LARGEFILE SYMBOLIC(O_LARGEFILE) -#define O_NDELAY SYMBOLIC(O_NDELAY) -#define O_NOATIME SYMBOLIC(O_NOATIME) -#define O_NOCTTY SYMBOLIC(O_NOCTTY) -#define O_NOFOLLOW SYMBOLIC(O_NOFOLLOW) -#define O_NONBLOCK SYMBOLIC(O_NONBLOCK) -#define O_PATH SYMBOLIC(O_PATH) -#define O_RDONLY SYMBOLIC(O_RDONLY) -#define O_RDWR SYMBOLIC(O_RDWR) -#define O_RSYNC SYMBOLIC(O_RSYNC) -#define O_SPARSE SYMBOLIC(O_SPARSE) -#define O_SYNC SYMBOLIC(O_SYNC) -#define O_TMPFILE SYMBOLIC(O_TMPFILE) -#define O_TRUNC SYMBOLIC(O_TRUNC) -#define O_TTY_INIT SYMBOLIC(O_TTY_INIT) -#define O_WRONLY SYMBOLIC(O_WRONLY) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long EPOLL_CLOEXEC; - -extern const long EPOLL_CTL_ADD; -extern const long EPOLL_CTL_DEL; -extern const long EPOLL_CTL_MOD; - -extern const long EPOLLIN; -extern const long EPOLLPRI; -extern const long EPOLLOUT; -extern const long EPOLLERR; -extern const long EPOLLHUP; -extern const long EPOLLRDNORM; -extern const long EPOLLRDBAND; -extern const long EPOLLWRNORM; -extern const long EPOLLWRBAND; -extern const long EPOLLMSG; -extern const long EPOLLRDHUP; -extern const long EPOLLEXCLUSIVE; -extern const long EPOLLWAKEUP; -extern const long EPOLLONESHOT; -extern const long EPOLLET; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define EPOLL_CLOEXEC O_CLOEXEC - -#define EPOLL_CTL_ADD LITERALLY(1) -#define EPOLL_CTL_DEL LITERALLY(2) -#define EPOLL_CTL_MOD LITERALLY(3) - -#define EPOLLIN LITERALLY(1) -#define EPOLLPRI LITERALLY(2) -#define EPOLLOUT LITERALLY(4) -#define EPOLLERR LITERALLY(8) -#define EPOLLHUP LITERALLY(0x10) -#define EPOLLRDNORM LITERALLY(0x40) -#define EPOLLRDBAND LITERALLY(0x80) -#define EPOLLWRNORM LITERALLY(0x0100) -#define EPOLLWRBAND LITERALLY(0x0200) -#define EPOLLMSG LITERALLY(0x0400) -#define EPOLLRDHUP LITERALLY(0x2000) -#define EPOLLEXCLUSIVE LITERALLY(0x10000000) -#define EPOLLWAKEUP LITERALLY(0x20000000) -#define EPOLLONESHOT LITERALLY(0x40000000) -#define EPOLLET LITERALLY(0x80000000) - - - -/*!BEGIN libc/sysv/consts/eth.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ETH_H_ - -#define ETH_P_CUST SYMBOLIC(ETH_P_CUST) -#define ETH_P_DDCMP SYMBOLIC(ETH_P_DDCMP) -#define ETH_P_DEC SYMBOLIC(ETH_P_DEC) -#define ETH_P_DIAG SYMBOLIC(ETH_P_DIAG) -#define ETH_P_DNA_DL SYMBOLIC(ETH_P_DNA_DL) -#define ETH_P_DNA_RC SYMBOLIC(ETH_P_DNA_RC) -#define ETH_P_DNA_RT SYMBOLIC(ETH_P_DNA_RT) -#define ETH_P_IEEE802154 SYMBOLIC(ETH_P_IEEE802154) -#define ETH_P_LAT SYMBOLIC(ETH_P_LAT) -#define ETH_P_LOCALTALK SYMBOLIC(ETH_P_LOCALTALK) -#define ETH_P_PPP_MP SYMBOLIC(ETH_P_PPP_MP) -#define ETH_P_RARP SYMBOLIC(ETH_P_RARP) -#define ETH_P_SCA SYMBOLIC(ETH_P_SCA) -#define ETH_P_WAN_PPP SYMBOLIC(ETH_P_WAN_PPP) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long ETH_P_CUST; -extern const long ETH_P_DDCMP; -extern const long ETH_P_DEC; -extern const long ETH_P_DIAG; -extern const long ETH_P_DNA_DL; -extern const long ETH_P_DNA_RC; -extern const long ETH_P_DNA_RT; -extern const long ETH_P_IEEE802154; -extern const long ETH_P_LAT; -extern const long ETH_P_LOCALTALK; -extern const long ETH_P_PPP_MP; -extern const long ETH_P_RARP; -extern const long ETH_P_SCA; -extern const long ETH_P_WAN_PPP; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/ex.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_EX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long EX_CANTCREAT; -extern const long EX_CONFIG; -extern const long EX_DATAERR; -extern const long EX_IOERR; -extern const long EX_NOHOST; -extern const long EX_NOINPUT; -extern const long EX_NOPERM; -extern const long EX_NOUSER; -extern const long EX_OK; -extern const long EX_OSERR; -extern const long EX_OSFILE; -extern const long EX_PROTOCOL; -extern const long EX_SOFTWARE; -extern const long EX_TEMPFAIL; -extern const long EX_UNAVAILABLE; -extern const long EX_USAGE; -extern const long EX__BASE; -extern const long EX__MAX; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define EX_CANTCREAT LITERALLY(73) -#define EX_CONFIG LITERALLY(78) -#define EX_DATAERR LITERALLY(65) -#define EX_IOERR LITERALLY(74) -#define EX_NOHOST LITERALLY(68) -#define EX_NOINPUT LITERALLY(66) -#define EX_NOPERM LITERALLY(77) -#define EX_NOUSER LITERALLY(67) -#define EX_OK LITERALLY(0) -#define EX_OSERR LITERALLY(71) -#define EX_OSFILE LITERALLY(72) -#define EX_PROTOCOL LITERALLY(76) -#define EX_SOFTWARE LITERALLY(70) -#define EX_TEMPFAIL LITERALLY(75) -#define EX_UNAVAILABLE LITERALLY(69) -#define EX_USAGE LITERALLY(64) -#define EX__BASE LITERALLY(64) -#define EX__MAX LITERALLY(78) - - - -/*!BEGIN libc/sysv/consts/exit.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_EXIT_H_ - -#define EXIT_FAILURE SYMBOLIC(EXIT_FAILURE) -#define EXIT_SUCCESS SYMBOLIC(EXIT_SUCCESS) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long EXIT_FAILURE; -extern const long EXIT_SUCCESS; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/f.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_F_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long F_DUPFD; -extern const long F_DUPFD_CLOEXEC; -extern const long F_GETFD; -extern const long F_GETFL; -extern const long F_GETLEASE; -extern const long F_GETLK64; -extern const long F_GETLK; -extern const long F_GETOWN; -extern const long F_GETOWN_EX; -extern const long F_GETPIPE_SZ; -extern const long F_GETSIG; -extern const long F_LOCK; -extern const long F_NOTIFY; -extern const long F_OFD_GETLK; -extern const long F_OFD_SETLK; -extern const long F_OFD_SETLKW; -extern const long F_RDLCK; -extern const long F_SETFD; -extern const long F_SETFL; -extern const long F_SETLEASE; -extern const long F_SETLK64; -extern const long F_SETLK; -extern const long F_SETLKW64; -extern const long F_SETLKW; -extern const long F_SETOWN; -extern const long F_SETOWN_EX; -extern const long F_SETPIPE_SZ; -extern const long F_SETSIG; -extern const long F_TEST; -extern const long F_TLOCK; -extern const long F_ULOCK; -extern const long F_UNLCK; -extern const long F_WRLCK; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define F_GETFD LITERALLY(1) -#define F_SETFD LITERALLY(2) -#define F_GETFL LITERALLY(3) -#define F_SETFL LITERALLY(4) - -#define F_DUPFD SYMBOLIC(F_DUPFD) -#define F_DUPFD_CLOEXEC SYMBOLIC(F_DUPFD_CLOEXEC) -#define F_GETLEASE SYMBOLIC(F_GETLEASE) -#define F_GETLK SYMBOLIC(F_GETLK) -#define F_GETLK64 SYMBOLIC(F_GETLK64) -#define F_GETOWN SYMBOLIC(F_GETOWN) -#define F_GETOWN_EX SYMBOLIC(F_GETOWN_EX) -#define F_GETPIPE_SZ SYMBOLIC(F_GETPIPE_SZ) -#define F_GETSIG SYMBOLIC(F_GETSIG) -#define F_LOCK SYMBOLIC(F_LOCK) -#define F_NOTIFY SYMBOLIC(F_NOTIFY) -#define F_OFD_GETLK SYMBOLIC(F_OFD_GETLK) -#define F_OFD_SETLK SYMBOLIC(F_OFD_SETLK) -#define F_OFD_SETLKW SYMBOLIC(F_OFD_SETLKW) -#define F_RDLCK SYMBOLIC(F_RDLCK) -#define F_SETLEASE SYMBOLIC(F_SETLEASE) -#define F_SETLK SYMBOLIC(F_SETLK) -#define F_SETLK64 SYMBOLIC(F_SETLK64) -#define F_SETLKW SYMBOLIC(F_SETLKW) -#define F_SETLKW64 SYMBOLIC(F_SETLKW64) -#define F_SETOWN SYMBOLIC(F_SETOWN) -#define F_SETOWN_EX SYMBOLIC(F_SETOWN_EX) -#define F_SETPIPE_SZ SYMBOLIC(F_SETPIPE_SZ) -#define F_SETSIG SYMBOLIC(F_SETSIG) -#define F_TEST SYMBOLIC(F_TEST) -#define F_TLOCK SYMBOLIC(F_TLOCK) -#define F_ULOCK SYMBOLIC(F_ULOCK) -#define F_UNLCK SYMBOLIC(F_UNLCK) -#define F_WRLCK SYMBOLIC(F_WRLCK) - - - -/*!BEGIN libc/sysv/consts/falloc.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FALLOC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long FALLOC_FL_KEEP_SIZE; -extern const long FALLOC_FL_PUNCH_HOLE; -extern const long FALLOC_FL_NO_HIDE_STALE; -extern const long FALLOC_FL_COLLAPSE_RANGE; -extern const long FALLOC_FL_ZERO_RANGE; -extern const long FALLOC_FL_INSERT_RANGE; -extern const long FALLOC_FL_UNSHARE_RANGE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define FALLOC_FL_KEEP_SIZE SYMBOLIC(FALLOC_FL_KEEP_SIZE) -#define FALLOC_FL_PUNCH_HOLE SYMBOLIC(FALLOC_FL_PUNCH_HOLE) -#define FALLOC_FL_NO_HIDE_STALE SYMBOLIC(FALLOC_FL_NO_HIDE_STALE) -#define FALLOC_FL_COLLAPSE_RANGE SYMBOLIC(FALLOC_FL_COLLAPSE_RANGE) -#define FALLOC_FL_ZERO_RANGE SYMBOLIC(FALLOC_FL_ZERO_RANGE) -#define FALLOC_FL_INSERT_RANGE SYMBOLIC(FALLOC_FL_INSERT_RANGE) -#define FALLOC_FL_UNSHARE_RANGE SYMBOLIC(FALLOC_FL_UNSHARE_RANGE) - - - -/*!BEGIN libc/sysv/consts/fan.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FAN_H_ - -#define FAN_ACCESS SYMBOLIC(FAN_ACCESS) -#define FAN_ACCESS_PERM SYMBOLIC(FAN_ACCESS_PERM) -#define FAN_ALLOW SYMBOLIC(FAN_ALLOW) -#define FAN_ALL_CLASS_BITS SYMBOLIC(FAN_ALL_CLASS_BITS) -#define FAN_ALL_EVENTS SYMBOLIC(FAN_ALL_EVENTS) -#define FAN_ALL_INIT_FLAGS SYMBOLIC(FAN_ALL_INIT_FLAGS) -#define FAN_ALL_MARK_FLAGS SYMBOLIC(FAN_ALL_MARK_FLAGS) -#define FAN_ALL_OUTGOING_EVENTS SYMBOLIC(FAN_ALL_OUTGOING_EVENTS) -#define FAN_ALL_PERM_EVENTS SYMBOLIC(FAN_ALL_PERM_EVENTS) -#define FAN_CLASS_CONTENT SYMBOLIC(FAN_CLASS_CONTENT) -#define FAN_CLASS_NOTIF SYMBOLIC(FAN_CLASS_NOTIF) -#define FAN_CLASS_PRE_CONTENT SYMBOLIC(FAN_CLASS_PRE_CONTENT) -#define FAN_CLOEXEC SYMBOLIC(FAN_CLOEXEC) -#define FAN_CLOSE SYMBOLIC(FAN_CLOSE) -#define FAN_CLOSE_NOWRITE SYMBOLIC(FAN_CLOSE_NOWRITE) -#define FAN_CLOSE_WRITE SYMBOLIC(FAN_CLOSE_WRITE) -#define FAN_DENY SYMBOLIC(FAN_DENY) -#define FAN_EVENT_METADATA_LEN SYMBOLIC(FAN_EVENT_METADATA_LEN) -#define FAN_EVENT_ON_CHILD SYMBOLIC(FAN_EVENT_ON_CHILD) -#define FAN_MARK_ADD SYMBOLIC(FAN_MARK_ADD) -#define FAN_MARK_DONT_FOLLOW SYMBOLIC(FAN_MARK_DONT_FOLLOW) -#define FAN_MARK_FLUSH SYMBOLIC(FAN_MARK_FLUSH) -#define FAN_MARK_IGNORED_MASK SYMBOLIC(FAN_MARK_IGNORED_MASK) -#define FAN_MARK_IGNORED_SURV_MODIFY SYMBOLIC(FAN_MARK_IGNORED_SURV_MODIFY) -#define FAN_MARK_MOUNT SYMBOLIC(FAN_MARK_MOUNT) -#define FAN_MARK_ONLYDIR SYMBOLIC(FAN_MARK_ONLYDIR) -#define FAN_MARK_REMOVE SYMBOLIC(FAN_MARK_REMOVE) -#define FAN_MODIFY SYMBOLIC(FAN_MODIFY) -#define FAN_NOFD SYMBOLIC(FAN_NOFD) -#define FAN_NONBLOCK SYMBOLIC(FAN_NONBLOCK) -#define FAN_ONDIR SYMBOLIC(FAN_ONDIR) -#define FAN_OPEN SYMBOLIC(FAN_OPEN) -#define FAN_OPEN_PERM SYMBOLIC(FAN_OPEN_PERM) -#define FAN_Q_OVERFLOW SYMBOLIC(FAN_Q_OVERFLOW) -#define FAN_UNLIMITED_MARKS SYMBOLIC(FAN_UNLIMITED_MARKS) -#define FAN_UNLIMITED_QUEUE SYMBOLIC(FAN_UNLIMITED_QUEUE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long FAN_ACCESS; -extern const long FAN_ACCESS_PERM; -extern const long FAN_ALLOW; -extern const long FAN_ALL_CLASS_BITS; -extern const long FAN_ALL_EVENTS; -extern const long FAN_ALL_INIT_FLAGS; -extern const long FAN_ALL_MARK_FLAGS; -extern const long FAN_ALL_OUTGOING_EVENTS; -extern const long FAN_ALL_PERM_EVENTS; -extern const long FAN_CLASS_CONTENT; -extern const long FAN_CLASS_NOTIF; -extern const long FAN_CLASS_PRE_CONTENT; -extern const long FAN_CLOEXEC; -extern const long FAN_CLOSE; -extern const long FAN_CLOSE_NOWRITE; -extern const long FAN_CLOSE_WRITE; -extern const long FAN_DENY; -extern const long FAN_EVENT_METADATA_LEN; -extern const long FAN_EVENT_ON_CHILD; -extern const long FAN_MARK_ADD; -extern const long FAN_MARK_DONT_FOLLOW; -extern const long FAN_MARK_FLUSH; -extern const long FAN_MARK_IGNORED_MASK; -extern const long FAN_MARK_IGNORED_SURV_MODIFY; -extern const long FAN_MARK_MOUNT; -extern const long FAN_MARK_ONLYDIR; -extern const long FAN_MARK_REMOVE; -extern const long FAN_MODIFY; -extern const long FAN_NOFD; -extern const long FAN_NONBLOCK; -extern const long FAN_ONDIR; -extern const long FAN_OPEN; -extern const long FAN_OPEN_PERM; -extern const long FAN_Q_OVERFLOW; -extern const long FAN_UNLIMITED_MARKS; -extern const long FAN_UNLIMITED_QUEUE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/fd.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long FD_CLOEXEC; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define FD_CLOEXEC LITERALLY(1) - - - -/*!BEGIN libc/sysv/consts/fileno.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FILENO_H_ - -#define STDIN_FILENO LITERALLY(0) -#define STDOUT_FILENO LITERALLY(1) -#define STDERR_FILENO LITERALLY(2) - - - -/*!BEGIN libc/sysv/consts/fio.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FIO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long FIONBIO; -extern const long FIONREAD; -extern const long FIOASYNC; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define FIONBIO SYMBOLIC(FIONBIO) -#define FIONREAD SYMBOLIC(FIONREAD) -#define FIOASYNC SYMBOLIC(FIOASYNC) - - - -/*!BEGIN libc/sysv/consts/futex.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_FUTEX_H_ - -#define FUTEX_PRIVATE_FLAG SYMBOLIC(FUTEX_PRIVATE_FLAG) -#define FUTEX_REQUEUE SYMBOLIC(FUTEX_REQUEUE) -#define FUTEX_REQUEUE_PRIVATE SYMBOLIC(FUTEX_REQUEUE_PRIVATE) -#define FUTEX_WAIT SYMBOLIC(FUTEX_WAIT) -#define FUTEX_WAIT_PRIVATE SYMBOLIC(FUTEX_WAIT_PRIVATE) -#define FUTEX_WAKE SYMBOLIC(FUTEX_WAKE) -#define FUTEX_WAKE_PRIVATE SYMBOLIC(FUTEX_WAKE_PRIVATE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long FUTEX_PRIVATE_FLAG; -extern const long FUTEX_REQUEUE; -extern const long FUTEX_REQUEUE_PRIVATE; -extern const long FUTEX_WAIT; -extern const long FUTEX_WAIT_PRIVATE; -extern const long FUTEX_WAKE; -extern const long FUTEX_WAKE_PRIVATE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/grnd.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_GRND_H_ - -#define GRND_NONBLOCK LITERALLY(1) -#define GRND_RANDOM LITERALLY(2) - - - -/*!BEGIN libc/sysv/consts/icmp6.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ICMP6_H_ - -#define ICMP6_DST_UNREACH SYMBOLIC(ICMP6_DST_UNREACH) -#define ICMP6_DST_UNREACH_ADDR SYMBOLIC(ICMP6_DST_UNREACH_ADDR) -#define ICMP6_DST_UNREACH_ADMIN SYMBOLIC(ICMP6_DST_UNREACH_ADMIN) -#define ICMP6_DST_UNREACH_BEYONDSCOPE SYMBOLIC(ICMP6_DST_UNREACH_BEYONDSCOPE) -#define ICMP6_DST_UNREACH_NOPORT SYMBOLIC(ICMP6_DST_UNREACH_NOPORT) -#define ICMP6_DST_UNREACH_NOROUTE SYMBOLIC(ICMP6_DST_UNREACH_NOROUTE) -#define ICMP6_ECHO_REPLY SYMBOLIC(ICMP6_ECHO_REPLY) -#define ICMP6_ECHO_REQUEST SYMBOLIC(ICMP6_ECHO_REQUEST) -#define ICMP6_FILTER SYMBOLIC(ICMP6_FILTER) -#define ICMP6_INFOMSG_MASK SYMBOLIC(ICMP6_INFOMSG_MASK) -#define ICMP6_PACKET_TOO_BIG SYMBOLIC(ICMP6_PACKET_TOO_BIG) -#define ICMP6_PARAMPROB_HEADER SYMBOLIC(ICMP6_PARAMPROB_HEADER) -#define ICMP6_PARAMPROB_NEXTHEADER SYMBOLIC(ICMP6_PARAMPROB_NEXTHEADER) -#define ICMP6_PARAMPROB_OPTION SYMBOLIC(ICMP6_PARAMPROB_OPTION) -#define ICMP6_PARAM_PROB SYMBOLIC(ICMP6_PARAM_PROB) -#define ICMP6_ROUTER_RENUMBERING SYMBOLIC(ICMP6_ROUTER_RENUMBERING) -#define ICMP6_RR_FLAGS_FORCEAPPLY SYMBOLIC(ICMP6_RR_FLAGS_FORCEAPPLY) -#define ICMP6_RR_FLAGS_PREVDONE SYMBOLIC(ICMP6_RR_FLAGS_PREVDONE) -#define ICMP6_RR_FLAGS_REQRESULT SYMBOLIC(ICMP6_RR_FLAGS_REQRESULT) -#define ICMP6_RR_FLAGS_SPECSITE SYMBOLIC(ICMP6_RR_FLAGS_SPECSITE) -#define ICMP6_RR_FLAGS_TEST SYMBOLIC(ICMP6_RR_FLAGS_TEST) -#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME \ - SYMBOLIC(ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME) -#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME \ - SYMBOLIC(ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME) -#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO SYMBOLIC(ICMP6_RR_PCOUSE_RAFLAGS_AUTO) -#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK SYMBOLIC(ICMP6_RR_PCOUSE_RAFLAGS_ONLINK) -#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN \ - SYMBOLIC(ICMP6_RR_RESULT_FLAGS_FORBIDDEN) -#define ICMP6_RR_RESULT_FLAGS_OOB SYMBOLIC(ICMP6_RR_RESULT_FLAGS_OOB) -#define ICMP6_TIME_EXCEEDED SYMBOLIC(ICMP6_TIME_EXCEEDED) -#define ICMP6_TIME_EXCEED_REASSEMBLY SYMBOLIC(ICMP6_TIME_EXCEED_REASSEMBLY) -#define ICMP6_TIME_EXCEED_TRANSIT SYMBOLIC(ICMP6_TIME_EXCEED_TRANSIT) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long ICMP6_DST_UNREACH; -extern const long ICMP6_DST_UNREACH_ADDR; -extern const long ICMP6_DST_UNREACH_ADMIN; -extern const long ICMP6_DST_UNREACH_BEYONDSCOPE; -extern const long ICMP6_DST_UNREACH_NOPORT; -extern const long ICMP6_DST_UNREACH_NOROUTE; -extern const long ICMP6_ECHO_REPLY; -extern const long ICMP6_ECHO_REQUEST; -extern const long ICMP6_FILTER; -extern const long ICMP6_INFOMSG_MASK; -extern const long ICMP6_PACKET_TOO_BIG; -extern const long ICMP6_PARAMPROB_HEADER; -extern const long ICMP6_PARAMPROB_NEXTHEADER; -extern const long ICMP6_PARAMPROB_OPTION; -extern const long ICMP6_PARAM_PROB; -extern const long ICMP6_ROUTER_RENUMBERING; -extern const long ICMP6_RR_FLAGS_FORCEAPPLY; -extern const long ICMP6_RR_FLAGS_PREVDONE; -extern const long ICMP6_RR_FLAGS_REQRESULT; -extern const long ICMP6_RR_FLAGS_SPECSITE; -extern const long ICMP6_RR_FLAGS_TEST; -extern const long ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME; -extern const long ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME; -extern const long ICMP6_RR_PCOUSE_RAFLAGS_AUTO; -extern const long ICMP6_RR_PCOUSE_RAFLAGS_ONLINK; -extern const long ICMP6_RR_RESULT_FLAGS_FORBIDDEN; -extern const long ICMP6_RR_RESULT_FLAGS_OOB; -extern const long ICMP6_TIME_EXCEEDED; -extern const long ICMP6_TIME_EXCEED_REASSEMBLY; -extern const long ICMP6_TIME_EXCEED_TRANSIT; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/iff.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IFF_H_ - -#define IFF_ALLMULTI SYMBOLIC(IFF_ALLMULTI) -#define IFF_AUTOMEDIA SYMBOLIC(IFF_AUTOMEDIA) -#define IFF_BROADCAST SYMBOLIC(IFF_BROADCAST) -#define IFF_DEBUG SYMBOLIC(IFF_DEBUG) -#define IFF_DYNAMIC SYMBOLIC(IFF_DYNAMIC) -#define IFF_LOOPBACK SYMBOLIC(IFF_LOOPBACK) -#define IFF_MASTER SYMBOLIC(IFF_MASTER) -#define IFF_MULTICAST SYMBOLIC(IFF_MULTICAST) -#define IFF_NOARP SYMBOLIC(IFF_NOARP) -#define IFF_NOTRAILERS SYMBOLIC(IFF_NOTRAILERS) -#define IFF_POINTOPOINT SYMBOLIC(IFF_POINTOPOINT) -#define IFF_PORTSEL SYMBOLIC(IFF_PORTSEL) -#define IFF_PROMISC SYMBOLIC(IFF_PROMISC) -#define IFF_RUNNING SYMBOLIC(IFF_RUNNING) -#define IFF_SLAVE SYMBOLIC(IFF_SLAVE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long IFF_ALLMULTI; -extern const long IFF_AUTOMEDIA; -extern const long IFF_BROADCAST; -extern const long IFF_DEBUG; -extern const long IFF_DYNAMIC; -extern const long IFF_LOOPBACK; -extern const long IFF_MASTER; -extern const long IFF_MULTICAST; -extern const long IFF_NOARP; -extern const long IFF_NOTRAILERS; -extern const long IFF_POINTOPOINT; -extern const long IFF_PORTSEL; -extern const long IFF_PROMISC; -extern const long IFF_RUNNING; -extern const long IFF_SLAVE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/in.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IN_H_ - -#define IN_ACCESS SYMBOLIC(IN_ACCESS) -#define IN_ALL_EVENTS SYMBOLIC(IN_ALL_EVENTS) -#define IN_ATTRIB SYMBOLIC(IN_ATTRIB) -#define IN_CLOEXEC SYMBOLIC(IN_CLOEXEC) -#define IN_CLOSE SYMBOLIC(IN_CLOSE) -#define IN_CLOSE_NOWRITE SYMBOLIC(IN_CLOSE_NOWRITE) -#define IN_CLOSE_WRITE SYMBOLIC(IN_CLOSE_WRITE) -#define IN_CREATE SYMBOLIC(IN_CREATE) -#define IN_DELETE SYMBOLIC(IN_DELETE) -#define IN_DELETE_SELF SYMBOLIC(IN_DELETE_SELF) -#define IN_DONT_FOLLOW SYMBOLIC(IN_DONT_FOLLOW) -#define IN_EXCL_UNLINK SYMBOLIC(IN_EXCL_UNLINK) -#define IN_IGNORED SYMBOLIC(IN_IGNORED) -#define IN_ISDIR SYMBOLIC(IN_ISDIR) -#define IN_LOOPBACKNET SYMBOLIC(IN_LOOPBACKNET) -#define IN_MASK_ADD SYMBOLIC(IN_MASK_ADD) -#define IN_MODIFY SYMBOLIC(IN_MODIFY) -#define IN_MOVE SYMBOLIC(IN_MOVE) -#define IN_MOVED_FROM SYMBOLIC(IN_MOVED_FROM) -#define IN_MOVED_TO SYMBOLIC(IN_MOVED_TO) -#define IN_MOVE_SELF SYMBOLIC(IN_MOVE_SELF) -#define IN_NONBLOCK SYMBOLIC(IN_NONBLOCK) -#define IN_ONESHOT SYMBOLIC(IN_ONESHOT) -#define IN_ONLYDIR SYMBOLIC(IN_ONLYDIR) -#define IN_OPEN SYMBOLIC(IN_OPEN) -#define IN_Q_OVERFLOW SYMBOLIC(IN_Q_OVERFLOW) -#define IN_UNMOUNT SYMBOLIC(IN_UNMOUNT) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long IN_ACCESS; -extern const long IN_ALL_EVENTS; -extern const long IN_ATTRIB; -extern const long IN_CLOEXEC; -extern const long IN_CLOSE; -extern const long IN_CLOSE_NOWRITE; -extern const long IN_CLOSE_WRITE; -extern const long IN_CREATE; -extern const long IN_DELETE; -extern const long IN_DELETE_SELF; -extern const long IN_DONT_FOLLOW; -extern const long IN_EXCL_UNLINK; -extern const long IN_IGNORED; -extern const long IN_ISDIR; -extern const long IN_LOOPBACKNET; -extern const long IN_MASK_ADD; -extern const long IN_MODIFY; -extern const long IN_MOVE; -extern const long IN_MOVED_FROM; -extern const long IN_MOVED_TO; -extern const long IN_MOVE_SELF; -extern const long IN_NONBLOCK; -extern const long IN_ONESHOT; -extern const long IN_ONLYDIR; -extern const long IN_OPEN; -extern const long IN_Q_OVERFLOW; -extern const long IN_UNMOUNT; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/inaddr.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_INADDR_H_ - -/** - * @fileoverview Well-known Internet addresses. - * These need to be hard-coded as little-endian, so htonl() is needed. - */ - -#define INADDR_ANY 0x00000000u /* 0.0.0.0 */ -#define INADDR_BROADCAST 0xFFFFFFFFu /* 255.255.255.255 */ -#define INADDR_NONE 0xFFFFFFFFu /* 255.255.255.255 */ -#define INADDR_LOOPBACK 0x7F000001u /* 127.0.0.1 */ -#define INADDR_TESTNET1 0xC0000200u /* 192.0.2.0/24 (RFC5737§3) */ -#define INADDR_TESTNET2 0xC6336400u /* 198.51.100.0/24 */ -#define INADDR_TESTNET3 0xCB007100u /* 203.0.113.0/24 */ - -#define INADDR_ALLHOSTS_GROUP 0xE0000001u -#define INADDR_ALLRTRS_GROUP 0xE0000002u -#define INADDR_MAX_LOCAL_GROUP 0xE00000FFu -#define INADDR_UNSPEC_GROUP 0xE0000000u - - - -/*!BEGIN libc/sysv/consts/iov.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IOV_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long IOV_MAX; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define IOV_MAX SYMBOLIC(IOV_MAX) - - - -/*!BEGIN libc/sysv/consts/ip.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IP_H_ - -#define IP_ADD_MEMBERSHIP SYMBOLIC(IP_ADD_MEMBERSHIP) -#define IP_ADD_SOURCE_MEMBERSHIP SYMBOLIC(IP_ADD_SOURCE_MEMBERSHIP) -#define IP_BIND_ADDRESS_NO_PORT SYMBOLIC(IP_BIND_ADDRESS_NO_PORT) -#define IP_BLOCK_SOURCE SYMBOLIC(IP_BLOCK_SOURCE) -#define IP_CHECKSUM SYMBOLIC(IP_CHECKSUM) -#define IP_DEFAULT_MULTICAST_LOOP SYMBOLIC(IP_DEFAULT_MULTICAST_LOOP) -#define IP_DEFAULT_MULTICAST_TTL SYMBOLIC(IP_DEFAULT_MULTICAST_TTL) -#define IP_DROP_MEMBERSHIP SYMBOLIC(IP_DROP_MEMBERSHIP) -#define IP_DROP_SOURCE_MEMBERSHIP SYMBOLIC(IP_DROP_SOURCE_MEMBERSHIP) -#define IP_FREEBIND SYMBOLIC(IP_FREEBIND) -#define IP_HDRINCL SYMBOLIC(IP_HDRINCL) -#define IP_IPSEC_POLICY SYMBOLIC(IP_IPSEC_POLICY) -#define IP_MAX_MEMBERSHIPS SYMBOLIC(IP_MAX_MEMBERSHIPS) -#define IP_MINTTL SYMBOLIC(IP_MINTTL) -#define IP_MSFILTER SYMBOLIC(IP_MSFILTER) -#define IP_MTU SYMBOLIC(IP_MTU) -#define IP_MTU_DISCOVER SYMBOLIC(IP_MTU_DISCOVER) -#define IP_MULTICAST_ALL SYMBOLIC(IP_MULTICAST_ALL) -#define IP_MULTICAST_IF SYMBOLIC(IP_MULTICAST_IF) -#define IP_MULTICAST_LOOP SYMBOLIC(IP_MULTICAST_LOOP) -#define IP_MULTICAST_TTL SYMBOLIC(IP_MULTICAST_TTL) -#define IP_NODEFRAG SYMBOLIC(IP_NODEFRAG) -#define IP_OPTIONS SYMBOLIC(IP_OPTIONS) -#define IP_ORIGDSTADDR SYMBOLIC(IP_ORIGDSTADDR) -#define IP_PASSSEC SYMBOLIC(IP_PASSSEC) -#define IP_PKTINFO SYMBOLIC(IP_PKTINFO) -#define IP_PKTOPTIONS SYMBOLIC(IP_PKTOPTIONS) -#define IP_PMTUDISC SYMBOLIC(IP_PMTUDISC) -#define IP_PMTUDISC_DO SYMBOLIC(IP_PMTUDISC_DO) -#define IP_PMTUDISC_DONT SYMBOLIC(IP_PMTUDISC_DONT) -#define IP_PMTUDISC_INTERFACE SYMBOLIC(IP_PMTUDISC_INTERFACE) -#define IP_PMTUDISC_OMIT SYMBOLIC(IP_PMTUDISC_OMIT) -#define IP_PMTUDISC_PROBE SYMBOLIC(IP_PMTUDISC_PROBE) -#define IP_PMTUDISC_WANT SYMBOLIC(IP_PMTUDISC_WANT) -#define IP_RECVERR SYMBOLIC(IP_RECVERR) -#define IP_RECVOPTS SYMBOLIC(IP_RECVOPTS) -#define IP_RECVORIGDSTADDR SYMBOLIC(IP_RECVORIGDSTADDR) -#define IP_RECVRETOPTS SYMBOLIC(IP_RECVRETOPTS) -#define IP_RECVTOS SYMBOLIC(IP_RECVTOS) -#define IP_RECVTTL SYMBOLIC(IP_RECVTTL) -#define IP_RETOPTS SYMBOLIC(IP_RETOPTS) -#define IP_ROUTER_ALERT SYMBOLIC(IP_ROUTER_ALERT) -#define IP_TOS SYMBOLIC(IP_TOS) -#define IP_TRANSPARENT SYMBOLIC(IP_TRANSPARENT) -#define IP_TTL SYMBOLIC(IP_TTL) -#define IP_UNBLOCK_SOURCE SYMBOLIC(IP_UNBLOCK_SOURCE) -#define IP_UNICAST_IF SYMBOLIC(IP_UNICAST_IF) -#define IP_XFRM_POLICY SYMBOLIC(IP_XFRM_POLICY) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long IP_ADD_MEMBERSHIP; -extern const long IP_ADD_SOURCE_MEMBERSHIP; -extern const long IP_BIND_ADDRESS_NO_PORT; -extern const long IP_BLOCK_SOURCE; -extern const long IP_CHECKSUM; -extern const long IP_DEFAULT_MULTICAST_LOOP; -extern const long IP_DEFAULT_MULTICAST_TTL; -extern const long IP_DROP_MEMBERSHIP; -extern const long IP_DROP_SOURCE_MEMBERSHIP; -extern const long IP_FREEBIND; -extern const long IP_HDRINCL; -extern const long IP_IPSEC_POLICY; -extern const long IP_MAX_MEMBERSHIPS; -extern const long IP_MINTTL; -extern const long IP_MSFILTER; -extern const long IP_MTU; -extern const long IP_MTU_DISCOVER; -extern const long IP_MULTICAST_ALL; -extern const long IP_MULTICAST_IF; -extern const long IP_MULTICAST_LOOP; -extern const long IP_MULTICAST_TTL; -extern const long IP_NODEFRAG; -extern const long IP_OPTIONS; -extern const long IP_ORIGDSTADDR; -extern const long IP_PASSSEC; -extern const long IP_PKTINFO; -extern const long IP_PKTOPTIONS; -extern const long IP_PMTUDISC; -extern const long IP_PMTUDISC_DO; -extern const long IP_PMTUDISC_DONT; -extern const long IP_PMTUDISC_INTERFACE; -extern const long IP_PMTUDISC_OMIT; -extern const long IP_PMTUDISC_PROBE; -extern const long IP_PMTUDISC_WANT; -extern const long IP_RECVERR; -extern const long IP_RECVOPTS; -extern const long IP_RECVORIGDSTADDR; -extern const long IP_RECVRETOPTS; -extern const long IP_RECVTOS; -extern const long IP_RECVTTL; -extern const long IP_RETOPTS; -extern const long IP_ROUTER_ALERT; -extern const long IP_TOS; -extern const long IP_TRANSPARENT; -extern const long IP_TTL; -extern const long IP_UNBLOCK_SOURCE; -extern const long IP_UNICAST_IF; -extern const long IP_XFRM_POLICY; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/ipc.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPC_H_ - -#define IPC_CREAT SYMBOLIC(IPC_CREAT) -#define IPC_EXCL SYMBOLIC(IPC_EXCL) -#define IPC_INFO SYMBOLIC(IPC_INFO) -#define IPC_NOWAIT SYMBOLIC(IPC_NOWAIT) -#define IPC_PRIVATE SYMBOLIC(IPC_PRIVATE) -#define IPC_RMID SYMBOLIC(IPC_RMID) -#define IPC_SET SYMBOLIC(IPC_SET) -#define IPC_STAT SYMBOLIC(IPC_STAT) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long IPC_CREAT; -extern const long IPC_EXCL; -extern const long IPC_INFO; -extern const long IPC_NOWAIT; -extern const long IPC_PRIVATE; -extern const long IPC_RMID; -extern const long IPC_SET; -extern const long IPC_STAT; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/ipport.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPPORT_H_ - -/** - * ARPA network ports. - */ -#define IPPORT_ECHO 7 -#define IPPORT_DISCARD 9 -#define IPPORT_SYSTAT 11 -#define IPPORT_DAYTIME 13 -#define IPPORT_NETSTAT 15 -#define IPPORT_FTP 21 -#define IPPORT_TELNET 23 -#define IPPORT_SMTP 25 -#define IPPORT_TIMESERVER 37 -#define IPPORT_NAMESERVER 42 -#define IPPORT_WHOIS 43 -#define IPPORT_MTP 57 -#define IPPORT_TFTP 69 -#define IPPORT_RJE 77 -#define IPPORT_FINGER 79 -#define IPPORT_TTYLINK 87 -#define IPPORT_SUPDUP 95 -#define IPPORT_EXECSERVER 512 -#define IPPORT_LOGINSERVER 513 -#define IPPORT_CMDSERVER 514 -#define IPPORT_EFSSERVER 520 -#define IPPORT_BIFFUDP 512 -#define IPPORT_WHOSERVER 513 -#define IPPORT_ROUTESERVER 520 -#define IPPORT_RESERVED 1024 -#define IPPORT_USERRESERVED 5000 - -/** - * Modern network ports. - */ -#define IPPORT_SSH 22 -#define IPPORT_DOMAIN 53 -#define IPPORT_HTTP 80 -#define IPPORT_POP3 110 -#define IPPORT_SFTP 115 -#define IPPORT_NTP 123 -#define IPPORT_IMAP2 143 -#define IPPORT_NETBIOS_NS 137 -#define IPPORT_NETBIOS_DGM 138 -#define IPPORT_NETBIOS_SSN 139 -#define IPPORT_BGP 179 -#define IPPORT_IRC 194 -#define IPPORT_HTTPS 443 -#define IPPORT_PRINTER 515 -#define IPPORT_NFS 2049 -#define IPPORT_DISTCC 3632 -#define IPPORT_SIP 5060 -#define IPPORT_POSTGRESQL 5432 -#define IPPORT_X11 6000 -#define IPPORT_GIT 9418 -#define IPPORT_IRCD 6667 -#define IPPORT_IMAPS 993 -#define IPPORT_POP3S 995 - - - -/*!BEGIN libc/sysv/consts/ipproto.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPPROTO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long IPPROTO_AH; -extern const long IPPROTO_BEETPH; -extern const long IPPROTO_COMP; -extern const long IPPROTO_DCCP; -extern const long IPPROTO_DSTOPTS; -extern const long IPPROTO_EGP; -extern const long IPPROTO_ENCAP; -extern const long IPPROTO_ESP; -extern const long IPPROTO_FRAGMENT; -extern const long IPPROTO_GRE; -extern const long IPPROTO_HOPOPTS; -extern const long IPPROTO_ICMP; -extern const long IPPROTO_ICMPV6; -extern const long IPPROTO_IDP; -extern const long IPPROTO_IGMP; -extern const long IPPROTO_IP; -extern const long IPPROTO_IPIP; -extern const long IPPROTO_IPV6; -extern const long IPPROTO_MAX; -extern const long IPPROTO_MH; -extern const long IPPROTO_MPLS; -extern const long IPPROTO_MTP; -extern const long IPPROTO_NONE; -extern const long IPPROTO_PIM; -extern const long IPPROTO_PUP; -extern const long IPPROTO_RAW; -extern const long IPPROTO_ROUTING; -extern const long IPPROTO_RSVP; -extern const long IPPROTO_SCTP; -extern const long IPPROTO_TCP; -extern const long IPPROTO_TP; -extern const long IPPROTO_UDP; -extern const long IPPROTO_UDPLITE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define IPPROTO_IP LITERALLY(0) -#define IPPROTO_ICMP LITERALLY(1) -#define IPPROTO_TCP LITERALLY(6) -#define IPPROTO_UDP LITERALLY(17) -#define IPPROTO_RAW LITERALLY(255) - -#define IPPROTO_AH SYMBOLIC(IPPROTO_AH) -#define IPPROTO_BEETPH SYMBOLIC(IPPROTO_BEETPH) -#define IPPROTO_COMP SYMBOLIC(IPPROTO_COMP) -#define IPPROTO_DCCP SYMBOLIC(IPPROTO_DCCP) -#define IPPROTO_DSTOPTS SYMBOLIC(IPPROTO_DSTOPTS) -#define IPPROTO_EGP SYMBOLIC(IPPROTO_EGP) -#define IPPROTO_ENCAP SYMBOLIC(IPPROTO_ENCAP) -#define IPPROTO_ESP SYMBOLIC(IPPROTO_ESP) -#define IPPROTO_FRAGMENT SYMBOLIC(IPPROTO_FRAGMENT) -#define IPPROTO_GRE SYMBOLIC(IPPROTO_GRE) -#define IPPROTO_HOPOPTS SYMBOLIC(IPPROTO_HOPOPTS) -#define IPPROTO_ICMPV6 SYMBOLIC(IPPROTO_ICMPV6) -#define IPPROTO_IDP SYMBOLIC(IPPROTO_IDP) -#define IPPROTO_IGMP SYMBOLIC(IPPROTO_IGMP) -#define IPPROTO_IPIP SYMBOLIC(IPPROTO_IPIP) -#define IPPROTO_IPV6 SYMBOLIC(IPPROTO_IPV6) -#define IPPROTO_MAX SYMBOLIC(IPPROTO_MAX) -#define IPPROTO_MH SYMBOLIC(IPPROTO_MH) -#define IPPROTO_MPLS SYMBOLIC(IPPROTO_MPLS) -#define IPPROTO_MTP SYMBOLIC(IPPROTO_MTP) -#define IPPROTO_NONE SYMBOLIC(IPPROTO_NONE) -#define IPPROTO_PIM SYMBOLIC(IPPROTO_PIM) -#define IPPROTO_PUP SYMBOLIC(IPPROTO_PUP) -#define IPPROTO_ROUTING SYMBOLIC(IPPROTO_ROUTING) -#define IPPROTO_RSVP SYMBOLIC(IPPROTO_RSVP) -#define IPPROTO_SCTP SYMBOLIC(IPPROTO_SCTP) -#define IPPROTO_TP SYMBOLIC(IPPROTO_TP) -#define IPPROTO_UDPLITE SYMBOLIC(IPPROTO_UDPLITE) - - - -/*!BEGIN libc/sysv/consts/ipv6.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_IPV6_H_ - -#define IPV6_2292DSTOPTS SYMBOLIC(IPV6_2292DSTOPTS) -#define IPV6_2292HOPLIMIT SYMBOLIC(IPV6_2292HOPLIMIT) -#define IPV6_2292HOPOPTS SYMBOLIC(IPV6_2292HOPOPTS) -#define IPV6_2292PKTINFO SYMBOLIC(IPV6_2292PKTINFO) -#define IPV6_2292PKTOPTIONS SYMBOLIC(IPV6_2292PKTOPTIONS) -#define IPV6_2292RTHDR SYMBOLIC(IPV6_2292RTHDR) -#define IPV6_ADDRFORM SYMBOLIC(IPV6_ADDRFORM) -#define IPV6_ADD_MEMBERSHIP SYMBOLIC(IPV6_ADD_MEMBERSHIP) -#define IPV6_AUTHHDR SYMBOLIC(IPV6_AUTHHDR) -#define IPV6_AUTOFLOWLABEL SYMBOLIC(IPV6_AUTOFLOWLABEL) -#define IPV6_CHECKSUM SYMBOLIC(IPV6_CHECKSUM) -#define IPV6_DONTFRAG SYMBOLIC(IPV6_DONTFRAG) -#define IPV6_DROP_MEMBERSHIP SYMBOLIC(IPV6_DROP_MEMBERSHIP) -#define IPV6_DSTOPTS SYMBOLIC(IPV6_DSTOPTS) -#define IPV6_HDRINCL SYMBOLIC(IPV6_HDRINCL) -#define IPV6_HOPLIMIT SYMBOLIC(IPV6_HOPLIMIT) -#define IPV6_HOPOPTS SYMBOLIC(IPV6_HOPOPTS) -#define IPV6_IPSEC_POLICY SYMBOLIC(IPV6_IPSEC_POLICY) -#define IPV6_JOIN_ANYCAST SYMBOLIC(IPV6_JOIN_ANYCAST) -#define IPV6_JOIN_GROUP SYMBOLIC(IPV6_JOIN_GROUP) -#define IPV6_LEAVE_ANYCAST SYMBOLIC(IPV6_LEAVE_ANYCAST) -#define IPV6_LEAVE_GROUP SYMBOLIC(IPV6_LEAVE_GROUP) -#define IPV6_MINHOPCOUNT SYMBOLIC(IPV6_MINHOPCOUNT) -#define IPV6_MTU SYMBOLIC(IPV6_MTU) -#define IPV6_MTU_DISCOVER SYMBOLIC(IPV6_MTU_DISCOVER) -#define IPV6_MULTICAST_HOPS SYMBOLIC(IPV6_MULTICAST_HOPS) -#define IPV6_MULTICAST_IF SYMBOLIC(IPV6_MULTICAST_IF) -#define IPV6_MULTICAST_LOOP SYMBOLIC(IPV6_MULTICAST_LOOP) -#define IPV6_NEXTHOP SYMBOLIC(IPV6_NEXTHOP) -#define IPV6_ORIGDSTADDR SYMBOLIC(IPV6_ORIGDSTADDR) -#define IPV6_PATHMTU SYMBOLIC(IPV6_PATHMTU) -#define IPV6_PKTINFO SYMBOLIC(IPV6_PKTINFO) -#define IPV6_PMTUDISC_DO SYMBOLIC(IPV6_PMTUDISC_DO) -#define IPV6_PMTUDISC_DONT SYMBOLIC(IPV6_PMTUDISC_DONT) -#define IPV6_PMTUDISC_INTERFACE SYMBOLIC(IPV6_PMTUDISC_INTERFACE) -#define IPV6_PMTUDISC_OMIT SYMBOLIC(IPV6_PMTUDISC_OMIT) -#define IPV6_PMTUDISC_PROBE SYMBOLIC(IPV6_PMTUDISC_PROBE) -#define IPV6_PMTUDISC_WANT SYMBOLIC(IPV6_PMTUDISC_WANT) -#define IPV6_RECVDSTOPTS SYMBOLIC(IPV6_RECVDSTOPTS) -#define IPV6_RECVERR SYMBOLIC(IPV6_RECVERR) -#define IPV6_RECVHOPLIMIT SYMBOLIC(IPV6_RECVHOPLIMIT) -#define IPV6_RECVHOPOPTS SYMBOLIC(IPV6_RECVHOPOPTS) -#define IPV6_RECVORIGDSTADDR SYMBOLIC(IPV6_RECVORIGDSTADDR) -#define IPV6_RECVPATHMTU SYMBOLIC(IPV6_RECVPATHMTU) -#define IPV6_RECVPKTINFO SYMBOLIC(IPV6_RECVPKTINFO) -#define IPV6_RECVRTHDR SYMBOLIC(IPV6_RECVRTHDR) -#define IPV6_RECVTCLASS SYMBOLIC(IPV6_RECVTCLASS) -#define IPV6_ROUTER_ALERT SYMBOLIC(IPV6_ROUTER_ALERT) -#define IPV6_RTHDR SYMBOLIC(IPV6_RTHDR) -#define IPV6_RTHDRDSTOPTS SYMBOLIC(IPV6_RTHDRDSTOPTS) -#define IPV6_RTHDR_LOOSE SYMBOLIC(IPV6_RTHDR_LOOSE) -#define IPV6_RTHDR_STRICT SYMBOLIC(IPV6_RTHDR_STRICT) -#define IPV6_RTHDR_TYPE_0 SYMBOLIC(IPV6_RTHDR_TYPE_0) -#define IPV6_RXDSTOPTS SYMBOLIC(IPV6_RXDSTOPTS) -#define IPV6_RXHOPOPTS SYMBOLIC(IPV6_RXHOPOPTS) -#define IPV6_TCLASS SYMBOLIC(IPV6_TCLASS) -#define IPV6_UNICAST_HOPS SYMBOLIC(IPV6_UNICAST_HOPS) -#define IPV6_V6ONLY SYMBOLIC(IPV6_V6ONLY) -#define IPV6_XFRM_POLICY SYMBOLIC(IPV6_XFRM_POLICY) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long IPV6_2292DSTOPTS; -extern const long IPV6_2292HOPLIMIT; -extern const long IPV6_2292HOPOPTS; -extern const long IPV6_2292PKTINFO; -extern const long IPV6_2292PKTOPTIONS; -extern const long IPV6_2292RTHDR; -extern const long IPV6_ADDRFORM; -extern const long IPV6_ADD_MEMBERSHIP; -extern const long IPV6_AUTHHDR; -extern const long IPV6_AUTOFLOWLABEL; -extern const long IPV6_CHECKSUM; -extern const long IPV6_DONTFRAG; -extern const long IPV6_DROP_MEMBERSHIP; -extern const long IPV6_DSTOPTS; -extern const long IPV6_HDRINCL; -extern const long IPV6_HOPLIMIT; -extern const long IPV6_HOPOPTS; -extern const long IPV6_IPSEC_POLICY; -extern const long IPV6_JOIN_ANYCAST; -extern const long IPV6_JOIN_GROUP; -extern const long IPV6_LEAVE_ANYCAST; -extern const long IPV6_LEAVE_GROUP; -extern const long IPV6_MINHOPCOUNT; -extern const long IPV6_MTU; -extern const long IPV6_MTU_DISCOVER; -extern const long IPV6_MULTICAST_HOPS; -extern const long IPV6_MULTICAST_IF; -extern const long IPV6_MULTICAST_LOOP; -extern const long IPV6_NEXTHOP; -extern const long IPV6_ORIGDSTADDR; -extern const long IPV6_PATHMTU; -extern const long IPV6_PKTINFO; -extern const long IPV6_PMTUDISC_DO; -extern const long IPV6_PMTUDISC_DONT; -extern const long IPV6_PMTUDISC_INTERFACE; -extern const long IPV6_PMTUDISC_OMIT; -extern const long IPV6_PMTUDISC_PROBE; -extern const long IPV6_PMTUDISC_WANT; -extern const long IPV6_RECVDSTOPTS; -extern const long IPV6_RECVERR; -extern const long IPV6_RECVHOPLIMIT; -extern const long IPV6_RECVHOPOPTS; -extern const long IPV6_RECVORIGDSTADDR; -extern const long IPV6_RECVPATHMTU; -extern const long IPV6_RECVPKTINFO; -extern const long IPV6_RECVRTHDR; -extern const long IPV6_RECVTCLASS; -extern const long IPV6_ROUTER_ALERT; -extern const long IPV6_RTHDR; -extern const long IPV6_RTHDRDSTOPTS; -extern const long IPV6_RTHDR_LOOSE; -extern const long IPV6_RTHDR_STRICT; -extern const long IPV6_RTHDR_TYPE_0; -extern const long IPV6_RXDSTOPTS; -extern const long IPV6_RXHOPOPTS; -extern const long IPV6_TCLASS; -extern const long IPV6_UNICAST_HOPS; -extern const long IPV6_V6ONLY; -extern const long IPV6_XFRM_POLICY; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/itimer.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ITIMER_H_ - -#define ITIMER_REAL 0 -#define ITIMER_VIRTUAL 1 -#define ITIMER_PROF 2 - - - -/*!BEGIN libc/sysv/consts/limits.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LIMITS_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long PIPE_BUF; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define PIPE_BUF SYMBOLIC(PIPE_BUF) - - - -/*!BEGIN libc/sysv/consts/lio.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LIO_H_ - -#define LIO_NOP SYMBOLIC(LIO_NOP) -#define LIO_NOWAIT SYMBOLIC(LIO_NOWAIT) -#define LIO_READ SYMBOLIC(LIO_READ) -#define LIO_WAIT SYMBOLIC(LIO_WAIT) -#define LIO_WRITE SYMBOLIC(LIO_WRITE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long LIO_NOP; -extern const long LIO_NOWAIT; -extern const long LIO_READ; -extern const long LIO_WAIT; -extern const long LIO_WRITE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/lock.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LOCK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long LOCK_EX; -extern const long LOCK_NB; -extern const long LOCK_SH; -extern const long LOCK_UN; -extern const long LOCK_UNLOCK_CACHE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define LOCK_EX LITERALLY(2) -#define LOCK_NB SYMBOLIC(LOCK_NB) -#define LOCK_SH SYMBOLIC(LOCK_SH) -#define LOCK_UN SYMBOLIC(LOCK_UN) -#define LOCK_UNLOCK_CACHE SYMBOLIC(LOCK_UNLOCK_CACHE) - - - -/*!BEGIN libc/sysv/consts/log.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LOG_H_ - -#define LOG_ALERT SYMBOLIC(LOG_ALERT) -#define LOG_AUTH SYMBOLIC(LOG_AUTH) -#define LOG_CONS SYMBOLIC(LOG_CONS) -#define LOG_CRIT SYMBOLIC(LOG_CRIT) -#define LOG_CRON SYMBOLIC(LOG_CRON) -#define LOG_DAEMON SYMBOLIC(LOG_DAEMON) -#define LOG_DEBUG SYMBOLIC(LOG_DEBUG) -#define LOG_EMERG SYMBOLIC(LOG_EMERG) -#define LOG_ERR SYMBOLIC(LOG_ERR) -#define LOG_FACMASK SYMBOLIC(LOG_FACMASK) -#define LOG_INFO SYMBOLIC(LOG_INFO) -#define LOG_KERN SYMBOLIC(LOG_KERN) -#define LOG_LOCAL0 SYMBOLIC(LOG_LOCAL0) -#define LOG_LOCAL1 SYMBOLIC(LOG_LOCAL1) -#define LOG_LOCAL2 SYMBOLIC(LOG_LOCAL2) -#define LOG_LOCAL3 SYMBOLIC(LOG_LOCAL3) -#define LOG_LOCAL4 SYMBOLIC(LOG_LOCAL4) -#define LOG_LOCAL5 SYMBOLIC(LOG_LOCAL5) -#define LOG_LOCAL6 SYMBOLIC(LOG_LOCAL6) -#define LOG_LOCAL7 SYMBOLIC(LOG_LOCAL7) -#define LOG_LPR SYMBOLIC(LOG_LPR) -#define LOG_MAIL SYMBOLIC(LOG_MAIL) -#define LOG_NDELAY SYMBOLIC(LOG_NDELAY) -#define LOG_NEWS SYMBOLIC(LOG_NEWS) -#define LOG_NFACILITIES SYMBOLIC(LOG_NFACILITIES) -#define LOG_NOTICE SYMBOLIC(LOG_NOTICE) -#define LOG_NOWAIT SYMBOLIC(LOG_NOWAIT) -#define LOG_ODELAY SYMBOLIC(LOG_ODELAY) -#define LOG_PERROR SYMBOLIC(LOG_PERROR) -#define LOG_PID SYMBOLIC(LOG_PID) -#define LOG_PRIMASK SYMBOLIC(LOG_PRIMASK) -#define LOG_SELECT SYMBOLIC(LOG_SELECT) -#define LOG_SENSE SYMBOLIC(LOG_SENSE) -#define LOG_SYSLOG SYMBOLIC(LOG_SYSLOG) -#define LOG_USER SYMBOLIC(LOG_USER) -#define LOG_UUCP SYMBOLIC(LOG_UUCP) -#define LOG_WARNING SYMBOLIC(LOG_WARNING) - -/* - * arguments to setlogmask. - */ -#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */ -#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */ - - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long LOG_ALERT; -extern const long LOG_AUTH; -extern const long LOG_CONS; -extern const long LOG_CRIT; -extern const long LOG_CRON; -extern const long LOG_DAEMON; -extern const long LOG_DEBUG; -extern const long LOG_EMERG; -extern const long LOG_ERR; -extern const long LOG_FACMASK; -extern const long LOG_INFO; -extern const long LOG_KERN; -extern const long LOG_LOCAL0; -extern const long LOG_LOCAL1; -extern const long LOG_LOCAL2; -extern const long LOG_LOCAL3; -extern const long LOG_LOCAL4; -extern const long LOG_LOCAL5; -extern const long LOG_LOCAL6; -extern const long LOG_LOCAL7; -extern const long LOG_LPR; -extern const long LOG_MAIL; -extern const long LOG_NDELAY; -extern const long LOG_NEWS; -extern const long LOG_NFACILITIES; -extern const long LOG_NOTICE; -extern const long LOG_NOWAIT; -extern const long LOG_ODELAY; -extern const long LOG_PERROR; -extern const long LOG_PID; -extern const long LOG_PRIMASK; -extern const long LOG_SELECT; -extern const long LOG_SENSE; -extern const long LOG_SYSLOG; -extern const long LOG_USER; -extern const long LOG_UUCP; -extern const long LOG_WARNING; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/madv.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MADV_H_ - -#define MADV_DODUMP SYMBOLIC(MADV_DODUMP) -#define MADV_DOFORK SYMBOLIC(MADV_DOFORK) -#define MADV_DONTDUMP SYMBOLIC(MADV_DONTDUMP) -#define MADV_DONTFORK SYMBOLIC(MADV_DONTFORK) -#define MADV_DONTNEED SYMBOLIC(MADV_DONTNEED) -#define MADV_FREE SYMBOLIC(MADV_FREE) -#define MADV_HUGEPAGE SYMBOLIC(MADV_HUGEPAGE) -#define MADV_HWPOISON SYMBOLIC(MADV_HWPOISON) -#define MADV_MERGEABLE SYMBOLIC(MADV_MERGEABLE) -#define MADV_NOHUGEPAGE SYMBOLIC(MADV_NOHUGEPAGE) -#define MADV_NORMAL SYMBOLIC(MADV_NORMAL) -#define MADV_RANDOM SYMBOLIC(MADV_RANDOM) -#define MADV_REMOVE SYMBOLIC(MADV_REMOVE) -#define MADV_SEQUENTIAL SYMBOLIC(MADV_SEQUENTIAL) -#define MADV_UNMERGEABLE SYMBOLIC(MADV_UNMERGEABLE) -#define MADV_WILLNEED SYMBOLIC(MADV_WILLNEED) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MADV_DODUMP; -extern const long MADV_DOFORK; -extern const long MADV_DONTDUMP; -extern const long MADV_DONTFORK; -extern const long MADV_DONTNEED; -extern const long MADV_FREE; -extern const long MADV_HUGEPAGE; -extern const long MADV_HWPOISON; -extern const long MADV_MERGEABLE; -extern const long MADV_NOHUGEPAGE; -extern const long MADV_NORMAL; -extern const long MADV_RANDOM; -extern const long MADV_REMOVE; -extern const long MADV_SEQUENTIAL; -extern const long MADV_UNMERGEABLE; -extern const long MADV_WILLNEED; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/map.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MAP_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MAP_32BIT; -extern const long MAP_ANON; -extern const long MAP_ANONYMOUS; -extern const long MAP_DENYWRITE; -extern const long MAP_EXECUTABLE; -extern const long MAP_FILE; -extern const long MAP_FIXED; -extern const long MAP_GROWSDOWN; -extern const long MAP_HUGETLB; -extern const long MAP_HUGE_MASK; -extern const long MAP_HUGE_SHIFT; -extern const long MAP_LOCKED; -extern const long MAP_NONBLOCK; -extern const long MAP_NORESERVE; -extern const long MAP_POPULATE; -extern const long MAP_PRIVATE; -extern const long MAP_SHARED; -extern const long MAP_CONCEAL; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define MAP_FILE 0 -#define MAP_SHARED 1 -#define MAP_PRIVATE 2 -#define MAP_TYPE 15 -#define MAP_FIXED 16 - -#define MAP_32BIT SYMBOLIC(MAP_32BIT) -#define MAP_ANONYMOUS SYMBOLIC(MAP_ANONYMOUS) -#define MAP_CONCEAL SYMBOLIC(MAP_CONCEAL) -#define MAP_DENYWRITE SYMBOLIC(MAP_DENYWRITE) -#define MAP_EXECUTABLE SYMBOLIC(MAP_EXECUTABLE) -#define MAP_GROWSDOWN SYMBOLIC(MAP_GROWSDOWN) -#define MAP_HUGETLB SYMBOLIC(MAP_HUGETLB) -#define MAP_HUGE_MASK SYMBOLIC(MAP_HUGE_MASK) -#define MAP_HUGE_SHIFT SYMBOLIC(MAP_HUGE_SHIFT) -#define MAP_LOCKED SYMBOLIC(MAP_LOCKED) -#define MAP_NONBLOCK SYMBOLIC(MAP_NONBLOCK) -#define MAP_NORESERVE SYMBOLIC(MAP_NORESERVE) -#define MAP_POPULATE SYMBOLIC(MAP_POPULATE) -#define MAP_CONCEAL SYMBOLIC(MAP_CONCEAL) - -#define MAP_ANON MAP_ANONYMOUS -#define MAP_NOCORE MAP_CONCEAL -#define MAP_STACK MAP_GROWSDOWN - - - -/*!BEGIN libc/sysv/consts/mcast.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MCAST_H_ - -#define MCAST_BLOCK_SOURCE SYMBOLIC(MCAST_BLOCK_SOURCE) -#define MCAST_EXCLUDE SYMBOLIC(MCAST_EXCLUDE) -#define MCAST_INCLUDE SYMBOLIC(MCAST_INCLUDE) -#define MCAST_JOIN_GROUP SYMBOLIC(MCAST_JOIN_GROUP) -#define MCAST_JOIN_SOURCE_GROUP SYMBOLIC(MCAST_JOIN_SOURCE_GROUP) -#define MCAST_LEAVE_GROUP SYMBOLIC(MCAST_LEAVE_GROUP) -#define MCAST_LEAVE_SOURCE_GROUP SYMBOLIC(MCAST_LEAVE_SOURCE_GROUP) -#define MCAST_MSFILTER SYMBOLIC(MCAST_MSFILTER) -#define MCAST_UNBLOCK_SOURCE SYMBOLIC(MCAST_UNBLOCK_SOURCE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MCAST_BLOCK_SOURCE; -extern const long MCAST_EXCLUDE; -extern const long MCAST_INCLUDE; -extern const long MCAST_JOIN_GROUP; -extern const long MCAST_JOIN_SOURCE_GROUP; -extern const long MCAST_LEAVE_GROUP; -extern const long MCAST_LEAVE_SOURCE_GROUP; -extern const long MCAST_MSFILTER; -extern const long MCAST_UNBLOCK_SOURCE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/mfd.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MFD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MFD_CLOEXEC; -extern const long MFD_ALLOW_SEALING; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define MFD_CLOEXEC SYMBOLIC(MFD_CLOEXEC) -#define MFD_ALLOW_SEALING SYMBOLIC(MFD_ALLOW_SEALING) - - - -/*!BEGIN libc/sysv/consts/mlock.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MLOCK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MCL_CURRENT; -extern const long MCL_FUTURE; -extern const long MCL_ONFAULT; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define MCL_CURRENT LITERALLY(1) -#define MCL_FUTURE LITERALLY(2) -#define MCL_ONFAULT SYMBOLIC(MCL_ONFAULT) - - - -/*!BEGIN libc/sysv/consts/mnt.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MNT_H_ - -#define MNT_DETACH SYMBOLIC(MNT_DETACH) -#define MNT_EXPIRE SYMBOLIC(MNT_EXPIRE) -#define MNT_FORCE SYMBOLIC(MNT_FORCE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MNT_DETACH; -extern const long MNT_EXPIRE; -extern const long MNT_FORCE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/modem.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MODEM_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long TIOCMGET; -extern const long TIOCMSET; -extern const long TIOCMBIC; -extern const long TIOCMBIS; - -extern const long TIOCM_CAR; -extern const long TIOCM_CD; -extern const long TIOCM_CTS; -extern const long TIOCM_DSR; -extern const long TIOCM_DTR; -extern const long TIOCM_LE; -extern const long TIOCM_RI; -extern const long TIOCM_RNG; -extern const long TIOCM_RTS; -extern const long TIOCM_SR; -extern const long TIOCM_ST; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define TIOCMGET SYMBOLIC(TIOCMGET) -#define TIOCMSET SYMBOLIC(TIOCMSET) -#define TIOCMBIC SYMBOLIC(TIOCMBIC) -#define TIOCMBIS SYMBOLIC(TIOCMBIS) - -#define TIOCM_LE LITERALLY(0x01) -#define TIOCM_DTR LITERALLY(0x02) -#define TIOCM_RTS LITERALLY(0x04) -#define TIOCM_ST LITERALLY(0x08) -#define TIOCM_SR LITERALLY(0x10) -#define TIOCM_CTS LITERALLY(0x20) -#define TIOCM_CAR LITERALLY(0x40) -#define TIOCM_CD LITERALLY(0x40) -#define TIOCM_RI LITERALLY(0x80) -#define TIOCM_RNG LITERALLY(0x80) -#define TIOCM_DSR LITERALLY(0x0100) - - - -/*!BEGIN libc/sysv/consts/mount.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MOUNT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MS_ACTIVE; -extern const long MS_BIND; -extern const long MS_DIRSYNC; -extern const long MS_I_VERSION; -extern const long MS_KERNMOUNT; -extern const long MS_LAZYTIME; -extern const long MS_MANDLOCK; -extern const long MS_MGC_MSK; -extern const long MS_MGC_VAL; -extern const long MS_MOVE; -extern const long MS_NOATIME; -extern const long MS_NODEV; -extern const long MS_NODIRATIME; -extern const long MS_NOEXEC; -extern const long MS_NOSUID; -extern const long MS_NOUSER; -extern const long MS_POSIXACL; -extern const long MS_PRIVATE; -extern const long MS_RDONLY; -extern const long MS_REC; -extern const long MS_RELATIME; -extern const long MS_REMOUNT; -extern const long MS_RMT_MASK; -extern const long MS_SHARED; -extern const long MS_SILENT; -extern const long MS_SLAVE; -extern const long MS_STRICTATIME; -extern const long MS_SYNCHRONOUS; -extern const long MS_UNBINDABLE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define MS_ACTIVE SYMBOLIC(MS_ACTIVE) -#define MS_BIND SYMBOLIC(MS_BIND) -#define MS_DIRSYNC SYMBOLIC(MS_DIRSYNC) -#define MS_I_VERSION SYMBOLIC(MS_I_VERSION) -#define MS_KERNMOUNT SYMBOLIC(MS_KERNMOUNT) -#define MS_LAZYTIME SYMBOLIC(MS_LAZYTIME) -#define MS_MANDLOCK SYMBOLIC(MS_MANDLOCK) -#define MS_MGC_MSK SYMBOLIC(MS_MGC_MSK) -#define MS_MGC_VAL SYMBOLIC(MS_MGC_VAL) -#define MS_MOVE SYMBOLIC(MS_MOVE) -#define MS_NOATIME SYMBOLIC(MS_NOATIME) -#define MS_NODEV SYMBOLIC(MS_NODEV) -#define MS_NODIRATIME SYMBOLIC(MS_NODIRATIME) -#define MS_NOEXEC SYMBOLIC(MS_NOEXEC) -#define MS_NOSUID SYMBOLIC(MS_NOSUID) -#define MS_NOUSER SYMBOLIC(MS_NOUSER) -#define MS_POSIXACL SYMBOLIC(MS_POSIXACL) -#define MS_PRIVATE SYMBOLIC(MS_PRIVATE) -#define MS_RDONLY SYMBOLIC(MS_RDONLY) -#define MS_REC SYMBOLIC(MS_REC) -#define MS_RELATIME SYMBOLIC(MS_RELATIME) -#define MS_REMOUNT SYMBOLIC(MS_REMOUNT) -#define MS_RMT_MASK SYMBOLIC(MS_RMT_MASK) -#define MS_SHARED SYMBOLIC(MS_SHARED) -#define MS_SILENT SYMBOLIC(MS_SILENT) -#define MS_SLAVE SYMBOLIC(MS_SLAVE) -#define MS_STRICTATIME SYMBOLIC(MS_STRICTATIME) -#define MS_SYNCHRONOUS SYMBOLIC(MS_SYNCHRONOUS) -#define MS_UNBINDABLE SYMBOLIC(MS_UNBINDABLE) - - - -/*!BEGIN libc/sysv/consts/mremap.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MREMAP_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MREMAP_FIXED; -extern const long MREMAP_MAYMOVE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define MREMAP_MAYMOVE LITERALLY(1) -#define MREMAP_FIXED LITERALLY(2) - - - -/*!BEGIN libc/sysv/consts/msg.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MSG_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MSG_BATCH; -extern const long MSG_CMSG_CLOEXEC; -extern const long MSG_CONFIRM; -extern const long MSG_CTRUNC; -extern const long MSG_DONTROUTE; -extern const long MSG_DONTWAIT; -extern const long MSG_EOR; -extern const long MSG_ERRQUEUE; -extern const long MSG_EXCEPT; -extern const long MSG_FASTOPEN; -extern const long MSG_FIN; -extern const long MSG_INFO; -extern const long MSG_MORE; -extern const long MSG_NOERROR; -extern const long MSG_NOSIGNAL; -extern const long MSG_OOB; -extern const long MSG_PARITY_ERROR; -extern const long MSG_PEEK; -extern const long MSG_PROXY; -extern const long MSG_RST; -extern const long MSG_STAT; -extern const long MSG_SYN; -extern const long MSG_TRUNC; -extern const long MSG_WAITALL; -extern const long MSG_WAITFORONE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define MSG_BATCH SYMBOLIC(MSG_BATCH) -#define MSG_CMSG_CLOEXEC SYMBOLIC(MSG_CMSG_CLOEXEC) -#define MSG_CONFIRM SYMBOLIC(MSG_CONFIRM) -#define MSG_CTRUNC SYMBOLIC(MSG_CTRUNC) -#define MSG_DONTROUTE LITERALLY(4) -#define MSG_DONTWAIT SYMBOLIC(MSG_DONTWAIT) -#define MSG_EOR SYMBOLIC(MSG_EOR) -#define MSG_ERRQUEUE SYMBOLIC(MSG_ERRQUEUE) -#define MSG_EXCEPT SYMBOLIC(MSG_EXCEPT) -#define MSG_FASTOPEN SYMBOLIC(MSG_FASTOPEN) -#define MSG_FIN SYMBOLIC(MSG_FIN) -#define MSG_INFO SYMBOLIC(MSG_INFO) -#define MSG_MORE SYMBOLIC(MSG_MORE) -#define MSG_NOERROR SYMBOLIC(MSG_NOERROR) -#define MSG_NOSIGNAL SYMBOLIC(MSG_NOSIGNAL) -#define MSG_OOB LITERALLY(1) -#define MSG_PARITY_ERROR SYMBOLIC(MSG_PARITY_ERROR) -#define MSG_PEEK LITERALLY(2) -#define MSG_PROXY SYMBOLIC(MSG_PROXY) -#define MSG_RST SYMBOLIC(MSG_RST) -#define MSG_STAT SYMBOLIC(MSG_STAT) -#define MSG_SYN SYMBOLIC(MSG_SYN) -#define MSG_TRUNC SYMBOLIC(MSG_TRUNC) -#define MSG_WAITALL SYMBOLIC(MSG_WAITALL) -#define MSG_WAITFORONE SYMBOLIC(MSG_WAITFORONE) - - - -/*!BEGIN libc/sysv/consts/msync.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_MSYNC_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long MS_SYNC; -extern const long MS_ASYNC; -extern const long MS_INVALIDATE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define MS_SYNC SYMBOLIC(MS_SYNC) -#define MS_ASYNC LITERALLY(1) -#define MS_INVALIDATE SYMBOLIC(MS_INVALIDATE) - - - -/*!BEGIN libc/sysv/consts/n.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_N_H_ - -#define N_6PACK SYMBOLIC(N_6PACK) -#define N_AX25 SYMBOLIC(N_AX25) -#define N_HCI SYMBOLIC(N_HCI) -#define N_HDLC SYMBOLIC(N_HDLC) -#define N_IRDA SYMBOLIC(N_IRDA) -#define N_MASC SYMBOLIC(N_MASC) -#define N_MOUSE SYMBOLIC(N_MOUSE) -#define N_PPP SYMBOLIC(N_PPP) -#define N_PROFIBUS_FDL SYMBOLIC(N_PROFIBUS_FDL) -#define N_R3964 SYMBOLIC(N_R3964) -#define N_SLIP SYMBOLIC(N_SLIP) -#define N_SMSBLOCK SYMBOLIC(N_SMSBLOCK) -#define N_STRIP SYMBOLIC(N_STRIP) -#define N_SYNC_PPP SYMBOLIC(N_SYNC_PPP) -#define N_TTY SYMBOLIC(N_TTY) -#define N_X25 SYMBOLIC(N_X25) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long N_6PACK; -extern const long N_AX25; -extern const long N_HCI; -extern const long N_HDLC; -extern const long N_IRDA; -extern const long N_MASC; -extern const long N_MOUSE; -extern const long N_PPP; -extern const long N_PROFIBUS_FDL; -extern const long N_R3964; -extern const long N_SLIP; -extern const long N_SMSBLOCK; -extern const long N_STRIP; -extern const long N_SYNC_PPP; -extern const long N_TTY; -extern const long N_X25; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/nd.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ND_H_ - -#define ND_NA_FLAG_OVERRIDE SYMBOLIC(ND_NA_FLAG_OVERRIDE) -#define ND_NA_FLAG_ROUTER SYMBOLIC(ND_NA_FLAG_ROUTER) -#define ND_NA_FLAG_SOLICITED SYMBOLIC(ND_NA_FLAG_SOLICITED) -#define ND_NEIGHBOR_ADVERT SYMBOLIC(ND_NEIGHBOR_ADVERT) -#define ND_NEIGHBOR_SOLICIT SYMBOLIC(ND_NEIGHBOR_SOLICIT) -#define ND_RA_FLAG_HOME_AGENT SYMBOLIC(ND_RA_FLAG_HOME_AGENT) -#define ND_RA_FLAG_MANAGED SYMBOLIC(ND_RA_FLAG_MANAGED) -#define ND_RA_FLAG_OTHER SYMBOLIC(ND_RA_FLAG_OTHER) -#define ND_REDIRECT SYMBOLIC(ND_REDIRECT) -#define ND_ROUTER_ADVERT SYMBOLIC(ND_ROUTER_ADVERT) -#define ND_ROUTER_SOLICIT SYMBOLIC(ND_ROUTER_SOLICIT) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long ND_NA_FLAG_OVERRIDE; -extern const long ND_NA_FLAG_ROUTER; -extern const long ND_NA_FLAG_SOLICITED; -extern const long ND_NEIGHBOR_ADVERT; -extern const long ND_NEIGHBOR_SOLICIT; -extern const long ND_RA_FLAG_HOME_AGENT; -extern const long ND_RA_FLAG_MANAGED; -extern const long ND_RA_FLAG_OTHER; -extern const long ND_REDIRECT; -extern const long ND_ROUTER_ADVERT; -extern const long ND_ROUTER_SOLICIT; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/ok.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_OK_H_ - -#define F_OK SYMBOLIC(F_OK) -#define R_OK SYMBOLIC(R_OK) -#define W_OK SYMBOLIC(W_OK) -#define X_OK SYMBOLIC(X_OK) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long F_OK; -extern const long R_OK; -extern const long W_OK; -extern const long X_OK; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/personality.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PERSONALITY_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long ADDR_COMPAT_LAYOUT; -extern const long READ_IMPLIES_EXEC; -extern const long ADDR_LIMIT_3GB; -extern const long FDPIC_FUNCPTRS; -extern const long STICKY_TIMEOUTS; -extern const long MMAP_PAGE_ZERO; -extern const long ADDR_LIMIT_32BIT; -extern const long WHOLE_SECONDS; -extern const long ADDR_NO_RANDOMIZE; -extern const long SHORT_INODE; -extern const long UNAME26; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define ADDR_COMPAT_LAYOUT SYMBOLIC(ADDR_COMPAT_LAYOUT) -#define READ_IMPLIES_EXEC SYMBOLIC(READ_IMPLIES_EXEC) -#define ADDR_LIMIT_3GB SYMBOLIC(ADDR_LIMIT_3GB) -#define FDPIC_FUNCPTRS SYMBOLIC(FDPIC_FUNCPTRS) -#define STICKY_TIMEOUTS SYMBOLIC(STICKY_TIMEOUTS) -#define MMAP_PAGE_ZERO SYMBOLIC(MMAP_PAGE_ZERO) -#define ADDR_LIMIT_32BIT SYMBOLIC(ADDR_LIMIT_32BIT) -#define WHOLE_SECONDS SYMBOLIC(WHOLE_SECONDS) -#define ADDR_NO_RANDOMIZE SYMBOLIC(ADDR_NO_RANDOMIZE) -#define SHORT_INODE SYMBOLIC(SHORT_INODE) -#define UNAME26 SYMBOLIC(UNAME26) - - - -/*!BEGIN libc/sysv/consts/pf.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PF_H_ - -#define PF_ALG SYMBOLIC(PF_ALG) -#define PF_APPLETALK SYMBOLIC(PF_APPLETALK) -#define PF_ASH SYMBOLIC(PF_ASH) -#define PF_ATMPVC SYMBOLIC(PF_ATMPVC) -#define PF_ATMSVC SYMBOLIC(PF_ATMSVC) -#define PF_AX25 SYMBOLIC(PF_AX25) -#define PF_BLUETOOTH SYMBOLIC(PF_BLUETOOTH) -#define PF_BRIDGE SYMBOLIC(PF_BRIDGE) -#define PF_CAIF SYMBOLIC(PF_CAIF) -#define PF_CAN SYMBOLIC(PF_CAN) -#define PF_ECONET SYMBOLIC(PF_ECONET) -#define PF_FILE SYMBOLIC(PF_FILE) -#define PF_IB SYMBOLIC(PF_IB) -#define PF_IEEE802154 SYMBOLIC(PF_IEEE802154) -#define PF_INET SYMBOLIC(PF_INET) -#define PF_INET6 SYMBOLIC(PF_INET6) -#define PF_IPX SYMBOLIC(PF_IPX) -#define PF_IRDA SYMBOLIC(PF_IRDA) -#define PF_ISDN SYMBOLIC(PF_ISDN) -#define PF_IUCV SYMBOLIC(PF_IUCV) -#define PF_KCM SYMBOLIC(PF_KCM) -#define PF_KEY SYMBOLIC(PF_KEY) -#define PF_LLC SYMBOLIC(PF_LLC) -#define PF_LOCAL SYMBOLIC(PF_LOCAL) -#define PF_MAX SYMBOLIC(PF_MAX) -#define PF_MPLS SYMBOLIC(PF_MPLS) -#define PF_NETBEUI SYMBOLIC(PF_NETBEUI) -#define PF_NETLINK SYMBOLIC(PF_NETLINK) -#define PF_NETROM SYMBOLIC(PF_NETROM) -#define PF_NFC SYMBOLIC(PF_NFC) -#define PF_PACKET SYMBOLIC(PF_PACKET) -#define PF_PHONET SYMBOLIC(PF_PHONET) -#define PF_PPPOX SYMBOLIC(PF_PPPOX) -#define PF_RDS SYMBOLIC(PF_RDS) -#define PF_ROSE SYMBOLIC(PF_ROSE) -#define PF_ROUTE SYMBOLIC(PF_ROUTE) -#define PF_RXRPC SYMBOLIC(PF_RXRPC) -#define PF_SECURITY SYMBOLIC(PF_SECURITY) -#define PF_SNA SYMBOLIC(PF_SNA) -#define PF_TIPC SYMBOLIC(PF_TIPC) -#define PF_UNIX SYMBOLIC(PF_UNIX) -#define PF_UNSPEC SYMBOLIC(PF_UNSPEC) -#define PF_VSOCK SYMBOLIC(PF_VSOCK) -#define PF_WANPIPE SYMBOLIC(PF_WANPIPE) -#define PF_X25 SYMBOLIC(PF_X25) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long PF_ALG; -extern const long PF_APPLETALK; -extern const long PF_ASH; -extern const long PF_ATMPVC; -extern const long PF_ATMSVC; -extern const long PF_AX25; -extern const long PF_BLUETOOTH; -extern const long PF_BRIDGE; -extern const long PF_CAIF; -extern const long PF_CAN; -extern const long PF_ECONET; -extern const long PF_FILE; -extern const long PF_IB; -extern const long PF_IEEE802154; -extern const long PF_INET6; -extern const long PF_INET; -extern const long PF_IPX; -extern const long PF_IRDA; -extern const long PF_ISDN; -extern const long PF_IUCV; -extern const long PF_KCM; -extern const long PF_KEY; -extern const long PF_LLC; -extern const long PF_LOCAL; -extern const long PF_MAX; -extern const long PF_MPLS; -extern const long PF_NETBEUI; -extern const long PF_NETLINK; -extern const long PF_NETROM; -extern const long PF_NFC; -extern const long PF_PACKET; -extern const long PF_PHONET; -extern const long PF_PPPOX; -extern const long PF_RDS; -extern const long PF_ROSE; -extern const long PF_ROUTE; -extern const long PF_RXRPC; -extern const long PF_SECURITY; -extern const long PF_SNA; -extern const long PF_TIPC; -extern const long PF_UNIX; -extern const long PF_UNSPEC; -extern const long PF_VSOCK; -extern const long PF_WANPIPE; -extern const long PF_X25; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/poll.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_POLL_H_ - -#define POLLERR SYMBOLIC(POLLERR) -#define POLLHUP SYMBOLIC(POLLHUP) -#define POLLIN SYMBOLIC(POLLIN) -#define POLLNVAL SYMBOLIC(POLLNVAL) -#define POLLOUT SYMBOLIC(POLLOUT) -#define POLLPRI SYMBOLIC(POLLPRI) -#define POLLRDBAND SYMBOLIC(POLLRDBAND) -#define POLLRDHUP SYMBOLIC(POLLRDHUP) -#define POLLRDNORM SYMBOLIC(POLLRDNORM) -#define POLLWRBAND SYMBOLIC(POLLWRBAND) -#define POLLWRNORM SYMBOLIC(POLLWRNORM) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const int16_t POLLERR; -extern const int16_t POLLHUP; -extern const int16_t POLLIN; -extern const int16_t POLLNVAL; -extern const int16_t POLLOUT; -extern const int16_t POLLPRI; -extern const int16_t POLLRDBAND; -extern const int16_t POLLRDHUP; -extern const int16_t POLLRDNORM; -extern const int16_t POLLWRBAND; -extern const int16_t POLLWRNORM; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/posix.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_POSIX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long POSIX_FADV_DONTNEED; -extern const long POSIX_FADV_NOREUSE; -extern const long POSIX_FADV_NORMAL; -extern const long POSIX_FADV_RANDOM; -extern const long POSIX_FADV_SEQUENTIAL; -extern const long POSIX_FADV_WILLNEED; -extern const long POSIX_MADV_DONTNEED; -extern const long POSIX_MADV_NORMAL; -extern const long POSIX_MADV_RANDOM; -extern const long POSIX_MADV_SEQUENTIAL; -extern const long POSIX_MADV_WILLNEED; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define POSIX_FADV_DONTNEED SYMBOLIC(POSIX_FADV_DONTNEED) -#define POSIX_FADV_NOREUSE SYMBOLIC(POSIX_FADV_NOREUSE) -#define POSIX_FADV_NORMAL SYMBOLIC(POSIX_FADV_NORMAL) -#define POSIX_FADV_RANDOM SYMBOLIC(POSIX_FADV_RANDOM) -#define POSIX_FADV_SEQUENTIAL SYMBOLIC(POSIX_FADV_SEQUENTIAL) -#define POSIX_FADV_WILLNEED SYMBOLIC(POSIX_FADV_WILLNEED) -#define POSIX_MADV_DONTNEED SYMBOLIC(POSIX_MADV_DONTNEED) -#define POSIX_MADV_NORMAL SYMBOLIC(POSIX_MADV_NORMAL) -#define POSIX_MADV_RANDOM SYMBOLIC(POSIX_MADV_RANDOM) -#define POSIX_MADV_SEQUENTIAL SYMBOLIC(POSIX_MADV_SEQUENTIAL) -#define POSIX_MADV_WILLNEED SYMBOLIC(POSIX_MADV_WILLNEED) - - - -/*!BEGIN libc/sysv/consts/pr.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PR_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long PR_CAPBSET_DROP; -extern const long PR_CAPBSET_READ; -extern const long PR_CAP_AMBIENT; -extern const long PR_CAP_AMBIENT_CLEAR_ALL; -extern const long PR_CAP_AMBIENT_IS_SET; -extern const long PR_CAP_AMBIENT_LOWER; -extern const long PR_CAP_AMBIENT_RAISE; -extern const long PR_ENDIAN_BIG; -extern const long PR_ENDIAN_LITTLE; -extern const long PR_ENDIAN_PPC_LITTLE; -extern const long PR_FPEMU_NOPRINT; -extern const long PR_FPEMU_SIGFPE; -extern const long PR_FP_EXC_ASYNC; -extern const long PR_FP_EXC_DISABLED; -extern const long PR_FP_EXC_DIV; -extern const long PR_FP_EXC_INV; -extern const long PR_FP_EXC_NONRECOV; -extern const long PR_FP_EXC_OVF; -extern const long PR_FP_EXC_PRECISE; -extern const long PR_FP_EXC_RES; -extern const long PR_FP_EXC_SW_ENABLE; -extern const long PR_FP_EXC_UND; -extern const long PR_FP_MODE_FR; -extern const long PR_FP_MODE_FRE; -extern const long PR_GET_CHILD_SUBREAPER; -extern const long PR_GET_DUMPABLE; -extern const long PR_GET_ENDIAN; -extern const long PR_GET_FPEMU; -extern const long PR_GET_FPEXC; -extern const long PR_GET_FP_MODE; -extern const long PR_GET_KEEPCAPS; -extern const long PR_GET_NAME; -extern const long PR_GET_NO_NEW_PRIVS; -extern const long PR_GET_PDEATHSIG; -extern const long PR_GET_SECCOMP; -extern const long PR_GET_SECUREBITS; -extern const long PR_GET_SPECULATION_CTRL; -extern const long PR_GET_THP_DISABLE; -extern const long PR_GET_TID_ADDRESS; -extern const long PR_GET_TIMERSLACK; -extern const long PR_GET_TIMING; -extern const long PR_GET_TSC; -extern const long PR_GET_UNALIGN; -extern const long PR_MCE_KILL; -extern const long PR_MCE_KILL_CLEAR; -extern const long PR_MCE_KILL_DEFAULT; -extern const long PR_MCE_KILL_EARLY; -extern const long PR_MCE_KILL_GET; -extern const long PR_MCE_KILL_LATE; -extern const long PR_MCE_KILL_SET; -extern const long PR_MPX_DISABLE_MANAGEMENT; -extern const long PR_MPX_ENABLE_MANAGEMENT; -extern const long PR_SET_CHILD_SUBREAPER; -extern const long PR_SET_DUMPABLE; -extern const long PR_SET_ENDIAN; -extern const long PR_SET_FPEMU; -extern const long PR_SET_FPEXC; -extern const long PR_SET_FP_MODE; -extern const long PR_SET_KEEPCAPS; -extern const long PR_SET_MM; -extern const long PR_SET_MM_ARG_END; -extern const long PR_SET_MM_ARG_START; -extern const long PR_SET_MM_AUXV; -extern const long PR_SET_MM_BRK; -extern const long PR_SET_MM_END_CODE; -extern const long PR_SET_MM_END_DATA; -extern const long PR_SET_MM_ENV_END; -extern const long PR_SET_MM_ENV_START; -extern const long PR_SET_MM_EXE_FILE; -extern const long PR_SET_MM_MAP; -extern const long PR_SET_MM_MAP_SIZE; -extern const long PR_SET_MM_START_BRK; -extern const long PR_SET_MM_START_CODE; -extern const long PR_SET_MM_START_DATA; -extern const long PR_SET_MM_START_STACK; -extern const long PR_SET_NAME; -extern const long PR_SET_NO_NEW_PRIVS; -extern const long PR_SET_PDEATHSIG; -extern const long PR_SET_PTRACER; -extern const long PR_SET_PTRACER_ANY; -extern const long PR_SET_SECCOMP; -extern const long PR_SET_SECUREBITS; -extern const long PR_SET_SPECULATION_CTRL; -extern const long PR_SET_THP_DISABLE; -extern const long PR_SET_TIMERSLACK; -extern const long PR_SET_TIMING; -extern const long PR_SET_TSC; -extern const long PR_SET_UNALIGN; -extern const long PR_SPEC_DISABLE; -extern const long PR_SPEC_ENABLE; -extern const long PR_SPEC_FORCE_DISABLE; -extern const long PR_SPEC_NOT_AFFECTED; -extern const long PR_SPEC_PRCTL; -extern const long PR_SPEC_STORE_BYPASS; -extern const long PR_TASK_PERF_EVENTS_DISABLE; -extern const long PR_TASK_PERF_EVENTS_ENABLE; -extern const long PR_TIMING_STATISTICAL; -extern const long PR_TIMING_TIMESTAMP; -extern const long PR_TSC_ENABLE; -extern const long PR_TSC_SIGSEGV; -extern const long PR_UNALIGN_NOPRINT; -extern const long PR_UNALIGN_SIGBUS; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define PR_CAPBSET_DROP SYMBOLIC(PR_CAPBSET_DROP) -#define PR_CAPBSET_READ SYMBOLIC(PR_CAPBSET_READ) -#define PR_CAP_AMBIENT SYMBOLIC(PR_CAP_AMBIENT) -#define PR_CAP_AMBIENT_CLEAR_ALL SYMBOLIC(PR_CAP_AMBIENT_CLEAR_ALL) -#define PR_CAP_AMBIENT_IS_SET SYMBOLIC(PR_CAP_AMBIENT_IS_SET) -#define PR_CAP_AMBIENT_LOWER SYMBOLIC(PR_CAP_AMBIENT_LOWER) -#define PR_CAP_AMBIENT_RAISE SYMBOLIC(PR_CAP_AMBIENT_RAISE) -#define PR_ENDIAN_BIG SYMBOLIC(PR_ENDIAN_BIG) -#define PR_ENDIAN_LITTLE SYMBOLIC(PR_ENDIAN_LITTLE) -#define PR_ENDIAN_PPC_LITTLE SYMBOLIC(PR_ENDIAN_PPC_LITTLE) -#define PR_FPEMU_NOPRINT SYMBOLIC(PR_FPEMU_NOPRINT) -#define PR_FPEMU_SIGFPE SYMBOLIC(PR_FPEMU_SIGFPE) -#define PR_FP_EXC_ASYNC SYMBOLIC(PR_FP_EXC_ASYNC) -#define PR_FP_EXC_DISABLED SYMBOLIC(PR_FP_EXC_DISABLED) -#define PR_FP_EXC_DIV SYMBOLIC(PR_FP_EXC_DIV) -#define PR_FP_EXC_INV SYMBOLIC(PR_FP_EXC_INV) -#define PR_FP_EXC_NONRECOV SYMBOLIC(PR_FP_EXC_NONRECOV) -#define PR_FP_EXC_OVF SYMBOLIC(PR_FP_EXC_OVF) -#define PR_FP_EXC_PRECISE SYMBOLIC(PR_FP_EXC_PRECISE) -#define PR_FP_EXC_RES SYMBOLIC(PR_FP_EXC_RES) -#define PR_FP_EXC_SW_ENABLE SYMBOLIC(PR_FP_EXC_SW_ENABLE) -#define PR_FP_EXC_UND SYMBOLIC(PR_FP_EXC_UND) -#define PR_FP_MODE_FR SYMBOLIC(PR_FP_MODE_FR) -#define PR_FP_MODE_FRE SYMBOLIC(PR_FP_MODE_FRE) -#define PR_GET_CHILD_SUBREAPER SYMBOLIC(PR_GET_CHILD_SUBREAPER) -#define PR_GET_DUMPABLE SYMBOLIC(PR_GET_DUMPABLE) -#define PR_GET_ENDIAN SYMBOLIC(PR_GET_ENDIAN) -#define PR_GET_FPEMU SYMBOLIC(PR_GET_FPEMU) -#define PR_GET_FPEXC SYMBOLIC(PR_GET_FPEXC) -#define PR_GET_FP_MODE SYMBOLIC(PR_GET_FP_MODE) -#define PR_GET_KEEPCAPS SYMBOLIC(PR_GET_KEEPCAPS) -#define PR_GET_NAME SYMBOLIC(PR_GET_NAME) -#define PR_GET_NO_NEW_PRIVS SYMBOLIC(PR_GET_NO_NEW_PRIVS) -#define PR_GET_PDEATHSIG SYMBOLIC(PR_GET_PDEATHSIG) -#define PR_GET_SECCOMP SYMBOLIC(PR_GET_SECCOMP) -#define PR_GET_SECUREBITS SYMBOLIC(PR_GET_SECUREBITS) -#define PR_GET_SPECULATION_CTRL SYMBOLIC(PR_GET_SPECULATION_CTRL) -#define PR_GET_THP_DISABLE SYMBOLIC(PR_GET_THP_DISABLE) -#define PR_GET_TID_ADDRESS SYMBOLIC(PR_GET_TID_ADDRESS) -#define PR_GET_TIMERSLACK SYMBOLIC(PR_GET_TIMERSLACK) -#define PR_GET_TIMING SYMBOLIC(PR_GET_TIMING) -#define PR_GET_TSC SYMBOLIC(PR_GET_TSC) -#define PR_GET_UNALIGN SYMBOLIC(PR_GET_UNALIGN) -#define PR_MCE_KILL SYMBOLIC(PR_MCE_KILL) -#define PR_MCE_KILL_CLEAR SYMBOLIC(PR_MCE_KILL_CLEAR) -#define PR_MCE_KILL_DEFAULT SYMBOLIC(PR_MCE_KILL_DEFAULT) -#define PR_MCE_KILL_EARLY SYMBOLIC(PR_MCE_KILL_EARLY) -#define PR_MCE_KILL_GET SYMBOLIC(PR_MCE_KILL_GET) -#define PR_MCE_KILL_LATE SYMBOLIC(PR_MCE_KILL_LATE) -#define PR_MCE_KILL_SET SYMBOLIC(PR_MCE_KILL_SET) -#define PR_MPX_DISABLE_MANAGEMENT SYMBOLIC(PR_MPX_DISABLE_MANAGEMENT) -#define PR_MPX_ENABLE_MANAGEMENT SYMBOLIC(PR_MPX_ENABLE_MANAGEMENT) -#define PR_SET_CHILD_SUBREAPER SYMBOLIC(PR_SET_CHILD_SUBREAPER) -#define PR_SET_DUMPABLE SYMBOLIC(PR_SET_DUMPABLE) -#define PR_SET_ENDIAN SYMBOLIC(PR_SET_ENDIAN) -#define PR_SET_FPEMU SYMBOLIC(PR_SET_FPEMU) -#define PR_SET_FPEXC SYMBOLIC(PR_SET_FPEXC) -#define PR_SET_FP_MODE SYMBOLIC(PR_SET_FP_MODE) -#define PR_SET_KEEPCAPS SYMBOLIC(PR_SET_KEEPCAPS) -#define PR_SET_MM SYMBOLIC(PR_SET_MM) -#define PR_SET_MM_ARG_END SYMBOLIC(PR_SET_MM_ARG_END) -#define PR_SET_MM_ARG_START SYMBOLIC(PR_SET_MM_ARG_START) -#define PR_SET_MM_AUXV SYMBOLIC(PR_SET_MM_AUXV) -#define PR_SET_MM_BRK SYMBOLIC(PR_SET_MM_BRK) -#define PR_SET_MM_END_CODE SYMBOLIC(PR_SET_MM_END_CODE) -#define PR_SET_MM_END_DATA SYMBOLIC(PR_SET_MM_END_DATA) -#define PR_SET_MM_ENV_END SYMBOLIC(PR_SET_MM_ENV_END) -#define PR_SET_MM_ENV_START SYMBOLIC(PR_SET_MM_ENV_START) -#define PR_SET_MM_EXE_FILE SYMBOLIC(PR_SET_MM_EXE_FILE) -#define PR_SET_MM_MAP SYMBOLIC(PR_SET_MM_MAP) -#define PR_SET_MM_MAP_SIZE SYMBOLIC(PR_SET_MM_MAP_SIZE) -#define PR_SET_MM_START_BRK SYMBOLIC(PR_SET_MM_START_BRK) -#define PR_SET_MM_START_CODE SYMBOLIC(PR_SET_MM_START_CODE) -#define PR_SET_MM_START_DATA SYMBOLIC(PR_SET_MM_START_DATA) -#define PR_SET_MM_START_STACK SYMBOLIC(PR_SET_MM_START_STACK) -#define PR_SET_NAME SYMBOLIC(PR_SET_NAME) -#define PR_SET_NO_NEW_PRIVS SYMBOLIC(PR_SET_NO_NEW_PRIVS) -#define PR_SET_PDEATHSIG SYMBOLIC(PR_SET_PDEATHSIG) -#define PR_SET_PTRACER SYMBOLIC(PR_SET_PTRACER) -#define PR_SET_PTRACER_ANY SYMBOLIC(PR_SET_PTRACER_ANY) -#define PR_SET_SECCOMP SYMBOLIC(PR_SET_SECCOMP) -#define PR_SET_SECUREBITS SYMBOLIC(PR_SET_SECUREBITS) -#define PR_SET_SPECULATION_CTRL SYMBOLIC(PR_SET_SPECULATION_CTRL) -#define PR_SET_THP_DISABLE SYMBOLIC(PR_SET_THP_DISABLE) -#define PR_SET_TIMERSLACK SYMBOLIC(PR_SET_TIMERSLACK) -#define PR_SET_TIMING SYMBOLIC(PR_SET_TIMING) -#define PR_SET_TSC SYMBOLIC(PR_SET_TSC) -#define PR_SET_UNALIGN SYMBOLIC(PR_SET_UNALIGN) -#define PR_SPEC_DISABLE SYMBOLIC(PR_SPEC_DISABLE) -#define PR_SPEC_ENABLE SYMBOLIC(PR_SPEC_ENABLE) -#define PR_SPEC_FORCE_DISABLE SYMBOLIC(PR_SPEC_FORCE_DISABLE) -#define PR_SPEC_NOT_AFFECTED SYMBOLIC(PR_SPEC_NOT_AFFECTED) -#define PR_SPEC_PRCTL SYMBOLIC(PR_SPEC_PRCTL) -#define PR_SPEC_STORE_BYPASS SYMBOLIC(PR_SPEC_STORE_BYPASS) -#define PR_TASK_PERF_EVENTS_DISABLE SYMBOLIC(PR_TASK_PERF_EVENTS_DISABLE) -#define PR_TASK_PERF_EVENTS_ENABLE SYMBOLIC(PR_TASK_PERF_EVENTS_ENABLE) -#define PR_TIMING_STATISTICAL SYMBOLIC(PR_TIMING_STATISTICAL) -#define PR_TIMING_TIMESTAMP SYMBOLIC(PR_TIMING_TIMESTAMP) -#define PR_TSC_ENABLE SYMBOLIC(PR_TSC_ENABLE) -#define PR_TSC_SIGSEGV SYMBOLIC(PR_TSC_SIGSEGV) -#define PR_UNALIGN_NOPRINT SYMBOLIC(PR_UNALIGN_NOPRINT) -#define PR_UNALIGN_SIGBUS SYMBOLIC(PR_UNALIGN_SIGBUS) - - - -/*!BEGIN libc/sysv/consts/prio.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PRIO_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long PRIO_MAX; -extern const long PRIO_MIN; -extern const long PRIO_PGRP; -extern const long PRIO_PROCESS; -extern const long PRIO_USER; -extern const long NZERO; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define PRIO_PROCESS LITERALLY(0) -#define PRIO_PGRP LITERALLY(1) -#define PRIO_USER LITERALLY(2) -#define PRIO_MIN LITERALLY(-20) -#define PRIO_MAX LITERALLY(20) -#define NZERO LITERALLY(20) - - - -/*!BEGIN libc/sysv/consts/prot.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PROT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long PROT_NONE; -extern const long PROT_READ; -extern const long PROT_WRITE; -extern const long PROT_EXEC; -extern const long PROT_GROWSDOWN; -extern const long PROT_GROWSUP; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define PROT_NONE 0 -#define PROT_READ 1 -#define PROT_WRITE 2 -#define PROT_EXEC 4 -#define PROT_GROWSDOWN SYMBOLIC(PROT_GROWSDOWN) -#define PROT_GROWSUP SYMBOLIC(PROT_GROWSUP) - - - -/*!BEGIN libc/sysv/consts/pt.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PT_H_ - - -/*!BEGIN libc/sysv/consts/ptrace.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PTRACE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long PTRACE_TRACEME; -extern const long PTRACE_PEEKTEXT; -extern const long PTRACE_PEEKDATA; -extern const long PTRACE_PEEKUSER; -extern const long PTRACE_POKETEXT; -extern const long PTRACE_POKEDATA; -extern const long PTRACE_POKEUSER; -extern const long PTRACE_CONT; -extern const long PTRACE_KILL; -extern const long PTRACE_SINGLESTEP; -extern const long PTRACE_GETREGS; -extern const long PTRACE_SETREGS; -extern const long PTRACE_GETFPREGS; -extern const long PTRACE_SETFPREGS; -extern const long PTRACE_ATTACH; -extern const long PTRACE_DETACH; -extern const long PTRACE_GETFPXREGS; -extern const long PTRACE_SETFPXREGS; -extern const long PTRACE_SYSCALL; -extern const long PTRACE_GETEVENTMSG; -extern const long PTRACE_GETSIGINFO; -extern const long PTRACE_SETOPTIONS; -extern const long PTRACE_SETSIGINFO; -extern const long PTRACE_GETREGSET; -extern const long PTRACE_GETSIGMASK; -extern const long PTRACE_INTERRUPT; -extern const long PTRACE_LISTEN; -extern const long PTRACE_PEEKSIGINFO; -extern const long PTRACE_SECCOMP_GET_FILTER; -extern const long PTRACE_SEIZE; -extern const long PTRACE_SETREGSET; -extern const long PTRACE_SETSIGMASK; -extern const long PTRACE_O_TRACESYSGOOD; -extern const long PTRACE_O_TRACEFORK; -extern const long PTRACE_O_TRACEVFORK; -extern const long PTRACE_O_TRACECLONE; -extern const long PTRACE_O_TRACEEXEC; -extern const long PTRACE_O_TRACEVFORKDONE; -extern const long PTRACE_O_TRACEEXIT; -extern const long PTRACE_O_MASK; -extern const long PTRACE_EVENT_FORK; -extern const long PTRACE_EVENT_VFORK; -extern const long PTRACE_EVENT_CLONE; -extern const long PTRACE_EVENT_EXEC; -extern const long PTRACE_EVENT_VFORK_DONE; -extern const long PTRACE_EVENT_EXIT; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define PTRACE_TRACEME SYMBOLIC(PTRACE_TRACEME) -#define PTRACE_PEEKTEXT SYMBOLIC(PTRACE_PEEKTEXT) -#define PTRACE_PEEKDATA SYMBOLIC(PTRACE_PEEKDATA) -#define PTRACE_PEEKUSER SYMBOLIC(PTRACE_PEEKUSER) -#define PTRACE_POKETEXT SYMBOLIC(PTRACE_POKETEXT) -#define PTRACE_POKEDATA SYMBOLIC(PTRACE_POKEDATA) -#define PTRACE_POKEUSER SYMBOLIC(PTRACE_POKEUSER) -#define PTRACE_CONT SYMBOLIC(PTRACE_CONT) -#define PTRACE_KILL SYMBOLIC(PTRACE_KILL) -#define PTRACE_SINGLESTEP SYMBOLIC(PTRACE_SINGLESTEP) -#define PTRACE_GETREGS SYMBOLIC(PTRACE_GETREGS) -#define PTRACE_SETREGS SYMBOLIC(PTRACE_SETREGS) -#define PTRACE_GETFPREGS SYMBOLIC(PTRACE_GETFPREGS) -#define PTRACE_SETFPREGS SYMBOLIC(PTRACE_SETFPREGS) -#define PTRACE_ATTACH SYMBOLIC(PTRACE_ATTACH) -#define PTRACE_DETACH SYMBOLIC(PTRACE_DETACH) -#define PTRACE_GETFPXREGS SYMBOLIC(PTRACE_GETFPXREGS) -#define PTRACE_SETFPXREGS SYMBOLIC(PTRACE_SETFPXREGS) -#define PTRACE_SYSCALL SYMBOLIC(PTRACE_SYSCALL) -#define PTRACE_GETEVENTMSG SYMBOLIC(PTRACE_GETEVENTMSG) -#define PTRACE_GETSIGINFO SYMBOLIC(PTRACE_GETSIGINFO) -#define PTRACE_SETOPTIONS SYMBOLIC(PTRACE_SETOPTIONS) -#define PTRACE_SETSIGINFO SYMBOLIC(PTRACE_SETSIGINFO) -#define PTRACE_GETREGSET SYMBOLIC(PTRACE_GETREGSET) -#define PTRACE_GETSIGMASK SYMBOLIC(PTRACE_GETSIGMASK) -#define PTRACE_INTERRUPT SYMBOLIC(PTRACE_INTERRUPT) -#define PTRACE_LISTEN SYMBOLIC(PTRACE_LISTEN) -#define PTRACE_PEEKSIGINFO SYMBOLIC(PTRACE_PEEKSIGINFO) -#define PTRACE_SECCOMP_GET_FILTER SYMBOLIC(PTRACE_SECCOMP_GET_FILTER) -#define PTRACE_SEIZE SYMBOLIC(PTRACE_SEIZE) -#define PTRACE_SETREGSET SYMBOLIC(PTRACE_SETREGSET) -#define PTRACE_SETSIGMASK SYMBOLIC(PTRACE_SETSIGMASK) -#define PTRACE_O_TRACESYSGOOD SYMBOLIC(PTRACE_O_TRACESYSGOOD) -#define PTRACE_O_TRACEFORK SYMBOLIC(PTRACE_O_TRACEFORK) -#define PTRACE_O_TRACEVFORK SYMBOLIC(PTRACE_O_TRACEVFORK) -#define PTRACE_O_TRACECLONE SYMBOLIC(PTRACE_O_TRACECLONE) -#define PTRACE_O_TRACEEXEC SYMBOLIC(PTRACE_O_TRACEEXEC) -#define PTRACE_O_TRACEVFORKDONE SYMBOLIC(PTRACE_O_TRACEVFORKDONE) -#define PTRACE_O_TRACEEXIT SYMBOLIC(PTRACE_O_TRACEEXIT) -#define PTRACE_O_MASK SYMBOLIC(PTRACE_O_MASK) -#define PTRACE_EVENT_FORK SYMBOLIC(PTRACE_EVENT_FORK) -#define PTRACE_EVENT_VFORK SYMBOLIC(PTRACE_EVENT_VFORK) -#define PTRACE_EVENT_CLONE SYMBOLIC(PTRACE_EVENT_CLONE) -#define PTRACE_EVENT_EXEC SYMBOLIC(PTRACE_EVENT_EXEC) -#define PTRACE_EVENT_VFORK_DONE SYMBOLIC(PTRACE_EVENT_VFORK_DONE) -#define PTRACE_EVENT_EXIT SYMBOLIC(PTRACE_EVENT_EXIT) - - -#define PT_ATTACH PTRACE_ATTACH -#define PT_CONTINUE PTRACE_CONT -#define PT_DETACH PTRACE_DETACH -#define PT_GETEVENTMSG PTRACE_GETEVENTMSG -#define PT_GETFPREGS PTRACE_GETFPREGS -#define PT_GETFPXREGS PTRACE_GETFPXREGS -#define PT_GETREGS PTRACE_GETREGS -#define PT_GETSIGINFO PTRACE_GETSIGINFO -#define PT_KILL PTRACE_KILL -#define PT_READ_D PTRACE_PEEKDATA -#define PT_READ_I PTRACE_PEEKTEXT -#define PT_READ_U PTRACE_PEEKUSER -#define PT_SETFPREGS PTRACE_SETFPREGS -#define PT_SETFPXREGS PTRACE_SETFPXREGS -#define PT_SETOPTIONS PTRACE_SETOPTIONS -#define PT_SETREGS PTRACE_SETREGS -#define PT_SETSIGINFO PTRACE_SETSIGINFO -#define PT_STEP PTRACE_SINGLESTEP -#define PT_SYSCALL PTRACE_SYSCALL -#define PT_WRITE_D PTRACE_POKEDATA -#define PT_WRITE_I PTRACE_POKETEXT -#define PT_WRITE_U PTRACE_POKEUSER - - - -/*!BEGIN libc/sysv/consts/pty.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_PTY_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long TIOCPKT; -extern const long TIOCPKT_DATA; -extern const long TIOCPKT_DOSTOP; -extern const long TIOCPKT_FLUSHREAD; -extern const long TIOCPKT_FLUSHWRITE; -extern const long TIOCPKT_IOCTL; -extern const long TIOCPKT_NOSTOP; -extern const long TIOCPKT_START; -extern const long TIOCPKT_STOP; -extern const long TIOCSPTLCK; -extern const long PTMGET; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define TIOCPKT SYMBOLIC(TIOCPKT) -#define TIOCSPTLCK SYMBOLIC(TIOCSPTLCK) -#define PTMGET SYMBOLIC(PTMGET) -#define TIOCPKT_DATA LITERALLY(0x00) -#define TIOCPKT_DOSTOP LITERALLY(0x01) -#define TIOCPKT_FLUSHREAD LITERALLY(0x02) -#define TIOCPKT_FLUSHWRITE LITERALLY(0x04) -#define TIOCPKT_IOCTL LITERALLY(0x08) -#define TIOCPKT_NOSTOP LITERALLY(0x10) -#define TIOCPKT_START LITERALLY(0x20) -#define TIOCPKT_STOP LITERALLY(0x40) - - - -/*!BEGIN libc/sysv/consts/read.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_READ_H_ - -#define READ_10 SYMBOLIC(READ_10) -#define READ_12 SYMBOLIC(READ_12) -#define READ_6 SYMBOLIC(READ_6) -#define READ_BLOCK_LIMITS SYMBOLIC(READ_BLOCK_LIMITS) -#define READ_BUFFER SYMBOLIC(READ_BUFFER) -#define READ_CAPACITY SYMBOLIC(READ_CAPACITY) -#define READ_DEFECT_DATA SYMBOLIC(READ_DEFECT_DATA) -#define READ_ELEMENT_STATUS SYMBOLIC(READ_ELEMENT_STATUS) -#define READ_LONG SYMBOLIC(READ_LONG) -#define READ_POSITION SYMBOLIC(READ_POSITION) -#define READ_REVERSE SYMBOLIC(READ_REVERSE) -#define READ_TOC SYMBOLIC(READ_TOC) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long READ_10; -extern const long READ_12; -extern const long READ_6; -extern const long READ_BLOCK_LIMITS; -extern const long READ_BUFFER; -extern const long READ_CAPACITY; -extern const long READ_DEFECT_DATA; -extern const long READ_ELEMENT_STATUS; -extern const long READ_LONG; -extern const long READ_POSITION; -extern const long READ_REVERSE; -extern const long READ_TOC; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/rlim.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_RLIM_H_ - -#define RLIM_INFINITY SYMBOLIC(RLIM_INFINITY) -#define RLIM_NLIMITS SYMBOLIC(RLIM_NLIMITS) -#define RLIM_SAVED_CUR SYMBOLIC(RLIM_SAVED_CUR) -#define RLIM_SAVED_MAX SYMBOLIC(RLIM_SAVED_MAX) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long RLIM_INFINITY; -extern const long RLIM_NLIMITS; -extern const long RLIM_SAVED_CUR; -extern const long RLIM_SAVED_MAX; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/rlimit.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_RLIMIT_H_ - -#define RLIMIT_AS SYMBOLIC(RLIMIT_AS) -#define RLIMIT_CORE SYMBOLIC(RLIMIT_CORE) -#define RLIMIT_CPU SYMBOLIC(RLIMIT_CPU) -#define RLIMIT_DATA SYMBOLIC(RLIMIT_DATA) -#define RLIMIT_FSIZE SYMBOLIC(RLIMIT_FSIZE) -#define RLIMIT_LOCKS SYMBOLIC(RLIMIT_LOCKS) -#define RLIMIT_MEMLOCK SYMBOLIC(RLIMIT_MEMLOCK) -#define RLIMIT_MSGQUEUE SYMBOLIC(RLIMIT_MSGQUEUE) -#define RLIMIT_NICE SYMBOLIC(RLIMIT_NICE) -#define RLIMIT_NOFILE SYMBOLIC(RLIMIT_NOFILE) -#define RLIMIT_NPROC SYMBOLIC(RLIMIT_NPROC) -#define RLIMIT_RSS SYMBOLIC(RLIMIT_RSS) -#define RLIMIT_RTPRIO SYMBOLIC(RLIMIT_RTPRIO) -#define RLIMIT_SIGPENDING SYMBOLIC(RLIMIT_SIGPENDING) -#define RLIMIT_STACK SYMBOLIC(RLIMIT_STACK) -#define RLIMIT_VMEM SYMBOLIC(RLIMIT_VMEM) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long RLIMIT_AS; -extern const long RLIMIT_CORE; -extern const long RLIMIT_CPU; -extern const long RLIMIT_DATA; -extern const long RLIMIT_FSIZE; -extern const long RLIMIT_LOCKS; -extern const long RLIMIT_MEMLOCK; -extern const long RLIMIT_MSGQUEUE; -extern const long RLIMIT_NICE; -extern const long RLIMIT_NOFILE; -extern const long RLIMIT_NPROC; -extern const long RLIMIT_RSS; -extern const long RLIMIT_RTPRIO; -extern const long RLIMIT_SIGPENDING; -extern const long RLIMIT_STACK; -extern const long RLIMIT_VMEM; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/rusage.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_RUSAGE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long RUSAGE_CHILDREN; -extern const long RUSAGE_SELF; -extern const long RUSAGE_THREAD; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define RUSAGE_SELF LITERALLY(0) -#define RUSAGE_CHILDREN SYMBOLIC(RUSAGE_CHILDREN) -#define RUSAGE_THREAD SYMBOLIC(RUSAGE_THREAD) - - - -/*!BEGIN libc/sysv/consts/sa.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SA_H_ - -#define SA_NOCLDSTOP SYMBOLIC(SA_NOCLDSTOP) -#define SA_NOCLDWAIT SYMBOLIC(SA_NOCLDWAIT) -#define SA_NODEFER SYMBOLIC(SA_NODEFER) -#define SA_NOMASK SYMBOLIC(SA_NOMASK) -#define SA_ONESHOT SYMBOLIC(SA_ONESHOT) -#define SA_ONSTACK SYMBOLIC(SA_ONSTACK) -#define SA_RESETHAND SYMBOLIC(SA_RESETHAND) -#define SA_RESTART SYMBOLIC(SA_RESTART) -#define SA_SIGINFO SYMBOLIC(SA_SIGINFO) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SA_NOCLDSTOP; -extern const long SA_NOCLDWAIT; -extern const long SA_NODEFER; -extern const long SA_NOMASK; -extern const long SA_ONESHOT; -extern const long SA_ONSTACK; -extern const long SA_RESETHAND; -extern const long SA_RESTART; -extern const long SA_SIGINFO; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/sched.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SCHED_H_ - -#define SCHED_BATCH SYMBOLIC(SCHED_BATCH) -#define SCHED_FIFO SYMBOLIC(SCHED_FIFO) -#define SCHED_IDLE SYMBOLIC(SCHED_IDLE) -#define SCHED_OTHER SYMBOLIC(SCHED_OTHER) -#define SCHED_RESET_ON_FORK SYMBOLIC(SCHED_RESET_ON_FORK) -#define SCHED_RR SYMBOLIC(SCHED_RR) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SCHED_BATCH; -extern const long SCHED_FIFO; -extern const long SCHED_IDLE; -extern const long SCHED_OTHER; -extern const long SCHED_RESET_ON_FORK; -extern const long SCHED_RR; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/scsi.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SCSI_H_ - -#define SCSI_IOCTL_BENCHMARK_COMMAND SYMBOLIC(SCSI_IOCTL_BENCHMARK_COMMAND) -#define SCSI_IOCTL_DOORLOCK SYMBOLIC(SCSI_IOCTL_DOORLOCK) -#define SCSI_IOCTL_DOORUNLOCK SYMBOLIC(SCSI_IOCTL_DOORUNLOCK) -#define SCSI_IOCTL_GET_BUS_NUMBER SYMBOLIC(SCSI_IOCTL_GET_BUS_NUMBER) -#define SCSI_IOCTL_GET_IDLUN SYMBOLIC(SCSI_IOCTL_GET_IDLUN) -#define SCSI_IOCTL_PROBE_HOST SYMBOLIC(SCSI_IOCTL_PROBE_HOST) -#define SCSI_IOCTL_SEND_COMMAND SYMBOLIC(SCSI_IOCTL_SEND_COMMAND) -#define SCSI_IOCTL_START_UNIT SYMBOLIC(SCSI_IOCTL_START_UNIT) -#define SCSI_IOCTL_STOP_UNIT SYMBOLIC(SCSI_IOCTL_STOP_UNIT) -#define SCSI_IOCTL_SYNC SYMBOLIC(SCSI_IOCTL_SYNC) -#define SCSI_IOCTL_TAGGED_DISABLE SYMBOLIC(SCSI_IOCTL_TAGGED_DISABLE) -#define SCSI_IOCTL_TAGGED_ENABLE SYMBOLIC(SCSI_IOCTL_TAGGED_ENABLE) -#define SCSI_IOCTL_TEST_UNIT_READY SYMBOLIC(SCSI_IOCTL_TEST_UNIT_READY) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SCSI_IOCTL_BENCHMARK_COMMAND; -extern const long SCSI_IOCTL_DOORLOCK; -extern const long SCSI_IOCTL_DOORUNLOCK; -extern const long SCSI_IOCTL_GET_BUS_NUMBER; -extern const long SCSI_IOCTL_GET_IDLUN; -extern const long SCSI_IOCTL_PROBE_HOST; -extern const long SCSI_IOCTL_SEND_COMMAND; -extern const long SCSI_IOCTL_START_UNIT; -extern const long SCSI_IOCTL_STOP_UNIT; -extern const long SCSI_IOCTL_SYNC; -extern const long SCSI_IOCTL_TAGGED_DISABLE; -extern const long SCSI_IOCTL_TAGGED_ENABLE; -extern const long SCSI_IOCTL_TEST_UNIT_READY; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/sg.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SG_H_ - -#define SG_BIG_BUFF SYMBOLIC(SG_BIG_BUFF) -#define SG_DEFAULT_RETRIES SYMBOLIC(SG_DEFAULT_RETRIES) -#define SG_DEFAULT_TIMEOUT SYMBOLIC(SG_DEFAULT_TIMEOUT) -#define SG_DEF_COMMAND_Q SYMBOLIC(SG_DEF_COMMAND_Q) -#define SG_DEF_FORCE_LOW_DMA SYMBOLIC(SG_DEF_FORCE_LOW_DMA) -#define SG_DEF_FORCE_PACK_ID SYMBOLIC(SG_DEF_FORCE_PACK_ID) -#define SG_DEF_KEEP_ORPHAN SYMBOLIC(SG_DEF_KEEP_ORPHAN) -#define SG_DEF_RESERVED_SIZE SYMBOLIC(SG_DEF_RESERVED_SIZE) -#define SG_DEF_UNDERRUN_FLAG SYMBOLIC(SG_DEF_UNDERRUN_FLAG) -#define SG_DXFER_FROM_DEV SYMBOLIC(SG_DXFER_FROM_DEV) -#define SG_DXFER_NONE SYMBOLIC(SG_DXFER_NONE) -#define SG_DXFER_TO_DEV SYMBOLIC(SG_DXFER_TO_DEV) -#define SG_DXFER_TO_FROM_DEV SYMBOLIC(SG_DXFER_TO_FROM_DEV) -#define SG_EMULATED_HOST SYMBOLIC(SG_EMULATED_HOST) -#define SG_FLAG_DIRECT_IO SYMBOLIC(SG_FLAG_DIRECT_IO) -#define SG_FLAG_LUN_INHIBIT SYMBOLIC(SG_FLAG_LUN_INHIBIT) -#define SG_FLAG_NO_DXFER SYMBOLIC(SG_FLAG_NO_DXFER) -#define SG_GET_COMMAND_Q SYMBOLIC(SG_GET_COMMAND_Q) -#define SG_GET_KEEP_ORPHAN SYMBOLIC(SG_GET_KEEP_ORPHAN) -#define SG_GET_LOW_DMA SYMBOLIC(SG_GET_LOW_DMA) -#define SG_GET_NUM_WAITING SYMBOLIC(SG_GET_NUM_WAITING) -#define SG_GET_PACK_ID SYMBOLIC(SG_GET_PACK_ID) -#define SG_GET_REQUEST_TABLE SYMBOLIC(SG_GET_REQUEST_TABLE) -#define SG_GET_RESERVED_SIZE SYMBOLIC(SG_GET_RESERVED_SIZE) -#define SG_GET_SCSI_ID SYMBOLIC(SG_GET_SCSI_ID) -#define SG_GET_SG_TABLESIZE SYMBOLIC(SG_GET_SG_TABLESIZE) -#define SG_GET_TIMEOUT SYMBOLIC(SG_GET_TIMEOUT) -#define SG_GET_TRANSFORM SYMBOLIC(SG_GET_TRANSFORM) -#define SG_GET_VERSION_NUM SYMBOLIC(SG_GET_VERSION_NUM) -#define SG_INFO_CHECK SYMBOLIC(SG_INFO_CHECK) -#define SG_INFO_DIRECT_IO SYMBOLIC(SG_INFO_DIRECT_IO) -#define SG_INFO_DIRECT_IO_MASK SYMBOLIC(SG_INFO_DIRECT_IO_MASK) -#define SG_INFO_INDIRECT_IO SYMBOLIC(SG_INFO_INDIRECT_IO) -#define SG_INFO_MIXED_IO SYMBOLIC(SG_INFO_MIXED_IO) -#define SG_INFO_OK SYMBOLIC(SG_INFO_OK) -#define SG_INFO_OK_MASK SYMBOLIC(SG_INFO_OK_MASK) -#define SG_IO SYMBOLIC(SG_IO) -#define SG_MAX_QUEUE SYMBOLIC(SG_MAX_QUEUE) -#define SG_MAX_SENSE SYMBOLIC(SG_MAX_SENSE) -#define SG_NEXT_CMD_LEN SYMBOLIC(SG_NEXT_CMD_LEN) -#define SG_SCATTER_SZ SYMBOLIC(SG_SCATTER_SZ) -#define SG_SCSI_RESET SYMBOLIC(SG_SCSI_RESET) -#define SG_SCSI_RESET_BUS SYMBOLIC(SG_SCSI_RESET_BUS) -#define SG_SCSI_RESET_DEVICE SYMBOLIC(SG_SCSI_RESET_DEVICE) -#define SG_SCSI_RESET_HOST SYMBOLIC(SG_SCSI_RESET_HOST) -#define SG_SCSI_RESET_NOTHING SYMBOLIC(SG_SCSI_RESET_NOTHING) -#define SG_SET_COMMAND_Q SYMBOLIC(SG_SET_COMMAND_Q) -#define SG_SET_DEBUG SYMBOLIC(SG_SET_DEBUG) -#define SG_SET_FORCE_LOW_DMA SYMBOLIC(SG_SET_FORCE_LOW_DMA) -#define SG_SET_FORCE_PACK_ID SYMBOLIC(SG_SET_FORCE_PACK_ID) -#define SG_SET_KEEP_ORPHAN SYMBOLIC(SG_SET_KEEP_ORPHAN) -#define SG_SET_RESERVED_SIZE SYMBOLIC(SG_SET_RESERVED_SIZE) -#define SG_SET_TIMEOUT SYMBOLIC(SG_SET_TIMEOUT) -#define SG_SET_TRANSFORM SYMBOLIC(SG_SET_TRANSFORM) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SG_BIG_BUFF; -extern const long SG_DEFAULT_RETRIES; -extern const long SG_DEFAULT_TIMEOUT; -extern const long SG_DEF_COMMAND_Q; -extern const long SG_DEF_FORCE_LOW_DMA; -extern const long SG_DEF_FORCE_PACK_ID; -extern const long SG_DEF_KEEP_ORPHAN; -extern const long SG_DEF_RESERVED_SIZE; -extern const long SG_DEF_UNDERRUN_FLAG; -extern const long SG_DXFER_FROM_DEV; -extern const long SG_DXFER_NONE; -extern const long SG_DXFER_TO_DEV; -extern const long SG_DXFER_TO_FROM_DEV; -extern const long SG_EMULATED_HOST; -extern const long SG_FLAG_DIRECT_IO; -extern const long SG_FLAG_LUN_INHIBIT; -extern const long SG_FLAG_NO_DXFER; -extern const long SG_GET_COMMAND_Q; -extern const long SG_GET_KEEP_ORPHAN; -extern const long SG_GET_LOW_DMA; -extern const long SG_GET_NUM_WAITING; -extern const long SG_GET_PACK_ID; -extern const long SG_GET_REQUEST_TABLE; -extern const long SG_GET_RESERVED_SIZE; -extern const long SG_GET_SCSI_ID; -extern const long SG_GET_SG_TABLESIZE; -extern const long SG_GET_TIMEOUT; -extern const long SG_GET_TRANSFORM; -extern const long SG_GET_VERSION_NUM; -extern const long SG_INFO_CHECK; -extern const long SG_INFO_DIRECT_IO; -extern const long SG_INFO_DIRECT_IO_MASK; -extern const long SG_INFO_INDIRECT_IO; -extern const long SG_INFO_MIXED_IO; -extern const long SG_INFO_OK; -extern const long SG_INFO_OK_MASK; -extern const long SG_IO; -extern const long SG_MAX_QUEUE; -extern const long SG_MAX_SENSE; -extern const long SG_NEXT_CMD_LEN; -extern const long SG_SCATTER_SZ; -extern const long SG_SCSI_RESET; -extern const long SG_SCSI_RESET_BUS; -extern const long SG_SCSI_RESET_DEVICE; -extern const long SG_SCSI_RESET_HOST; -extern const long SG_SCSI_RESET_NOTHING; -extern const long SG_SET_COMMAND_Q; -extern const long SG_SET_DEBUG; -extern const long SG_SET_FORCE_LOW_DMA; -extern const long SG_SET_FORCE_PACK_ID; -extern const long SG_SET_KEEP_ORPHAN; -extern const long SG_SET_RESERVED_SIZE; -extern const long SG_SET_TIMEOUT; -extern const long SG_SET_TRANSFORM; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/shm.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SHM_H_ - -#define SHM_DEST SYMBOLIC(SHM_DEST) -#define SHM_EXEC SYMBOLIC(SHM_EXEC) -#define SHM_HUGETLB SYMBOLIC(SHM_HUGETLB) -#define SHM_INFO SYMBOLIC(SHM_INFO) -#define SHM_LOCK SYMBOLIC(SHM_LOCK) -#define SHM_LOCKED SYMBOLIC(SHM_LOCKED) -#define SHM_NORESERVE SYMBOLIC(SHM_NORESERVE) -#define SHM_R SYMBOLIC(SHM_R) -#define SHM_RDONLY SYMBOLIC(SHM_RDONLY) -#define SHM_REMAP SYMBOLIC(SHM_REMAP) -#define SHM_RND SYMBOLIC(SHM_RND) -#define SHM_STAT SYMBOLIC(SHM_STAT) -#define SHM_UNLOCK SYMBOLIC(SHM_UNLOCK) -#define SHM_W SYMBOLIC(SHM_W) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SHM_DEST; -extern const long SHM_EXEC; -extern const long SHM_HUGETLB; -extern const long SHM_INFO; -extern const long SHM_LOCK; -extern const long SHM_LOCKED; -extern const long SHM_NORESERVE; -extern const long SHM_R; -extern const long SHM_RDONLY; -extern const long SHM_REMAP; -extern const long SHM_RND; -extern const long SHM_STAT; -extern const long SHM_UNLOCK; -extern const long SHM_W; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/shut.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SHUT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SHUT_RD; -extern const long SHUT_RDWR; -extern const long SHUT_WR; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define SHUT_RD LITERALLY(0) -#define SHUT_RDWR LITERALLY(2) -#define SHUT_WR LITERALLY(1) - - - -/*!BEGIN libc/sysv/consts/sicode.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SICODE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SI_USER; -extern const long SI_QUEUE; -extern const long SI_TIMER; -extern const long SI_MESGQ; -extern const long SI_ASYNCIO; -extern const long SI_TKILL; -extern const long SI_ASYNCNL; -extern const long SI_KERNEL; -extern const long SI_NOINFO; -extern const long CLD_EXITED; -extern const long CLD_KILLED; -extern const long CLD_DUMPED; -extern const long CLD_TRAPPED; -extern const long CLD_STOPPED; -extern const long CLD_CONTINUED; -extern const long TRAP_BRKPT; -extern const long TRAP_TRACE; -extern const long SEGV_MAPERR; -extern const long SEGV_ACCERR; -extern const long FPE_INTDIV; -extern const long FPE_INTOVF; -extern const long FPE_FLTDIV; -extern const long FPE_FLTOVF; -extern const long FPE_FLTUND; -extern const long FPE_FLTRES; -extern const long FPE_FLTINV; -extern const long FPE_FLTSUB; -extern const long ILL_ILLOPC; -extern const long ILL_ILLOPN; -extern const long ILL_ILLADR; -extern const long ILL_ILLTRP; -extern const long ILL_PRVOPC; -extern const long ILL_PRVREG; -extern const long ILL_COPROC; -extern const long ILL_BADSTK; -extern const long BUS_ADRALN; -extern const long BUS_ADRERR; -extern const long BUS_OBJERR; -extern const long BUS_MCEERR_AR; -extern const long BUS_MCEERR_AO; -extern const long POLL_IN; -extern const long POLL_OUT; -extern const long POLL_MSG; -extern const long POLL_ERR; -extern const long POLL_PRI; -extern const long POLL_HUP; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define CLD_EXITED LITERALLY(1) -#define CLD_KILLED LITERALLY(2) -#define CLD_DUMPED LITERALLY(3) -#define CLD_TRAPPED LITERALLY(4) -#define CLD_STOPPED LITERALLY(5) -#define CLD_CONTINUED LITERALLY(6) -#define TRAP_BRKPT LITERALLY(1) -#define TRAP_TRACE LITERALLY(2) -#define SEGV_MAPERR LITERALLY(1) -#define SEGV_ACCERR LITERALLY(2) -#define ILL_ILLOPC LITERALLY(1) -#define ILL_PRVREG LITERALLY(6) -#define ILL_COPROC LITERALLY(7) -#define ILL_BADSTK LITERALLY(8) -#define BUS_ADRALN LITERALLY(1) -#define BUS_ADRERR LITERALLY(2) -#define BUS_OBJERR LITERALLY(3) -#define POLL_IN LITERALLY(1) -#define POLL_OUT LITERALLY(2) -#define POLL_MSG LITERALLY(3) -#define POLL_ERR LITERALLY(4) -#define POLL_PRI LITERALLY(5) -#define POLL_HUP LITERALLY(6) - -#define SI_USER SYMBOLIC(SI_USER) -#define SI_QUEUE SYMBOLIC(SI_QUEUE) -#define SI_TIMER SYMBOLIC(SI_TIMER) -#define SI_MESGQ SYMBOLIC(SI_MESGQ) -#define SI_ASYNCIO SYMBOLIC(SI_ASYNCIO) -#define SI_TKILL SYMBOLIC(SI_TKILL) -#define SI_ASYNCNL SYMBOLIC(SI_ASYNCNL) -#define SI_KERNEL SYMBOLIC(SI_KERNEL) -#define SI_NOINFO SYMBOLIC(SI_NOINFO) -#define FPE_INTDIV SYMBOLIC(FPE_INTDIV) -#define FPE_INTOVF SYMBOLIC(FPE_INTOVF) -#define FPE_FLTDIV SYMBOLIC(FPE_FLTDIV) -#define FPE_FLTOVF SYMBOLIC(FPE_FLTOVF) -#define FPE_FLTUND SYMBOLIC(FPE_FLTUND) -#define FPE_FLTRES SYMBOLIC(FPE_FLTRES) -#define FPE_FLTINV SYMBOLIC(FPE_FLTINV) -#define FPE_FLTSUB SYMBOLIC(FPE_FLTSUB) -#define ILL_ILLOPN SYMBOLIC(ILL_ILLOPN) -#define ILL_ILLADR SYMBOLIC(ILL_ILLADR) -#define ILL_ILLTRP SYMBOLIC(ILL_ILLTRP) -#define ILL_PRVOPC SYMBOLIC(ILL_PRVOPC) -#define BUS_MCEERR_AR SYMBOLIC(BUS_MCEERR_AR) -#define BUS_MCEERR_AO SYMBOLIC(BUS_MCEERR_AO) - - - -/*!BEGIN libc/sysv/consts/sio.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SIO_H_ - -#define SIOCADDDLCI SYMBOLIC(SIOCADDDLCI) -#define SIOCADDMULTI SYMBOLIC(SIOCADDMULTI) -#define SIOCADDRT SYMBOLIC(SIOCADDRT) -#define SIOCATMARK SYMBOLIC(SIOCATMARK) -#define SIOCDARP SYMBOLIC(SIOCDARP) -#define SIOCDELDLCI SYMBOLIC(SIOCDELDLCI) -#define SIOCDELMULTI SYMBOLIC(SIOCDELMULTI) -#define SIOCDELRT SYMBOLIC(SIOCDELRT) -#define SIOCDEVPRIVATE SYMBOLIC(SIOCDEVPRIVATE) -#define SIOCDIFADDR SYMBOLIC(SIOCDIFADDR) -#define SIOCDRARP SYMBOLIC(SIOCDRARP) -#define SIOCGARP SYMBOLIC(SIOCGARP) -#define SIOCGIFADDR SYMBOLIC(SIOCGIFADDR) -#define SIOCGIFBR SYMBOLIC(SIOCGIFBR) -#define SIOCGIFBRDADDR SYMBOLIC(SIOCGIFBRDADDR) -#define SIOCGIFCONF SYMBOLIC(SIOCGIFCONF) -#define SIOCGIFCOUNT SYMBOLIC(SIOCGIFCOUNT) -#define SIOCGIFDSTADDR SYMBOLIC(SIOCGIFDSTADDR) -#define SIOCGIFENCAP SYMBOLIC(SIOCGIFENCAP) -#define SIOCGIFFLAGS SYMBOLIC(SIOCGIFFLAGS) -#define SIOCGIFHWADDR SYMBOLIC(SIOCGIFHWADDR) -#define SIOCGIFINDEX SYMBOLIC(SIOCGIFINDEX) -#define SIOCGIFMAP SYMBOLIC(SIOCGIFMAP) -#define SIOCGIFMEM SYMBOLIC(SIOCGIFMEM) -#define SIOCGIFMETRIC SYMBOLIC(SIOCGIFMETRIC) -#define SIOCGIFMTU SYMBOLIC(SIOCGIFMTU) -#define SIOCGIFNAME SYMBOLIC(SIOCGIFNAME) -#define SIOCGIFNETMASK SYMBOLIC(SIOCGIFNETMASK) -#define SIOCGIFPFLAGS SYMBOLIC(SIOCGIFPFLAGS) -#define SIOCGIFSLAVE SYMBOLIC(SIOCGIFSLAVE) -#define SIOCGIFTXQLEN SYMBOLIC(SIOCGIFTXQLEN) -#define SIOCGPGRP SYMBOLIC(SIOCGPGRP) -#define SIOCGRARP SYMBOLIC(SIOCGRARP) -#define SIOCGSTAMP SYMBOLIC(SIOCGSTAMP) -#define SIOCGSTAMPNS SYMBOLIC(SIOCGSTAMPNS) -#define SIOCPROTOPRIVATE SYMBOLIC(SIOCPROTOPRIVATE) -#define SIOCRTMSG SYMBOLIC(SIOCRTMSG) -#define SIOCSARP SYMBOLIC(SIOCSARP) -#define SIOCSIFADDR SYMBOLIC(SIOCSIFADDR) -#define SIOCSIFBR SYMBOLIC(SIOCSIFBR) -#define SIOCSIFBRDADDR SYMBOLIC(SIOCSIFBRDADDR) -#define SIOCSIFDSTADDR SYMBOLIC(SIOCSIFDSTADDR) -#define SIOCSIFENCAP SYMBOLIC(SIOCSIFENCAP) -#define SIOCSIFFLAGS SYMBOLIC(SIOCSIFFLAGS) -#define SIOCSIFHWADDR SYMBOLIC(SIOCSIFHWADDR) -#define SIOCSIFHWBROADCAST SYMBOLIC(SIOCSIFHWBROADCAST) -#define SIOCSIFLINK SYMBOLIC(SIOCSIFLINK) -#define SIOCSIFMAP SYMBOLIC(SIOCSIFMAP) -#define SIOCSIFMEM SYMBOLIC(SIOCSIFMEM) -#define SIOCSIFMETRIC SYMBOLIC(SIOCSIFMETRIC) -#define SIOCSIFMTU SYMBOLIC(SIOCSIFMTU) -#define SIOCSIFNAME SYMBOLIC(SIOCSIFNAME) -#define SIOCSIFNETMASK SYMBOLIC(SIOCSIFNETMASK) -#define SIOCSIFPFLAGS SYMBOLIC(SIOCSIFPFLAGS) -#define SIOCSIFSLAVE SYMBOLIC(SIOCSIFSLAVE) -#define SIOCSIFTXQLEN SYMBOLIC(SIOCSIFTXQLEN) -#define SIOCSPGRP SYMBOLIC(SIOCSPGRP) -#define SIOCSRARP SYMBOLIC(SIOCSRARP) -#define SIOGIFINDEX SYMBOLIC(SIOGIFINDEX) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SIOCADDDLCI; -extern const long SIOCADDMULTI; -extern const long SIOCADDRT; -extern const long SIOCATMARK; -extern const long SIOCDARP; -extern const long SIOCDELDLCI; -extern const long SIOCDELMULTI; -extern const long SIOCDELRT; -extern const long SIOCDEVPRIVATE; -extern const long SIOCDIFADDR; -extern const long SIOCDRARP; -extern const long SIOCGARP; -extern const long SIOCGIFADDR; -extern const long SIOCGIFBR; -extern const long SIOCGIFBRDADDR; -extern const long SIOCGIFCONF; -extern const long SIOCGIFCOUNT; -extern const long SIOCGIFDSTADDR; -extern const long SIOCGIFENCAP; -extern const long SIOCGIFFLAGS; -extern const long SIOCGIFHWADDR; -extern const long SIOCGIFINDEX; -extern const long SIOCGIFMAP; -extern const long SIOCGIFMEM; -extern const long SIOCGIFMETRIC; -extern const long SIOCGIFMTU; -extern const long SIOCGIFNAME; -extern const long SIOCGIFNETMASK; -extern const long SIOCGIFPFLAGS; -extern const long SIOCGIFSLAVE; -extern const long SIOCGIFTXQLEN; -extern const long SIOCGPGRP; -extern const long SIOCGRARP; -extern const long SIOCGSTAMP; -extern const long SIOCGSTAMPNS; -extern const long SIOCPROTOPRIVATE; -extern const long SIOCRTMSG; -extern const long SIOCSARP; -extern const long SIOCSIFADDR; -extern const long SIOCSIFBR; -extern const long SIOCSIFBRDADDR; -extern const long SIOCSIFDSTADDR; -extern const long SIOCSIFENCAP; -extern const long SIOCSIFFLAGS; -extern const long SIOCSIFHWADDR; -extern const long SIOCSIFHWBROADCAST; -extern const long SIOCSIFLINK; -extern const long SIOCSIFMAP; -extern const long SIOCSIFMEM; -extern const long SIOCSIFMETRIC; -extern const long SIOCSIFMTU; -extern const long SIOCSIFNAME; -extern const long SIOCSIFNETMASK; -extern const long SIOCSIFPFLAGS; -extern const long SIOCSIFSLAVE; -extern const long SIOCSIFTXQLEN; -extern const long SIOCSPGRP; -extern const long SIOCSRARP; -extern const long SIOGIFINDEX; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/so.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SO_H_ - -#define SO_ACCEPTCONN SYMBOLIC(SO_ACCEPTCONN) -#define SO_ATTACH_BPF SYMBOLIC(SO_ATTACH_BPF) -#define SO_ATTACH_FILTER SYMBOLIC(SO_ATTACH_FILTER) -#define SO_ATTACH_REUSEPORT_CBPF SYMBOLIC(SO_ATTACH_REUSEPORT_CBPF) -#define SO_ATTACH_REUSEPORT_EBPF SYMBOLIC(SO_ATTACH_REUSEPORT_EBPF) -#define SO_BINDTODEVICE SYMBOLIC(SO_BINDTODEVICE) -#define SO_BPF_EXTENSIONS SYMBOLIC(SO_BPF_EXTENSIONS) -#define SO_BROADCAST SYMBOLIC(SO_BROADCAST) -#define SO_BSDCOMPAT SYMBOLIC(SO_BSDCOMPAT) -#define SO_BUSY_POLL SYMBOLIC(SO_BUSY_POLL) -#define SO_CNX_ADVICE SYMBOLIC(SO_CNX_ADVICE) -#define SO_DEBUG SYMBOLIC(SO_DEBUG) -#define SO_DETACH_BPF SYMBOLIC(SO_DETACH_BPF) -#define SO_DETACH_FILTER SYMBOLIC(SO_DETACH_FILTER) -#define SO_DOMAIN SYMBOLIC(SO_DOMAIN) -#define SO_DONTROUTE SYMBOLIC(SO_DONTROUTE) -#define SO_ERROR SYMBOLIC(SO_ERROR) -#define SO_EXCLUSIVEADDRUSE SYMBOLIC(SO_EXCLUSIVEADDRUSE) -#define SO_GET_FILTER SYMBOLIC(SO_GET_FILTER) -#define SO_INCOMING_CPU SYMBOLIC(SO_INCOMING_CPU) -#define SO_KEEPALIVE SYMBOLIC(SO_KEEPALIVE) -#define SO_LINGER SYMBOLIC(SO_LINGER) -#define SO_LOCK_FILTER SYMBOLIC(SO_LOCK_FILTER) -#define SO_MARK SYMBOLIC(SO_MARK) -#define SO_MAX_PACING_RATE SYMBOLIC(SO_MAX_PACING_RATE) -#define SO_NOFCS SYMBOLIC(SO_NOFCS) -#define SO_NO_CHECK SYMBOLIC(SO_NO_CHECK) -#define SO_OOBINLINE SYMBOLIC(SO_OOBINLINE) -#define SO_PASSCRED SYMBOLIC(SO_PASSCRED) -#define SO_PASSSEC SYMBOLIC(SO_PASSSEC) -#define SO_PEEK_OFF SYMBOLIC(SO_PEEK_OFF) -#define SO_PEERCRED SYMBOLIC(SO_PEERCRED) -#define SO_PEERNAME SYMBOLIC(SO_PEERNAME) -#define SO_PEERSEC SYMBOLIC(SO_PEERSEC) -#define SO_PRIORITY SYMBOLIC(SO_PRIORITY) -#define SO_PROTOCOL SYMBOLIC(SO_PROTOCOL) -#define SO_RCVBUF SYMBOLIC(SO_RCVBUF) -#define SO_RCVBUFFORCE SYMBOLIC(SO_RCVBUFFORCE) -#define SO_RCVLOWAT SYMBOLIC(SO_RCVLOWAT) -#define SO_RCVTIMEO SYMBOLIC(SO_RCVTIMEO) -#define SO_REUSEADDR SYMBOLIC(SO_REUSEADDR) -#define SO_REUSEPORT SYMBOLIC(SO_REUSEPORT) -#define SO_RXQ_OVFL SYMBOLIC(SO_RXQ_OVFL) -#define SO_SECURITY_AUTHENTICATION SYMBOLIC(SO_SECURITY_AUTHENTICATION) -#define SO_SECURITY_ENCRYPTION_NETWORK SYMBOLIC(SO_SECURITY_ENCRYPTION_NETWORK) -#define SO_SECURITY_ENCRYPTION_TRANSPORT SYMBOLIC(SO_SECURITY_ENCRYPTION_TRANSPORT) -#define SO_SELECT_ERR_QUEUE SYMBOLIC(SO_SELECT_ERR_QUEUE) -#define SO_SNDBUF SYMBOLIC(SO_SNDBUF) -#define SO_SNDBUFFORCE SYMBOLIC(SO_SNDBUFFORCE) -#define SO_SNDLOWAT SYMBOLIC(SO_SNDLOWAT) -#define SO_SNDTIMEO SYMBOLIC(SO_SNDTIMEO) -#define SO_TIMESTAMP SYMBOLIC(SO_TIMESTAMP) -#define SO_TIMESTAMPING SYMBOLIC(SO_TIMESTAMPING) -#define SO_TIMESTAMPNS SYMBOLIC(SO_TIMESTAMPNS) -#define SO_TYPE SYMBOLIC(SO_TYPE) -#define SO_WIFI_STATUS SYMBOLIC(SO_WIFI_STATUS) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SO_ACCEPTCONN; -extern const long SO_ATTACH_BPF; -extern const long SO_ATTACH_FILTER; -extern const long SO_ATTACH_REUSEPORT_CBPF; -extern const long SO_ATTACH_REUSEPORT_EBPF; -extern const long SO_BINDTODEVICE; -extern const long SO_BPF_EXTENSIONS; -extern const long SO_BROADCAST; -extern const long SO_BSDCOMPAT; -extern const long SO_BUSY_POLL; -extern const long SO_CNX_ADVICE; -extern const long SO_DEBUG; -extern const long SO_DETACH_BPF; -extern const long SO_DETACH_FILTER; -extern const long SO_DOMAIN; -extern const long SO_DONTROUTE; -extern const long SO_ERROR; -extern const long SO_EXCLUSIVEADDRUSE; -extern const long SO_GET_FILTER; -extern const long SO_INCOMING_CPU; -extern const long SO_KEEPALIVE; -extern const long SO_LINGER; -extern const long SO_LOCK_FILTER; -extern const long SO_MARK; -extern const long SO_MAX_PACING_RATE; -extern const long SO_NOFCS; -extern const long SO_NO_CHECK; -extern const long SO_OOBINLINE; -extern const long SO_PASSCRED; -extern const long SO_PASSSEC; -extern const long SO_PEEK_OFF; -extern const long SO_PEERCRED; -extern const long SO_PEERNAME; -extern const long SO_PEERSEC; -extern const long SO_PRIORITY; -extern const long SO_PROTOCOL; -extern const long SO_RCVBUF; -extern const long SO_RCVBUFFORCE; -extern const long SO_RCVLOWAT; -extern const long SO_RCVTIMEO; -extern const long SO_REUSEADDR; -extern const long SO_REUSEPORT; -extern const long SO_RXQ_OVFL; -extern const long SO_SECURITY_AUTHENTICATION; -extern const long SO_SECURITY_ENCRYPTION_NETWORK; -extern const long SO_SECURITY_ENCRYPTION_TRANSPORT; -extern const long SO_SELECT_ERR_QUEUE; -extern const long SO_SNDBUF; -extern const long SO_SNDBUFFORCE; -extern const long SO_SNDLOWAT; -extern const long SO_SNDTIMEO; -extern const long SO_TIMESTAMP; -extern const long SO_TIMESTAMPING; -extern const long SO_TIMESTAMPNS; -extern const long SO_TYPE; -extern const long SO_WIFI_STATUS; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/sock.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SOCK_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SOCK_CLOEXEC; -extern const long SOCK_DCCP; -extern const long SOCK_DGRAM; -extern const long SOCK_NONBLOCK; -extern const long SOCK_PACKET; -extern const long SOCK_RAW; -extern const long SOCK_RDM; -extern const long SOCK_SEQPACKET; -extern const long SOCK_STREAM; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define SOCK_CLOEXEC SYMBOLIC(SOCK_CLOEXEC) -#define SOCK_DCCP SYMBOLIC(SOCK_DCCP) -#define SOCK_DGRAM LITERALLY(2) -#define SOCK_NONBLOCK SYMBOLIC(SOCK_NONBLOCK) -#define SOCK_PACKET SYMBOLIC(SOCK_PACKET) -#define SOCK_RAW LITERALLY(3) -#define SOCK_RDM LITERALLY(4) -#define SOCK_SEQPACKET LITERALLY(5) -#define SOCK_STREAM LITERALLY(1) - - - -/*!BEGIN libc/sysv/consts/sol.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SOL_H_ - -#define SOL_AAL SYMBOLIC(SOL_AAL) -#define SOL_ALG SYMBOLIC(SOL_ALG) -#define SOL_ATM SYMBOLIC(SOL_ATM) -#define SOL_BLUETOOTH SYMBOLIC(SOL_BLUETOOTH) -#define SOL_CAIF SYMBOLIC(SOL_CAIF) -#define SOL_DCCP SYMBOLIC(SOL_DCCP) -#define SOL_DECNET SYMBOLIC(SOL_DECNET) -#define SOL_ICMPV6 SYMBOLIC(SOL_ICMPV6) -#define SOL_IP SYMBOLIC(SOL_IP) -#define SOL_IPV6 SYMBOLIC(SOL_IPV6) -#define SOL_IRDA SYMBOLIC(SOL_IRDA) -#define SOL_IUCV SYMBOLIC(SOL_IUCV) -#define SOL_KCM SYMBOLIC(SOL_KCM) -#define SOL_LLC SYMBOLIC(SOL_LLC) -#define SOL_NETBEUI SYMBOLIC(SOL_NETBEUI) -#define SOL_NETLINK SYMBOLIC(SOL_NETLINK) -#define SOL_NFC SYMBOLIC(SOL_NFC) -#define SOL_PACKET SYMBOLIC(SOL_PACKET) -#define SOL_PNPIPE SYMBOLIC(SOL_PNPIPE) -#define SOL_PPPOL2TP SYMBOLIC(SOL_PPPOL2TP) -#define SOL_RAW SYMBOLIC(SOL_RAW) -#define SOL_RDS SYMBOLIC(SOL_RDS) -#define SOL_RXRPC SYMBOLIC(SOL_RXRPC) -#define SOL_SOCKET SYMBOLIC(SOL_SOCKET) -#define SOL_TCP SYMBOLIC(SOL_TCP) -#define SOL_TIPC SYMBOLIC(SOL_TIPC) -#define SOL_UDP SYMBOLIC(SOL_UDP) -#define SOL_X25 SYMBOLIC(SOL_X25) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SOL_AAL; -extern const long SOL_ALG; -extern const long SOL_ATM; -extern const long SOL_BLUETOOTH; -extern const long SOL_CAIF; -extern const long SOL_DCCP; -extern const long SOL_DECNET; -extern const long SOL_ICMPV6; -extern const long SOL_IP; -extern const long SOL_IPV6; -extern const long SOL_IRDA; -extern const long SOL_IUCV; -extern const long SOL_KCM; -extern const long SOL_LLC; -extern const long SOL_NETBEUI; -extern const long SOL_NETLINK; -extern const long SOL_NFC; -extern const long SOL_PACKET; -extern const long SOL_PNPIPE; -extern const long SOL_PPPOL2TP; -extern const long SOL_RAW; -extern const long SOL_RDS; -extern const long SOL_RXRPC; -extern const long SOL_SOCKET; -extern const long SOL_TCP; -extern const long SOL_TIPC; -extern const long SOL_UDP; -extern const long SOL_X25; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/splice.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_SPLICE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long SPLICE_F_GIFT; -extern const long SPLICE_F_MORE; -extern const long SPLICE_F_MOVE; -extern const long SPLICE_F_NONBLOCK; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define SPLICE_F_GIFT SYMBOLIC(SPLICE_F_GIFT) -#define SPLICE_F_MORE SYMBOLIC(SPLICE_F_MORE) -#define SPLICE_F_MOVE SYMBOLIC(SPLICE_F_MOVE) -#define SPLICE_F_NONBLOCK SYMBOLIC(SPLICE_F_NONBLOCK) - - - -/*!BEGIN libc/sysv/consts/st.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_ST_H_ - -#define ST_APPEND SYMBOLIC(ST_APPEND) -#define ST_IMMUTABLE SYMBOLIC(ST_IMMUTABLE) -#define ST_MANDLOCK SYMBOLIC(ST_MANDLOCK) -#define ST_NOATIME SYMBOLIC(ST_NOATIME) -#define ST_NODEV SYMBOLIC(ST_NODEV) -#define ST_NODIRATIME SYMBOLIC(ST_NODIRATIME) -#define ST_NOEXEC SYMBOLIC(ST_NOEXEC) -#define ST_NOSUID SYMBOLIC(ST_NOSUID) -#define ST_RDONLY SYMBOLIC(ST_RDONLY) -#define ST_RELATIME SYMBOLIC(ST_RELATIME) -#define ST_SYNCHRONOUS SYMBOLIC(ST_SYNCHRONOUS) -#define ST_WRITE SYMBOLIC(ST_WRITE) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long ST_APPEND; -extern const long ST_IMMUTABLE; -extern const long ST_MANDLOCK; -extern const long ST_NOATIME; -extern const long ST_NODEV; -extern const long ST_NODIRATIME; -extern const long ST_NOEXEC; -extern const long ST_NOSUID; -extern const long ST_RDONLY; -extern const long ST_RELATIME; -extern const long ST_SYNCHRONOUS; -extern const long ST_WRITE; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/tcp.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TCP_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long TCP_CC_INFO; -extern const long TCP_CONGESTION; -extern const long TCP_COOKIE_TRANSACTIONS; -extern const long TCP_CORK; -extern const long TCP_DEFER_ACCEPT; -extern const long TCP_FASTOPEN; -extern const long TCP_INFO; -extern const long TCP_KEEPCNT; -extern const long TCP_KEEPIDLE; -extern const long TCP_KEEPINTVL; -extern const long TCP_LINGER2; -extern const long TCP_MAXSEG; -extern const long TCP_MD5SIG; -extern const long TCP_MD5SIG_MAXKEYLEN; -extern const long TCP_NODELAY; -extern const long TCP_NOTSENT_LOWAT; -extern const long TCP_QUEUE_SEQ; -extern const long TCP_QUICKACK; -extern const long TCP_REPAIR; -extern const long TCP_REPAIR_OPTIONS; -extern const long TCP_REPAIR_QUEUE; -extern const long TCP_SAVED_SYN; -extern const long TCP_SAVE_SYN; -extern const long TCP_SYNCNT; -extern const long TCP_THIN_DUPACK; -extern const long TCP_THIN_LINEAR_TIMEOUTS; -extern const long TCP_TIMESTAMP; -extern const long TCP_USER_TIMEOUT; -extern const long TCP_WINDOW_CLAMP; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define TCP_CC_INFO SYMBOLIC(TCP_CC_INFO) -#define TCP_CONGESTION SYMBOLIC(TCP_CONGESTION) -#define TCP_COOKIE_TRANSACTIONS SYMBOLIC(TCP_COOKIE_TRANSACTIONS) -#define TCP_CORK SYMBOLIC(TCP_CORK) -#define TCP_DEFER_ACCEPT SYMBOLIC(TCP_DEFER_ACCEPT) -#define TCP_FASTOPEN SYMBOLIC(TCP_FASTOPEN) -#define TCP_INFO SYMBOLIC(TCP_INFO) -#define TCP_KEEPCNT SYMBOLIC(TCP_KEEPCNT) -#define TCP_KEEPIDLE SYMBOLIC(TCP_KEEPIDLE) -#define TCP_KEEPINTVL SYMBOLIC(TCP_KEEPINTVL) -#define TCP_LINGER2 SYMBOLIC(TCP_LINGER2) -#define TCP_MAXSEG SYMBOLIC(TCP_MAXSEG) -#define TCP_MD5SIG SYMBOLIC(TCP_MD5SIG) -#define TCP_MD5SIG_MAXKEYLEN SYMBOLIC(TCP_MD5SIG_MAXKEYLEN) -#define TCP_NODELAY LITERALLY(1) -#define TCP_NOTSENT_LOWAT SYMBOLIC(TCP_NOTSENT_LOWAT) -#define TCP_QUEUE_SEQ SYMBOLIC(TCP_QUEUE_SEQ) -#define TCP_QUICKACK SYMBOLIC(TCP_QUICKACK) -#define TCP_REPAIR SYMBOLIC(TCP_REPAIR) -#define TCP_REPAIR_OPTIONS SYMBOLIC(TCP_REPAIR_OPTIONS) -#define TCP_REPAIR_QUEUE SYMBOLIC(TCP_REPAIR_QUEUE) -#define TCP_SAVED_SYN SYMBOLIC(TCP_SAVED_SYN) -#define TCP_SAVE_SYN SYMBOLIC(TCP_SAVE_SYN) -#define TCP_SYNCNT SYMBOLIC(TCP_SYNCNT) -#define TCP_THIN_DUPACK SYMBOLIC(TCP_THIN_DUPACK) -#define TCP_THIN_LINEAR_TIMEOUTS SYMBOLIC(TCP_THIN_LINEAR_TIMEOUTS) -#define TCP_TIMESTAMP SYMBOLIC(TCP_TIMESTAMP) -#define TCP_USER_TIMEOUT SYMBOLIC(TCP_USER_TIMEOUT) -#define TCP_WINDOW_CLAMP SYMBOLIC(TCP_WINDOW_CLAMP) - - - -/*!BEGIN libc/sysv/consts/tcpopt.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TCPOPT_H_ - -#define TCPOPT_EOL SYMBOLIC(TCPOPT_EOL) -#define TCPOPT_MAXSEG SYMBOLIC(TCPOPT_MAXSEG) -#define TCPOPT_NOP SYMBOLIC(TCPOPT_NOP) -#define TCPOPT_SACK SYMBOLIC(TCPOPT_SACK) -#define TCPOPT_SACK_PERMITTED SYMBOLIC(TCPOPT_SACK_PERMITTED) -#define TCPOPT_TIMESTAMP SYMBOLIC(TCPOPT_TIMESTAMP) -#define TCPOPT_WINDOW SYMBOLIC(TCPOPT_WINDOW) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long TCPOPT_EOL; -extern const long TCPOPT_MAXSEG; -extern const long TCPOPT_NOP; -extern const long TCPOPT_SACK; -extern const long TCPOPT_SACK_PERMITTED; -extern const long TCPOPT_TIMESTAMP; -extern const long TCPOPT_WINDOW; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/th.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TH_H_ - -#define TH_ACK SYMBOLIC(TH_ACK) -#define TH_FIN SYMBOLIC(TH_FIN) -#define TH_PUSH SYMBOLIC(TH_PUSH) -#define TH_RST SYMBOLIC(TH_RST) -#define TH_SYN SYMBOLIC(TH_SYN) -#define TH_URG SYMBOLIC(TH_URG) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long TH_ACK; -extern const long TH_FIN; -extern const long TH_PUSH; -extern const long TH_RST; -extern const long TH_SYN; -extern const long TH_URG; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/type.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_TYPE_H_ - -#define TYPE_A SYMBOLIC(TYPE_A) -#define TYPE_DISK SYMBOLIC(TYPE_DISK) -#define TYPE_E SYMBOLIC(TYPE_E) -#define TYPE_ENCLOSURE SYMBOLIC(TYPE_ENCLOSURE) -#define TYPE_I SYMBOLIC(TYPE_I) -#define TYPE_L SYMBOLIC(TYPE_L) -#define TYPE_MEDIUM_CHANGER SYMBOLIC(TYPE_MEDIUM_CHANGER) -#define TYPE_MOD SYMBOLIC(TYPE_MOD) -#define TYPE_NO_LUN SYMBOLIC(TYPE_NO_LUN) -#define TYPE_PROCESSOR SYMBOLIC(TYPE_PROCESSOR) -#define TYPE_ROM SYMBOLIC(TYPE_ROM) -#define TYPE_SCANNER SYMBOLIC(TYPE_SCANNER) -#define TYPE_TAPE SYMBOLIC(TYPE_TAPE) -#define TYPE_WORM SYMBOLIC(TYPE_WORM) - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const long TYPE_A; -extern const long TYPE_DISK; -extern const long TYPE_E; -extern const long TYPE_ENCLOSURE; -extern const long TYPE_I; -extern const long TYPE_L; -extern const long TYPE_MEDIUM_CHANGER; -extern const long TYPE_MOD; -extern const long TYPE_NO_LUN; -extern const long TYPE_PROCESSOR; -extern const long TYPE_ROM; -extern const long TYPE_SCANNER; -extern const long TYPE_TAPE; -extern const long TYPE_WORM; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/sysv/consts/utime.h */ - -#define COSMOPOLITAN_LIBC_SYSV_CONSTS_UTIME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern const int UTIME_NOW; -extern const int UTIME_OMIT; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#define UTIME_NOW SYMBOLIC(UTIME_NOW) -#define UTIME_OMIT SYMBOLIC(UTIME_OMIT) - - - -/*!BEGIN libc/time/struct/timezone.h */ - -#define COSMOPOLITAN_LIBC_TIME_STRUCT_TIMEZONE_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct timezone { - int32_t tz_minuteswest; - int32_t tz_dsttime; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/time/struct/tm.h */ - -#define COSMOPOLITAN_LIBC_TIME_STRUCT_TM_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct tm { - int32_t tm_sec; - int32_t tm_min; - int32_t tm_hour; - int32_t tm_mday; /* 1-indexed */ - int32_t tm_mon; /* 0-indexed */ - int32_t tm_year; /* minus 1900 */ - int32_t tm_wday; - int32_t tm_yday; - int32_t tm_isdst; - int64_t tm_gmtoff; - const char *tm_zone; -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/time/struct/utimbuf.h */ - -#define COSMOPOLITAN_LIBC_TIME_STRUCT_UTIMBUF_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -struct utimbuf { - int64_t actime; /* access time */ - int64_t modtime; /* modified time */ -}; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/time/time.h */ - -#define COSMOPOLITAN_LIBC_TIME_TIME_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -hidden extern const char kWeekdayNameShort[7][4]; -hidden extern const char kWeekdayName[7][10]; -hidden extern const char kMonthNameShort[12][4]; -hidden extern const char kMonthName[12][10]; -hidden extern const unsigned short kMonthYearDay[2][12]; - -extern char *tzname[2]; -extern long CLOCKS_PER_SEC; - -int64_t clock(void); -int64_t time(int64_t *); -int gettimeofday(struct timeval *, struct timezone *); -int clock_gettime(int, struct timespec *); -int clock_getres(int, struct timespec *); - -int sleep(uint32_t); -int usleep(uint32_t); -int nanosleep(const struct timespec *, struct timespec *); -unsigned alarm(unsigned); -int getitimer(int, struct itimerval *); -int setitimer(int, const struct itimerval *, struct itimerval *); - -void tzset(void); -struct tm *gmtime(const int64_t *); -struct tm *gmtime_r(const int64_t *, struct tm *); -struct tm *localtime(const int64_t *); -struct tm *localtime_r(const int64_t *, struct tm *); -int64_t timegm(struct tm *); -int64_t mktime(struct tm *); -int64_t timelocal(struct tm *); -int64_t timeoff(struct tm *, long); -int64_t time2posix(int64_t) pureconst; -int64_t posix2time(int64_t) pureconst; - -char *strptime(const char *, const char *, struct tm *); -size_t strftime(char *, size_t, const char *, const struct tm *) - strftimeesque(3); -char *asctime(const struct tm *); -char *ctime(const int64_t *); -char *ctime_r(const int64_t *, char[hasatleast 64]); -char *asctime_r(const struct tm *, char[hasatleast 64]); - -int futimens(int, const struct timespec[2]); -int utimensat(int, const char *, const struct timespec[2], int); -int utimes(const char *, const struct timeval[2]); -int utime(const char *, const struct utimbuf *); -int futimes(int, const struct timeval[2]); -int futimesat(int, const char *, const struct timeval[2]); - -long double dtime(int); -long double dsleep(long double); -extern long double (*nowl)(void); -long double ConvertTicksToNanos(uint64_t); -void RefreshTime(void); - -double difftime(int64_t, int64_t) nothrow pureconst; - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/tinymath/emod.h */ - -#define COSMOPOLITAN_LIBC_TINYMATH_EMOD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * Returns Euclidean floating-point division remainder. - * - * @return (𝑥 mod 𝑦) ∈ [0.,𝑦) - * @see fmod() - */ -static inline double emod(double x, double y) { - return x - fabs(y) * floor(x / fabs(y)); -} - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/tinymath/emodl.h */ - -#define COSMOPOLITAN_LIBC_TINYMATH_EMODL_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -/** - * Returns Euclidean floating-point division remainder. - * - * @return (𝑥 mod 𝑦) ∈ [0.,𝑦) - * @see fmodl() - */ -static inline long double emodl(long double x, long double y) { - return x - fabsl(y) * floorl(x / fabsl(y)); -} - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/unicode/locale.h */ - -#define COSMOPOLITAN_LIBC_UNICODE_LOCALE_H_ - -#define LC_CTYPE 0 -#define LC_NUMERIC 1 -#define LC_CTYPE_MASK 1 -#define LC_TIME 2 -#define LC_NUMERIC_MASK 2 -#define LC_COLLATE 3 -#define LC_MONETARY 4 -#define LC_TIME_MASK 4 -#define LC_MESSAGES 5 -#define LC_ALL 6 -#define LC_COLLATE_MASK 8 -#define LC_MONETARY_MASK 16 -#define LC_MESSAGES_MASK 32 -#define LC_ALL_MASK 0x1fbf - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -char *setlocale(int, const char *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN libc/x/x.h */ - -#define COSMOPOLITAN_LIBC_X_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - Standard Library veneers for folks not building embedded RTOS */ - -#define _XPNN paramsnonnull() -#define _XRET nothrow nocallback nodiscard returnsnonnull -#define _XMAL returnspointerwithnoaliases _XRET -#define _XMALPG returnsaligned((PAGESIZE)) _XMAL - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » system calls ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int xsigaction(int, void *, uint64_t, uint64_t, struct sigaction *); -int xwrite(int, const void *, uint64_t); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » memory ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -void xdie(void) wontreturn; -char *xdtoa(double) _XMAL; -char *xdtoaf(float) _XMAL; -char *xdtoal(long double) _XMAL; -char *xasprintf(const char *, ...) printfesque(1) paramsnonnull((1)) _XMAL; -char *xvasprintf(const char *, va_list) _XPNN _XMAL; -char *xgetline(struct FILE *) _XPNN mallocesque; -void *xmalloc(size_t) attributeallocsize((1)) _XMAL; -void *xrealloc(void *, size_t) - attributeallocsize((2)) nothrow nocallback nodiscard; -void *xcalloc(size_t, size_t) attributeallocsize((1, 2)) _XMAL; -void *xvalloc(size_t) attributeallocsize((1)) _XMALPG; -void *xmemalign(size_t, size_t) attributeallocalign((1)) - attributeallocsize((2)) _XMAL; -void *xmemalignzero(size_t, size_t) attributeallocalign((1)) - attributeallocsize((2)) _XMAL; -char *xstrdup(const char *) _XPNN _XMAL; -char *xstrndup(const char *, size_t) _XPNN _XMAL; -char *xstrcat(const char *, ...) paramsnonnull((1)) nullterminated() _XMAL; -char *xstrmul(const char *, size_t) paramsnonnull((1)) _XMAL; -char *xinet_ntop(int, const void *) _XPNN _XMAL; -void *xunbinga(size_t, const char16_t *) attributeallocalign((1)) _XMAL _XRET; -void *xunbing(const char16_t *) _XMAL _XRET; -char16_t *utf8toutf16(const char *, size_t, size_t *) nodiscard; -char *utf16toutf8(const char16_t *, size_t, size_t *) nodiscard; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » files ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -int rmrf(const char *); -int makedirs(const char *, unsigned); -char *xdirname(const char *) paramsnonnull() _XMAL; -char *xjoinpaths(const char *, const char *) paramsnonnull() _XMAL; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » time ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -char *xiso8601i(int) mallocesque; -char *xiso8601tv(struct timeval *) mallocesque; -char *xiso8601ts(struct timespec *) mallocesque; - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » input / output ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -char *xslurp(const char *, size_t *) paramsnonnull((1)) _XMALPG nodiscard; -int xbarf(const char *, const void *, size_t); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » safety ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#define xstrcat(...) (xstrcat)(__VA_ARGS__, NULL) - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » generic typing ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if __STDC_VERSION__ + 0 >= 201112 - -#define xiso8601(TS) \ - _Generic(*(TS), struct timeval : xiso8601tv, default : xiso8601ts)(TS) - -#endif /* C11 */ - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § eXtended apis » link-time optimizations ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -#define xasprintf(FMT, ...) (xasprintf)(PFLINK(FMT), ##__VA_ARGS__) -#define xvasprintf(FMT, VA) (xvasprintf)(PFLINK(FMT), VA) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/gdtoa/gdtoa.h */ - -#define COSMOPOLITAN_THIRD_PARTY_GDTOA_GDTOA_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -enum { - /* return values from strtodg */ - STRTOG_Zero = 0, - STRTOG_Normal = 1, - STRTOG_Denormal = 2, - STRTOG_Infinite = 3, - STRTOG_NaN = 4, - STRTOG_NaNbits = 5, - STRTOG_NoNumber = 6, - STRTOG_Retmask = 7, - - /* The following may be or-ed into one of the above values. */ - STRTOG_Neg = 0x08, /* does not affect STRTOG_Inexlo or STRTOG_Inexhi */ - STRTOG_Inexlo = 0x10, /* returned result rounded toward zero */ - STRTOG_Inexhi = 0x20, /* returned result rounded away from zero */ - STRTOG_Inexact = 0x30, - STRTOG_Underflow = 0x40, - STRTOG_Overflow = 0x80 -}; - -typedef struct FPI { - int nbits; - int emin; - int emax; - int rounding; - int sudden_underflow; - int int_max; -} FPI; - -enum { - /* FPI.rounding values: same as FLT_ROUNDS */ - FPI_Round_zero = 0, - FPI_Round_near = 1, - FPI_Round_up = 2, - FPI_Round_down = 3 -}; - -char *dtoa(double d, int mode, int ndigits, int *decpt, int *sign, char **rve); -char *gdtoa(const FPI *fpi, int be, unsigned *bits, int *kindp, int mode, - int ndigits, int *decpt, char **rve); -void freedtoa(char *); - -double atof(const char *); -float strtof(const char *, char **); -double strtod(const char *, char **); -int strtodg(const char *, char **, const FPI *, int *, unsigned *); -long double strtold(const char *, char **); - -char *g_ddfmt(char *, double *, int, size_t); -char *g_ddfmt_p(char *, double *, int, size_t, int); -char *g_dfmt(char *, double *, int, size_t); -char *g_dfmt_p(char *, double *, int, size_t, int); -char *g_ffmt(char *, float *, int, size_t); -char *g_ffmt_p(char *, float *, int, size_t, int); -char *g_Qfmt(char *, void *, int, size_t); -char *g_Qfmt_p(char *, void *, int, size_t, int); -char *g_xfmt(char *, void *, int, size_t); -char *g_xfmt_p(char *, void *, int, size_t, int); -char *g_xLfmt(char *, void *, int, size_t); -char *g_xLfmt_p(char *, void *, int, size_t, int); - -int strtoId(const char *, char **, double *, double *); -int strtoIdd(const char *, char **, double *, double *); -int strtoIf(const char *, char **, float *, float *); -int strtoIQ(const char *, char **, void *, void *); -int strtoIx(const char *, char **, void *, void *); -int strtoIxL(const char *, char **, void *, void *); -int strtord(const char *, char **, int, double *); -int strtordd(const char *, char **, int, double *); -int strtorf(const char *, char **, int, float *); -int strtorQ(const char *, char **, int, void *); -int strtorx(const char *, char **, int, void *); -int strtorxL(const char *, char **, int, void *); - -#if 1 -int strtodI(const char *, char **, double *); -int strtopd(const char *, char **, double *); -int strtopdd(const char *, char **, double *); -int strtopf(const char *, char **, float *); -int strtopQ(const char *, char **, void *); -int strtopx(const char *, char **, void *); -int strtopxL(const char *, char **, void *); -#else -#define strtopd(s, se, x) strtord(s, se, 1, x) -#define strtopdd(s, se, x) strtordd(s, se, 1, x) -#define strtopf(s, se, x) strtorf(s, se, 1, x) -#define strtopQ(s, se, x) strtorQ(s, se, 1, x) -#define strtopx(s, se, x) strtorx(s, se, 1, x) -#define strtopxL(s, se, x) strtorxL(s, se, 1, x) -#endif - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/getopt/getopt.h */ - -#define COSMOPOLITAN_THIRD_PARTY_GETOPT_GETOPT_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -extern char *optarg; -extern int optind, opterr, optopt, optreset; -int getopt(int nargc, char *const nargv[], const char *ostr); - -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 -struct option { - const char *name; - int has_arg; - int *flag; - int val; -}; -int getopt_long(int nargc, char *const *nargv, const char *options, - const struct option *long_options, int *idx); -int getopt_long_only(int nargc, char *const *nargv, const char *options, - const struct option *long_options, int *idx); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/musl/fnmatch.h */ - -#define COSMOPOLITAN_THIRD_PARTY_REGEX_FNMATCH_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define FNM_PATHNAME 0x1 -#define FNM_NOESCAPE 0x2 -#define FNM_PERIOD 0x4 -#define FNM_LEADING_DIR 0x8 -#define FNM_CASEFOLD 0x10 -#define FNM_FILE_NAME FNM_PATHNAME - -#define FNM_NOMATCH 1 -#define FNM_NOSYS (-1) - -int fnmatch(const char *, const char *, int); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/musl/ftw.h */ - -#define COSMOPOLITAN_THIRD_PARTY_MUSL_FTW_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define FTW_F 1 -#define FTW_D 2 -#define FTW_DNR 3 -#define FTW_NS 4 -#define FTW_SL 5 -#define FTW_DP 6 -#define FTW_SLN 7 - -#define FTW_PHYS 1 -#define FTW_MOUNT 2 -#define FTW_CHDIR 4 -#define FTW_DEPTH 8 - -struct FTW { - int base; - int level; -}; - -int ftw(const char *, int (*)(const char *, const struct stat *, int), int); -int nftw(const char *, - int (*)(const char *, const struct stat *, int, struct FTW *), int, - int); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/musl/glob.h */ - -#define COSMOPOLITAN_THIRD_PARTY_MUSL_GLOB_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#define GLOB_ERR 0x01 -#define GLOB_MARK 0x02 -#define GLOB_NOSORT 0x04 -#define GLOB_DOOFFS 0x08 /* reserves null slots at start of gl_pathv */ -#define GLOB_NOCHECK 0x10 /* just yield pattern if GLOB_NOMATCH happens */ -#define GLOB_APPEND 0x20 /* enables us to call glob() multiple times */ -#define GLOB_NOESCAPE 0x40 /* don't allow things like \*\?\[\] escaping */ -#define GLOB_PERIOD 0x80 - -#define GLOB_TILDE 0x1000 -#define GLOB_TILDE_CHECK 0x4000 - -#define GLOB_NOSPACE 1 -#define GLOB_ABORTED 2 -#define GLOB_NOMATCH 3 -#define GLOB_NOSYS 4 - -typedef struct { - size_t gl_pathc; - char **gl_pathv; - size_t gl_offs; - int __dummy1; - void *__dummy2[5]; -} glob_t; - -int glob(const char *, int, int (*)(const char *, int), glob_t *); -void globfree(glob_t *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/musl/passwd.h */ - -#define COSMOPOLITAN_LIBC_PASSWD_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -struct FILE; - -struct passwd { - char *pw_name; - char *pw_passwd; - uint32_t pw_uid; - uint32_t pw_gid; - char *pw_gecos; - char *pw_dir; - char *pw_shell; -}; - -void setpwent(void); -void endpwent(void); -struct passwd *getpwent(void); -struct passwd *getpwuid(uint32_t); -struct passwd *getpwnam(const char *); -int getpwuid_r(uint32_t, struct passwd *, char *, size_t, struct passwd **); -int getpwnam_r(const char *, struct passwd *, char *, size_t, struct passwd **); -struct passwd *fgetpwent(struct FILE *); -int putpwent(const struct passwd *, struct FILE *); - -struct group { - char *gr_name; - char *gr_passwd; - int32_t gr_gid; - char **gr_mem; -}; - -struct group *getgrgid(gid_t); -struct group *getgrnam(const char *); -int getgrgid_r(gid_t, struct group *, char *, size_t, struct group **); -int getgrnam_r(const char *, struct group *, char *, size_t, struct group **); -struct group *getgrent(void); -void endgrent(void); -void setgrent(void); -struct group *fgetgrent(struct FILE *); -int putgrent(const struct group *, struct FILE *); -int getgrouplist(const char *, gid_t, gid_t *, int *); -int setgroups(size_t, const int32_t *); -int initgroups(const char *, int32_t); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/musl/tempnam.h */ - -#define COSMOPOLITAN_THIRD_PARTY_MUSL_TEMPNAM_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -char *tempnam(const char *, const char *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/zlib/zlib.h */ - -#define COSMOPOLITAN_THIRD_PARTY_ZLIB_ZLIB_H_ - - -/*!BEGIN third_party/zlib/zconf.h */ - -#define COSMOPOLITAN_THIRD_PARTY_ZLIB_ZCONF_H_ - -#define STDC -#define STDC99 -#define MAX_MEM_LEVEL 9 -#define DEF_MEM_LEVEL 8 -#define MAX_WBITS 15 /* 32K LZ77 window */ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) - -typedef unsigned char Byte; -typedef unsigned long uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ -typedef Byte Bytef; -typedef char charf; -typedef int intf; -typedef uInt uIntf; -typedef uLong uLongf; -typedef void const *voidpc; -typedef void *voidpf; -typedef void *voidp; - -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -/** - * @fileoverview zlib - * - * The 'zlib' compression library provides in-memory - * compression and decompression functions, including integrity checks - * of the uncompressed data. This version of the library supports only - * one compression method (deflation) but other algorithms will be added - * later and will have the same stream interface. - * - * Compression can be done in a single step if the buffers are large enough, - * or can be done by repeated calls of the compression function. In the latter - * case, the application must provide more input and/or consume the output - * (providing more output space) before each call. - * - * The compressed data format used by default by the in-memory functions is - * the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - * around a deflate stream, which is itself documented in RFC 1951. - * - * The library also supports reading and writing files in gzip (.gz) format - * with an interface similar to that of stdio using the functions that start - * with "gz". The gzip format is different from the zlib format. gzip is a - * gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - * - * This library can optionally read and write gzip and raw deflate streams in - * memory as well. - * - * The zlib format was designed to be compact and fast for use in memory - * and on communications channels. The gzip format was designed for single- - * file compression on file systems, has a larger header than zlib to maintain - * directory information, and uses a different, slower check method than zlib. - * - * The library does not install any signal handler. The decoder checks - * the consistency of the compressed data, so the library should never crash - * even in the case of corrupted input. - */ - -#define ZLIB_VERSION "1.2.11" -#define ZLIB_VERNUM 0x12b0 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 11 -#define ZLIB_VER_SUBREVISION 0 - -/** - * The application must update next_in and avail_in when avail_in has - * dropped to zero. It must update next_out and avail_out when avail_out - * has dropped to zero. The application must initialize zalloc, zfree - * and opaque before calling the init function. All other fields are set - * by the compression library and must not be updated by the - * application. - * - * The opaque value provided by the application will be passed as the - * first parameter for calls of zalloc and zfree. This can be useful for - * custom memory management. The compression library attaches no meaning - * to the opaque value. - * - * zalloc must return Z_NULL if there is not enough memory for the - * object. If zlib is used in a multi-threaded application, zalloc and - * zfree must be thread safe. In that case, zlib is thread-safe. When - * zalloc and zfree are Z_NULL on entry to the initialization function, - * they are set to internal routines that use the standard library - * functions malloc() and free(). - * - * On 16-bit systems, the functions zalloc and zfree must be able to - * allocate exactly 65536 bytes, but will not be required to allocate - * more than this if the symbol MAXSEG_64K is defined (see zconf.h). - * WARNING: On MSDOS, pointers returned by zalloc for objects of exactly - * 65536 bytes *must* have their offset normalized to zero. The default - * allocation function provided by this library ensures this (see - * zutil.c). To reduce memory requirements and avoid any allocation of - * 64K objects, at the expense of compression ratio, compile the library - * with -DMAX_WBITS=14 (see zconf.h). - * - * The fields total_in and total_out can be used for statistics or - * progress reports. After compression, total_in holds the total size of - * the uncompressed data and may be saved for use by the decompressor - * (particularly if the decompressor wants to decompress everything in a - * single step). - */ -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 - -/** - * Allowed flush values; see deflate() and inflate() below for details. - */ -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) - -/** - * Return codes for the compression/decompression functions. Negative - * values are errors, positive values are used for special but normal - * events. - */ -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) - -/** - * Compression levels. - */ -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 - -/** - * Compression strategy; see deflateInit2() below for details - */ -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 - -/** - * Possible values of the data_type field for deflate() - */ -#define Z_DEFLATED 8 - -/* The deflate compression method (the only one supported in this version) */ -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); -typedef void (*free_func)(voidpf opaque, voidpf address); - -struct DeflateState; - -typedef struct z_stream_s { - const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - Bytef *next_out; /* next output byte will go here */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - const char *msg; /* last error message, NULL if no error */ - struct DeflateState *state; /* not visible by applications */ - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - int data_type; /* best guess about the data type: binary or text - for deflate, or the decoding state for inflate */ - uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream *z_streamp; - -/** - * gzip header information passed to and from zlib routines. See RFC - * 1952 for more details on the meanings of these fields. - */ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header *gz_headerp; - -#define zlib_version zlibVersion() - -/** - * The application can compare zlibVersion and ZLIB_VERSION for consistency. - * If the first character differs, the library code actually used is not - * compatible with the zlib.h header file used by the application. This check - * is automatically made by deflateInit and inflateInit. - */ -const char *zlibVersion(void); - -/** - * Initializes the internal stream state for compression. The fields - * zalloc, zfree and opaque must be initialized before by the caller. If - * zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - * allocation functions. - * - * The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - * 1 gives best speed, 9 gives best compression, 0 gives no compression at all - * (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - * requests a default compromise between speed and compression (currently - * equivalent to level 6). - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * or Z_STREAM_ERROR if level is not a valid compression level. msg - * is set to null if there is no error message. deflateInit does not - * perform any compression: this will be done by deflate(). - */ -int deflateInit(z_streamp strm, int level); - -/** - * deflate compresses as much data as possible, and stops when the input - * buffer becomes empty or the output buffer becomes full. It may - * introduce some output latency (reading input without producing any - * output) except when forced to flush. - * - * The detailed semantics are as follows. deflate performs one or both - * of the following actions: - * - * - Compress more input starting at next_in and update next_in and - * avail_in accordingly. If not all input can be processed (because - * there is not enough room in the output buffer), next_in and avail_in - * are updated and processing will resume at this point for the next - * call of deflate(). - * - * - Generate more output starting at next_out and update next_out and - * avail_out accordingly. This action is forced if the parameter flush - * is non zero. Forcing flush frequently degrades the compression - * ratio, so this parameter should be set only when necessary. Some - * output may be provided even if flush is zero. - * - * Before the call of deflate(), the application should ensure that at - * least one of the actions is possible, by providing more input and/or - * consuming more output, and updating avail_in or avail_out - * accordingly; avail_out should never be zero before the call. The - * application can consume the compressed output when it wants, for - * example when the output buffer is full (avail_out == 0), or after - * each call of deflate(). If deflate returns Z_OK and with zero - * avail_out, it must be called again after making room in the output - * buffer because there might be more output pending. See - * deflatePending(), which can be used if desired to determine whether - * or not there is more ouput in that case. - * - * Normally the parameter flush is set to Z_NO_FLUSH, which allows - * deflate to decide how much data to accumulate before producing - * output, in order to maximize compression. - * - * If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - * flushed to the output buffer and the output is aligned on a byte - * boundary, so that the decompressor can get all input data available - * so far. (In particular avail_in is zero after the call if enough - * output space has been provided before the call.) Flushing may degrade - * compression for some compression algorithms and so it should be used - * only when necessary. This completes the current deflate block and - * follows it with an empty stored block that is three bits plus filler - * bits to the next byte, followed by four bytes (00 00 ff ff). - * - * If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to - * the output buffer, but the output is not aligned to a byte boundary. - * All of the input data so far will be available to the decompressor, - * as for Z_SYNC_FLUSH. This completes the current deflate block and - * follows it with an empty fixed codes block that is 10 bits long. This - * assures that enough bytes are output in order for the decompressor to - * finish the block before the empty fixed codes block. - * - * If flush is set to Z_BLOCK, a deflate block is completed and emitted, - * as for Z_SYNC_FLUSH, but the output is not aligned on a byte - * boundary, and up to seven bits of the current block are held to be - * written as the next byte after the next deflate block is completed. - * In this case, the decompressor may not be provided enough bits at - * this point in order to complete decompression of the data provided so - * far to the compressor. It may need to wait for the next block to be - * emitted. This is for advanced applications that need to control the - * emission of deflate blocks. - * - * If flush is set to Z_FULL_FLUSH, all output is flushed as with - * Z_SYNC_FLUSH, and the compression state is reset so that - * decompression can restart from this point if previous compressed data - * has been damaged or if random access is desired. Using Z_FULL_FLUSH - * too often can seriously degrade compression. - * - * If deflate returns with avail_out == 0, this function must be called - * again with the same value of the flush parameter and more output - * space (updated avail_out), until the flush is complete (deflate - * returns with non-zero avail_out). In the case of a Z_FULL_FLUSH or - * Z_SYNC_FLUSH, make sure that avail_out is greater than six to avoid - * repeated flush markers due to avail_out == 0 on return. - * - * If the parameter flush is set to Z_FINISH, pending input is - * processed, pending output is flushed and deflate returns with - * Z_STREAM_END if there was enough output space. If deflate returns - * with Z_OK or Z_BUF_ERROR, this function must be called again with - * Z_FINISH and more output space (updated avail_out) but no more input - * data, until it returns with Z_STREAM_END or an error. After deflate - * has returned Z_STREAM_END, the only possible operations on the stream - * are deflateReset or deflateEnd. - * - * Z_FINISH can be used in the first deflate call after deflateInit if - * all the compression is to be done in a single step. In order to - * complete in one call, avail_out must be at least the value returned - * by deflateBound (see below). Then deflate is guaranteed to return - * Z_STREAM_END. If not enough output space is provided, deflate will - * not return Z_STREAM_END, and it must be called again as described - * above. - * - * deflate() sets strm->adler to the Adler-32 checksum of all input read - * so far (that is, total_in bytes). If a gzip stream is being - * generated, then strm->adler will be the CRC-32 checksum of the input - * read so far. (See deflateInit2 below.) - * - * deflate() may update strm->data_type if it can make a good guess about - * the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is - * considered binary. This field is only for information purposes and does not - * affect the compression algorithm in any manner. - * - * @return Z_OK if some progress has been made (more input processed or - * more output produced), Z_STREAM_END if all input has been - * consumed and all output has been produced (only when flush is set - * to Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent - * (for example if next_in or next_out was Z_NULL or the state was - * inadvertently written over by the application), or Z_BUF_ERROR if - * no progress is possible (for example avail_in or avail_out was - * zero). Note that Z_BUF_ERROR is not fatal, and deflate() can be - * called again with more input and more output space to continue - * compressing. - */ -int deflate(z_streamp strm, int flush); - -/** - * All dynamically allocated data structures for this stream are freed. - * This function discards any unprocessed input and does not flush any - * pending output. - * - * @return Z_OK if success, Z_STREAM_ERROR if the stream state was - * inconsistent, Z_DATA_ERROR if the stream was freed prematurely - * (some input or output was discarded). In the error case, msg may - * be set but then points to a static string (which must not be - * deallocated). - */ -int deflateEnd(z_streamp strm); - -/** - * Initializes the internal stream state for decompression. The fields - * next_in, avail_in, zalloc, zfree and opaque must be initialized - * before by the caller. In the current version of inflate, the provided - * input is not read or consumed. The allocation of a sliding window - * will be deferred to the first call of inflate (if the decompression - * does not complete on the first call). If zalloc and zfree are set to - * Z_NULL, inflateInit updates them to use default allocation functions. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * or Z_STREAM_ERROR if the parameters are invalid, such as a null - * pointer to the structure. msg is set to null if there is no error - * message. inflateInit does not perform any decompression. Actual - * decompression will be done by inflate(). So next_in, and - * avail_in, next_out, and avail_out are unused and unchanged. The - * current implementation of inflateInit() does not process any - * header information -- that is deferred until inflate() is called. - */ -int inflateInit(z_streamp strm); - -/** - * inflate decompresses as much data as possible, and stops when the input - * buffer becomes empty or the output buffer becomes full. It may introduce - * some output latency (reading input without producing any output) except when - * forced to flush. - * - * The detailed semantics are as follows. inflate performs one or both of the - * following actions: - * - * - Decompress more input starting at next_in and update next_in and - * avail_in accordingly. If not all input can be processed (because - * there is not enough room in the output buffer), then next_in and - * avail_in are updated accordingly, and processing will resume at - * this point for the next call of inflate(). - * - * - Generate more output starting at next_out and update next_out and - * avail_out accordingly. inflate() provides as much output as - * possible, until there is no more input data or no more space in the - * output buffer (see below about the flush parameter). - * - * Before the call of inflate(), the application should ensure that at - * least one of the actions is possible, by providing more input and/or - * consuming more output, and updating the next_* and avail_* values - * accordingly. If the caller of inflate() does not provide both - * available input and available output space, it is possible that there - * will be no progress made. The application can consume the - * uncompressed output when it wants, for example when the output buffer - * is full (avail_out == 0), or after each call of inflate(). If inflate - * returns Z_OK and with zero avail_out, it must be called again after - * making room in the output buffer because there might be more output - * pending. - * - * The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, - * Z_FINISH, Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() - * flush as much output as possible to the output buffer. Z_BLOCK - * requests that inflate() stop if and when it gets to the next deflate - * block boundary. When decoding the zlib or gzip format, this will - * cause inflate() to return immediately after the header and before the - * first block. When doing a raw inflate, inflate() will go ahead and - * process the first block, and will return when it gets to the end of - * that block, or when it runs out of data. - * - * The Z_BLOCK option assists in appending to or combining deflate - * streams. To assist in this, on return inflate() always sets - * strm->data_type to the number of unused bits in the last byte taken - * from strm->next_in, plus 64 if inflate() is currently decoding the - * last block in the deflate stream, plus 128 if inflate() returned - * immediately after decoding an end-of-block code or decoding the - * complete header up to just before the first byte of the deflate - * stream. The end-of-block will not be indicated until all of the - * uncompressed data from that block has been written to strm->next_out. - * The number of unused bits may in general be greater than seven, - * except when bit 7 of data_type is set, in which case the number of - * unused bits will be less than eight. data_type is set as noted here - * every time inflate() returns for all flush options, and so can be - * used to determine the amount of currently consumed input in bits. - * - * The Z_TREES option behaves as Z_BLOCK does, but it also returns when - * the end of each deflate block header is reached, before any actual - * data in that block is decoded. This allows the caller to determine - * the length of the deflate block header for later use in random access - * within a deflate block. 256 is added to the value of strm->data_type - * when inflate() returns immediately after reaching the end of the - * deflate block header. - * - * inflate() should normally be called until it returns Z_STREAM_END or - * an error. However if all decompression is to be performed in a single - * step (a single call of inflate), the parameter flush should be set to - * Z_FINISH. In this case all pending input is processed and all pending - * output is flushed; avail_out must be large enough to hold all of the - * uncompressed data for the operation to complete. (The size of the - * uncompressed data may have been saved by the compressor for this - * purpose.) The use of Z_FINISH is not required to perform an inflation - * in one step. However it may be used to inform inflate that a faster - * approach can be used for the single inflate() call. Z_FINISH also - * informs inflate to not maintain a sliding window if the stream - * completes, which reduces inflate's memory footprint. If the stream - * does not complete, either because not all of the stream is provided - * or not enough output space is provided, then a sliding window will be - * allocated and inflate() can be called again to continue the operation - * as if Z_NO_FLUSH had been used. - * - * In this implementation, inflate() always flushes as much output as - * possible to the output buffer, and always uses the faster approach on - * the first call. So the effects of the flush parameter in this - * implementation are on the return value of inflate() as noted below, - * when inflate() returns early when Z_BLOCK or Z_TREES is used, and - * when inflate() avoids the allocation of memory for a sliding window - * when Z_FINISH is used. - * - * If a preset dictionary is needed after this call (see - * inflateSetDictionary below), inflate sets strm->adler to the Adler-32 - * checksum of the dictionary chosen by the compressor and returns - * Z_NEED_DICT; otherwise it sets strm->adler to the Adler-32 checksum - * of all output produced so far (that is, total_out bytes) and returns - * Z_OK, Z_STREAM_END or an error code as described below. At the end of - * the stream, inflate() checks that its computed Adler-32 checksum is - * equal to that saved by the compressor and returns Z_STREAM_END only - * if the checksum is correct. - * - * inflate() can decompress and check either zlib-wrapped or - * gzip-wrapped deflate data. The header type is detected automatically, - * if requested when initializing with inflateInit2(). Any information - * contained in the gzip header is not retained unless - * inflateGetHeader() is used. When processing gzip-wrapped deflate - * data, strm->adler32 is set to the CRC-32 of the output produced so - * far. The CRC-32 is checked against the gzip trailer, as is the - * uncompressed length, modulo 2^32. - * - * @return Z_OK if some progress has been made (more input processed or - * more output produced), Z_STREAM_END if the end of the compressed - * data has been reached and all uncompressed output has been - * produced, Z_NEED_DICT if a preset dictionary is needed at this - * point, Z_DATA_ERROR if the input data was corrupted (input stream - * not conforming to the zlib format or incorrect check value, in - * which case strm->msg points to a string with a more specific - * error), Z_STREAM_ERROR if the stream structure was inconsistent - * (for example next_in or next_out was Z_NULL, or the state was - * inadvertently written over by the application), Z_MEM_ERROR if - * there was not enough memory, Z_BUF_ERROR if no progress was - * possible or if there was not enough room in the output buffer - * when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - * inflate() can be called again with more input and more output - * space to continue decompressing. If Z_DATA_ERROR is returned, the - * application may then call inflateSync() to look for a good - * compression block if a partial recovery of the data is to be - * attempted. - */ -int inflate(z_streamp strm, int flush); - -/** - * All dynamically allocated data structures for this stream are freed. - * This function discards any unprocessed input and does not flush any - * pending output. - * - * @return Z_OK or Z_STREAM_ERROR if stream state inconsistent - */ -int inflateEnd(z_streamp strm); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § zlib » special functions ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - the following functions are needed only in some special applications */ - -/** - * This is another version of deflateInit with more compression options. - * The fields next_in, zalloc, zfree and opaque must be initialized - * before by the caller. - * - * The method parameter is the compression method. It must be Z_DEFLATED - * in this version of the library. - * - * The windowBits parameter is the base two logarithm of the window size - * (the size of the history buffer). It should be in the range 8..15 for - * this version of the library. Larger values of this parameter result - * in better compression at the expense of memory usage. The default - * value is 15 if deflateInit is used instead. - * - * For the current implementation of deflate(), a windowBits value of 8 - * (a window size of 256 bytes) is not supported. As a result, a request - * for 8 will result in 9 (a 512-byte window). In that case, providing 8 - * to inflateInit2() will result in an error when the zlib header with 9 - * is checked against the initialization of inflate(). The remedy is to - * not use 8 with deflateInit2() with this initialization, or at least - * in that case use 9 with inflateInit2(). - * - * windowBits can also be -8..-15 for raw deflate. In this case, - * -windowBits determines the window size. deflate() will then generate - * raw deflate data with no zlib header or trailer, and will not compute - * a check value. - * - * windowBits can also be greater than 15 for optional gzip encoding. - * Add 16 to windowBits to write a simple gzip header and trailer around - * the compressed data instead of a zlib wrapper. The gzip header will - * have no file name, no extra data, no comment, no modification time - * (set to zero), no header crc, and the operating system will be set to - * the appropriate value, if the operating system was determined at - * compile time. If a gzip stream is being written, strm->adler is a - * CRC-32 instead of an Adler-32. - * - * For raw deflate or gzip encoding, a request for a 256-byte window is - * rejected as invalid, since only the zlib header provides a means of - * transmitting the window size to the decompressor. - * - * The memLevel parameter specifies how much memory should be allocated - * for the internal compression state. memLevel=1 uses minimum memory - * but is slow and reduces compression ratio; memLevel=9 uses maximum - * memory for optimal speed. The default value is 8. See zconf.h for - * total memory usage as a function of windowBits and memLevel. - * - * The strategy parameter is used to tune the compression algorithm. Use - * the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data - * produced by a filter (or predictor), Z_HUFFMAN_ONLY to force Huffman - * encoding only (no string match), or Z_RLE to limit match distances to - * one (run-length encoding). Filtered data consists mostly of small - * values with a somewhat random distribution. In this case, the - * compression algorithm is tuned to compress them better. The effect of - * Z_FILTERED is to force more Huffman coding and less string matching; - * it is somewhat intermediate between Z_DEFAULT_STRATEGY and - * Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as - * Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - * strategy parameter only affects the compression ratio but not the - * correctness of the compressed output even if it is not set - * appropriately. Z_FIXED prevents the use of dynamic Huffman codes, - * allowing for a simpler decoder for special applications. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * or Z_STREAM_ERROR if any parameter is invalid (such as an invalid - * method). msg is set to null if there is no error message. - * deflateInit2 does not perform any compression: this will be done - * by deflate(). - */ -int deflateInit2(z_streamp strm, int level, int method, int windowBits, - int memLevel, int strategy); - -/** - * Initializes the compression dictionary from the given byte sequence - * without producing any compressed output. When using the zlib format, - * this function must be called immediately after deflateInit, - * deflateInit2 or deflateReset, and before any call of deflate. When - * doing raw deflate, this function must be called either before any - * call of deflate, or immediately after the completion of a deflate - * block, i.e. after all input has been consumed and all output has been - * delivered when using any of the flush options Z_BLOCK, - * Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The compressor and - * decompressor must use exactly the same dictionary (see - * inflateSetDictionary). - * - * The dictionary should consist of strings (byte sequences) that are - * likely to be encountered later in the data to be compressed, with the - * most commonly used strings preferably put towards the end of the - * dictionary. Using a dictionary is most useful when the data to be - * compressed is short and can be predicted with good accuracy; the data - * can then be compressed better than with the default empty dictionary. - * - * Depending on the size of the compression data structures selected by - * deflateInit or deflateInit2, a part of the dictionary may in effect - * be discarded, for example if the dictionary is larger than the window - * size provided in deflateInit or deflateInit2. Thus the strings most - * likely to be useful should be put at the end of the dictionary, not - * at the front. In addition, the current implementation of deflate will - * use at most the window size minus 262 bytes of the provided - * dictionary. - * - * Upon return of this function, strm->adler is set to the Adler-32 - * value of the dictionary; the decompressor may later use this value to - * determine which dictionary has been used by the compressor. (The - * Adler-32 value applies to the whole dictionary even if only a subset - * of the dictionary is actually used by the compressor.) If a raw - * deflate was requested, then the Adler-32 value is not computed and - * strm->adler is not set. - * - * @return Z_OK if success, or Z_STREAM_ERROR if a parameter is invalid - * (e.g. dictionary being Z_NULL) or the stream state is - * inconsistent (for example if deflate has already been called for - * this stream or if not at a block boundary for raw deflate). - * deflateSetDictionary does not perform any compression: this will - * be done by deflate(). - */ -int deflateSetDictionary(z_streamp strm, const Bytef *dictionary, - uInt dictLength); - -/** - * Returns the sliding dictionary being maintained by deflate. dictLength is - * set to the number of bytes in the dictionary, and that many bytes are copied - * to dictionary. dictionary must have enough space, where 32768 bytes is - * always enough. If deflateGetDictionary() is called with dictionary equal to - * Z_NULL, then only the dictionary length is returned, and nothing is copied. - * Similary, if dictLength is Z_NULL, then it is not set. - * - * deflateGetDictionary() may return a length less than the window size, even - * when more than the window size in input has been provided. It may return up - * to 258 bytes less in that case, due to how zlib's implementation of deflate - * manages the sliding window and lookahead for matches, where matches can be - * up to 258 bytes long. If the application needs the last window-size bytes of - * input, then that would need to be saved by the application outside of zlib. - * - * @return Z_OK on success, or Z_STREAM_ERROR if the stream state is - * inconsistent. - */ -int deflateGetDictionary(z_streamp strm, Bytef *dictionary, uInt *dictLength); - -/** - * Sets destination stream as a complete copy of the source stream. - * - * This function can be useful when several compression strategies will be - * tried, for example when there are several ways of pre-processing the input - * data with a filter. The streams that will be discarded should then be freed - * by calling deflateEnd. Note that deflateCopy duplicates the internal - * compression state which can be quite large, so this strategy is slow and can - * consume lots of memory. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * Z_STREAM_ERROR if the source stream state was inconsistent (such - * as zalloc being Z_NULL). msg is left unchanged in both source and - * destination. - */ -int deflateCopy(z_streamp dest, z_streamp source); - -/** - * This function is equivalent to deflateEnd followed by deflateInit, but - * does not free and reallocate the internal compression state. The stream - * will leave the compression level and any other attributes that may have been - * set unchanged. - * - * deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - * stream state was inconsistent (such as zalloc or state being Z_NULL). - */ -int deflateReset(z_streamp strm); - -/** - * Dynamically update the compression level and compression strategy. The - * interpretation of level and strategy is as in deflateInit2(). This can be - * used to switch between compression and straight copy of the input data, or - * to switch to a different kind of input data requiring a different strategy. - * If the compression approach (which is a function of the level) or the - * strategy is changed, and if any input has been consumed in a previous - * deflate() call, then the input available so far is compressed with the old - * level and strategy using deflate(strm, Z_BLOCK). There are three approaches - * for the compression levels 0, 1..3, and 4..9 respectively. The new level - * and strategy will take effect at the next call of deflate(). - * - * If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does - * not have enough output space to complete, then the parameter change will not - * take effect. In this case, deflateParams() can be called again with the - * same parameters and more output space to try again. - * - * In order to assure a change in the parameters on the first try, the - * deflate stream should be flushed using deflate() with Z_BLOCK or other flush - * request until strm.avail_out is not zero, before calling deflateParams(). - * Then no more input data should be provided before the deflateParams() call. - * If this is done, the old level and strategy will be applied to the data - * compressed before deflateParams(), and the new level and strategy will be - * applied to the the data compressed after deflateParams(). - * - * deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream - * state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if - * there was not enough output space to complete the compression of the - * available input data before a change in the strategy or approach. Note that - * in the case of a Z_BUF_ERROR, the parameters are not changed. A return - * value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be - * retried with more output space. - */ -int deflateParams(z_streamp strm, int level, int strategy); - -/** - * Fine tune deflate's internal compression parameters. This should only - * be used by someone who understands the algorithm used by zlib's - * deflate for searching for the best matching string, and even then - * only by the most fanatic optimizer trying to squeeze out the last - * compressed bit for their specific input data. Read the deflate.c - * source code for the meaning of the max_lazy, good_length, - * nice_length, and max_chain parameters. - * - * deflateTune() can be called after deflateInit() or deflateInit2(), and - * returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ -int deflateTune(z_streamp strm, int good_length, int max_lazy, int nice_length, - int max_chain); - -/** - * deflateBound() returns an upper bound on the compressed size after - * deflation of sourceLen bytes. It must be called after deflateInit() - * or deflateInit2(), and after deflateSetHeader(), if used. This would - * be used to allocate an output buffer for deflation in a single pass, - * and so would be called before deflate(). If that first deflate() call - * is provided the sourceLen input bytes, an output buffer allocated to - * the size returned by deflateBound(), and the flush value Z_FINISH, - * then deflate() is guaranteed to return Z_STREAM_END. Note that it is - * possible for the compressed size to be larger than the value returned - * by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH - * are used. - */ -uLong deflateBound(z_streamp strm, uLong sourceLen); - -/** - * deflatePending() returns the number of bytes and bits of output that - * have been generated, but not yet provided in the available output. - * The bytes not provided would be due to the available output space - * having being consumed. The number of bits of output not provided are - * between 0 and 7, where they await more bits to join them in order to - * fill out a full byte. If pending or bits are Z_NULL, then those - * values are not set. - * - * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state - * was inconsistent. - */ -int deflatePending(z_streamp strm, unsigned *pending, int *bits); - -/** - * deflatePrime() inserts bits in the deflate output stream. The intent - * is that this function is used to start off the deflate output with the bits - * leftover from a previous deflate stream when appending to it. As such, this - * function can only be used for raw deflate, and must be used before the first - * deflate() call after a deflateInit2() or deflateReset(). bits must be less - * than or equal to 16, and that many of the least significant bits of value - * will be inserted in the output. - * - * @return Z_OK if success, Z_BUF_ERROR if there was not enough room in - * the internal buffer to insert the bits, or Z_STREAM_ERROR if the - * source stream state was inconsistent. - */ -int deflatePrime(z_streamp strm, int bits, int value); - -/** - * Provides gzip header information for when a gzip stream is requested - * by deflateInit2(). deflateSetHeader() may be called after - * deflateInit2() or deflateReset() and before the first call of - * deflate(). The text, time, os, extra field, name, and comment - * information in the provided gz_header structure are written to the - * gzip header (xflag is ignored -- the extra flags are set according to - * the compression level). The caller must assure that, if not Z_NULL, - * name and comment are terminated with a zero byte, and that if extra - * is not Z_NULL, that extra_len bytes are available there. If hcrc is - * true, a gzip header crc is included. Note that the current versions - * of the command-line version of gzip (up through version 1.3.x) do not - * support header crc's, and will report that it is a "multi-part gzip - * file" and give up. - * - * If deflateSetHeader is not used, the default gzip header has text - * false, the time set to zero, and os set to 255, with no extra, name, - * or comment fields. The gzip header is returned to the default state - * by deflateReset(). - * - * deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the - * source stream state was inconsistent. - */ -int deflateSetHeader(z_streamp strm, gz_headerp head); - -/** - * This is another version of inflateInit with an extra parameter. The - * fields next_in, avail_in, zalloc, zfree and opaque must be - * initialized before by the caller. - * - * The windowBits parameter is the base two logarithm of the maximum - * window size (the size of the history buffer). It should be in the - * range 8..15 for this version of the library. The default value is 15 - * if inflateInit is used instead. windowBits must be greater than or - * equal to the windowBits value provided to deflateInit2() while - * compressing, or it must be equal to 15 if deflateInit2() was not - * used. If a compressed stream with a larger window size is given as - * input, inflate() will return with the error code Z_DATA_ERROR instead - * of trying to allocate a larger window. - * - * windowBits can also be zero to request that inflate use the window - * size in the zlib header of the compressed stream. - * - * windowBits can also be -8..-15 for raw inflate. In this case, - * -windowBits determines the window size. inflate() will then process - * raw deflate data, not looking for a zlib or gzip header, not - * generating a check value, and not looking for any check values for - * comparison at the end of the stream. This is for use with other - * formats that use the deflate compressed data format such as zip. - * Those formats provide their own check values. If a custom format is - * developed using the raw deflate format for compressed data, it is - * recommended that a check value such as an Adler-32 or a CRC-32 be - * applied to the uncompressed data as is done in the zlib, gzip, and - * zip formats. For most applications, the zlib format should be used as - * is. Note that comments above on the use in deflateInit2() applies to - * the magnitude of windowBits. - * - * windowBits can also be greater than 15 for optional gzip decoding. - * Add 32 to windowBits to enable zlib and gzip decoding with automatic - * header detection, or add 16 to decode only the gzip format (the zlib - * format will return a Z_DATA_ERROR). If a gzip stream is being - * decoded, strm->adler is a CRC-32 instead of an Adler-32. Unlike the - * gunzip utility and gzread() (see below), inflate() will not - * automatically decode concatenated gzip streams. inflate() will return - * Z_STREAM_END at the end of the gzip stream. The state would need to - * be reset to continue decoding a subsequent gzip stream. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * or Z_STREAM_ERROR if the parameters are invalid, such as a null - * pointer to the structure. msg is set to null if there is no error - * message. inflateInit2 does not perform any decompression apart - * from possibly reading the zlib header if present: actual - * decompression will be done by inflate(). (So next_in and avail_in - * may be modified, but next_out and avail_out are unused and - * unchanged.) The current implementation of inflateInit2() does not - * process any header information -- that is deferred until - * inflate() is called. - */ -int inflateInit2(z_streamp strm, int windowBits); - -/** - * Initializes the decompression dictionary from the given uncompressed - * byte sequence. This function must be called immediately after a call - * of inflate, if that call returned Z_NEED_DICT. The dictionary chosen - * by the compressor can be determined from the Adler-32 value returned - * by that call of inflate. The compressor and decompressor must use - * exactly the same dictionary (see deflateSetDictionary). For raw - * inflate, this function can be called at any time to set the - * dictionary. If the provided dictionary is smaller than the window and - * there is already data in the window, then the provided dictionary - * will amend what's there. The application must insure that the - * dictionary that was used for compression is provided. - * - * @return Z_OK if success, Z_STREAM_ERROR if a parameter is invalid - * (e.g. dictionary being Z_NULL) or the stream state is - * inconsistent, Z_DATA_ERROR if the given dictionary doesn't match - * the expected one (incorrect Adler-32 value). inflateSetDictionary - * does not perform any decompression: this will be done by - * subsequent calls of inflate(). - */ -int inflateSetDictionary(z_streamp strm, const Bytef *dictionary, - uInt dictLength); - -/** - * Returns the sliding dictionary being maintained by inflate. dictLength is - * set to the number of bytes in the dictionary, and that many bytes are copied - * to dictionary. dictionary must have enough space, where 32768 bytes is - * always enough. If inflateGetDictionary() is called with dictionary equal to - * Z_NULL, then only the dictionary length is returned, and nothing is copied. - * Similary, if dictLength is Z_NULL, then it is not set. - * - * @return Z_OK on success, or Z_STREAM_ERROR if the stream state is - * inconsistent. - */ -int inflateGetDictionary(z_streamp strm, Bytef *dictionary, uInt *dictLength); - -/** - * Skips invalid compressed data until a possible full flush point (see - * above for the description of deflate with Z_FULL_FLUSH) can be found, - * or until all available input is skipped. No output is provided. - * - * inflateSync searches for a 00 00 FF FF pattern in the compressed - * data. All full flush points have this pattern, but not all - * occurrences of this pattern are full flush points. - * - * @return Z_OK if a possible full flush point has been found, - * Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no - * flush point has been found, or Z_STREAM_ERROR if the stream - * structure was inconsistent. In the success case, the application - * may save the current current value of total_in which indicates - * where valid compressed data was found. In the error case, the - * application may repeatedly call inflateSync, providing more input - * each time, until success or end of the input data. - */ -int inflateSync(z_streamp strm); - -/** - * Sets the destination stream as a complete copy of the source stream. - * - * This function can be useful when randomly accessing a large stream. - * The first pass through the stream can periodically record the inflate - * state, allowing restarting inflate at those points when randomly - * accessing the stream. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * Z_STREAM_ERROR if the source stream state was inconsistent (such - * as zalloc being Z_NULL). msg is left unchanged in both source and - * destination. - */ -int inflateCopy(z_streamp dest, z_streamp source); - -/** - * This function is equivalent to inflateEnd followed by inflateInit, - * but does not free and reallocate the internal decompression state. The - * stream will keep attributes that may have been set by inflateInit2. - * - * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state - * was inconsistent (such as zalloc or state being Z_NULL). - */ -int inflateReset(z_streamp strm); - -/** - * This function is the same as inflateReset, but it also permits changing - * the wrap and window size requests. The windowBits parameter is interpreted - * the same as it is for inflateInit2. If the window size is changed, then the - * memory allocated for the window is freed, and the window will be reallocated - * by inflate() if needed. - * - * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state - * was inconsistent (such as zalloc or state being Z_NULL), or if - * the windowBits parameter is invalid. - */ -int inflateReset2(z_streamp strm, int windowBits); - -/** - * This function inserts bits in the inflate input stream. The intent is - * that this function is used to start inflating at a bit position in the - * middle of a byte. The provided bits will be used before any bytes are used - * from next_in. This function should only be used with raw inflate, and - * should be used before the first inflate() call after inflateInit2() or - * inflateReset(). bits must be less than or equal to 16, and that many of the - * least significant bits of value will be inserted in the input. - * - * If bits is negative, then the input stream bit buffer is emptied. Then - * inflatePrime() can be called again to put bits in the buffer. This is used - * to clear out bits leftover after feeding inflate a block description prior - * to feeding inflate codes. - * - * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state - * was inconsistent. - */ -int inflatePrime(z_streamp strm, int bits, int value); - -/** - * Returns two values, one in the lower 16 bits of the return value, and - * the other in the remaining upper bits, obtained by shifting the - * return value down 16 bits. If the upper value is -1 and the lower - * value is zero, then inflate() is currently decoding information - * outside of a block. If the upper value is -1 and the lower value is - * non-zero, then inflate is in the middle of a stored block, with the - * lower value equaling the number of bytes from the input remaining to - * copy. If the upper value is not -1, then it is the number of bits - * back from the current bit position in the input of the code (literal - * or length/distance pair) currently being processed. In that case the - * lower value is the number of bytes already emitted for that code. - * - * A code is being processed if inflate is waiting for more input to - * complete decoding of the code, or if it has completed decoding but is - * waiting for more output space to write the literal or match data. - * - * inflateMark() is used to mark locations in the input data for random - * access, which may be at bit positions, and to note those cases where - * the output of a code may span boundaries of random access blocks. The - * current location in the input stream can be determined from avail_in - * and data_type as noted in the description for the Z_BLOCK flush - * parameter for inflate. - * - * @return the value noted above, or -65536 if the provided source - * stream state was inconsistent. - */ -long inflateMark(z_streamp strm); - -/** - * inflateGetHeader() requests that gzip header information be stored in - * the provided gz_header structure. inflateGetHeader() may be called - * after inflateInit2() or inflateReset(), and before the first call of - * inflate(). As inflate() processes the gzip stream, head->done is zero - * until the header is completed, at which time head->done is set to - * one. If a zlib stream is being decoded, then head->done is set to -1 - * to indicate that there will be no gzip header information - * forthcoming. Note that Z_BLOCK or Z_TREES can be used to force - * inflate() to return immediately after header processing is complete - * and before any actual data is decompressed. - * - * The text, time, xflags, and os fields are filled in with the gzip - * header contents. hcrc is set to true if there is a header CRC. (The - * header CRC was valid if done is set to one.) If extra is not Z_NULL, - * then extra_max contains the maximum number of bytes to write to - * extra. Once done is true, extra_len contains the actual extra field - * length, and extra contains the extra field, or that field truncated - * if extra_max is less than extra_len. If name is not Z_NULL, then up - * to name_max characters are written there, terminated with a zero - * unless the length is greater than name_max. If comment is not Z_NULL, - * then up to comm_max characters are written there, terminated with a - * zero unless the length is greater than comm_max. When any of extra, - * name, or comment are not Z_NULL and the respective field is not - * present in the header, then that field is set to Z_NULL to signal its - * absence. This allows the use of deflateSetHeader() with the returned - * structure to duplicate the header. However if those fields are set to - * allocated memory, then the application will need to save those - * pointers elsewhere so that they can be eventually freed. - * - * If inflateGetHeader is not used, then the header information is - * simply discarded. The header is always checked for validity, - * including the header CRC if present. inflateReset() will reset the - * process to discard the header information. The application would need - * to call inflateGetHeader() again to retrieve the header from the next - * gzip stream. - * - * @return Z_OK if success, or Z_STREAM_ERROR if the source stream state - * was inconsistent. - */ -int inflateGetHeader(z_streamp strm, gz_headerp head); - -/** - * Initialize internal stream state for decompression using - * inflateBack() calls. The fields zalloc, zfree and opaque in strm must - * be initialized before the call. If zalloc and zfree are Z_NULL, then - * the default library- derived memory allocation routines are used. - * windowBits is the base two logarithm of the window size, in the range - * 8..15. window is a caller supplied buffer of that size. Except for - * special applications where it is assured that deflate was used with - * small window sizes, windowBits must be 15 and a 32K byte window must - * be supplied to be able to decompress general deflate streams. - * - * See inflateBack() for the usage of these routines. - * - * @return Z_OK on success, Z_STREAM_ERROR if any of the parameters are - * invalid, or Z_MEM_ERROR if the internal state could not be - * allocated. - */ -int inflateBackInit(z_streamp strm, int windowBits, unsigned char *window); - -typedef unsigned (*in_func)(void *, const unsigned char **); -typedef int (*out_func)(void *, unsigned char *, unsigned); - -/** - * inflateBack() does a raw inflate with a single call using a call-back - * interface for input and output. This is potentially more efficient - * than inflate() for file i/o applications, in that it avoids copying - * between the output and the sliding window by simply making the window - * itself the output buffer. inflate() can be faster on modern CPUs when - * used with large buffers. inflateBack() trusts the application to not - * change the output buffer passed by the output function, at least - * until inflateBack() returns. - * - * inflateBackInit() must be called first to allocate the internal state - * and to initialize the state with the user-provided window buffer. - * inflateBack() may then be used multiple times to inflate a complete, - * raw deflate stream with each call. inflateBackEnd() is then called to - * free the allocated state. - * - * A raw deflate stream is one with no zlib or gzip header or trailer. - * This routine would normally be used in a utility that reads zip or - * gzip files and writes out uncompressed files. The utility would - * decode the header and process the trailer on its own, hence this - * routine expects only the raw deflate stream to decompress. This is - * different from the default behavior of inflate(), which expects a - * zlib header and trailer around the deflate stream. - * - * inflateBack() uses two subroutines supplied by the caller that are - * then called by inflateBack() for input and output. inflateBack() - * calls those routines until it reads a complete deflate stream and - * writes out all of the uncompressed data, or until it encounters an - * error. The function's parameters and return types are defined above - * in the in_func and out_func typedefs. inflateBack() will call - * in(in_desc, &buf) which should return the number of bytes of provided - * input, and a pointer to that input in buf. If there is no input - * available, in() must return zero -- buf is ignored in that case -- - * and inflateBack() will return a buffer error. inflateBack() will call - * out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. - * out() should return zero on success, or non-zero on failure. If out() - * returns non-zero, inflateBack() will return with an error. Neither - * in() nor out() are permitted to change the contents of the window - * provided to inflateBackInit(), which is also the buffer that out() - * uses to write from. The length written by out() will be at most the - * window size. Any non-zero amount of input may be provided by in(). - * - * For convenience, inflateBack() can be provided input on the first - * call by setting strm->next_in and strm->avail_in. If that input is - * exhausted, then in() will be called. Therefore strm->next_in must be - * initialized before calling inflateBack(). If strm->next_in is Z_NULL, - * then in() will be called immediately for input. If strm->next_in is - * not Z_NULL, then strm->avail_in must also be initialized, and then if - * strm->avail_in is not zero, input will initially be taken from - * strm->next_in[0 .. strm->avail_in - 1]. - * - * The in_desc and out_desc parameters of inflateBack() is passed as the - * first parameter of in() and out() respectively when they are called. - * These descriptors can be optionally used to pass any information that - * the caller- supplied in() and out() functions need to do their job. - * - * On return, inflateBack() will set strm->next_in and strm->avail_in to - * pass back any unused input that was provided by the last in() call. - * The return values of inflateBack() can be Z_STREAM_END on success, - * Z_BUF_ERROR if in() or out() returned an error, Z_DATA_ERROR if there - * was a format error in the deflate stream (in which case strm->msg is - * set to indicate the nature of the error), or Z_STREAM_ERROR if the - * stream was not properly initialized. In the case of Z_BUF_ERROR, an - * input or output error can be distinguished using strm->next_in which - * will be Z_NULL only if in() returned an error. If strm->next_in is - * not Z_NULL, then the Z_BUF_ERROR was due to out() returning non-zero. - * (in() will always be called before out(), so strm->next_in is assured - * to be defined if out() returns non-zero.) Note that inflateBack() - * cannot return Z_OK. - */ -int inflateBack(z_streamp strm, in_func in, void *in_desc, out_func out, - void *out_desc); - -/** - * All memory allocated by inflateBackInit() is freed. - * - * @return Z_OK on success, or Z_STREAM_ERROR if the stream state was - * inconsistent. - */ -int inflateBackEnd(z_streamp strm); - -/* - * Return flags indicating compile-time options. - * - * Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - * 1.0: size of uInt - * 3.2: size of uLong - * 5.4: size of voidpf (pointer) - * 7.6: size of off_t - * - * Compiler, assembler, and debug options: - * 8: ZLIB_DEBUG - * 9: ASMV or ASMINF -- use ASM code - * 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - * 11: 0 (reserved) - * - * One-time table building (smaller code, but not thread-safe if true): - * 12: BUILDFIXED -- build static block decoding tables when needed - * 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - * 14,15: 0 (reserved) - * - * Library content (indicates missing functionality): - * - * 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - * deflate code when not needed) - * - * 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't - * detect and decode gzip streams (to avoid linking crc code) - * - * 18-19: 0 (reserved) - * - * Operation variations (changes in library functionality): - * 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - * 21: FASTEST -- deflate algorithm with only one, lowest compression level - * 22,23: 0 (reserved) - * - * The sprintf variant used by gzprintf (zero is best): - * 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - * 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - * 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - * - * Remainder is: - * 27-31: 0 (reserved) - */ -uLong zlibCompileFlags(void); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § zlib » utility functions ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default - options are assumed (compression level and memory usage, standard - memory allocation functions). The source code of these utility - functions can be modified if you need special options. */ - -/** - * Compresses source buffer into the destination buffer. sourceLen is - * the byte length of the source buffer. Upon entry, destLen is the - * total size of the destination buffer, which must be at least the - * value returned by compressBound(sourceLen). Upon exit, destLen is the - * actual size of the compressed data. compress() is equivalent to - * compress2() with a level parameter of Z_DEFAULT_COMPRESSION. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * Z_BUF_ERROR if there was not enough room in the output buffer. - */ -int compress(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen); - -/** - * Compresses source buffer into the destination buffer. The level - * parameter has the same meaning as in deflateInit. sourceLen is the - * byte length of the source buffer. Upon entry, destLen is the total - * size of the destination buffer, which must be at least the value - * returned by compressBound(sourceLen). Upon exit, destLen is the - * actual size of the compressed data. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * Z_BUF_ERROR if there was not enough room in the output buffer, - * Z_STREAM_ERROR if the level parameter is invalid. - */ -int compress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen, int level); - -/** - * Returns an upper bound on the compressed size after compress() or - * compress2() on sourceLen bytes. It would be used before a compress() - * or compress2() call to allocate the destination buffer. - */ -uLong compressBound(uLong sourceLen); - -/** - * Decompresses the source buffer into the destination buffer. sourceLen is - * the byte length of the source buffer. Upon entry, destLen is the total size - * of the destination buffer, which must be large enough to hold the entire - * uncompressed data. (The size of the uncompressed data must have been saved - * previously by the compressor and transmitted to the decompressor by some - * mechanism outside the scope of this compression library.) Upon exit, destLen - * is the actual size of the uncompressed data. - * - * @return Z_OK if success, Z_MEM_ERROR if there was not enough memory, - * Z_BUF_ERROR if there was not enough room in the output buffer, or - * Z_DATA_ERROR if the input data was corrupted or incomplete. In - * the case where there is not enough room, uncompress() will fill - * the output buffer with the uncompressed data up to that point. - */ -int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen); - -/** - * Same as uncompress, except that sourceLen is a pointer, where the - * length of the source is *sourceLen. On return, *sourceLen is the number of - * source bytes consumed. - */ -int uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong *sourceLen); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § zlib » gzip ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│─╝ - This library supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio, using the functions that - start with "gz". The gzip format is different from the zlib format. - gzip is a gzip wrapper, documented in RFC 1952, wrapped around a - deflate stream. */ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/** - * Opens a gzip (.gz) file for reading or writing. - * - * The mode parameter is as in fopen ("rb" or "wb") but can also include - * a compression level ("wb9") or a strategy: 'f' for filtered data as - * in "wb6f", 'h' for Huffman-only compression as in "wb1h", 'R' for - * run-length encoding as in "wb1R", or 'F' for fixed code compression - * as in "wb9F". (See the description of deflateInit2 for more - * information about the strategy parameter.) 'T' will request - * transparent writing or appending with no compression and not using - * the gzip format. - * - * "a" can be used instead of "w" to request that the gzip stream that - * will be written be appended to the file. "+" will result in an error, - * since reading and writing to the same gzip file is not supported. The - * addition of "x" when writing will create the file exclusively, which - * fails if the file already exists. On systems that support it, the - * addition of "e" when reading or writing will set the flag to close - * the file on an execve() call. - * - * These functions, as well as gzip, will read and decode a sequence of - * gzip streams in a file. The append function of gzopen() can be used - * to create such a file. (Also see gzflush() for another way to do - * this.) When appending, gzopen does not test whether the file begins - * with a gzip stream, nor does it look for the end of the gzip streams - * to begin appending. gzopen will simply append a gzip stream to the - * existing file. - * - * gzopen can be used to read a file which is not in gzip format; in - * this case gzread will directly read from the file without - * decompression. When reading, this will be detected automatically by - * looking for the magic two- byte gzip header. - * - * @return Z_OK if the file could not be opened, if there was insufficient - * memory to allocate the gzFile state, or if an invalid mode was - * specified (an 'r', 'w', or 'a' was not provided, or '+' was - * provided). errno can be checked to determine if the reason gzopen - * failed was that the file could not be opened. - */ -gzFile gzopen(const char *path, const char *mode); - -/** - * Associates gzFile with the file descriptor. - * - * File descriptors are obtained from calls like open, dup, creat, pipe - * or fileno (if the file has been previously opened with fopen). The - * mode parameter is as in gzopen. - * - * The next call of gzclose on the returned gzFile will also close the file - * descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - * fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - * mode);. The duplicated descriptor should be saved to avoid a leak, since - * gzdopen does not close fd if it fails. If you are using fileno() to get the - * file descriptor from a FILE *, then you will have to use dup() to avoid - * double-close()ing the file descriptor. Both gzclose() and fclose() will - * close the associated file descriptor, so they need to have different file - * descriptors. - * - * @return Z_OK if there was insufficient memory to allocate the gzFile - * state, if an invalid mode was specified (an 'r', 'w', or 'a' was - * not provided, or '+' was provided), or if fd is -1. The file - * descriptor is not used until the next gz* read, write, seek, or - * close operation, so gzdopen will not detect if fd is invalid - * (unless fd is -1). - */ -gzFile gzdopen(int fd, const char *mode); - -/** - * Sets internal buffer size used by this library's functions. The - * default buffer size is 8192 bytes. This function must be called after - * gzopen() or gzdopen(), and before any other calls that read or write - * the file. The buffer memory allocation is always deferred to the - * first read or write. Three times that size in buffer space is - * allocated. A larger buffer size of, for example, 64K or 128K bytes - * will noticeably increase the speed of decompression (reading). - * - * The new buffer size also affects the maximum length for gzprintf(). - * - * @return Z_OK on success, or -1 on failure, such as being called too - * late. - */ -int gzbuffer(gzFile file, unsigned size); - -/** - * Dynamically update the compression level or strategy. See the description - * of deflateInit2 for the meaning of these parameters. Previously provided - * data is flushed before the parameter change. - * - * @return Z_OK if success, Z_STREAM_ERROR if the file was not opened for - * writing, Z_ERRNO if there is an error writing the flushed data, - * or Z_MEM_ERROR if there is a memory allocation error. - */ -int gzsetparams(gzFile file, int level, int strategy); - -/** - * Reads given number of uncompressed bytes from the compressed file. If - * the input file is not in gzip format, gzread copies the given number - * of bytes into the buffer directly from the file. - * - * After reaching the end of a gzip stream in the input, gzread will continue - * to read, looking for another gzip stream. Any number of gzip streams may be - * concatenated in the input file, and will all be decompressed by gzread(). - * If something other than a gzip stream is encountered after a gzip stream, - * that remaining trailing garbage is ignored (and no error is returned). - * - * gzread can be used to read a gzip file that is being concurrently written. - * Upon reaching the end of the input, gzread will return with the available - * data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - * gzclearerr can be used to clear the end of file indicator in order to permit - * gzread to be tried again. Z_OK indicates that a gzip stream was completed - * on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - * middle of a gzip stream. Note that gzread does not return -1 in the event - * of an incomplete gzip stream. This error is deferred until gzclose(), which - * will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - * stream. Alternatively, gzerror can be used before gzclose to detect this - * case. - * - * @return Z_OK number of uncompressed bytes actually read, less than - * len for end of file, or -1 for error. If len is too large to fit - * in an int, then nothing is read, -1 is returned, and the error - * state is set to Z_STREAM_ERROR. - */ -int gzread(gzFile file, voidp buf, unsigned len); - -/** - * Read up to nitems items of size size from file to buf, otherwise operating - * as gzread() does. This duplicates the interface of stdio's fread(), with - * size_t request and return types. If the library defines size_t, then - * size_t is identical to size_t. If not, then size_t is an unsigned - * integer type that can contain a pointer. - * - * gzfread() returns the number of full items read of size size, or zero if - * the end of the file was reached and a full item could not be read, or if - * there was an error. gzerror() must be consulted if zero is returned in - * order to determine if there was an error. If the multiplication of size and - * nitems overflows, i.e. the product does not fit in a size_t, then nothing - * is read, zero is returned, and the error state is set to Z_STREAM_ERROR. - * - * In the event that the end of file is reached and only a partial item is - * available at the end, i.e. the remaining uncompressed data length is not a - * multiple of size, then the final partial item is nevetheless read into buf - * and the end-of-file flag is set. The length of the partial item read is not - * provided, but could be inferred from the result of gztell(). This behavior - * is the same as the behavior of fread() implementations in common libraries, - * but it prevents the direct use of gzfread() to read a concurrently written - * file, reseting and retrying on end-of-file, when size is not 1. - */ -size_t gzfread(voidp buf, size_t size, size_t nitems, gzFile file); - -/** - * Writes given number of uncompressed bytes into the compressed file. - * gzwrite returns the number of uncompressed bytes written or 0 in case - * of error. - */ -int gzwrite(gzFile file, voidpc buf, unsigned len); - -/** - * Writes nitems items of size size from buf to file, duplicating the - * interface of stdio's fwrite(), with size_t request and return types. - * If the library defines size_t, then size_t is identical to size_t. If - * not, then size_t is an unsigned integer type that can contain a - * pointer. - * - * gzfwrite() returns the number of full items written of size size, or zero - * if there was an error. If the multiplication of size and nitems overflows, - * i.e. the product does not fit in a size_t, then nothing is written, zero - * is returned, and the error state is set to Z_STREAM_ERROR. - */ -size_t gzfwrite(voidpc buf, size_t size, size_t nitems, gzFile file); - -/** - * Converts, formats, and writes the arguments to the compressed file - * under control of the format string, as in fprintf. gzprintf returns - * the number of uncompressed bytes actually written, or a negative zlib - * error code in case of error. The number of uncompressed bytes written - * is limited to 8191, or one less than the buffer size given to - * gzbuffer(). The caller should assure that this limit is not exceeded. - * If it is exceeded, then gzprintf() will return an error (0) with - * nothing written. In this case, there may also be a buffer overflow - * with unpredictable consequences, which is possible only if zlib was - * compiled with the insecure functions sprintf() or vsprintf() because - * the secure snprintf() or vsnprintf() functions were not available. - * This can be determined using zlibCompileFlags(). - */ -int gzprintf(gzFile file, const char *format, ...); - -/** - * Writes the given null-terminated string to the compressed file, excluding - * the terminating null character. - * - * @return Z_OK number of characters written, or -1 in case of error. - */ -int gzputs(gzFile file, const char *s); - -/** - * Reads bytes from the compressed file until len-1 characters are read, - * or a newline character is read and transferred to buf, or an - * end-of-file condition is encountered. If any characters are read or - * if len == 1, the string is terminated with a null character. If no - * characters are read due to an end-of-file or len < 1, then the buffer - * is left untouched. - * - * @return buf which is a null-terminated string, or it returns NULL for - * end-of-file or in case of error. If there was an error, the - * contents at buf are indeterminate. - */ -char *gzgets(gzFile file, char *buf, int len); - -/** - * Writes character converted to an unsigned char into compressed file. - * @return value that was written, or -1 on error - */ -int gzputc(gzFile file, int c); - -/** - * Reads one byte from the compressed file. gzgetc returns this byte or - * -1 in case of end of file or error. This is implemented as a macro - * for speed. As such, it does not do all of the checking the other - * functions do. I.e. it does not check to see if file is NULL, nor - * whether the structure file points to has been clobbered or not. - */ -int gzgetc(gzFile file); - -/** - * Pushes one character back onto the stream to be read as the first - * character on the next read. At least one character of push-back is - * allowed. gzungetc() returns the character pushed, or -1 on failure. - * gzungetc() will fail if c is -1, and may fail if a character has been - * pushed but not read yet. If gzungetc is used immediately after gzopen - * or gzdopen, at least the output buffer size of pushed characters is - * allowed. (See gzbuffer above.) The pushed character will be discarded - * if the stream is repositioned with gzseek() or gzrewind(). - */ -int gzungetc(int c, gzFile file); - -/** - * Flushes all pending output into the compressed file. The parameter - * flush is as in the deflate() function. The return value is the zlib - * error number (see function gzerror below). gzflush is only permitted - * when writing. - * - * If the flush parameter is Z_FINISH, the remaining data is written and - * the gzip stream is completed in the output. If gzwrite() is called - * again, a new gzip stream will be started in the output. gzread() is - * able to read such concatenated gzip streams. - * - * gzflush should be called only when strictly necessary because it will - * degrade compression if called too often. - */ -int gzflush(gzFile file, int flush); - -/** - * Sets starting position for the next gzread or gzwrite on the given - * compressed file. The offset represents a number of bytes in the - * uncompressed data stream. The whence parameter is defined as in - * lseek(2); the value SEEK_END is not supported. - * - * If the file is opened for reading, this function is emulated but can be - * extremely slow. If the file is opened for writing, only forward seeks are - * supported; gzseek then compresses a sequence of zeroes up to the new - * starting position. - * - * @return resulting offset location as measured in bytes from the - * beginning of the uncompressed stream, or -1 in case of error, in - * particular if the file is opened for writing and the new starting - * position would be before the current position. - */ -ssize_t gzseek(gzFile file, int64_t offset, int whence); - -/** - * Rewinds file. - * - * This function is supported only for reading. - * - * @note gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) - */ -int gzrewind(gzFile file); - -/** - * Returns starting position for the next gzread or gzwrite on the given - * compressed file. This position represents a number of bytes in the - * uncompressed data stream, and is zero when starting, even if - * appending or reading a gzip stream from the middle of a file using - * gzdopen(). - * - * @note gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) - */ -ssize_t gztell(gzFile file); - -/** - * Returns current offset in the file being read or written. This offset - * includes the count of bytes that precede the gzip stream, for example - * when appending or when using gzdopen() for reading. When reading, the - * offset does not include as yet unused buffered input. This - * information can be used for a progress indicator. On error, - * gzoffset() returns -1. - */ -ssize_t gzoffset(gzFile file); - -/** - * Returns true (1) if the end-of-file indicator has been set while - * reading, false (0) otherwise. Note that the end-of-file indicator is - * set only if the read tried to go past the end of the input, but came - * up short. Therefore, just like feof(), gzeof() may return false even - * if there is no more data to read, in the event that the last read - * request was for the exact number of bytes remaining in the input - * file. This will happen if the input file size is an exact multiple of - * the buffer size. - * - * If gzeof() returns true, then the read functions will return no more - * data, unless the end-of-file indicator is reset by gzclearerr() and - * the input file has grown since the previous end of file was detected. - */ -int gzeof(gzFile file); - -/** - * Returns true (1) if file is being copied directly while reading, or - * false (0) if file is a gzip stream being decompressed. - * - * If the input file is empty, gzdirect() will return true, since the - * input does not contain a gzip stream. - * - * If gzdirect() is used immediately after gzopen() or gzdopen() it will - * cause buffers to be allocated to allow reading the file to determine - * if it is a gzip file. Therefore if gzbuffer() is used, it should be - * called before gzdirect(). - * - * When writing, gzdirect() returns true (1) if transparent writing was - * requested ("wT" for the gzopen() mode), or false (0) otherwise. - * (Note: gzdirect() is not needed when writing. Transparent writing - * must be explicitly requested, so the application already knows the - * answer. When linking statically, using gzdirect() will include all of - * the zlib code for gzip file reading and decompression, which may not - * be desired.) - */ -int gzdirect(gzFile file); - -/** - * Flushes all pending output if necessary, closes the compressed file - * and deallocates the (de)compression state. Note that once file is - * closed, you cannot call gzerror with file, since its structures have - * been deallocated. gzclose must not be called more than once on the - * same file, just as free must not be called more than once on the same - * allocation. - * - * @return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a file - * operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - * last read ended in the middle of a gzip stream, or Z_OK on - * success. - */ -int gzclose(gzFile file); - -/** - * Same as gzclose(), but gzclose_r() is only for use when reading, and - * gzclose_w() is only for use when writing or appending. The advantage - * to using these instead of gzclose() is that they avoid linking in - * zlib compression or decompression code that is not used when only - * reading or only writing respectively. If gzclose() is used, then both - * compression and decompression code will be included the application - * when linking to a static zlib library. - */ -int gzclose_r(gzFile file); -int gzclose_w(gzFile file); - -/** - * Returns the error message for the last error which occurred on the given - * compressed file. errnum is set to zlib error number. If an error occurred - * in the file system and not in the compression library, errnum is set to - * Z_ERRNO and the application may consult errno to get the exact error code. - * - * The application must not modify the returned string. Future calls to - * this function may invalidate the previously returned string. If file is - * closed, then the string previously returned by gzerror will no longer be - * available. - * - * gzerror() should be used to distinguish errors from end-of-file for those - * functions above that do not distinguish those cases in their return values. - */ -const char *gzerror(gzFile file, int *errnum); - -/** - * Clears the error and end-of-file flags for file. This is analogous to the - * clearerr() function in stdio. This is useful for continuing to read a gzip - * file that is being written concurrently. - */ -void gzclearerr(gzFile file); - -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § zlib » checksums ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ - -/** - * Updates running Adler-32 checksum with the bytes buf[0..len-1] and - * return the updated checksum. If buf is Z_NULL, this function returns - * the required initial value for the checksum. - */ -uLong adler32(uLong adler, const Bytef *buf, uInt len); - -/** - * Same as adler32(), but with a size_t length. - */ -uLong adler32_z(uLong adler, const Bytef *buf, size_t len); - -/** - * Combine two Adler-32 checksums into one. For two sequences of bytes, - * seq1 and seq2 with lengths len1 and len2, Adler-32 checksums were - * calculated for each, adler1 and adler2. adler32_combine() returns the - * Adler-32 checksum of seq1 and seq2 concatenated, requiring only - * adler1, adler2, and len2. Note that the off_t type (like off_t) is a - * signed integer. If len2 is negative, the result has no meaning or - * utility. - */ -uLong adler32_combine(uLong adler1, uLong adler2, int64_t len2); - -/** - * Update a running CRC-32 with the bytes buf[0..len-1] and return the - * updated CRC-32. If buf is Z_NULL, this function returns the required - * initial value for the crc. Pre- and post-conditioning (one's complement) is - * performed within this function so it shouldn't be done by the application. - * - * Usage example: - * - * uLong crc = crc32(0L, Z_NULL, 0); - * while (read_buffer(buffer, length) != EOF) { - * crc = crc32(crc, buffer, length); - * } - * if (crc != original_crc) error(); - */ -uLong crc32(uLong crc, const Bytef *buf, uInt len); - -/** - * Combine two CRC-32 check values into one. For two sequences of bytes, - * seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - * calculated for each, crc1 and crc2. crc32_combine() returns the - * CRC-32 check value of seq1 and seq2 concatenated, requiring only - * crc1, crc2, and len2. - */ -uLong crc32_combine(uLong crc1, uLong crc2, int64_t len2); - -/** - * gzgetc() macro and its supporting function and exposed data - * structure. Note that the real internal state is much larger than the - * exposed structure. This abbreviated structure exposes just enough for - * the gzgetc() macro. The user should not mess with these exposed - * elements, since their names or behavior could change in the future, - * perhaps even capriciously. They can only be used by the gzgetc() - * macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - int64_t pos; -}; - -int gzgetc_(gzFile file); /* backward compatibility */ -#ifdef Z_PREFIX_SET -#undef z_gzgetc -#define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#elif defined(Z_CR_PREFIX_SET) -#undef gzgetc -#define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (Cr_z_gzgetc)(g)) -#else -#define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#endif - -/* undocumented functions */ -const char *zError(int); -int inflateSyncPoint(z_streamp); -int inflateUndermine(z_streamp, int); -int inflateValidate(z_streamp, int); -unsigned long inflateCodesUsed(z_streamp); -int inflateResetKeep(z_streamp); -int deflateResetKeep(z_streamp); -int gzvprintf(gzFile file, const char *format, va_list va); -void inflate_fast_chunk(z_streamp strm, unsigned start); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - - -/*!BEGIN third_party/regex/regex.h */ - -#define COSMOPOLITAN_LIBC_REGEX_REGEX_H_ -#if !(__ASSEMBLER__ + __LINKER__ + 0) -COSMOPOLITAN_C_START_ - -#if 0 -/*───────────────────────────────────────────────────────────────────────────│─╗ -│ cosmopolitan § regular expressions ─╬─│┼ -╚────────────────────────────────────────────────────────────────────────────│*/ -#endif - -#define REG_EXTENDED 1 -#define REG_ICASE 2 -#define REG_NEWLINE 4 -#define REG_NOSUB 8 - -#define REG_NOTBOL 1 /* ^ should not match beginning of string */ -#define REG_NOTEOL 2 /* $ should not match end of string */ - -#define REG_OK 0 -#define REG_NOMATCH 1 -#define REG_BADPAT 2 -#define REG_ECOLLATE 3 -#define REG_ECTYPE 4 -#define REG_EESCAPE 5 -#define REG_ESUBREG 6 -#define REG_EBRACK 7 -#define REG_EPAREN 8 -#define REG_EBRACE 9 -#define REG_BADBR 10 -#define REG_ERANGE 11 -#define REG_ESPACE 12 -#define REG_BADRPT 13 - -#define REG_ENOSYS -1 - -typedef long regoff_t; - -struct PosixRegex { - size_t re_nsub; - void *__opaque, *__padding[4]; - size_t __nsub2; - char __padding2; -}; - -struct PosixRegexMatch { - regoff_t rm_so; - regoff_t rm_eo; -}; - -typedef struct PosixRegex regex_t; -typedef struct PosixRegexMatch regmatch_t; - -int regcomp(regex_t *, const char *, int); -int regexec(const regex_t *, const char *, size_t, regmatch_t *, int); -size_t regerror(int, const regex_t *, char *, size_t); -void regfree(regex_t *); - -COSMOPOLITAN_C_END_ -#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ - -#endif /* COSMOPOLITAN_H_ */ diff --git a/DtsodC/cosmopolitan/crt.o b/DtsodC/cosmopolitan/crt.o deleted file mode 100644 index baac214..0000000 Binary files a/DtsodC/cosmopolitan/crt.o and /dev/null differ diff --git a/DtsodC/src/base/std.h b/DtsodC/src/base/std.h index e7af73e..f644107 100644 --- a/DtsodC/src/base/std.h +++ b/DtsodC/src/base/std.h @@ -1,19 +1,14 @@ #pragma once - -#if COSMOPOLITAN - #include "../../cosmopolitan/cosmopolitan.h" -#else - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include -#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #define CHOOSE(B, Y, N) __builtin_choose_expr(B, Y, N) #define IFTYPE(X, T) __builtin_types_compatible_p(typeof(X), T)