From 39cf398b540b62077fbb9a64aa06a027523967bd Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Mon, 19 May 2008 23:09:37 -0600 Subject: [PATCH] Imported Upstream version 3.7 --- ChangeLog | 74 + Make.defaults | 11 +- Make.rules | 3 + Makefile | 6 + README | 15 +- README.gnu-efi | 34 + alloc.c | 19 +- alternate.c | 7 +- bootparams.c | 2 +- choosers/simple.c | 11 +- choosers/textmenu.c | 15 +- config.c | 13 +- cscope.out | 135421 +++++++++++++++++++++++++++++++++++++++ docs/elilo.txt | 46 +- elf.h | 1 + elilo.c | 22 +- fileops.c | 13 +- fs/ext2fs.c | 13 +- fs/localfs.c | 33 +- fs/netfs.c | 23 +- getopt.c | 3 +- glue_netfs.c | 6 + sysdeps.h | 6 + util.c | 34 +- x86_64/Makefile | 52 + x86_64/bin_to_h.c | 27 + x86_64/bzimage.c | 224 + x86_64/config.c | 102 + x86_64/gzip.c | 557 + x86_64/gzip.h | 40 + x86_64/gzip_loader.c | 83 + x86_64/inflate.c | 1205 + x86_64/plain_loader.c | 302 + x86_64/private.h | 35 + x86_64/rmswitch.S | 118 + x86_64/sysdeps.h | 451 + x86_64/system.c | 772 + 37 files changed, 139707 insertions(+), 92 deletions(-) create mode 100644 cscope.out create mode 100644 x86_64/Makefile create mode 100644 x86_64/bin_to_h.c create mode 100644 x86_64/bzimage.c create mode 100644 x86_64/config.c create mode 100644 x86_64/gzip.c create mode 100644 x86_64/gzip.h create mode 100644 x86_64/gzip_loader.c create mode 100644 x86_64/inflate.c create mode 100644 x86_64/plain_loader.c create mode 100644 x86_64/private.h create mode 100644 x86_64/rmswitch.S create mode 100644 x86_64/sysdeps.h create mode 100644 x86_64/system.c diff --git a/ChangeLog b/ChangeLog index d2cbe27..1a08d9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,77 @@ +2007-07-19 Jason Fleischli + * Integrated x86_64 support patches from Chandramouli Narayanan + changes summarized in following bullets. + * alloc.c -- adds patch contributors credit to copyright + * alloc.c -- adds uefi_call_wrapper around BS->function calls + * alloc.c -- adds call to Print on VERB_PRT + * alternate.c -- adds patch contributors credit around copyright + * alternate.c -- adds uefi_call_wrapper around RT->function calls + * simple.c -- adds patch contributors credit to copyright + * simple.c -- adds uefi_call_wrapper around ip->ReadKeyStroke + * textmenu.c -- adds patch contributors credit to copyright + * textmenu.c -- adds uefi_call_wrapper around ClearScreen & + SetTextAttr + * textmenu.c -- adds uefi_call_wrapper around ip->ReadKeyStroke + * elilo.c -- adds patch contributors credit to copyright + * elilo.c -- fixes version number for ELILO_VERSION macro to current + * elilo.c -- adds uefi_call_wrapper around BS->function calls + * elilo.c -- adds uefi_call_wrapper around RT->function calls + * fileops.c -- adds patch contributors credit to copyright + * fileops.c -- adds uefi_call_wrapper around BS->function calls + * fileops.c -- adds uefi_call_wrapper around RT->function calls + * fileops.c -- adds uefi_call_wrapper around blkio->function calls + * localfs.c -- adds patch contributors credit to copyright + * localfs.c -- changed EFI_HANDLE *dev declaration to non-pointer type + * localfs.c -- adds uefi_call_wrapper around lfs->volume->functions + * localfs.c -- adds uefi_call_wrapper around BS->function calls + * netfs.c -- adds patch contributors credit to copyright + * netfs.c -- adds uefi_call_wrapper around nfs->pxe->function calls + * netfs.c -- adds uefi_call_wrapper around BS->function calls + * getopt.c -- changed int to char in StrChr() function + * Make.defaults -- adds patch contributors credit to copyright + * Make.defaults -- adds cflag for efi function wrapper + * Makefile -- adds patch contributors credit to copyright + * Makefile -- x86_64 subdir and a new rule for .S + * util.c -- adds patch contributors credit to copyright + * util.c -- adds uefi_call_wrapper to systab->functions + * util.c -- adds uefi_call_wrapper to conin->functions + * util.c -- adds uefi_call_wrapper to BS->functions + * util.c -- doubles ELILO_MEMMAP_SIZE_DEFAULT in get_memmap() function + * bootparams.c -- uses ia32 params for x86_64 addition.. hmmmm? + * config.c -- adds patch contributors credit to copyright + * config.c -- adds define reference for x86_64.conf + * config.c -- in config_error() removes use of va_list which maps to + the gnu C-lib iface __gnuc_va_list. Replaces the use of _IPrint on + the va_list with direct use of IPrint(systab->ConOut, msg); + *maintainer note, this probably introduces a bug, in light of this + note from the patch submitter --> "On some x86_64 systems with + EFI1.10 firmware I tested, early boot messages did not appear on console. + However, I didn't encounter this behavior on x86_64 systems with UEFI2.0 + firmware" + * elf.h -- adds #def for x86_64 + * glue_netfs.c -- adds patch contributors credit to copyright + * glue_netfs.c -- adds define for x86_64.conf + * sysdeps.h -- adds patch contributors credit to copyright + * sysdeps.h -- add include reference for new x86_64 subdir + * x86_64/ -- new subdir - all based on elilo/ia32 subdir + * x86_64/bin_to_h.c -- new file, stream fed binary to hex converter + * x86_64/bzimage.c -- new file, binary compressed kernel support + * x86_64/gzip.c -- new file, embedded gzip + * x86_64/gzip_loader.c -- new file, embedded gzip + * x86_64/gzip.h -- new file, embedded gzip + * x86_64/inflate.c -- new file, a pkzip method 8 embedded decompressor + * x86_64/Makefile -- new file + * x86_64/plain_loader.c -- new file, for loading non-compressed kernels + * x86_64/private.h -- new file + * x86_64/rmswitch.S -- new file, RealMode assembly module + * x86_64/sysdeps.h -- new file, system stuff for x86_64, e820 mapping + added. + * x86_64/sysdeps.c -- new file, system stuff for x86_64 + * elilo.txt -- documentation update, add Intel to copyright + * README.gnu-efi -- documentation update for x86_64 +2006-01-27 Alex Williamson + * Found a couple more places where vmcode isn't zeroed, causing the + option to get carried over to labels it shouldn't. 2006-01-09 Brett Johnson * Released 3.6 2005-12-22 Alex Williamson diff --git a/Make.defaults b/Make.defaults index 0a90776..0558a58 100644 --- a/Make.defaults +++ b/Make.defaults @@ -1,6 +1,7 @@ # # Copyright (C) 2001-2003 Hewlett-Packard Co. # Contributed by Stephane Eranian +# Contributed by Chandramouli Narayanan # # This file is part of ELILO, the LINUX EFI boot loader. # @@ -54,7 +55,7 @@ CONFIG_machspec_netconfig=y # They are installed as part of the GNU-EFI package installation # EFIINC = /usr/include/efi -GNUEFILIB = /usr/lib +GNUEFILIB = /usr/lib EFILIB = /usr/lib EFICRT0 = /usr/lib @@ -67,7 +68,7 @@ CPPFLAGS = -DCONFIG_$(ARCH) OPTIMFLAGS = -O2 DEBUGFLAGS = -Wall -CFLAGS = $(OPTIMFLAGS) -fpic -fshort-wchar $(DEBUGFLAGS) +CFLAGS = $(OPTIMFLAGS) -fpic -fshort-wchar $(DEBUGFLAGS) LDFLAGS = -nostdlib -znocombreloc INSTALL = install @@ -105,6 +106,12 @@ AR = $(prefix)ar RANLIB = $(prefix)ranlib OBJCOPY = $(prefix)objcopy +# Use Modified binutils that supports x86_64 using UEFI ABI +ifeq ($(ARCH), x86_64) + CFLAGS += -DEFI_FUNCTION_WRAPPER + OBJCOPY = /usr/bin/objcopy +endif + ifeq ($(ARCH),ia64) GCC_VERSION=$(shell $(CROSS_COMPILE)$(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.') diff --git a/Make.rules b/Make.rules index 2f4ade2..c9c87c8 100644 --- a/Make.rules +++ b/Make.rules @@ -32,4 +32,7 @@ %.o: %.c $(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ +# a rule for .S +%.o: %.S + $(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ diff --git a/Makefile b/Makefile index 5015faf..73dc4d4 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ # # Copyright (C) 2001-2003 Hewlett-Packard Co. # Contributed by Stephane Eranian +# Contributed by Fenghua Yu +# Contributed by Chandramouli Narayanan # # This file is part of ELILO, the LINUX EFI boot loader. # @@ -58,6 +60,10 @@ ifeq ($(ARCH),ia32) SUBDIRS += ia32 endif +ifeq ($(ARCH),x86_64) +SUBDIRS += x86_64 +endif + FILES = elilo.o getopt.o strops.o loader.o \ fileops.o util.o vars.o alloc.o chooser.o \ config.o initrd.o alternate.o bootparams.o \ diff --git a/README b/README index 29724e7..92d29ef 100644 --- a/README +++ b/README @@ -1,14 +1,15 @@ - ELILO: the IA-32 and IA-64 Linux Loader - --------------------------------------- + ELILO: the IA-32,IA-64 and x86_64 Linux Loader + ---------------------------------------------- Stephane Eranian August 2003 Copyright (C) 2000-2003 Hewlett-Packard Co. + Copyright (C) 2006-2010 Intel Co. -This package contains version 3.4 of elilo, the EFI boot loader -for IA-64(IPF) and IA-32(x86) EFI-based platforms. +This package contains version 3.7 of elilo, the EFI boot loader +for IA-64(IPF),IA-32(x86) and x86_64 EFI-based platforms. RELEASE NOTES: @@ -65,6 +66,12 @@ RELEASE NOTES: The Redhat 9.0 toolchain does not work at the moment. + For x86_64, a toolchain known to produce working binaries is: + gcc-4.1.1 or above + binutils-2.17.50.0.14 with Intel64 EFI support + For x86_64, the following libraries are required for the elilo build + gnu-efi library with x86_64 + DOCUMENTATION: -------------- PLEASE READ THE docs/elilo.txt file for some documentation on how diff --git a/README.gnu-efi b/README.gnu-efi index 1653032..7007f09 100644 --- a/README.gnu-efi +++ b/README.gnu-efi @@ -1,5 +1,6 @@ IMPORTANT Information related to the gnu-efi package + and x86_64 efi support ---------------------------------------------------- August 2003 @@ -12,6 +13,10 @@ As of version elilo-3.0, the gnu-efi package is now split in two different packa Note that X.y don't need to match for both packages. However elilo-3.x requires at least gnu-efi >= 3.0. When using a version of gcc >3.0 you MUST use at least gnu-efi-3.0a. +Note that EFI support for x86_64 has been added as a patch to gnu-efi-3.0c. + +For x86_64, see the important notes under x86_64. + IMPORTANT NOTE FOR IA-32: ------------------------- For IA-32, the Redhat 8.0 toolchain is known to produce @@ -29,3 +34,32 @@ IMPORTANT NOTE FOR IA-32: The gnu-efi package can be downloaded from: ftp://ftp.hpl.hp.com/pub/linux-ia64/gnu-efi-X.y.tar.gz + +IMPORTANT NOTE FOR x86_64: +------------------------- + + EFI x86_64 elilo support requires the following libraries: + + 1. gnu-efi-3.0c library with x86_64 support. + + 2. The toolchain known to produce working x86_64 efi binary are: + + gcc-4.1.1 or above + binutils-2.17.50.0.14 with Intel64 EFI support + + Implementation: + -------------- + Calls to EFI services in x86_64 require a wrapper to pass the arguments + in the appropriate manner. This is implemented with efi wrapper. + For IA32 and IA64, the wrapper is a macro that merely calls the + EFI services directly. The elilo source has been modified to use the + efi wrapper implemented in gnu-efi-3.0c library. + elilo for x86_64 and its dependent libraries are built and the final + ELF image is converted into PE-COFF image using the objcopy supported + by binutils-2.17.50.0.14 or above with Intel64 EFI support. + + On UEFI 2.0 firmware, only Graphics Output Protocol (GOP) is supported. + The x86_64 elilo first queries video information from GOP failing which + it queries for text mode support. The video information is passed to + Linux kernel via boot parameter. The GOP support requires + Linux kernel EFI framebuffer driver (kernel configuration option). diff --git a/alloc.c b/alloc.c index 349da9f..358939a 100644 --- a/alloc.c +++ b/alloc.c @@ -1,6 +1,9 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -100,7 +103,7 @@ alloc(UINTN size, EFI_MEMORY_TYPE type) if (type == 0) type = EfiLoaderData; - status = BS->AllocatePool (type, size, &tmp); + status = uefi_call_wrapper(BS->AllocatePool, 3, type, size, &tmp); if (EFI_ERROR(status)) { ERR_PRT((L"allocator: AllocatePool(%d, %d, 0x%x) failed (%r)\n", type, size, status)); return NULL; @@ -127,9 +130,9 @@ alloc_pages(UINTN pgcnt, EFI_MEMORY_TYPE type, EFI_ALLOCATE_TYPE where, VOID *ad return NULL; } - status = BS->AllocatePages(where, type , pgcnt, &tmp); + status = uefi_call_wrapper(BS->AllocatePages, 4, where, type , pgcnt, &tmp); if (EFI_ERROR(status)) { - VERB_PRT(1, (L"allocator: AllocatePages(%d, %d, %d, 0x%lx) failed (%r)\n", where, type, pgcnt, tmp, status)); + VERB_PRT(1, Print(L"allocator: AllocatePages(%d, %d, %d, 0x%lx) failed (%r)\n", where, type, pgcnt, tmp, status)); return NULL; } /* XXX: will cause warning on IA-32 */ @@ -155,7 +158,7 @@ free(VOID *addr) if (p->addr == addr) goto found; } /* not found */ - VERB_PRT(1, (L"allocator: invalid free @ 0x%lx\n", addr)); + VERB_PRT(1, Print(L"allocator: invalid free @ 0x%lx\n", addr)); return; found: DBG_PRT((L"free: %s @0x%lx size=%ld\n", @@ -163,9 +166,9 @@ found: addr, p->size)); if (p->type == ALLOC_POOL) - BS->FreePool(addr); + uefi_call_wrapper(BS->FreePool, 1, addr); else - BS->FreePages((EFI_PHYSICAL_ADDRESS)addr, p->size); + uefi_call_wrapper(BS->FreePages, 2, (EFI_PHYSICAL_ADDRESS)addr, p->size); /* remove from used list */ if (p->next) @@ -195,9 +198,9 @@ free_all(VOID) DBG_PRT((L"free_all %a @ 0x%lx\n", used_allocs->type == ALLOC_POOL ? "pool" : "pages", used_allocs->addr)); if (used_allocs->type == ALLOC_POOL) - BS->FreePool(used_allocs->addr); + uefi_call_wrapper(BS->FreePool, 1, used_allocs->addr); else - BS->FreePages((EFI_PHYSICAL_ADDRESS)used_allocs->addr, used_allocs->size); + uefi_call_wrapper(BS->FreePages, 2, (EFI_PHYSICAL_ADDRESS)used_allocs->addr, used_allocs->size); tmp = used_allocs->next; diff --git a/alternate.c b/alternate.c index df138ad..992e9bd 100644 --- a/alternate.c +++ b/alternate.c @@ -1,6 +1,9 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -77,7 +80,7 @@ alternate_kernel(CHAR16 *buffer, INTN size) * - the variable does not exist * - our buffer size is too small. */ - status = RT->GetVariable(ELILO_ALTK_VAR, &altk_guid, NULL, &size, buffer); + status = uefi_call_wrapper(RT->GetVariable, 5, ELILO_ALTK_VAR, &altk_guid, NULL, &size, buffer); if (EFI_ERROR(status)) { DBG_PRT((L"cannot access variable %s: %r", ELILO_ALTK_VAR, status)); @@ -110,7 +113,7 @@ alternate_kernel(CHAR16 *buffer, INTN size) ret = 0; delete_var: - status = RT->SetVariable(ELILO_ALTK_VAR, &altk_guid, 0, 0, NULL); + status = uefi_call_wrapper(RT->SetVariable, 5, ELILO_ALTK_VAR, &altk_guid, 0, 0, NULL); if (EFI_ERROR(status)) { ERR_PRT((L"cannot erase variable %s", ELILO_ALTK_VAR)); } diff --git a/bootparams.c b/bootparams.c index 8859fcc..1a2c54b 100644 --- a/bootparams.c +++ b/bootparams.c @@ -83,7 +83,7 @@ create_boot_params(CHAR16 *args, memdesc_t *initrd, memdesc_t *vmcode, UINTN *co /* XXX: need to fix this for 3.5 */ #ifdef CONFIG_ia64 cp = ((CHAR8 *)bp) + BOOT_PARAM_MEMSIZE - cmdline_size; -#elif defined CONFIG_ia32 +#elif defined CONFIG_ia32 || CONFIG_x86_64 cp = ((CHAR8 *)bp) + BOOT_PARAM_MEMSIZE - 2048; #endif diff --git a/choosers/simple.c b/choosers/simple.c index b246a91..5525086 100644 --- a/choosers/simple.c +++ b/choosers/simple.c @@ -1,6 +1,10 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -136,7 +140,8 @@ reprint: first_time = 0; for (;;) { - while ((status=ip->ReadKeyStroke(ip, &key)) == EFI_NOT_READY); + while ((status = uefi_call_wrapper(ip->ReadKeyStroke, 2, ip, &key)) + == EFI_NOT_READY); if (EFI_ERROR(status)) { ERR_PRT((L"select_kernel readkey: %r", status)); return -1; @@ -274,7 +279,7 @@ restart: argc = argify(alt_buffer,sizeof(alt_buffer), argv); alt_argv = argv; index = 0; - args[0] = initrd_name[0] = 0; + args[0] = initrd_name[0] = vmcode_name[0] = 0; /* * don't check twice because the variable is deleted after * first access @@ -354,7 +359,7 @@ restart: ret = wait_timeout(elilo_opt.delay); if (ret != 0) { elilo_opt.prompt = 1; - elilo_opt.initrd[0] = CHAR_NULL; + elilo_opt.initrd[0] = elilo_opt.vmcode[0] = CHAR_NULL; elilo_opt.timeout = ELILO_TIMEOUT_INFINITY; goto restart; } diff --git a/choosers/textmenu.c b/choosers/textmenu.c index 3210dda..400d4f6 100644 --- a/choosers/textmenu.c +++ b/choosers/textmenu.c @@ -1,6 +1,10 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Richard Hirst + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -45,8 +49,8 @@ static CHAR16 PromptBuf[CMDLINE_MAXLEN]; #define DEF_ATTR EFI_TEXT_ATTR(EFI_LIGHTGRAY,EFI_BLACK) -#define ClearScreen() ST->ConOut->ClearScreen(ST->ConOut) -#define SetTextAttr(a) ST->ConOut->SetAttribute(ST->ConOut, a) +#define ClearScreen() uefi_call_wrapper(ST->ConOut->ClearScreen, 1, ST->ConOut) +#define SetTextAttr(a) uefi_call_wrapper(ST->ConOut->SetAttribute, 2, ST->ConOut, a) static INTN tohex(INTN c) @@ -249,7 +253,8 @@ reprint: SetTextAttr(CurrentAttr); for (;;) { - while ((status=ip->ReadKeyStroke(ip, &key)) == EFI_NOT_READY); + while ((status = uefi_call_wrapper(ip->ReadKeyStroke, 2, ip, &key)) + == EFI_NOT_READY); if (EFI_ERROR(status)) { SetTextAttr(EFI_TEXT_ATTR(EFI_LIGHTGRAY,EFI_BLACK)); ClearScreen(); @@ -295,7 +300,7 @@ reprint: if (i) { msgbuf[i] = 0; paint_msg(msgbuf); - while ((status=ip->ReadKeyStroke(ip, &key)) == EFI_NOT_READY); + while ((status= uefi_call_wrapper(ip->ReadKeyStroke, 2, ip, &key)) == EFI_NOT_READY); goto reprint; } } @@ -465,7 +470,7 @@ restart: ret = wait_timeout(elilo_opt.delay); if (ret != 0) { elilo_opt.prompt = 1; - elilo_opt.initrd[0] = CHAR_NULL; + elilo_opt.initrd[0] = elilo_opt.vmcode[0] = CHAR_NULL; elilo_opt.timeout = ELILO_TIMEOUT_INFINITY; goto restart; } diff --git a/config.c b/config.c index e24c0c0..026e098 100644 --- a/config.c +++ b/config.c @@ -1,6 +1,9 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -42,6 +45,8 @@ #define ELILO_ARCH_DEFAULT_CONFIG L"elilo-ia64.conf" #elif defined (CONFIG_ia32) #define ELILO_ARCH_DEFAULT_CONFIG L"elilo-ia32.conf" +#elif defined (CONFIG_x86_64) +#define ELILO_ARCH_DEFAULT_CONFIG L"elilo-x86_64.conf" #else #error "You need to specfy your default arch config file" #endif @@ -204,14 +209,8 @@ static fops_fd_t config_fd; static VOID config_error(CHAR16 *msg,...) { - va_list ap; - extern UINTN _IPrint (UINTN, UINTN, SIMPLE_TEXT_OUTPUT_INTERFACE *, CHAR16 *, CHAR8 *, va_list); - Print(L"near line %d: ",line_num); - - va_start(ap,msg); - _IPrint((UINTN)-1, (UINTN)-1, systab->ConOut, msg, NULL, ap); - va_end(ap); + IPrint(systab->ConOut, msg); Print(L"\n"); } diff --git a/cscope.out b/cscope.out new file mode 100644 index 0000000..9750688 --- /dev/null +++ b/cscope.out @@ -0,0 +1,135421 @@ +cscope 16 $HOME/dev/elilo 0000729622 + @alloc.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +31  + #NALLOC + 512 + + ) + +33 ’um { + mALLOC_POOL +, + mALLOC_PAGES + } + t®loc_ty³s_t +; + +35  + s_®loc_’Œy + { + +36  +_®loc_’Œy + * + mÃxt +; + +37  +_®loc_’Œy + * + m´ev +; + +38 +VOID + * + maddr +; + +39 +UINTN + + msize +; + +40 +®loc_ty³s_t + + mty³ +; + +41 } + t®loc_’Œy_t +; + +43  +®loc_’Œy_t + + g®locs +[ +NALLOC +]; + +44  +®loc_’Œy_t + * + gä“_®locs +, * + gu£d_®locs +; + +46  +VOID + * + gkmem_addr +; + +47  +UINTN + + gkmem_pgút +; + +52 +INTN + + +53 + $®loc_š™ +( +VOID +) + +55 +UINTN + +i +; + +57  +i +=0; i < +NALLOC +-1; i++) { + +58 +®locs +[ +i +]. +Ãxt + =‡llocs+i+1; + +60 +®locs +[ +i +]. +Ãxt + = +NULL +; + +62 +ä“_®locs + = +®locs +; + +63 +u£d_®locs + = +NULL +; + +66 + } +} + +68  +VOID + + +69 + $®loc_add +( +VOID + * +addr +, +UINTN + +size +, +®loc_ty³s_t + +ty³ +) + +71 +®loc_’Œy_t + * +®loc +; + +74 +®loc + = +ä“_®locs +; + +75 +ä“_®locs + = f»e_®locs-> +Ãxt +; + +77 +®loc +-> +´ev + = +NULL +; + +78 +®loc +-> +Ãxt + = +u£d_®locs +; + +79 +®loc +-> +addr + =‡ddr; + +80 +®loc +-> +ty³ + =ype; + +81 +®loc +-> +size + = size; + +84 ià( +u£d_®locs +èu£d_®locs-> +´ev + = +®loc +; + +86 +u£d_®locs + = +®loc +; + +87 + } +} + +89 +VOID + * + +90 + $®loc +( +UINTN + +size +, +EFI_MEMORY_TYPE + +ty³ +) + +92 +EFI_STATUS + +¡©us +; + +93 +VOID + * +tmp + = 0; + +96 ià( +ä“_®locs + =ð +NULL +) { + +97 + `ERR_PRT +(( +L +"allocator:‚o more slots\n")); + +98  +NULL +; + +101 ià( +ty³ + =ð0èty³ = +EfiLßd”D©a +; + +103 +¡©us + = +BS +-> + `AÎoÿ‹PoÞ + ( +ty³ +, +size +, & +tmp +); + +104 ià( + `EFI_ERROR +( +¡©us +)) { + +105 + `ERR_PRT +(( +L +"®loÿtÜ: AÎoÿ‹PoÞ(%d, %d, 0x%xèçžed (%r)\n", +ty³ +, +size +, +¡©us +)); + +106  +NULL +; + +108 + `®loc_add +( +tmp +, +size +, +ALLOC_POOL +); + +110 + `DBG_PRT +(( +L +"®loc:‡Îoÿ‹d %d by‹ @[0x%lx-0x%lx]\n", +size +, +tmp +,mp+size)); + +112  +tmp +; + +113 + } +} + +118 +VOID + * + +119 + $®loc_·ges +( +UINTN + +pgút +, +EFI_MEMORY_TYPE + +ty³ +, +EFI_ALLOCATE_TYPE + +wh”e +, +VOID + * +addr +) + +121 +EFI_STATUS + +¡©us +; + +122 +EFI_PHYSICAL_ADDRESS + +tmp + = (EFI_PHYSICAL_ADDRESS) +addr +; + +125 ià( +ä“_®locs + =ð +NULL +) { + +126 + `ERR_PRT +(( +L +"allocator:‚o more slots\n")); + +127  +NULL +; + +130 +¡©us + = +BS +-> + `AÎoÿ‹Pages +( +wh”e +, +ty³ + , +pgút +, & +tmp +); + +131 ià( + `EFI_ERROR +( +¡©us +)) { + +132 + `VERB_PRT +(1, ( +L +"®loÿtÜ: AÎoÿ‹Pages(%d, %d, %d, 0x%lxèçžed (%r)\n", +wh”e +, +ty³ +, +pgút +, +tmp +, +¡©us +)); + +133  +NULL +; + +136 +addr + = ( +VOID + *) +tmp +; + +138 + `®loc_add +( +addr +, +pgút +, +ALLOC_PAGES +); + +140 + `DBG_PRT +(( +L +"®loÿtÜ:‡Îoÿ‹d %d…age @0x%lx\n", +pgút +, +tmp +)); + +142  +addr +; + +143 + } +} + +148 +VOID + + +149 + $ä“ +( +VOID + * +addr +) + +151 +®loc_’Œy_t + * +p +; + +154  +p += +u£d_®locs +;… ;… =…-> +Ãxt +) { + +155 ià( +p +-> +addr + =ðaddrè +found +; + +158 + `VERB_PRT +(1, ( +L +"®loÿtÜ: inv®id f»@ 0x%lx\n", +addr +)); + +160 +found +: + +161 + `DBG_PRT +(( +L +"free: %s @0x%lx size=%ld\n", + +162 +p +-> +ty³ + =ð +ALLOC_POOL + ? +L +"Pool": L"Page", + +163 +addr +, +p +-> +size +)); + +165 ià( +p +-> +ty³ + =ð +ALLOC_POOL +) + +166 +BS +-> + `F»ePoÞ +( +addr +); + +168 +BS +-> + `F»ePages +(( +EFI_PHYSICAL_ADDRESS +) +addr +, +p +-> +size +); + +171 ià( +p +-> +Ãxt +) + +172 +p +-> +Ãxt +-> +´ev + =…->prev; + +174 ià( +p +-> +´ev +) + +175 +p +-> +´ev +-> +Ãxt + =…->next; + +177 +u£d_®locs + = +p +-> +Ãxt +; + +180 +p +-> +Ãxt + = +ä“_®locs +; + +181 +ä“_®locs + = +p +; + +182 + } +} + +188 +VOID + + +189 + $ä“_®l +( +VOID +) + +191 +®loc_’Œy_t + * +tmp +; + +193  +u£d_®locs +) { + +195 + `DBG_PRT +(( +L +"ä“_®È%¨@ 0x%lx\n", +u£d_®locs +-> +ty³ + =ð +ALLOC_POOL + ? "poÞ" : "·ges", u£d_®locs-> +addr +)); + +197 ià( +u£d_®locs +-> +ty³ + =ð +ALLOC_POOL +) + +198 +BS +-> + `F»ePoÞ +( +u£d_®locs +-> +addr +); + +200 +BS +-> + `F»ePages +(( +EFI_PHYSICAL_ADDRESS +) +u£d_®locs +-> +addr +, u£d_®locs-> +size +); + +202 +tmp + = +u£d_®locs +-> +Ãxt +; + +205 +u£d_®locs +-> +Ãxt + = +ä“_®locs +; + +206 +ä“_®locs + = +u£d_®locs +; + +208 +u£d_®locs + = +tmp +; + +210 + } +} + +212 +INTN + + +213 + $®loc_kmem +( +VOID + * +¡¬t_addr +, +UINTN + +pgút +) + +215 ià( + `®loc_·ges +( +pgút +, +EfiLßd”D©a +, +AÎoÿ‹Add»ss +, +¡¬t_addr +) == 0)  -1; + +217 +kmem_addr + = +¡¬t_addr +; + +218 +kmem_pgút + = +pgút +; + +221 + } +} + +223 +VOID + + +224 + $ä“_kmem +( +VOID +) + +226 + `DBG_PRT +(( +L +"ä“_kmem befܐ(%lx, %ld)\n", +kmem_addr +, +kmem_pgút +)); + +227 ià( +kmem_addr + && +kmem_pgút + != 0) { + +228 + `ä“ +( +kmem_addr +); + +229 +kmem_addr + = +NULL +; + +230 +kmem_pgút + = 0; + +232 + `DBG_PRT +(( +L +"ä“_kmem‡á” (%lx, %ld)\n", +kmem_addr +, +kmem_pgút +)); + +233 + } +} + +235 +VOID + + +236 + $ä“_®l_memÜy +( +VOID +) + +238 + `ä“_®l +(); + +239 + `ä“_kmem +(); + +240 + } +} + + @alternate.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +31  + #ELILO_ALTK_VAR + +L +"ElžoAÉ" + + ) + +36  +EFI_GUID + + g®tk_guid +={0,}; + +55 +INTN + + +56 + $®‹º©e_k”Ãl +( +CHAR16 + * +bufãr +, +INTN + +size +) + +58 +EFI_STATUS + +¡©us +; + +59 +INTN + +»t + = -1; + +67 ià( +size + < 4)  -1; + +72 +size +-=2; + +80 +¡©us + = +RT +-> + `G‘V¬ŸbË +( +ELILO_ALTK_VAR +, & +®tk_guid +, +NULL +, & +size +, +bufãr +); + +81 ià( + `EFI_ERROR +( +¡©us +)) { + +82 + `DBG_PRT +(( +L +"ÿÂهcûs v¬ŸbË %s: %r", +ELILO_ALTK_VAR +, +¡©us +)); + +85 ià( +¡©us + =ð +EFI_BUFFER_TOO_SMALL +è +d–‘e_v¬ +; + +99 ià( +size + & 0x1) { + +100 + `Pršt +( +L +"šv®id cڋÁ fÜ % v¬ŸbË,ƒ¿sšg v¬ŸbË\n", +ELILO_ALTK_VAR +); + +101  +d–‘e_v¬ +; + +105 ià( +size + =ð2è +d–‘e_v¬ +; + +107 +bufãr +[ +size +] = +CHAR_NULL +; + +109 + `VERB_PRT +(2, + `Pršt +( +L +"found‡É”Ç‹ v¬ŸbË % : %s\n", +ELILO_ALTK_VAR +, +bufãr +)); + +111 +»t + = 0; + +112 +d–‘e_v¬ +: + +113 +¡©us + = +RT +-> + `S‘V¬ŸbË +( +ELILO_ALTK_VAR +, & +®tk_guid +, 0, 0, +NULL +); + +114 ià( + `EFI_ERROR +( +¡©us +)) { + +115 + `ERR_PRT +(( +L +"ÿÂك¿£ v¬ŸbË %s", +ELILO_ALTK_VAR +)); + +117  +»t +; + +118 + } +} + + @bootparams.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +40 +VOID + * + +41 + $ü—‹_boÙ_·¿ms +( +CHAR16 + * +¬gs +, +memdesc_t + * +š™rd +, memdesc_ˆ* +vmcode +, +UINTN + * +cook› +) + +47  + #BOOT_PARAM_MEMSIZE + 16384 + + ) + +48 +UINTN + +bpsize +, +cmdlše_size +; + +49 +boÙ_·¿ms_t + * +bp +; + +50 +CHAR8 + * +ý +; + +51 +CHAR16 + +ch +; + +59 +cmdlše_size + = + `SŒL’ +( +¬gs +) + 1; + +60 +bpsize + = ( +boÙ_·¿ms_t +è+ +cmdlše_size +; + +62 ià( +bpsize + > +BOOT_PARAM_MEMSIZE +) { + +63 + `ERR_PRT +(( +L +"BOOT_PARAM_MEMSIZEoØsm®l,‚“d‡ˆËa¡ %d by‹s", +bpsize +)); + +64  +NULL +; + +75 +bp + = ( +boÙ_·¿ms_t + *) + `®loc +( +BOOT_PARAM_MEMSIZE +, +EfiLßd”D©a +); + +76 ià( +bp + =ð +NULL +) { + +77 + `ERR_PRT +(( +L +"can't‡llocate boot…arams")); + +81 + `VERB_PRT +(3, + `Pršt +( +L +"boم¬am @ 0x%lx\n", +bp +)); + +84 #ifdeà +CONFIG_Ÿ64 + + +85 +ý + = (( +CHAR8 + *) +bp +è+ +BOOT_PARAM_MEMSIZE + - +cmdlše_size +; + +86 #–ià +defšed + +CONFIG_Ÿ32 + + +87 +ý + = (( +CHAR8 + *) +bp +è+ +BOOT_PARAM_MEMSIZE + - 2048; + +97 + `Mem£t +( +bp +, 0, +BOOT_PARAM_MEMSIZE +); + +99 ià( + `sysd•s_ü—‹_boÙ_·¿ms +( +bp +, +ý +, +š™rd +, +vmcode +, +cook› +) == -1)  0; + +106 +ch + = * +¬gs +++; + +107 ià(! +ch +) ; + +108 * +ý +++ = +ch +; + +110 * +ý +++ = '\0'; + +112  +bp +; + +113 + } +} + +115 +VOID + + +116 + $ä“_boÙ_·¿ms +( +VOID + * +bp +) + +118 +boÙ_·¿ms_t + * +»®_bp + = (boÙ_·¿ms_ˆ*) +bp +; + +120 + `sysd•s_ä“_boÙ_·¿ms +( +»®_bp +); + +122 + `ä“ +( +»®_bp +); + +123 + } +} + + @chooser.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +31 #ifdeà +CONFIG_CHOOSER_SIMPLE + + +32  + ~"choo£rs/sim¶e.h +" + +35 #ifdeà +CONFIG_CHOOSER_TEXTMENU + + +36  + ~"choo£rs/‹xtm’u.h +" + +39  +choo£r_t + * + gchoo£rs_b +[]={ + +40 #ifdeà +CONFIG_CHOOSER_SIMPLE + + +41 & +sim¶e_choo£r +, + +43 #ifdeà +CONFIG_CHOOSER_TEXTMENU + + +44 & +‹xtm’u_choo£r +, + +46 +NULL + + +64 +choo£r_func_t + * + gk”Ãl_choo£r +; + +66 +INTN + + +67 + $š™_choo£r +( +EFI_HANDLE + +dev +) + +69 +choo£r_t + ** +p +; + +70 +CHAR16 + * +choo£r_Çme + = +L +"none"; + +72 +k”Ãl_choo£r + = +NULL +; + +74  +p += +choo£rs_b +; *p;…++) { + +76 + `VERB_PRT +(4, + `Pršt +( +L +"Œyšg choo£¸%s\n", (* +p +)-> +choo£r_Çme +)); + +78 ià((* +p +)-> + `choo£r_´obe +( +dev +) == 0) { + +82 ià(! + `SŒCmp +( +–žo_Ýt +. +choo£r +, (* +p +)-> +choo£r_Çme +)) { + +83 +k”Ãl_choo£r + = (* +p +)-> +choo£r_func +; + +84 +choo£r_Çme + = (* +p +)->chooser_name; + +88 ià( +k”Ãl_choo£r + =ð +NULL +) { + +89 +k”Ãl_choo£r + = (* +p +)-> +choo£r_func +; + +90 +choo£r_Çme + = (* +p +)->chooser_name; + +95 ià( +k”Ãl_choo£r +) { + +96 + `VERB_PRT +(2, + `Pršt +( +L +"£Ëùed choo£¸%s\n", +choo£r_Çme +)); + +100 + `ERR_PRT +(( +L +"No chooser selected. Impossibleo…roceed")); + +102 + } +} + +104 +INTN + + +105 + $exi¡_choo£r +( +CHAR16 + * +Çme +) + +107 +choo£r_t + ** +p +; + +109  +p += +choo£rs_b +; *p;…++) { + +110 ià(! + `SŒCmp +( +Çme +, (* +p +)-> +choo£r_Çme +))  0; + +113 + } +} + + @chooser.h + +26 #iâdeà +__ELILO_CHOOSER_H__ + + +27  + #__ELILO_CHOOSER_H__ + + + ) + +29  +INTN + + tchoo£r_func_t +( + tCHAR16 + ** + t¬gv +, + tINTN + + t¬c +, INTN + tšdex +, CHAR16 * + tkÇme +, CHAR16 * + tcmdlše +); + +50 +CHAR16 + * + mchoo£r_Çme +; + +51 +INTN + (* +choo£r_´obe +)( +EFI_HANDLE + + mdev +); + +52 +choo£r_func_t + * + mchoo£r_func +; + +53 } + tchoo£r_t +; + +55 +INTN + +š™_choo£r +( +EFI_HANDLE +); + +56 +INTN + +exi¡_choo£r +( +CHAR16 + * +Çme +); + +58 +choo£r_func_t + * +k”Ãl_choo£r +; + + @choosers/simple.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"v¬s.h +" + +33  +CHAR16 + ** + g®t_¬gv +; + +35  +VOID + + +36 + $di¥Ïy_Ïb–_šfo +( +CHAR16 + * +Çme +) + +38 +CHAR16 + * +desc +; + +39 +CHAR16 + +š™rd_Çme +[ +CMDLINE_MAXLEN +]; + +40 +CHAR16 + +vmcode_Çme +[ +CMDLINE_MAXLEN +]; + +41 +CHAR16 + +ÝtiÚs_tmp +[ +CMDLINE_MAXLEN +]; + +42 +CHAR16 + +ÝtiÚs +[ +CMDLINE_MAXLEN +]; + +43 +CHAR16 + +kÇme +[ +FILENAME_MAXLEN +]; + +45 +desc + = + `fšd_desütiÚ +( +Çme +); + +46 ià( +desc +) { + +47 + `Pršt +( +L +"desø : %s\n", +desc +); + +50 +š™rd_Çme +[0] = +vmcode_Çme +[0] = +ÝtiÚs_tmp +[0] = +kÇme +[0] = +CHAR_NULL +; + +52 ià( + `fšd_Ïb– +( +Çme +, +kÇme +, +ÝtiÚs_tmp +, +š™rd_Çme +, +vmcode_Çme +) == -1) { + +53 + `SŒCpy +( +kÇme +, +Çme +); + +54 + `Pršt +( +L +"\n"); + +56 + `sub¡_v¬s +( +ÝtiÚs_tmp +, +ÝtiÚs +, +CMDLINE_MAXLEN +); + +58 + `Pršt +( +L +"cmdlše: % %s\n", +kÇme +, +ÝtiÚs +); + +59 ià( +š™rd_Çme +[0]è + `Pršt +( +L +"initrd : %s\n", initrd_name); + +60 ià( +vmcode_Çme +[0]è + `Pršt +( +L +"vmcode : %s\n", vmcode_name); + +61 + } +} + +63  +VOID + + +64 + $´št_šfos +( +fÜû +) + +66 +CHAR16 + * +cÚfig_fže +; + +67 +CHAR16 + +d·th +[ +FILENAME_MAXLEN +]; + +68 +CHAR16 + * +boÙ_dev_Çme +; + +69 +UINT8 + +is_abs +; + +71 +boÙ_dev_Çme + = + `fÝs_boÙdev_Çme +(); + +72 +cÚfig_fže + = + `g‘_cÚfig_fže +(); + +74 + `fÝs_g‘deçuÉ_·th +( +d·th +, +FILENAME_MAXLEN +); + +76 ià( +fÜû + || +–žo_Ýt +. +v”bo£ + > 0) + +77 + `Pršt +( +L +"deçuÉ fž·th: %s:%s\n", +boÙ_dev_Çme +, +d·th +); + +79 +is_abs + = +cÚfig_fže + && (cÚfig_fže[0] =ð +CHAR_BACKSLASH + || cÚfig_fže[0] =ð +CHAR_SLASH +) ? 1 : 0; + +81 ià( +fÜû + || +–žo_Ýt +. +v”bo£ + > 0) + +82 + `Pršt +( +L +"cÚfig fž : %s%s\n", +cÚfig_fže + && +is_abs + =ð0 ? +d·th + : L"", config_file ? config_file : L"none used"); + +84 ià( +®t_¬gv +) { + +85 +CHAR16 + ** +p + = +®t_¬gv +; + +86 + `Pršt +( +L +"found‡lternate default choice :"); + +87 * +p +è + `Pršt +( +L +" %s", *p++); + +88 + `Pršt +( +L +"\n"); + +90 + } +} + +92  +VOID + + +93 + $´št_h–p +( +fÜû +) + +95 ià( +fÜû + || +–žo_Ýt +. +v”bo£ + > 0) + +96 + `Pršt +( +L +"command†ist (must be first character):\n=:print device†ist, %%:print variable†ist, &:print…aths, ?:help\nTAB:print†abel information\n"); + +97 + } +} + +106  +INTN + + +107 + $£Ëù_k”Ãl +( +CHAR16 + * +bufãr +, +INTN + +size +) + +109  + #CHAR_CTRL_C + +L +'\003' + + ) + +110  + #CHAR_CTRL_D + +L +'\004' + + ) + +111  + #CHAR_CTRL_U + +L +'\025' + + ) + +113 +SIMPLE_INPUT_INTERFACE + * + + = +sy¡ab +-> +CÚIn +; + +114 +EFI_INPUT_KEY + +key +; + +115 +EFI_STATUS + +¡©us +; + +116 +INTN + +pos + = 0, +»t +; + +117 +INT8 + +fœ¡_time + = 1; + +122 + `´št_h–p +(0); + +124 + `´št_šfos +(0); + +126 +»´št +: + +127 +bufãr +[ +pos +] = +CHAR_NULL +; + +129 + `Pršt +( +L +"\nELILO boÙ: %s", +bufãr +); + +133 ià( +fœ¡_time + && ( +»t += + `wa™_timeout +( +–žo_Ýt +. +timeout +)) != 1) { + +134  +»t + == -1 ? -1: 0; + +136 +fœ¡_time + = 0; + +139 ( +¡©us += + +-> + `R—dKeySŒoke +(, & +key +)è=ð +EFI_NOT_READY +); + +140 ià( + `EFI_ERROR +( +¡©us +)) { + +141 + `ERR_PRT +(( +L +"£Ëù_k”ÃÈ»adkey: %r", +¡©us +)); + +144  +key +. +UnicodeCh¬ +) { + +145  +CHAR_TAB +: + +146 + `Pršt +( +L +"\n"); + +147 ià( +pos + == 0) { + +148 + `´št_Ïb–_li¡ +(); + +149 + `Pršt +( +L +"(or‡ kernel file‚ame: [[dev_name:/]path/]kernel_image cmdline options)\n"); + +151 +bufãr +[ +pos +] = +CHAR_NULL +; + +152 + `di¥Ïy_Ïb–_šfo +( +bufãr +); + +154  +»´št +; + +155  +L +'%': + +156 ià( +pos +>0è +nÜm®_ch¬ +; + +157 + `Pršt +( +L +"\n"); + +158 + `´št_v¬s +(); + +159  +»´št +; + +160  +L +'?': + +161 ià( +pos +>0è +nÜm®_ch¬ +; + +162 + `Pršt +( +L +"\n"); + +163 + `´št_h–p +(1); + +164  +»´št +; + +165  +L +'&': + +166 ià( +pos +>0è +nÜm®_ch¬ +; + +167 + `Pršt +( +L +"\n"); + +168 + `´št_šfos +(1); + +169  +»´št +; + +170  +L +'=': + +171 ià( +pos +>0è +nÜm®_ch¬ +; + +172 + `Pršt +( +L +"\n"); + +173 + `´št_deviûs +(); + +174  +»´št +; + +175  +CHAR_BACKSPACE +: + +176 ià( +pos + == 0) ; + +177 +pos +--; + +178 + `Pršt +( +L +"\b \b"); + +180  +CHAR_CTRL_U +: + +181  +pos +) { + +182 + `Pršt +( +L +"\b \b"); + +183 +pos +--; + +186  +CHAR_CTRL_C +: + +187 +pos + = 0; + +188  +»´št +; + +189  +CHAR_LINEFEED +: + +190  +CHAR_CARRIAGE_RETURN +: + +191 +bufãr +[ +pos +] = +CHAR_NULL +; + +192 + `Pršt +( +L +"\n"); + +195 +nÜm®_ch¬ +: + +196 ià( +key +. +UnicodeCh¬ + =ð +CHAR_CTRL_D + || key. +SÿnCode + == 0x17 ) { + +197 + `Pršt +( +L +"\nGiving uphen...\n"); + +200 ià( +key +. +UnicodeCh¬ + =ð +CHAR_NULL +) ; + +202 ià( +pos + > +size +-1) ; + +204 +bufãr +[ +pos +++] = +key +. +UnicodeCh¬ +; + +207 + `Pršt +( +L +"%c", +key +. +UnicodeCh¬ +); + +211 + } +} + +213  +VOID + + +214 + $di¥Ïy_mes§ge +( +VOID +) + +216 +fÝs_fd_t + +fd +; + +217 +EFI_STATUS + +¡©us +; + +218 +INTN + +Ën +, +i +; + +219 +CHAR16 + * +fž’ame +; + +220 +CHAR8 + +buf +[256]; + +222 ià(( +fž’ame + = + `g‘_mes§ge_fž’ame +(0)è=ð +NULL +) ; + +224 ià(* +fž’ame + =ð +CHAR_NULL +) ; + +226 + `VERB_PRT +(3, + `Pršt +( +L +"ݒšg mes§gfž%s\n", +fž’ame +)); + +228 +¡©us + = + `fÝs_ݒ +( +fž’ame +, & +fd +); + +229 ià( + `EFI_ERROR +( +¡©us +)) { + +230 + `VERB_PRT +(3, + `Pršt +( +L +"mes§gfž% nÙ found\n", +fž’ame +)); + +233 +Ën + = 256; + +234 + `Pršt +( +L +"\n"); + +235 ( +¡©us + = + `fÝs_»ad +( +fd +, +buf +, & +Ën +)è=ð +EFI_SUCCESS +) { + +237  +i +=0; i < +Ën +; i++) { + +238 + `Pršt +( +L +"%c", ( +CHAR16 +) +buf +[ +i +]); + +240 ià( +Ën + < 256) ; + +242 + `fÝs_þo£ +( +fd +); + +243 + } +} + +245  +INTN + + +246 + $sim¶e_choo£ +( +CHAR16 + ** +¬gv +, +INTN + +¬gc +, INTN +šdex +, CHAR16 * +kÇme +, CHAR16 * +cmdlše +) + +248  + #BOOT_IMG_STR + +L +"BOOT_IMAGE=" + + ) + +249 +CHAR16 + +bufãr +[ +CMDLINE_MAXLEN +]; + +250 +CHAR16 + +®t_bufãr +[ +CMDLINE_MAXLEN +]; + +251 +CHAR16 + +š™rd_Çme +[ +CMDLINE_MAXLEN +]; + +252 +CHAR16 + +vmcode_Çme +[ +CMDLINE_MAXLEN +]; + +253 +CHAR16 + +¬gs +[ +CMDLINE_MAXLEN +]; + +254 +CHAR16 + +devÇme +[ +CMDLINE_MAXLEN +]; + +255 +CHAR16 + +d·th +[ +FILENAME_MAXLEN +]; + +256 +CHAR16 + * +¦ash_pos +, * +cÞÚ_pos +, * +back¦ash_pos +; + +257 +UINTN + +Ën +; + +258 +INTN + +»t +; + +260 +bufãr +[0] = +®t_bufãr +[0] = +CHAR_NULL +; + +262 + `di¥Ïy_mes§ge +(); + +264 +»¡¬t +: + +265 +š™rd_Çme +[0] = +vmcode_Çme +[0] = +kÇme +[0] = +cmdlše +[0] = +¬gs +[0] = +CHAR_NULL +; + +268 + `Mem£t +(& +–žo_Ýt +. +img_Ýt +, 0, (elilo_opt.img_opt)); + +273 ià( +–žo_Ýt +. +®t_check + && + `®‹º©e_k”Ãl +( +®t_bufãr +, (alt_buffer)) == 0) { + +274 +¬gc + = + `¬gify +( +®t_bufãr +,×É_bufãr), +¬gv +); + +275 +®t_¬gv + = +¬gv +; + +276 +šdex + = 0; + +277 +¬gs +[0] = +š™rd_Çme +[0] = +vmcode_Çme +[0] = 0; + +282 +–žo_Ýt +. +®t_check + = 0; + +285 ià( +–žo_Ýt +. +´om± +) { + +286 +»t + = + `£Ëù_k”Ãl +( +bufãr +, (buffer)); + +287 ià( +»t + == -1)  -1; + +288 +¬gc + = + `¬gify +( +bufãr +,(bufãr), +¬gv +); + +289 +šdex + = 0; + +297 ià( +®t_bufãr +[0] && +bufãr +[0] =ð +CHAR_NULL +) { + +298 + `SŒCpy +( +bufãr +, +®t_bufãr +); + +309 +»t + = + `fšd_Ïb– +(( +šdex + < +¬gc +è? +¬gv +[šdex] : +NULL +, +kÇme +, +¬gs +, +š™rd_Çme +, +vmcode_Çme +); + +315 ià( +»t + == -1) { + +316 ià(( +šdex + < +¬gc +è&& +¬gv +[index]) + +317 + `SŒCpy +( +kÇme +, +¬gv +[ +šdex +]); + +319 + `SŒCpy +( +kÇme +, +–žo_Ýt +. +deçuÉ_k”Ãl +); + +326 ià( +¬gc + > 1+ +šdex +) { + +328 ++ +šdex + < +¬gc +) { + +329 + `SŒC© +( +¬gs +, +L +" "); + +330 + `SŒC© +( +¬gs +, +¬gv +[ +šdex +]); + +337 ià( +–žo_Ýt +. +š™rd +[0] =ð +CHAR_NULL + && +š™rd_Çme +[0] != CHAR_NULL) { + +338 + `SŒCpy +( +–žo_Ýt +. +š™rd +, +š™rd_Çme +); + +341 ià( +–žo_Ýt +. +vmcode +[0] =ð +CHAR_NULL + && +vmcode_Çme +[0] != CHAR_NULL) { + +342 + `SŒCpy +( +–žo_Ýt +. +vmcode +, +vmcode_Çme +); + +345 + `VERB_PRT +(1, { + `Pršt +( +L +"k”ÃÈ i  '%s'\n", +kÇme +); + +346 + `Pršt +( +L +"¬gum’t ‡» '%s'\n", +¬gs +); + +347 ià( +–žo_Ýt +. +š™rd +[0]è + `Pršt +( +L +"initrd is '%s'\n",ƒlilo_opt.initrd); + +348 ià( +–žo_Ýt +. +vmcode +[0]è + `Pršt +( +L +"vmm is '%s'\n",ƒlilo_opt.vmcode); + +351 ià( +–žo_Ýt +. +´om± + == 0) { + +353 + `Pršt +( +L +"ELILO\n"); + +354 +»t + = + `wa™_timeout +( +–žo_Ýt +. +d–ay +); + +355 ià( +»t + != 0) { + +356 +–žo_Ýt +. +´om± + = 1; + +357 +–žo_Ýt +. +š™rd +[0] =ƒlžo_Ýt. +vmcode +[0] = +CHAR_NULL +; + +358 +–žo_Ýt +. +timeout + = +ELILO_TIMEOUT_INFINITY +; + +359  +»¡¬t +; + +366 +¦ash_pos + = + `SŒChr +( +kÇme +, +L +'/'); + +367 +back¦ash_pos + = + `SŒChr +( +kÇme +, +L +'\\'); + +368 +cÞÚ_pos + = + `SŒChr +( +kÇme +, +L +':'); + +370 ià( +back¦ash_pos + && back¦ash_po < +¦ash_pos +) slash_pos = backslash_pos; + +372 ià( +cÞÚ_pos + =ð +NULL + || ( +¦ash_pos + && (slash_pos < colon_pos))) { + +373 + `SŒCpy +( +devÇme +, + `fÝs_boÙdev_Çme +()); + +374 + `SŒC© +( +devÇme +, +L +":"); + +377 ià( +kÇme +[0] !ð +L +'/' && kname[0] != L'\\') { + +378 + `fÝs_g‘deçuÉ_·th +( +d·th +, +FILENAME_MAXLEN +); + +379 + `SŒC© +( +devÇme +, +d·th +); + +382 +devÇme +[0] = +CHAR_NULL +; + +388 +Ën + = + `SŒL’ +( +BOOT_IMG_STR +) + +389 + + `SŒL’ +( +devÇme +) + +391 + +–žo_Ýt +. +vmcode +[0] ? + `SŒL’ +Ólžo_Ýt.vmcodeè: SŒL’( +kÇme +) + +393 + + `SŒL’ +( +¬gs +); + +395 ià( +Ën + >ð +CMDLINE_MAXLEN +-1) { + +396 + `ERR_PRT +(( +L +"‡rguments†istoo†ong cannot fit BOOT_IMAGE\n")); + +399 + `SŒCpy +( +cmdlše +, +L +"BOOT_IMAGE="); + +400 + `SŒC© +( +cmdlše +, +devÇme +); + +401 ià( +–žo_Ýt +. +vmcode +[0]) + +402 + `SŒC© +( +cmdlše +, +–žo_Ýt +. +vmcode +); + +404 + `SŒC© +( +cmdlše +, +kÇme +); + +405 + `SŒC© +( +cmdlše +, +L +" "); + +406 + `SŒC© +( +cmdlše +, +¬gs +); + +409 + } +} + +411  +INTN + + +412 + $sim¶e_´obe +( +EFI_HANDLE + +dev +) + +416 + } +} + +418 +choo£r_t + + gsim¶e_choo£r +={ + +419 +L +"simple", + +420 +sim¶e_´obe +, + +421 +sim¶e_choo£ + + + @choosers/simple.h + +26 #iâdeà +__ELILO_CHOOSER_SIMPLE_H__ + + +27  + #__ELILO_CHOOSER_SIMPLE_H__ + + + ) + +29  + ~"fžeÝs.h +" + +31 +choo£r_t + +sim¶e_choo£r +; + + @choosers/textmenu.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +31  + #MAX_LABELS + 64 + + ) + +32  + #MSGBUFLEN + 4096 + + ) + +34  +UINT8 + + gmsgbuf +[ +MSGBUFLEN +]; + +35  +CHAR16 + * + gÏb–s +[ +MAX_LABELS +]; + +36  +CHAR16 + * + gdesütiÚs +[ +MAX_LABELS +]; + +37  +INTN + + gÆab–s +; + +38  +INTN + + gCursÜRow +, + gCursÜCÞ +, + gProm±Row +, + gProm±CÞ +; + +39  +INTN + + gM’uRow +, + gM’uCÞ +, + gM’uWidth +, + gM’uHeight +; + +40  +INTN + + gDi¥ÏyP¬£d +, + gCu¼’tA‰r +, + gProm±A‰r +; + +41  +INTN + + gProm±Width +, + gM’uHiA‰r +, + gM’uLoA‰r +; + +42  +INTN + + gProm±L’ +, + gM’uAùive +, + gM’uFœ¡ +; + +43  +CHAR16 + + gProm±Buf +[ +CMDLINE_MAXLEN +]; + +45  + #DEF_ATTR + + `EFI_TEXT_ATTR +( +EFI_LIGHTGRAY +, +EFI_BLACK +) + + ) + +48  + #CˬSü“n +(è +ST +-> +CÚOut +-> + `CˬSü“n +(ST->CÚOut) + + ) + +49  + #S‘TextA‰r +( +a +è +ST +-> +CÚOut +-> + `S‘A‰ribu‹ +(ST->CÚOut,‡) + + ) + +51  +INTN + + +52 + $tohex +( +INTN + +c +) + +54 ià( +c + >= '0' && c <= '9') + +55  +c + - '0'; + +56 ià( +c + >= 'A' && c <= 'F') + +57  +c + = c - 'A' + 10; + +58 ià( +c + >= 'a' && c <= 'f') + +59  +c + = c - 'a' + 10; + +62 + } +} + +64  +VOID + + +65 + $·št_msg +( +UINT8 + * +msg +) + +67 +INTN + +c +; + +69 +CursÜCÞ + = +CursÜRow + = 0; + +70 +Cu¼’tA‰r + = +DEF_ATTR +; + +71 + `S‘TextA‰r +( +Cu¼’tA‰r +); + +72 + `CˬSü“n +(); + +73 ( +c + = * +msg +++)) { + +75 ià( +c + =ð0xdaèøð +BOXDRAW_DOWN_RIGHT +; + +76 ià( +c + =ð0xc4èøð +BOXDRAW_HORIZONTAL +; + +77 ià( +c + =ð0xbfèøð +BOXDRAW_DOWN_LEFT +; + +78 ià( +c + =ð0xb3èøð +BOXDRAW_VERTICAL +; + +79 ià( +c + =ð0xd9èøð +BOXDRAW_UP_LEFT +; + +80 ià( +c + =ð0xc0èøð +BOXDRAW_UP_RIGHT +; + +81 ià( +c + =ð0xb4èøð +BOXDRAW_VERTICAL_LEFT +; + +82 ià( +c + =ð0xc3èøð +BOXDRAW_VERTICAL_RIGHT +; + +83 ià( +c + =ð0x1eèøð +GEOMETRICSHAPE_UP_TRIANGLE +; + +84 ià( +c + =ð0x1fèøð +GEOMETRICSHAPE_DOWN_TRIANGLE +; + +85 ià( +c + > 0x7f) c = '?'; + +88 ià( +c + >= ' ') { + +89 + `Pršt +( +L +"%c", +c +); + +90 +CursÜCÞ +++; + +93  +c +) { + +97 +CursÜRow +++; + +98 +CursÜCÞ + = 0; + +99 + `Pršt +( +L +"\n"); + +102 +CursÜCÞ + = +CursÜRow + = 0; + +103 + `CˬSü“n +(); + +106 ià( +msg +[0] && msg[1]) { + +107 +INTN + +bg + = + `tohex +(* +msg +++); + +108 +INTN + +fg + = + `tohex +(* +msg +++); + +110 ià( +bg + < 16 || +fg + < 16) { + +111 +Cu¼’tA‰r + = + `EFI_TEXT_ATTR +( +fg +, +bg +); + +112 + `S‘TextA‰r +( +Cu¼’tA‰r +); + +117 ià(! +Di¥ÏyP¬£d +) { + +118 ià(! +Prom±Row +) { + +119 +Prom±Row + = +CursÜRow +; + +120 +Prom±CÞ + = +CursÜCÞ +; + +121 +Prom±A‰r + = +Cu¼’tA‰r +; + +123 ià(! +Prom±Width +) + +124 +Prom±Width + = +CursÜCÞ + - +Prom±CÞ +; + +129 ià(! +Di¥ÏyP¬£d +) { + +130 ià(! +M’uRow +) { + +131 +M’uRow + = +CursÜRow +; + +132 +M’uCÞ + = +CursÜCÞ +; + +133 +M’uLoA‰r + = +Cu¼’tA‰r +; + +135 ià(! +M’uWidth +) { + +136 +M’uWidth + = +CursÜCÞ + - +M’uCÞ +; + +137 +M’uHeight + = +CursÜRow + - +M’uRow + + 1; + +138 +M’uHiA‰r + = +Cu¼’tA‰r +; + +144 + `Pršt +( +L +"?"); + +145 +CursÜCÞ +++; + +149 + } +} + +152  +VOID + + +153 + $·št_´om± +( +VOID +) + +155 +INTN + +off£t + = +Prom±L’ + > +Prom±Width + - 1 ? PromptLen - PromptWidth + 1: 0; + +156 + `S‘TextA‰r +( +Prom±A‰r +); + +157 + `PrštAt +( +Prom±CÞ +, +Prom±Row +, +L +"%s%s", +Prom±Buf + + +off£t +, L" \b"); + +158 + `S‘TextA‰r +( +Cu¼’tA‰r +); + +159 + } +} + +161  +VOID + + +162 + $·št_m’u +( +VOID +) + +164 +INTN + +i +, +j +; + +166  +i + = 0; i < +M’uHeight +; i++) { + +167 +INTN + +©Œ + = ( +i + + +M’uFœ¡ + =ð +M’uAùive +è? +M’uHiA‰r +: +M’uLoA‰r +; + +168 +CHAR16 + +desütiÚ +[80]; + +170  +j + = 0; j < +M’uWidth +; j++) + +171 +desütiÚ +[ +j +] = ' '; + +172 +desütiÚ +[ +M’uWidth +] = '\0'; + +173 ià( +i + + +M’uFœ¡ + < +Æab–s +) { + +174  +j + = 0; +desütiÚs +[ +i + + +M’uFœ¡ +][j] && j < +M’uWidth +; j++) + +175 +desütiÚ +[ +j ++1] = +desütiÚs +[ +i + + +M’uFœ¡ +][j]; + +177 + `S‘TextA‰r +( +©Œ +); + +178 + `PrštAt +( +M’uCÞ +, +M’uRow + + +i +, +L +"%-.*s", +M’uWidth +, +desütiÚ +); + +179 + `S‘TextA‰r +( +Cu¼’tA‰r +); + +181 + `·št_´om± +(); + +182 + } +} + +184  +INTN + + +185 + $»ad_mes§ge_fže +( +INTN + +msg +, +INT8 + * +buf +, INTN +max +) + +187 +CHAR16 + * +fž’ame +; + +188 +fÝs_fd_t + +mes§ge_fd +; + +189 +EFI_STATUS + +¡©us +; + +190 +INTN + +Ën + = +max +; + +192 ià( +msg + > 10)  0; + +194 ià(( +fž’ame + = + `g‘_mes§ge_fž’ame +( +msg +)è=ð +NULL +) { + +195 + `VERB_PRT +(3, + `Pršt +( +L +"no message file specified\n")); + +199 + `VERB_PRT +(3, + `Pršt +( +L +"ݒšg mes§gfž%s\n", +fž’ame +)); + +201 +¡©us + = + `fÝs_ݒ +( +fž’ame +, & +mes§ge_fd +); + +202 ià( + `EFI_ERROR +( +¡©us +)) { + +203 + `VERB_PRT +(3, + `Pršt +( +L +"mes§gfž% nÙ found\n", +fž’ame +)); + +207 +¡©us + = + `fÝs_»ad +( +mes§ge_fd +, +buf +, & +Ën +); + +208 ià( + `EFI_ERROR +( +¡©us +)) { + +209 + `VERB_PRT +(3, + `Pršt +( +L +"Error„eading message file\n")); + +210 +Ën + = 0; + +213 + `fÝs_þo£ +( +mes§ge_fd +); + +215 + `VERB_PRT +(3, + `Pršt +( +L +"dڐ»adšg mes§gfž%s\n", +fž’ame +)); + +217  +Ën +; + +218 + } +} + +228  +INTN + + +229 + $£Ëù_k”Ãl +( +CHAR16 + * +Ïb– +, +INTN + +lsize +) + +231  + #CHAR_CTRL_C + ( +L +'\003'è + + ) + +232  + #CHAR_CTRL_D + ( +L +'\004'è + + ) + +233  + #CHAR_CTRL_F + ( +L +'\006'è + + ) + +234  + #CHAR_DEL + ( +L +'\177'è + + ) + +235 +SIMPLE_INPUT_INTERFACE + * + + = +sy¡ab +-> +CÚIn +; + +236 +EFI_INPUT_KEY + +key +; + +237 +EFI_STATUS + +¡©us +; + +238 +INT8 + +fœ¡_time + = 1; + +239 +INTN + +i +; + +240 +INT8 + +â + = 0; + +242 +»´št +: + +243 +i + = + `»ad_mes§ge_fže +(0, +msgbuf +, +MSGBUFLEN +-1); + +244 +msgbuf +[ +i +] = 0; + +245 + `·št_msg +( +msgbuf +); + +246 +Di¥ÏyP¬£d + = 1; + +247 + `·št_m’u +(); + +248 +Cu¼’tA‰r + = +Prom±A‰r +; + +249 + `S‘TextA‰r +( +Cu¼’tA‰r +); + +252 ( +¡©us += + +-> + `R—dKeySŒoke +(, & +key +)è=ð +EFI_NOT_READY +); + +253 ià( + `EFI_ERROR +( +¡©us +)) { + +254 + `S‘TextA‰r +( + `EFI_TEXT_ATTR +( +EFI_LIGHTGRAY +, +EFI_BLACK +)); + +255 + `CˬSü“n +(); + +256 + `ERR_PRT +(( +L +"£Ëù_k”ÃÈ»adkey: %r", +¡©us +)); + +259 ià( +key +. +UnicodeCh¬ + =ð +CHAR_CTRL_F +) { + +260 +â + = 1; + +263 ià( +â +) { + +264 ià( +key +. +UnicodeCh¬ + >= '0' && key.UnicodeChar <= '9') { + +265 ià( +key +. +UnicodeCh¬ + == '0') + +266 +key +. +SÿnCode + = +SCAN_F10 +; + +268 +key +. +SÿnCode + = +SCAN_F1 + + key. +UnicodeCh¬ + - '1'; + +269 +key +. +UnicodeCh¬ + = 0; + +271 +â + = 0; + +273 ià( +key +. +SÿnCode + =ð +SCAN_UP +) { + +274 ià( +M’uAùive +) + +275 +M’uAùive +--; + +278 ià( +M’uAùive + < +M’uFœ¡ +) + +279 +M’uFœ¡ + = +M’uAùive +; + +280 + `·št_m’u +(); + +283 ià( +key +. +SÿnCode + =ð +SCAN_DOWN +) { + +284 ià( +M’uAùive + < +Æab–s + - 1) + +285 +M’uAùive +++; + +288 ià( +M’uAùive + >ð +M’uFœ¡ + + +M’uHeight +) + +289 +M’uFœ¡ + = +M’uAùive + - +M’uHeight + + 1; + +290 + `·št_m’u +(); + +293 ià( +key +. +SÿnCode + >ð +SCAN_F1 + && key.SÿnCod<ð +SCAN_F10 +) { + +294 +i + = + `»ad_mes§ge_fže +( +key +. +SÿnCode + - +SCAN_F1 + + 1, +msgbuf +, +MSGBUFLEN +-1); + +295 ià( +i +) { + +296 +msgbuf +[ +i +] = 0; + +297 + `·št_msg +( +msgbuf +); + +298 ( +¡©us += + +-> + `R—dKeySŒoke +(, & +key +)è=ð +EFI_NOT_READY +); + +299  +»´št +; + +303  +key +. +UnicodeCh¬ +) { + +305  +L +'?': + +306 + `Pršt +( +L +"\n"); + +307 + `´št_deviûs +(); + +308 +fœ¡_time + = 0; + +309  +»´št +; + +310  +CHAR_BACKSPACE +: + +311  +CHAR_DEL +: + +312 ià( +Prom±L’ + == 0) ; + +313 +Prom±L’ +--; + +314 +Prom±Buf +[ +Prom±L’ +] = 0; + +315 ià( +Prom±L’ + >ð +Prom±Width +-2) + +316 + `·št_´om± +(); + +318 + `Pršt +( +L +"\b \b"); + +321  +CHAR_LINEFEED +: + +322  +CHAR_CARRIAGE_RETURN +: + +323 + `SŒCpy +( +Ïb– +, +Ïb–s +[ +M’uAùive +]); + +324 + `S‘TextA‰r +( + `EFI_TEXT_ATTR +( +EFI_LIGHTGRAY +, +EFI_BLACK +)); + +325 + `CˬSü“n +(); + +329 iàÐ +key +. +UnicodeCh¬ + =ð +CHAR_CTRL_D + + +330 || +key +. +UnicodeCh¬ + =ð +CHAR_CTRL_C +) { + +331 + `S‘TextA‰r +( + `EFI_TEXT_ATTR +( +EFI_LIGHTGRAY +, +EFI_BLACK +)); + +332 + `CˬSü“n +(); + +333 + `Pršt +( +L +"\nGiving uphen...\n"); + +336 ià( +key +. +UnicodeCh¬ + =ð +CHAR_NULL +) ; + +338 ià( +Prom±L’ + > +CMDLINE_MAXLEN +-1) ; + +340 ià( +key +. +UnicodeCh¬ + < ' ' || key.UnicodeChar > 0x7e) + +341 +key +. +UnicodeCh¬ + = '?'; + +342 +Prom±Buf +[ +Prom±L’ +++] = +key +. +UnicodeCh¬ +; + +343 +Prom±Buf +[ +Prom±L’ +] = 0; + +346 ià( +Prom±L’ + >ð +Prom±Width +-1) + +347 + `·št_´om± +(); + +349 + `Pršt +( +L +"%c", +key +. +UnicodeCh¬ +); + +353 + } +} + +355 +INTN + + +356 + $‹xtm’u_choo£ +( +CHAR16 + ** +¬gv +, +INTN + +¬gc +, INTN +šdex +, CHAR16 * +kÇme +, CHAR16 * +cmdlše +) + +358  + #BOOT_IMG_STR + +L +"BOOT_IMAGE=" + + ) + +359 +CHAR16 + +Ïb– +[ +CMDLINE_MAXLEN +]; + +360 +CHAR16 + +š™rd_Çme +[ +CMDLINE_MAXLEN +]; + +361 +CHAR16 + +vmcode_Çme +[ +CMDLINE_MAXLEN +]; + +362 +CHAR16 + +¬gs +[ +CMDLINE_MAXLEN +]; + +363 +CHAR16 + +devÇme +[ +CMDLINE_MAXLEN +]; + +364 +CHAR16 + +d·th +[ +FILENAME_MAXLEN +]; + +365 +CHAR16 + * +¦ash_pos +, * +cÞÚ_pos +, * +back¦ash_pos +; + +366 +UINTN + +Ën +; + +367 +INTN + +»t +; + +368 +VOID + * +hªdË + = +NULL +; + +372 +CursÜRow + = +CursÜCÞ + = +Prom±Row + = +Prom±CÞ + = 0; + +373 +M’uRow + = +M’uCÞ + = +M’uWidth + = +M’uHeight + = 0; + +374 +Di¥ÏyP¬£d + = +Cu¼’tA‰r + = +Prom±A‰r + = 0; + +375 +Prom±Width + = +M’uHiA‰r + = +M’uLoA‰r + = 0; + +376 +Prom±L’ + = +M’uAùive + = +M’uFœ¡ + = 0; + +377 +Prom±Buf +[0] = +CHAR_NULL +; + +379 +Æab–s + = 0; + +380  +Æab–s + < +MAX_LABELS + && ( +hªdË + = + `g‘_Ãxt_desütiÚ +(hªdË, +Ïb–s + +‚Ïb–s, +desütiÚs + +‚labels))) { + +381 ià( +desütiÚs +[ +Æab–s +][0] == 0) + +382 +desütiÚs +[ +Æab–s +] = +Ïb–s +[nlabels]; + +383 +Æab–s +++; + +385 +»¡¬t +: + +386 +vmcode_Çme +[0] = +š™rd_Çme +[0] = +kÇme +[0] = +cmdlše +[0] = +¬gs +[0] = +CHAR_NULL +; + +389 + `Mem£t +(& +–žo_Ýt +. +img_Ýt +, 0, (elilo_opt.img_opt)); + +391 ià( +–žo_Ýt +. +´om± +) { + +392 +»t + = + `£Ëù_k”Ãl +( +Ïb– +, (label)); + +393 ià( +»t + == -1)  -1; + +394 +¬gc + = + `¬gify +( +Prom±Buf +,(Prom±Buf), +¬gv +); + +395 +šdex + = 0; + +401 ià( +–žo_Ýt +. +®t_check + && + `®‹º©e_k”Ãl +( +Prom±Buf +, (PromptBuf)) == 0) { + +402 +¬gc + = + `¬gify +( +Prom±Buf +,(Prom±Buf), +¬gv +); + +403 +šdex + = 0; + +404 +Ïb– +[0] = +¬gs +[0] = +š™rd_Çme +[0] = +vmcode_Çme +[0] = 0; + +415 ià( +Ïb– +[0]) + +416 +»t + = + `fšd_Ïb– +( +Ïb– +, +kÇme +, +¬gs +, +š™rd_Çme +, +vmcode_Çme +); + +418 +»t + = + `fšd_Ïb– +(( +šdex + < +¬gc +è? +¬gv +[šdex] : +NULL +, +kÇme +, +¬gs +, +š™rd_Çme +, +vmcode_Çme +); + +424 ià( +»t + == -1) { + +425 ià(( +šdex + < +¬gc +è&& +¬gv +[index]) + +426 + `SŒCpy +( +kÇme +, +¬gv +[ +šdex +]); + +428 + `SŒCpy +( +kÇme +, +–žo_Ýt +. +deçuÉ_k”Ãl +); + +435 ià( +Ïb– +[0]) + +436 +šdex +--; + +437 ià( +¬gc + > 1+ +šdex +) { + +439 ++ +šdex + < +¬gc +) { + +440 + `SŒC© +( +¬gs +, +L +" "); + +441 + `SŒC© +( +¬gs +, +¬gv +[ +šdex +]); + +448 ià( +–žo_Ýt +. +š™rd +[0] =ð +CHAR_NULL + && +š™rd_Çme +[0] != CHAR_NULL) { + +449 + `SŒCpy +( +–žo_Ýt +. +š™rd +, +š™rd_Çme +); + +452 ià( +–žo_Ýt +. +vmcode +[0] =ð +CHAR_NULL + && +vmcode_Çme +[0] != CHAR_NULL) { + +453 + `SŒCpy +( +–žo_Ýt +. +vmcode +, +vmcode_Çme +); + +456 + `VERB_PRT +(1, { + `Pršt +( +L +"k”ÃÈ i  '%s'\n", +kÇme +); + +457 + `Pršt +( +L +"¬gum’t ‡» '%s'\n", +¬gs +); + +458 ià( +–žo_Ýt +. +š™rd +[0]è + `Pršt +( +L +"initrd is '%s'\n",ƒlilo_opt.initrd); + +459 ià( +–žo_Ýt +. +vmcode +[0]è + `Pršt +( +L +"vmm is '%s'\n",ƒlilo_opt.vmcode); + +462 ià( +–žo_Ýt +. +´om± + == 0) { + +464 + `Pršt +( +L +"ELILO\n"); + +465 +»t + = + `wa™_timeout +( +–žo_Ýt +. +d–ay +); + +466 ià( +»t + != 0) { + +467 +–žo_Ýt +. +´om± + = 1; + +468 +–žo_Ýt +. +š™rd +[0] =ƒlžo_Ýt. +vmcode +[0] = +CHAR_NULL +; + +469 +–žo_Ýt +. +timeout + = +ELILO_TIMEOUT_INFINITY +; + +470  +»¡¬t +; + +478 +¦ash_pos + = + `SŒChr +( +kÇme +, +L +'/'); + +479 +back¦ash_pos + = + `SŒChr +( +kÇme +, +L +'\\'); + +480 +cÞÚ_pos + = + `SŒChr +( +kÇme +, +L +':'); + +482 ià( +back¦ash_pos + && back¦ash_po < +¦ash_pos +) slash_pos = backslash_pos; + +484 ià( +cÞÚ_pos + =ð +NULL + || ( +¦ash_pos + && (slash_pos < colon_pos))) { + +485 + `SŒCpy +( +devÇme +, + `fÝs_boÙdev_Çme +()); + +486 + `SŒC© +( +devÇme +, +L +":"); + +489 ià( +kÇme +[0] !ð +L +'/' && kname[0] != L'\\') { + +490 + `fÝs_g‘deçuÉ_·th +( +d·th +, +FILENAME_MAXLEN +); + +491 + `SŒC© +( +devÇme +, +d·th +); + +494 +devÇme +[0] = +CHAR_NULL +; + +500 +Ën + = + `SŒL’ +( +BOOT_IMG_STR +) + +501 + + `SŒL’ +( +devÇme +) + +502 + + `SŒL’ +( +kÇme +) + +503 + +–žo_Ýt +. +vmcode +[0] ? + `SŒL’ +Ólžo_Ýt.vmcodeè: SŒL’( +kÇme +) + +505 + + `SŒL’ +( +¬gs +); + +507 ià( +Ën + >ð +CMDLINE_MAXLEN +-1) { + +508 + `S‘TextA‰r +( + `EFI_TEXT_ATTR +( +EFI_LIGHTGRAY +, +EFI_BLACK +)); + +509 + `CˬSü“n +(); + +510 + `ERR_PRT +(( +L +"‡rguments†istoo†ong cannot fit BOOT_IMAGE\n")); + +513 + `SŒCpy +( +cmdlše +, +L +"BOOT_IMAGE="); + +514 + `SŒC© +( +cmdlše +, +devÇme +); + +515 ià( +–žo_Ýt +. +vmcode +[0]) + +516 + `SŒC© +( +cmdlše +, +–žo_Ýt +. +vmcode +); + +518 + `SŒC© +( +cmdlše +, +kÇme +); + +519 + `SŒC© +( +cmdlše +, +L +" "); + +520 + `SŒC© +( +cmdlše +, +¬gs +); + +522 + `VERB_PRT +(3, + `Pršt +( +L +"fš® commªd†ši '%s'\n", +cmdlše +)); + +525 + } +} + +527  +INTN + + +528 + $‹xtm’u_´obe +( +EFI_HANDLE + +dev +) + +532 + } +} + +534 +choo£r_t + + g‹xtm’u_choo£r +={ + +535 +L +"textmenu", + +536 +‹xtm’u_´obe +, + +537 +‹xtm’u_choo£ + + + @choosers/textmenu.h + +26 #iâdeà +__ELILO_CHOOSER_TEXTMENU_H__ + + +27  + #__ELILO_CHOOSER_TEXTMENU_H__ + + + ) + +29  + ~"fžeÝs.h +" + +31 +choo£r_t + +‹xtm’u_choo£r +; + + @config.c + +29  + ~ + +30  + ~ + +31  + ~ + +33  + ~"–žo.h +" + +34  + ~"cÚfig.h +" + +41 #ià +defšed +( +CONFIG_Ÿ64 +) + +42  + #ELILO_ARCH_DEFAULT_CONFIG + +L +"–žo-Ÿ64.cÚf" + + ) + +43 #–ià +defšed + ( +CONFIG_Ÿ32 +) + +44  + #ELILO_ARCH_DEFAULT_CONFIG + +L +"–žo-Ÿ32.cÚf" + + ) + +52  + #ELILO_DEFAULT_CONFIG + +L +"–žo.cÚf" + + ) + +54  + #MAX_STRING + +CMDLINE_MAXLEN + + + ) + +55  + #CONFIG_BUFSIZE + 512 + + ) + +63  + #MAX_MESSAGES + 13 + + ) + +65  + sboÙ_image + { + +66  +boÙ_image + * + mÃxt +; + +67 +CHAR16 + + mÏb– +[ +MAX_STRING +]; + +68 +CHAR16 + + mkÇme +[ +FILENAME_MAXLEN +]; + +69 +CHAR16 + + mÝtiÚs +[ +MAX_STRING +]; + +70 +CHAR16 + + mš™rd +[ +FILENAME_MAXLEN +]; + +71 +CHAR16 + + mvmcode +[ +FILENAME_MAXLEN +]; + +72 +CHAR16 + + mroÙ +[ +FILENAME_MAXLEN +]; + +73 +CHAR16 + + mçÎback +[ +MAX_STRING +]; + +74 +CHAR16 + + mdesütiÚ +[ +MAX_STRING +]; + +76 +UINTN + + m¿mdisk +; + +77 +UINTN + + m»adÚly +; + +78 +UINTN + + ml™”® +; + +80 +sys_img_ÝtiÚs_t + + msys_img_Ýts +; + +81 } + tboÙ_image_t +; + +84 + mTOK_ERR +, + +85 + mTOK_EQUAL +, + +86 + mTOK_STR +, + +87 + mTOK_EOF + + +88 } + ttok’_t +; + +95 +CHAR16 + + mroÙ +[ +FILENAME_MAXLEN +]; + +96 +CHAR16 + + mš™rd +[ +FILENAME_MAXLEN +]; + +97 +CHAR16 + + mvmcode +[ +FILENAME_MAXLEN +]; + +98 +CHAR16 + + mÝtiÚs +[ +MAX_STRING +]; + +99 +CHAR16 + + mdeçuÉ_image_Çme +[ +MAX_STRING +]; + +100 +CHAR16 + + mmes§ge_fže +[ +MAX_MESSAGES +][ +FILENAME_MAXLEN +]; + +101 +CHAR16 + + mchoo£r +[ +FILENAME_MAXLEN +]; + +102 +CHAR16 + + mcÚfig_fže +[ +FILENAME_MAXLEN +]; + +103 +boÙ_image_t + * + mdeçuÉ_image +; + +105 +UINTN + + m»adÚly +; + +110 +UINTN + + m®t_check +; + +111 +UINTN + + mdebug +; + +112 +UINTN + + md–ay +; + +113 +UINTN + + m´om± +; + +114 +UINTN + + mtimeout +; + +115 +UINTN + + mv”bo£ +; + +116 +UINTN + + medd30_no_fÜû +; + +117 } + tglob®_cÚfig_t +; + +123  + s_cÚfig_ÝtiÚ_group + { + +124  +_cÚfig_ÝtiÚ_group + * + mÃxt +; + +125 +cÚfig_ÝtiÚ_t + * + mÝtiÚs +; + +126 +UINTN + + mÃÁr›s +; + +127 } + tcÚfig_ÝtiÚ_group_t +; + +129  +ÝtiÚ_aùiÚ_t + + gdo_image +, + gdo_l™”® +, + gdo_ÝtiÚs +; + +130  +INTN + +check_v”bos™y +( +VOID + *), +check_choo£r +(VOID *); + +132  +glob®_cÚfig_t + + gglob®_cÚfig +; + +137  +cÚfig_ÝtiÚ_t + + gglob®_commÚ_ÝtiÚs +[]={ + +138 { +OPT_STR +, +OPT_GLOBAL +, +L +"deçuÉ", +NULL +, NULL, +glob®_cÚfig +. +deçuÉ_image_Çme +}, + +139 { +OPT_NUM +, +OPT_GLOBAL +, +L +"timeout", +NULL +, NULL, & +glob®_cÚfig +. +timeout +}, + +140 { +OPT_NUM +, +OPT_GLOBAL +, +L +"d–ay", +NULL +, NULL, & +glob®_cÚfig +. +d–ay +}, + +141 { +OPT_BOOL +, +OPT_GLOBAL +, +L +"debug", +NULL +, NULL, & +glob®_cÚfig +. +debug +}, + +142 { +OPT_BOOL +, +OPT_GLOBAL +, +L +"´om±", +NULL +, NULL, & +glob®_cÚfig +. +´om± +}, + +143 { +OPT_NUM +, +OPT_GLOBAL +, +L +"v”bo£", +NULL +, +check_v”bos™y +, & +glob®_cÚfig +. +v”bo£ +}, + +144 { +OPT_FILE +, +OPT_GLOBAL +, +L +"roÙ", +NULL +, NULL, +glob®_cÚfig +. +roÙ +}, + +145 { +OPT_BOOL +, +OPT_GLOBAL +, +L +"»ad-Úly", +NULL +, NULL, & +glob®_cÚfig +. +»adÚly +}, + +146 { +OPT_BOOL +, +OPT_GLOBAL +, +L +"nÛdd30", +NULL +, NULL, & +glob®_cÚfig +. +edd30_no_fÜû +}, + +147 { +OPT_CMD +, +OPT_GLOBAL +, +L +"­³nd", +NULL +, NULL, +glob®_cÚfig +. +ÝtiÚs +}, + +148 { +OPT_FILE +, +OPT_GLOBAL +, +L +"š™rd", +NULL +, NULL, +glob®_cÚfig +. +š™rd +}, + +149 { +OPT_FILE +, +OPT_GLOBAL +, +L +"vmm", +NULL +, NULL, +glob®_cÚfig +. +vmcode +}, + +150 { +OPT_FILE +, +OPT_GLOBAL +, +L +"image", +do_image +, +NULL +, +Ýt_off£tof +( +kÇme +)}, + +151 { +OPT_BOOL +, +OPT_GLOBAL +, +L +"check®t", +NULL +, NULL, & +glob®_cÚfig +. +®t_check +}, + +152 { +OPT_STR +, +OPT_GLOBAL +, +L +"choo£r", +NULL +, +check_choo£r +, +glob®_cÚfig +. +choo£r +}, + +153 { +OPT_FILE +, +OPT_GLOBAL +, +L +"mes§ge", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[0]}, + +154 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f1", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[1]}, + +155 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f2", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[2]}, + +156 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f3", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[3]}, + +157 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f4", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[4]}, + +158 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f5", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[5]}, + +159 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f6", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[6]}, + +160 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f7", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[7]}, + +161 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f8", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[8]}, + +162 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f9", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[9]}, + +163 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f10", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[10]}, + +164 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f11", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[11]}, + +165 { +OPT_FILE +, +OPT_GLOBAL +, +L +"f12", +NULL +, NULL, +glob®_cÚfig +. +mes§ge_fže +[12]} + +168  +cÚfig_ÝtiÚ_t + + gimage_commÚ_ÝtiÚs +[]={ + +169 { +OPT_FILE +, +OPT_IMAGE +, +L +"roÙ", +NULL +, NULL, +Ýt_off£tof +( +roÙ +)}, + +170 { +OPT_BOOL +, +OPT_IMAGE +, +L +"»ad-Úly", +NULL +, NULL, +Ýt_off£tof +( +»adÚly +)}, + +171 { +OPT_CMD +, +OPT_IMAGE +, +L +"­³nd", +do_ÝtiÚs +, +NULL +, +Ýt_off£tof +( +ÝtiÚs +)}, + +172 { +OPT_CMD +, +OPT_IMAGE +, +L +"l™”®", +do_l™”® +, +NULL +, NULL}, + +173 { +OPT_FILE +, +OPT_IMAGE +, +L +"š™rd", +NULL +, NULL, +Ýt_off£tof +( +š™rd +)}, + +174 { +OPT_FILE +, +OPT_IMAGE +, +L +"vmm", +NULL +, NULL, +Ýt_off£tof +( +vmcode +)}, + +175 { +OPT_STR +, +OPT_IMAGE +, +L +"Ïb–", +NULL +, NULL, +Ýt_off£tof +( +Ïb– +)}, + +176 { +OPT_FILE +, +OPT_IMAGE +, +L +"image", +do_image +, +NULL +, +Ýt_off£tof +( +kÇme +)}, + +177 { +OPT_STR +, +OPT_IMAGE +, +L +"desütiÚ", +NULL +, NULL, +Ýt_off£tof +( +desütiÚ +)}, + +180  + #OPTION_IS_GLOBAL +( +p +è(Õ)-> +scÝe + =ð +OPT_GLOBAL +) + + ) + +181  + #OPTION_IS_IMG_SYS +( +p +è(Õ)-> +scÝe + =ð +OPT_IMAGE_SYS +) + + ) + +183  + #CHAR_EOF + ( +CHAR16 +)-1 + + ) + +184  + #CHAR_NUM0 + +L +'0' + + ) + +185  + #CHAR_NUM9 + +L +'9' + + ) + +187  +UINTN + + glše_num +; + +188  +INTN + + gback +; + +190  +cÚfig_ÝtiÚ_group_t + * + gglob®_ÝtiÚ_li¡ +; + +191  +cÚfig_ÝtiÚ_group_t + * + gimage_ÝtiÚ_li¡ +; + +194  +cÚfig_ÝtiÚ_group_t + * + gcu¼’t_ÝtiÚs +; + +196  +boÙ_image_t + * + gimage_li¡ +, * + gfœ¡_image +; + +197  +boÙ_image_t + * + gcu¼’t_img +; + +199  +INT8 + + gcÚfig_buf +[ +CONFIG_BUFSIZE +]; + +200  +UINTN + + gbuf_max +, + gbuf_pos +; + +202  +fÝs_fd_t + + gcÚfig_fd +; + +204  +VOID + + +205 + $cÚfig_”rÜ +( +CHAR16 + * +msg +,...) + +207 +va_li¡ + +­ +; + +208 +UINTN + + `_IPršt + (UINTN, UINTN, +SIMPLE_TEXT_OUTPUT_INTERFACE + *, +CHAR16 + *, +CHAR8 + *, +va_li¡ +); + +210 + `Pršt +( +L +"솚%d: ", +lše_num +); + +212 + `va_¡¬t +( +­ +, +msg +); + +213 + `_IPršt +(( +UINTN +)-1, (UINTN)-1, +sy¡ab +-> +CÚOut +, +msg +, +NULL +, +­ +); + +214 + `va_’d +( +­ +); + +215 + `Pršt +( +L +"\n"); + +216 + } +} + +229  +CHAR16 + + +230 + $g‘c +( +VOID +) + +232 +EFI_STATUS + +¡©us +; + +234 ià( +buf_pos + =ð0 || buf_po =ð +buf_max +) { + +235 +buf_max + = +CONFIG_BUFSIZE +; + +236 +¡©us + = + `fÝs_»ad +( +cÚfig_fd +, +cÚfig_buf +, & +buf_max +); + +237 ià( + `EFI_ERROR +( +¡©us +è|| +buf_max + =ð0è +CHAR_EOF +; + +239 +buf_pos + = 0; + +241  ( +CHAR16 +) +cÚfig_buf +[ +buf_pos +++]; + +242 + } +} + +249  +CHAR16 + + +250 + $Ãxt +( +VOID +) + +252 +CHAR16 + +ch +; + +254 ià( +back +) { + +255 +ch + = +back +; + +256 +back + = 0; + +257  +ch +; + +259  + `g‘c +(); + +260 + } +} + +265  +VOID + + +266 + $agaš +( +CHAR16 + +ch +) + +268 ià( +back +è{ + `cÚfig_”rÜ +( +L +"config:‡gain invokedwice"); } + +269 +back + = +ch +; + +270 + } +} + +279  +cÚfig_ÝtiÚ_t + * + +280 + $fšd_ÝtiÚ +( +cÚfig_ÝtiÚ_group_t + * +g½ +, +CHAR16 + * +¡r +) + +282 +cÚfig_ÝtiÚ_t + * +p + = +NULL +; + +283 +cÚfig_ÝtiÚ_t + * +’d +; + +285  +g½ +) { + +286 +p + = +g½ +-> +ÝtiÚs +; + +287 +’d + = +g½ +-> +ÝtiÚs ++g½-> +ÃÁr›s +; + +289  +p + !ð +’d +) { + +290 ià(! + `SŒCmp +( +¡r +, +p +-> +Çme +)) …; + +291 +p +++; + +293 +g½ + = g½-> +Ãxt +; + +295  +NULL +; + +296 + } +} + +307  +tok’_t + + +308 + $g‘_tok’ +( +CHAR16 + * +¡r +, +UINTN + +maxËn +) + +310 +INTN + +ch +, +esÿ³d +; + +311 +CHAR16 + * +h”e +; + +314 ( +ch + = + `Ãxt +()), ch =ð' ' || ch =ð'\t' || ch =ð'\n'èià(ch =ð'\n'è +lše_num +++; + +316 ià( +ch + =ð +CHAR_EOF +è +TOK_EOF +; + +318 ià( +ch + != '#') ; + +321 ( +ch + = + `Ãxt +()), ch !ð'\n'èià(ch =ð +CHAR_EOF +è +TOK_EOF +; + +322 +lše_num +++; + +324 ià( +ch + =ð'='è +TOK_EQUAL +; + +326 ià( +ch + == '"') { + +327 +h”e + = +¡r +; + +328  +h”e +- +¡r + < +maxËn +) { + +329 ià(( +ch + = + `Ãxt +()è=ð +CHAR_EOF +) { + +330 + `cÚfig_”rÜ +( +L +"EOF in quoted string"); + +331  +TOK_ERR +; + +333 ià( +ch + == '"') { + +334 * +h”e + = 0; + +335  +TOK_STR +; + +337 ià( +ch + == '\\') { + +338 +ch + = + `Ãxt +(); + +339 ià( +ch + != '"' && ch != '\\' && ch != '\n') { + +340 + `cÚfig_”rÜ +( +L +"Bad use of \\ in quoted string"); + +341  +TOK_ERR +; + +343 ià( +ch + == '\n') ; + +345 ( +ch + = + `Ãxt +()), ch == ' ' || ch == '\t'); + +346 ià(! +ch +) ; + +347 + `agaš +( +ch +); + +348 +ch + = ' '; + +352 ià( +ch + == '\n' || ch == '\t') { + +353 + `cÚfig_”rÜ +( +L +"\\n‡nd \\t‡re‚ot‡llowed in quoted strings"); + +354  +TOK_ERR +; + +356 * +h”e +++ = +ch +; + +358 + `cÚfig_”rÜ +( +L +"Quoted string isoo†ong"); + +359  +TOK_ERR +; + +360 + } +} + +362 + gh”e + = +¡r +; + +363 + gesÿ³d + = 0; + +365  + gh”e +- + g¡r + < + gmaxËn +) { + +366 ià( + gesÿ³d +) { + +367 ià( + gch + =ð +CHAR_EOF +) { + +368 +cÚfig_”rÜ +( +L +"\\…recedes EOF"); + +369  + gTOK_ERR +; + +371 ià( + gch + =ð'\n'è +lše_num +++; + +372 * + gh”e +++ = +ch + == '\t' ? ' ' : ch; + +373 + gesÿ³d + = 0; + +376 ià( + gch + =ð' ' || +ch + == '\t' || ch == '\n' || ch == '#' || + +377 +ch + =ð'=' || ch =ð +CHAR_EOF +) { + +378 +agaš +( +ch +); + +379 * + gh”e + = 0; + +380  + gTOK_STR +; + +382 ià(!( + gesÿ³d + = ( +ch + =ð'\\'))è* +h”e +++ = ch; + +384 + gch + = +Ãxt +(); + +386 +cÚfig_”rÜ +( +L +"Token isoo†ong"); + +387  + gTOK_ERR +; + +390  +INTN + + +391 + $image_check +( +boÙ_image_t + * +img +) + +393 +boÙ_image_t + * +b +; + +395 ià( +img + =ð +NULL +)  -1; + +398 ià( +img +-> +Ïb– +[0] == '\0') { + +399 + `cÚfig_”rÜ +( +L +"image has‚o†abel"); + +404  +b += +image_li¡ +; b; b = b-> +Ãxt +) { + +405 ià( +img + =ð +b +) ; + +406 ià(! + `SŒCmp +( +img +-> +Ïb– +, +b +->label)) { + +407 + `cÚfig_”rÜ +( +L +"imagw™h†ab– % ®»ady defšed", +img +-> +Ïb– +); + +412 + } +} + +414  +INTN + + +415 + $glob®_check +( +VOID +) + +418 + } +} + +420  +INTN + + +421 + $fš®_check +( +VOID +) + +423 +boÙ_image_t + * +b +; + +425 ià( +glob®_cÚfig +. +deçuÉ_image_Çme +[0]) { + +426  +b += +image_li¡ +; b; b = b-> +Ãxt +) { + +427 ià(! + `SŒCmp +( +b +-> +Ïb– +, +glob®_cÚfig +. +deçuÉ_image_Çme +)è +found +; + +429 + `cÚfig_”rÜ +( +L +"deçuÉ imag'%s'‚Ù defšed ", +glob®_cÚfig +. +deçuÉ_image_Çme +); + +432 +glob®_cÚfig +. +deçuÉ_image + = +fœ¡_image +; + +434 +found +: + +435 +glob®_cÚfig +. +deçuÉ_image + = +b +; + +437 + } +} + +449  +šlše + +VOID + * + +450 + $adju¡_poš‹r +( +cÚfig_ÝtiÚ_t + * +p +) + +455 ià( + `OPTION_IS_GLOBAL +( +p +)è…-> +d©a +; + +457 ià( + `OPTION_IS_IMG_SYS +( +p +)è ( +VOID + *)(( +UINTN +)& +cu¼’t_img +-> +sys_img_Ýts + +…-> +d©a +); + +459  ( +VOID + *)(( +UINTN +) +cu¼’t_img + + +p +-> +d©a +); + +460 + } +} + +465  +INTN + + +466 + $do_image +( +cÚfig_ÝtiÚ_t + * +p +, +VOID + * +¡r +) + +468 +boÙ_image_t + * +img +; + +477 ià( +cu¼’t_img +) { + +478 ià( + `image_check +( +cu¼’t_img +) == -1)  -1; + +479 } ià( + `glob®_check +() == -1)  -1; + +481 +img + = ( +boÙ_image_t + *) + `®loc +((boÙ_image_t), +EfiLßd”D©a +); + +482 ià( +img + =ð +NULL +)  -1; + +484 + `Mem£t +( +img +, 0, ( +boÙ_image_t +)); + +486 + `DBG_PRT +(( +L +"mu¡ dØimagÚ %s", ( +CHAR16 + *) +¡r +)); + +489 + `SŒCpy +( +img +-> +kÇme +, +¡r +); + +492 +cu¼’t_ÝtiÚs + = +image_ÝtiÚ_li¡ +; + +495 ià( +image_li¡ + =ð +NULL +è +fœ¡_image + = +img +; + +500 ià( +image_li¡ + =ð +NULL +) + +501 +image_li¡ + = +img +; + +503 +boÙ_image_t + * +p + = +image_li¡ +; + +505  +p +-> +Ãxt +) + +506 +p + =…-> +Ãxt +; + +507 +p +-> +Ãxt + = +img +; + +511 +cu¼’t_img + = +img +; + +514 + } +} + +521  +INTN + + +522 + $do_boޗn +( +cÚfig_ÝtiÚ_t + * +p +) + +524 +INT8 + * +buf +; + +526 +buf + = + `adju¡_poš‹r +( +p +); + +528 ià( +p +-> +aùiÚ +è…-> + `aùiÚ +Õ, +NULL +); + +531 * +buf + = 1; + +534 + } +} + +542  +INTN + + +543 + $do_l™”® +( +cÚfig_ÝtiÚ_t + * +p +, +VOID + * +¡r +) + +548 + `SŒCpy +( +cu¼’t_img +-> +ÝtiÚs +, +¡r +); + +550 +cu¼’t_img +-> +l™”® + = 1; + +553 + } +} + +555  +INTN + + +556 + $do_ÝtiÚs +( +cÚfig_ÝtiÚ_t + * +p +, +VOID + * +¡r +) + +559 ià( +cu¼’t_img +-> +l™”® +)  0; + +564 + `SŒCpy +( +cu¼’t_img +-> +ÝtiÚs +, +¡r +); + +567 + } +} + +569  +INTN + + +570 + $do_num”ic +( +cÚfig_ÝtiÚ_t + * +p +) + +572 +CHAR16 + +num¡r +[ +MAX_STRING +]; + +573 +CHAR16 + * +¡r +; + +574 +tok’_t + +tok +; + +575 +UINTN + * +buf +; + +576 +UINTN + +tmp +; + +581 +tok + = + `g‘_tok’ +( +num¡r +, +MAX_STRING +); + +582 ià( +tok + !ð +TOK_EQUAL +) { + +583 + `cÚfig_”rÜ +( +L +"O±iÚ % ex³ù ªƒqu® sigÇÈ+ v®ue", +p +-> +Çme +); + +591 +tok + = + `g‘_tok’ +( +num¡r +, +MAX_STRING +); + +592 ià( +tok + !ð +TOK_STR +) { + +593 + `cÚfig_”rÜ +( +L +"O±iÚ % ex³ù ¨v®ue", +p +-> +Çme +); + +596 +¡r + = +num¡r +; + +601 ià( +p +-> +aùiÚ +è…-> + `aùiÚ +Õ, +¡r +); + +606 ià( +p +-> +d©a + =ð +NULL +)  0; + +608 +buf + = ( +UINTN + *) + `adju¡_poš‹r +( +p +); + +610 * +¡r + && *¡¸>ð +CHAR_NUM0 + && *¡¸<ð +CHAR_NUM9 +) str++; + +611 ià(* +¡r +) { + +612 + `cÚfig_”rÜ +( +L +"% i ex³ùšg‡‚um”iødecim® v®ue", +p +-> +Çme +); + +616 +tmp + = + `Atoi +( +num¡r +); + +618 ià( +p +-> +check + &&…-> + `check +(& +tmp +) == -1)  -1; + +624 ià(* +buf +) { + +625 + `cÚfig_”rÜ +( +L +"ÝtiÚ % i ®»ady defšed iÀthi cڋxt", +p +-> +Çme +); + +629 * +buf + = +tmp +; + +632 + } +} + +634  +INTN + + +635 + $check_v”bos™y +( +VOID + * +d©a +) + +637 +UINTN + * +v® + = (UINTN *) +d©a +; + +639 ià(* +v® + > 5) { + +640 + `cÚfig_”rÜ +( +L +"V”bos™y†ev– mu¡ bš [0-5]‡nd‚Ù %d", * +v® +); + +645 + } +} + +652  +INTN + + +653 + $check_choo£r +( +VOID + * +d©a +) + +655 +CHAR16 + * +choo£r + = (CHAR16 *) +d©a +; + +657 ià( + `exi¡_choo£r +( +choo£r +) == -1) { + +658 + `cÚfig_”rÜ +( +L +"choo£¸% i unknown\n", +choo£r +); + +662 + } +} + +665  +INTN + + +666 + $do_¡ršg_cÜe +( +cÚfig_ÝtiÚ_t + * +p +, +CHAR16 + * +¡r +, +UINTN + +maxËn +, CHAR16 * +msg +) + +668 +tok’_t + +tok +; + +669 +CHAR16 + * +buf +; + +674 +tok + = + `g‘_tok’ +( +¡r +, +maxËn +); + +675 ià( +tok + !ð +TOK_EQUAL +) { + +676 + `cÚfig_”rÜ +( +L +"O±iÚ % ex³ù ªƒqu® sigÇÈ+ %s", +p +-> +Çme +, +msg +); + +683 +tok + = + `g‘_tok’ +( +¡r +, +maxËn +); + +684 ià( +tok + !ð +TOK_STR +) { + +685 + `cÚfig_”rÜ +( +L +"O±iÚ % ex³ù %s", +p +-> +Çme +, +msg +); + +693 ià( +p +-> +aùiÚ +è…-> + `aùiÚ +Õ, +¡r +); + +698 ià( +p +-> +d©a + =ð +NULL +)  0; + +700 +buf + = + `adju¡_poš‹r +( +p +); + +702 ià(* +buf + !ð +CHAR_NULL +) { + +703 + `cÚfig_”rÜ +( +L +"'%s'‡Ì—dy defšed", +p +-> +Çme +); + +706 ià( +p +-> +check + &&…-> + `check +( +¡r +) == -1)  -1; + +711 + `SŒCpy +( +buf +, +¡r +); + +714 + } +} + +716  +INTN + + +717 + $do_¡ršg +( +cÚfig_ÝtiÚ_t + * +p +) + +719 +CHAR16 + +¡r +[ +MAX_STRING +]; + +721  + `do_¡ršg_cÜe +( +p +, +¡r +, +MAX_STRING +, +L +"string"); + +722 + } +} + +724  +INTN + + +725 + $do_fže +( +cÚfig_ÝtiÚ_t + * +p +) + +727 +CHAR16 + +¡r +[ +FILENAME_MAXLEN +]; + +729  + `do_¡ršg_cÜe +( +p +, +¡r +, +FILENAME_MAXLEN +, +L +"filename"); + +730 + } +} + +733  +INTN + + +734 + $do_cmd +( +cÚfig_ÝtiÚ_t + * +p +) + +736 +CHAR16 + +¡r +[ +CMDLINE_MAXLEN +]; + +737  + `do_¡ršg_cÜe +( +p +, +¡r +, +CMDLINE_MAXLEN +, +L +"kernel options"); + +738 + } +} + +741 +INTN + + +742 + $cÚfig_·r£ +( +VOID +) + +744 +CHAR16 + +¡r +[ +MAX_STRING +]; + +745 +INTN + +»t + = -1; + +746 +tok’_t + +tok +; + +747 +cÚfig_ÝtiÚ_t + * +p +; + +750 +tok + = + `g‘_tok’ +( +¡r +, +MAX_STRING +); + +752 ià( +tok + =ð +TOK_EOF +) ; + +754 ià( +tok + =ð +TOK_ERR +)  -1; + +756 iàÐ( +p + = + `fšd_ÝtiÚ +( +cu¼’t_ÝtiÚs +, +¡r +)è=ð +NULL +) { + +757 + `cÚfig_”rÜ +( +L +"UnkowÀÝtiÚ %s", +¡r +); + +762 +»t + = -1; + +764  +p +-> +ty³ +) { + +765  +OPT_BOOL +: + +766 +»t + = + `do_boޗn +( +p +); + +768  +OPT_STR +: + +769 +»t + = + `do_¡ršg +( +p +); + +771  +OPT_NUM +: + +772 +»t + = + `do_num”ic +( +p +); + +774  +OPT_FILE +: + +775 +»t + = + `do_fže +( +p +); + +777  +OPT_CMD +: + +778 +»t + = + `do_cmd +( +p +); + +781 + `cÚfig_”rÜ +( +L +"UnkowÀÝtiځy³ %d", +p +-> +ty³ +); + +783 ià( +»t + =ð-1è +”rÜ +; + +785 ià( +cu¼’t_img +) { + +786 +»t + = + `image_check +( +cu¼’t_img +); + +788 + `cÚfig_”rÜ +( +L +"No image defined !"); + +790 ià( +»t + =ð0軈ð + `fš®_check +(); + +791 +”rÜ +: + +792  +»t +; + +793 + } +} + +795  +VOID + + +796 + $upd©e_–žo_Ýt +( +VOID +) + +803 ià( +glob®_cÚfig +. +®t_check +è +–žo_Ýt +.alt_check = 1; + +805 ià( +glob®_cÚfig +. +debug +è +–žo_Ýt +.debug = 1; + +806 ià( +glob®_cÚfig +. +´om± +è +–žo_Ýt +.prompt = 1; + +813 ià( +glob®_cÚfig +. +v”bo£ + && +–žo_Ýt +.verbose == 0) + +814 +–žo_Ýt +. +v”bo£ + = +glob®_cÚfig +.verbose; + +816 ià( +glob®_cÚfig +. +choo£r +[0] && +–žo_Ýt +.chooser[0] == 0) + +817 + `SŒCpy +( +–žo_Ýt +. +choo£r +, +glob®_cÚfig +.chooser); + +823 ià( +glob®_cÚfig +. +edd30_no_fÜû + && +–žo_Ýt +.edd30_no_force == 0) + +824 +–žo_Ýt +. +edd30_no_fÜû + = 1; + +830 ià( +glob®_cÚfig +. +d–ay + && +–žo_Ýt +. +d–ay_£t + == 0) + +831 +–žo_Ýt +. +d–ay + = +glob®_cÚfig +.delay; + +834 +–žo_Ýt +. +timeout + = +glob®_cÚfig +.timeout; + +837 + } +} + +843 +CHAR16 + * + +844 + $g‘_cÚfig_fže +( +VOID +) + +846  +glob®_cÚfig +. +cÚfig_fže +[0] ? glob®_cÚfig.cÚfig_fž: +NULL +; + +847 + } +} + +849 +EFI_STATUS + + +850 + $»ad_cÚfig +( +CHAR16 + * +fž’ame +) + +852 +EFI_STATUS + +¡©us +; + +853 +INTN + +»t +; + +855 ià( +fž’ame + =ð +NULL +è +EFI_INVALID_PARAMETER +; + +857 + `VERB_PRT +(3, + `Pršt +( +L +"Œyšg cÚfig fž%s\n", +fž’ame +)); + +859 + `SŒCpy +( +glob®_cÚfig +. +cÚfig_fže +, +fž’ame +); + +861 +¡©us + = + `fÝs_ݒ +( +fž’ame +, & +cÚfig_fd +); + +862 ià( + `EFI_ERROR +( +¡©us +)) { + +863 + `VERB_PRT +(3, + `Pršt +( +L +"ÿÂÙ o³ÀcÚfig fž%s\n", +fž’ame +)); + +864  +¡©us +; + +869 +lše_num + = 1; + +871 +»t + = + `cÚfig_·r£ +(); + +873 + `fÝs_þo£ +( +cÚfig_fd +); + +875 + `DBG_PRT +(( +L +"done…arsing config file\n")); + +877 ià( +»t + !ð0è +EFI_INVALID_PARAMETER +; + +879 + `upd©e_–žo_Ýt +(); + +881  +EFI_SUCCESS +; + +882 + } +} + +884 +VOID + + +885 + $´št_Ïb–_li¡ +( +VOID +) + +887 +boÙ_image_t + * +img +, * +dæ + = +glob®_cÚfig +. +deçuÉ_image +; + +889 ià( +dæ +è + `Pršt +( +L +"\t%s\n", dæ-> +Ïb– +); + +891  +img + = +image_li¡ +; img; img = img-> +Ãxt +) { + +892 ià( +img + !ð +dæ +è + `Pršt +( +L +"\t%s\n", img-> +Ïb– +); + +894 + } +} + +902 +VOID + * + +903 + $g‘_Ãxt_desütiÚ +( +VOID + * +´ev +, +CHAR16 + ** +Ïb– +, CHAR16 ** +desütiÚ +) + +905 +boÙ_image_t + * +img + = (boÙ_image_ˆ*) +´ev +; + +907 ià( +img + =ð +NULL +) + +908 +img + = +image_li¡ +; + +910 +img + = img-> +Ãxt +; + +912 ià( +img +) { + +913 * +Ïb– + = +img +->label; + +914 * +desütiÚ + = +img +->description; + +915  (*) +img +; + +918  +NULL +; + +919 + } +} + +925 +CHAR16 + * + +926 + $fšd_desütiÚ +( +CHAR16 + * +Ïb– +) + +928 +boÙ_image_t + * +img +; + +931  +img + = +image_li¡ +; img; img = img-> +Ãxt +) { + +932 ià( + `SŒiCmp +( +img +-> +Ïb– +,†abel) == 0) { + +933  +img +-> +desütiÚ +; + +936  +NULL +; + +937 + } +} + +939 +INTN + + +940 + $fšd_Ïb– +( +CHAR16 + * +Ïb– +, CHAR16 * +kÇme +, CHAR16 * +ÝtiÚs +, CHAR16 * +š™rd +, CHAR16 * +vmcode +) + +942 +boÙ_image_t + * +img +; + +944 ià( +Ïb– + =ð +NULL +) { + +945 ià( +glob®_cÚfig +. +deçuÉ_image + =ð +NULL +)  -1; + +946 +img + = +glob®_cÚfig +. +deçuÉ_image +; + +947  +found +; + +950 +ÝtiÚs +[0] = 0; + +953  +img + = +image_li¡ +; img; img = img-> +Ãxt +) { + +954 ià( + `SŒiCmp +( +img +-> +Ïb– +,†abel) == 0) { + +955  +found +; + +961 ià( +glob®_cÚfig +. +roÙ +[0]) { + +962 + `SŒCpy +( +ÝtiÚs +, +L +"„oot="); + +963 + `SŒC© +( +ÝtiÚs +, +glob®_cÚfig +. +roÙ +); + +966 ià( +glob®_cÚfig +. +ÝtiÚs +[0]) { + +967 + `SŒC© +( +ÝtiÚs +, +L +" "); + +968 + `SŒC© +( +ÝtiÚs +, +glob®_cÚfig +.options); + +970 ià( +glob®_cÚfig +. +»adÚly +è + `SŒC© +( +ÝtiÚs +, +L +"„o"); + +972 ià( +glob®_cÚfig +. +š™rd +[0]è + `SŒCpy +(initrd, global_config.initrd); + +973 ià( +glob®_cÚfig +. +vmcode +[0]è + `SŒCpy +(vmcode, global_config.vmcode); + +976 +–žo_Ýt +. +sys_img_Ýts + = +NULL +; + +979 +found +: + +980 + `SŒCpy +( +kÇme +, +img +->kname); + +987 ià( +img +-> +l™”® + == 0) { + +988 ià( +img +-> +roÙ +[0] || +glob®_cÚfig +.root[0]) { + +989 + `SŒC© +( +ÝtiÚs +, +L +"root="); + +990 + `SŒC© +( +ÝtiÚs +, +img +-> +roÙ +[0] ? img->roÙ : +glob®_cÚfig +.root); + +993 ià( +img +-> +ÝtiÚs +[0] || +glob®_cÚfig +.options[0]) { + +994 + `SŒC© +( +ÝtiÚs +, +L +" "); + +995 + `SŒC© +( +ÝtiÚs +, +img +->ÝtiÚs[0] ? img->ÝtiÚs: +glob®_cÚfig +.options); + +997 ià( +img +-> +»adÚly + || +glob®_cÚfig +.readonly) { + +998 + `SŒC© +( +ÝtiÚs +, +L +"„o"); + +1002 + `SŒCpy +( +ÝtiÚs +, +img +->options); + +1006 ià( +img +-> +š™rd +[0]) + +1007 + `SŒCpy +( +š™rd +, +img +->initrd); + +1008 ià( +glob®_cÚfig +. +š™rd +[0]) + +1009 + `SŒCpy +( +š™rd +, +glob®_cÚfig +.initrd); + +1011 ià( +img +-> +vmcode +[0]) + +1012 + `SŒCpy +( +vmcode +, +img +->vmcode); + +1013 ià( +glob®_cÚfig +. +vmcode +[0]) + +1014 + `SŒCpy +( +vmcode +, +glob®_cÚfig +.vmcode); + +1019 +–žo_Ýt +. +sys_img_Ýts + = & +img +->sys_img_opts; + +1021 + `DBG_PRT +(( +L +"Ïb– %s: kÇme=% ÝtiÚs=% š™rd=% vmcode=%s", +img +-> +Ïb– +, +kÇme +, +ÝtiÚs +, +š™rd +, +vmcode +)); + +1024 + } +} + +1026  +VOID + + +1027 + $´št_ÝtiÚs +( +cÚfig_ÝtiÚ_group_t + * +g½ +, +BOOLEAN + +fœ¡ +) + +1029 +cÚfig_ÝtiÚ_t + * +’d +, * +p +; + +1030 +CHAR16 + * +¡r +; + +1032  +g½ +) { + +1033 +p + = +g½ +-> +ÝtiÚs +; + +1034 +’d + = +g½ +-> +ÝtiÚs ++g½-> +ÃÁr›s +; + +1035  +p + !ð +’d +) { + +1036 +¡r + = +NULL +; + +1037  +p +-> +ty³ +) { + +1038  +OPT_BOOL +: + +1039 +¡r + = +L +"%s"; + +1041  +OPT_STR + : + +1042 +¡r + = +L +"%s=string"; + +1044  +OPT_FILE + : + +1045 +¡r + = +L +"%s=filename"; + +1047  +OPT_CMD + : + +1048 +¡r + = +L +"%s=kernel_options"; + +1050  +OPT_NUM + : + +1051 +¡r + = +L +"%s=number"; + +1056 ià( +¡r + && +fœ¡ + =ð +FALSE +è + `Pršt +( +L +", "); + +1057 ià( +¡r +è + `Pršt +(¡r, +p +-> +Çme +); + +1058 +fœ¡ + = +FALSE +; + +1059 +p +++; + +1061 +g½ + = g½-> +Ãxt +; + +1063 + } +} + +1066 +VOID + + +1067 + $´št_cÚfig_ÝtiÚs +( +VOID +) + +1069 + `Pršt +( +L +"Global options supported:\n"); + +1071 + `´št_ÝtiÚs +( +glob®_ÝtiÚ_li¡ +, +TRUE +); + +1072 + `Pršt +( +L +"\n\n"); + +1074 + `Pršt +( +L +"Image options supported:\n"); + +1075 + `´št_ÝtiÚs +( +image_ÝtiÚ_li¡ +, +TRUE +); + +1076 + `Pršt +( +L +"\n"); + +1077 + } +} + +1084 +CHAR16 + * + +1085 + $g‘_mes§ge_fž’ame +( +INTN + +which +) + +1087 ià( +which + < 0 || which >ð +MAX_MESSAGES +è +NULL +; + +1088  +glob®_cÚfig +. +mes§ge_fže +[ +which +]; + +1089 + } +} + +1091 +INTN + + +1092 + $»gi¡”_cÚfig_ÝtiÚs +( +cÚfig_ÝtiÚ_t + * +Ýt +, +UINTN + +n +, +cÚfig_ÝtiÚ_group_scÝe_t + +group +) + +1094 +cÚfig_ÝtiÚ_group_t + * +Ãwg½ +, ** +g½ +; + +1096 ià( +Ýt + =ð +NULL + || +n + =ð0 || ( +group + !ð +OPTIONS_GROUP_GLOBAL + && grou°!ð +OPTIONS_GROUP_IMAGE +))  -1; + +1098 + `VERB_PRT +(3, + `Pršt +( +L +"»gi¡”šg %d o±iÚ fÜ grou°%s\n", +n +, +group + =ð +OPTIONS_GROUP_GLOBAL + ? L"global" : L"image")); + +1100 +Ãwg½ + = + `®loc +(( +cÚfig_ÝtiÚ_group_t +), +EfiLßd”D©a +); + +1101 ià( +Ãwg½ + =ð +NULL +)  -1; + +1103 +g½ + = +group + =ð +OPTIONS_GROUP_GLOBAL + ? & +glob®_ÝtiÚ_li¡ + : & +image_ÝtiÚ_li¡ +; + +1105 ià(* +g½ +è(*g½)-> +Ãxt +) grp = &(*grp)->next; + +1107 +Ãwg½ +-> +ÝtiÚs + = +Ýt +; + +1108 +Ãwg½ +-> +Ãxt + = +NULL +; + +1109 +Ãwg½ +-> +ÃÁr›s + = +n +; + +1111 ià(* +g½ +) { + +1112 (* +g½ +)-> +Ãxt + = +Ãwg½ +; + +1114 * +g½ + = +Ãwg½ +; + +1117 + } +} + +1122 +INTN + + +1123 + $cÚfig_š™ +( +VOID +) + +1125 +INTN + +»t +; + +1127 +»t + = + `»gi¡”_cÚfig_ÝtiÚs +( +glob®_commÚ_ÝtiÚs +, + +1128 ( +glob®_commÚ_ÝtiÚs +)/( +cÚfig_ÝtiÚ_t +), + +1129 +OPTIONS_GROUP_GLOBAL +); + +1130 ià( +»t + == -1)  -1; + +1132 +»t + = + `»gi¡”_cÚfig_ÝtiÚs +( +image_commÚ_ÝtiÚs +, + +1133 ( +image_commÚ_ÝtiÚs +)/( +cÚfig_ÝtiÚ_t +), + +1134 +OPTIONS_GROUP_IMAGE +); + +1136 +cu¼’t_ÝtiÚs + = +glob®_ÝtiÚ_li¡ +; + +1138  +»t +; + +1139 + } +} + + @config.h + +26 #iâdeà +__ELILO_CONFIG_H__ + + +27  + #__ELILO_CONFIG_H__ + + + ) + +29  + #Ýt_off£tof +( +Ýt +è(&(( +boÙ_image_t + *)(0x0))->Ýt) + + ) + +31 ’um { + mOPT_NOTUSED +, + mOPT_STR +, + mOPT_CMD +, + mOPT_BOOL +, + mOPT_NUM +, + mOPT_FILE + } + tcÚfig_ÝtiÚ_ty³_t +; + +33 ’um { + mOPT_GLOBAL +, + +34 + mOPT_IMAGE +, + +35 + mOPT_IMAGE_SYS + + +36 } + tcÚfig_ÝtiÚ_scÝe_t +; + +38 ’um { + mOPTIONS_GROUP_GLOBAL +, + +39 + mOPTIONS_GROUP_IMAGE +, + +40 } + tcÚfig_ÝtiÚ_group_scÝe_t +; + +42  + g_cÚfig_ÝtiÚ_t +; + +43  +INTN + + tÝtiÚ_aùiÚ_t +( + t_cÚfig_ÝtiÚ_t + *, + tVOID + *); + +45  + s_cÚfig_ÝtiÚ_t + { + +46 +cÚfig_ÝtiÚ_ty³_t + + mty³ +; + +47 +cÚfig_ÝtiÚ_scÝe_t + + mscÝe +; + +48 +CHAR16 + * + mÇme +; + +49 +ÝtiÚ_aùiÚ_t + * + maùiÚ +; + +50 +INTN + (* +check +)(*); + +51 +VOID + * + md©a +; + +52 } + tcÚfig_ÝtiÚ_t +; + +54 +INTN + +»gi¡”_cÚfig_ÝtiÚs +( +cÚfig_ÝtiÚ_t + * +Ýt +, +UINTN + +ÃÁr›s +, +cÚfig_ÝtiÚ_group_scÝe_t +); + + @devschemes/simple.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"fžeÝs.h +" + +32  + #NAMING_SCHEME + +L +"sim¶e" + + ) + +35 +INT8 + + mty³ +; + +36 +INT8 + + msubty³ +; + +37 +INTN + (* +deviû_func +)( +deviû_t + * + mdev +, +EFI_DEVICE_PATH + * + mdp +); + +38 } + tdeviûs_ty³s_t +; + +41  +UINT32 + + g©­i_couÁ +, + gscsi_couÁ +, + gÃt_couÁ +; + +43  +INTN + + +44 + $©­i_deviû +( +deviû_t + * +dev +, +EFI_DEVICE_PATH + * +dp +) + +48 +dev +-> +Çme +[0] = +L +'a'; + +49 +dev +-> +Çme +[1] = +L +'t'; + +50 +dev +-> +Çme +[2] = +L +'a'; + +51 +dev +-> +Çme +[3] = +L +'p'; + +52 +dev +-> +Çme +[4] = +L +'i'; + +54 + `SPršt +( +dev +-> +Çme ++5, +FILEOPS_DEVNAME_MAXLEN +-5-1, +L +"%d", +©­i_couÁ +); + +55 +©­i_couÁ +++; + +58 + } +} + +60  +INTN + + +61 + $scsi_deviû +( +deviû_t + * +dev +, +EFI_DEVICE_PATH + * +dp +) + +65 +dev +-> +Çme +[0] = +L +'s'; + +66 +dev +-> +Çme +[1] = +L +'c'; + +67 +dev +-> +Çme +[2] = +L +'s'; + +68 +dev +-> +Çme +[3] = +L +'i'; + +70 + `SPršt +( +dev +-> +Çme ++4, +FILEOPS_DEVNAME_MAXLEN +-4-1, +L +"%d", +scsi_couÁ +); + +71 +scsi_couÁ +++; + +74 + } +} + +76  +INTN + + +77 + $ÃtwÜk_deviû +( +deviû_t + * +dev +, +EFI_DEVICE_PATH + * +dp +) + +81 +dev +-> +Çme +[0] = +L +'n'; + +82 +dev +-> +Çme +[1] = +L +'e'; + +83 +dev +-> +Çme +[2] = +L +'t'; + +85 + `SPršt +( +dev +-> +Çme ++3, +FILEOPS_DEVNAME_MAXLEN +-3-1, +L +"%d", +Ãt_couÁ +); + +86 +Ãt_couÁ +++; + +89 + } +} + +94  +deviûs_ty³s_t + + gdev_ty³s +[]={ + +95 { +MESSAGING_DEVICE_PATH +, +MSG_ATAPI_DP +, +©­i_deviû +}, + +96 { +MESSAGING_DEVICE_PATH +, +MSG_SCSI_DP +, +scsi_deviû +}, + +97 { +MESSAGING_DEVICE_PATH +, +MSG_MAC_ADDR_DP +, +ÃtwÜk_deviû +}, + +98 { 0, 0 , +NULL +} + +101  +INTN + + +102 + $sim¶e_scheme +( +deviû_t + * +b +, +UINTN + +n +) + +104 +EFI_DEVICE_PATH + * +dp1 +, * +dp +; + +105 +deviûs_ty³s_t + * +p +; + +106 +UINTN + +i +; + +117 ià( +–žo_Ýt +. +edd30_Ú + == 0) { + +118 + `VERB_PRT +(4, + `Pršt +( +L +"% deviû‚amšg schemÚly wÜk w™h EDD3.0ƒÇbËd\n", +NAMING_SCHEME +)); + +122  +i +=0; i < +n +; i++) { + +123 +dp + = + `DeviûP©hFromHªdË +( +b +[ +i +]. +dev +); + +124 ià( +dp + =ð +NULL +) { + +125 + `ERR_PRT +(( +L +"ÿÂÙ g‘ deviû…©h fÜ deviû %d", +i +)); + +128 +dp1 + = +dp + = + `UÅackDeviûP©h +(dp); + +130 ! + `IsDeviûP©hEnd +( +dp +)) { + +131 +p + = +dev_ty³s +; + +132  +p +-> +ty³ +) { + +133 iàÐ +p +-> +ty³ + =ð + `DeviûP©hTy³ +( +dp +) + +134 && +p +-> +subty³ + =ð + `DeviûP©hSubTy³ +( +dp +)) { + +135 (* +p +-> +deviû_func +)( +b ++ +i +, +dp +); + +136  +dÚe +; + +139 +p +++; + +141 +dp + = + `NextDeviûP©hNode +(dp); + +143 +dÚe +: + +144 + `F»ePoÞ +( +dp1 +); + +147 + } +} + +149 +devÇme_scheme_t + + gsim¶e_devÇme_scheme +={ + +150 +NAMING_SCHEME +, + +151 +sim¶e_scheme + + + @elf.h + +29 #iâdeà +__LINUX_ELF_H__ + + +30  + #__LINUX_ELF_H__ + + + ) + +36  + ~ + +39  +UINT32 + + tElf32_Addr +; + +40  +UINT16 + + tElf32_H®f +; + +41  +UINT32 + + tElf32_Off +; + +42  +INT32 + + tElf32_SwÜd +; + +43  +UINT32 + + tElf32_WÜd +; + +46  +UINT64 + + tElf64_Addr +; + +47  +UINT16 + + tElf64_H®f +; + +48  +INT16 + + tElf64_SH®f +; + +49  +UINT64 + + tElf64_Off +; + +50  +INT64 + + tElf64_SwÜd +; + +51  +UINT64 + + tElf64_WÜd +; + +54  + #PT_NULL + 0 + + ) + +55  + #PT_LOAD + 1 + + ) + +56  + #PT_DYNAMIC + 2 + + ) + +57  + #PT_INTERP + 3 + + ) + +58  + #PT_NOTE + 4 + + ) + +59  + #PT_SHLIB + 5 + + ) + +60  + #PT_PHDR + 6 + + ) + +61  + #PT_LOPROC + 0x70000000 + + ) + +62  + #PT_HIPROC + 0x7fffffff + + ) + +63  + #PT_MIPS_REGINFO + 0x70000000 + + ) + +66  + #EF_MIPS_NOREORDER + 0x00000001 + + ) + +67  + #EF_MIPS_PIC + 0x00000002 + + ) + +68  + #EF_MIPS_CPIC + 0x00000004 + + ) + +69  + #EF_MIPS_ARCH + 0xf0000000 + + ) + +72  + #ET_NONE + 0 + + ) + +73  + #ET_REL + 1 + + ) + +74  + #ET_EXEC + 2 + + ) + +75  + #ET_DYN + 3 + + ) + +76  + #ET_CORE + 4 + + ) + +77  + #ET_LOPROC + 0xff00 + + ) + +78  + #ET_HIPROC + 0xffff + + ) + +81  + #EM_NONE + 0 + + ) + +82  + #EM_M32 + 1 + + ) + +83  + #EM_SPARC + 2 + + ) + +84  + #EM_386 + 3 + + ) + +85  + #EM_68K + 4 + + ) + +86  + #EM_88K + 5 + + ) + +87  + #EM_486 + 6 + + ) + +88  + #EM_860 + 7 + + ) + +90  + #EM_MIPS + 8 + + ) + +92  + #EM_MIPS_RS4_BE + 10 + + ) + +94  + #EM_PARISC + 15 + + ) + +96  + #EM_SPARC32PLUS + 18 + + ) + +98  + #EM_PPC + 20 + + ) + +100  + #EM_SH + 42 + + ) + +102  + #EM_SPARCV9 + 43 + + ) + +104  + #EM_IA_64 + 50 + + ) + +110  + #EM_ALPHA + 0x9026 + + ) + +114  + #DT_NULL + 0 + + ) + +115  + #DT_NEEDED + 1 + + ) + +116  + #DT_PLTRELSZ + 2 + + ) + +117  + #DT_PLTGOT + 3 + + ) + +118  + #DT_HASH + 4 + + ) + +119  + #DT_STRTAB + 5 + + ) + +120  + #DT_SYMTAB + 6 + + ) + +121  + #DT_RELA + 7 + + ) + +122  + #DT_RELASZ + 8 + + ) + +123  + #DT_RELAENT + 9 + + ) + +124  + #DT_STRSZ + 10 + + ) + +125  + #DT_SYMENT + 11 + + ) + +126  + #DT_INIT + 12 + + ) + +127  + #DT_FINI + 13 + + ) + +128  + #DT_SONAME + 14 + + ) + +129  + #DT_RPATH + 15 + + ) + +130  + #DT_SYMBOLIC + 16 + + ) + +131  + #DT_REL + 17 + + ) + +132  + #DT_RELSZ + 18 + + ) + +133  + #DT_RELENT + 19 + + ) + +134  + #DT_PLTREL + 20 + + ) + +135  + #DT_DEBUG + 21 + + ) + +136  + #DT_TEXTREL + 22 + + ) + +137  + #DT_JMPREL + 23 + + ) + +138  + #DT_LOPROC + 0x70000000 + + ) + +139  + #DT_HIPROC + 0x7fffffff + + ) + +140  + #DT_MIPS_RLD_VERSION + 0x70000001 + + ) + +141  + #DT_MIPS_TIME_STAMP + 0x70000002 + + ) + +142  + #DT_MIPS_ICHECKSUM + 0x70000003 + + ) + +143  + #DT_MIPS_IVERSION + 0x70000004 + + ) + +144  + #DT_MIPS_FLAGS + 0x70000005 + + ) + +145  + #RHF_NONE + 0 + + ) + +146  + #RHF_HARDWAY + 1 + + ) + +147  + #RHF_NOTPOT + 2 + + ) + +148  + #DT_MIPS_BASE_ADDRESS + 0x70000006 + + ) + +149  + #DT_MIPS_CONFLICT + 0x70000008 + + ) + +150  + #DT_MIPS_LIBLIST + 0x70000009 + + ) + +151  + #DT_MIPS_LOCAL_GOTNO + 0x7000000a + + ) + +152  + #DT_MIPS_CONFLICTNO + 0x7000000b + + ) + +153  + #DT_MIPS_LIBLISTNO + 0x70000010 + + ) + +154  + #DT_MIPS_SYMTABNO + 0x70000011 + + ) + +155  + #DT_MIPS_UNREFEXTNO + 0x70000012 + + ) + +156  + #DT_MIPS_GOTSYM + 0x70000013 + + ) + +157  + #DT_MIPS_HIPAGENO + 0x70000014 + + ) + +158  + #DT_MIPS_RLD_MAP + 0x70000016 + + ) + +161  + #STB_LOCAL + 0 + + ) + +162  + #STB_GLOBAL + 1 + + ) + +163  + #STB_WEAK + 2 + + ) + +165  + #STT_NOTYPE + 0 + + ) + +166  + #STT_OBJECT + 1 + + ) + +167  + #STT_FUNC + 2 + + ) + +168  + #STT_SECTION + 3 + + ) + +169  + #STT_FILE + 4 + + ) + +171  + #ELF32_ST_BIND +( +x +è((xè>> 4) + + ) + +172  + #ELF32_ST_TYPE +( +x +è(((èxè& 0xf) + + ) + +176  + #AT_NULL + 0 + + ) + +177  + #AT_IGNORE + 1 + + ) + +178  + #AT_EXECFD + 2 + + ) + +179  + #AT_PHDR + 3 + + ) + +180  + #AT_PHENT + 4 + + ) + +181  + #AT_PHNUM + 5 + + ) + +182  + #AT_PAGESZ + 6 + + ) + +183  + #AT_BASE + 7 + + ) + +184  + #AT_FLAGS + 8 + + ) + +185  + #AT_ENTRY + 9 + + ) + +186  + #AT_NOTELF + 10 + + ) + +187  + #AT_UID + 11 + + ) + +188  + #AT_EUID + 12 + + ) + +189  + #AT_GID + 13 + + ) + +190  + #AT_EGID + 14 + + ) + +191  + #AT_PLATFORM + 15 + + ) + +192  + #AT_HWCAP + 16 + + ) + +194  + sdyÇmic +{ + +195 +Elf32_SwÜd + + md_g +; + +197 +Elf32_SwÜd + + md_v® +; + +198 +Elf32_Addr + + md_±r +; + +199 } + md_un +; + +200 } + tElf32_Dyn +; + +203 +Elf64_WÜd + + md_g +; + +205 +Elf64_WÜd + + md_v® +; + +206 +Elf64_WÜd + + md_±r +; + +207 } + md_un +; + +208 } + tElf64_Dyn +; + +211  + #ELF32_R_SYM +( +x +è((xè>> 8) + + ) + +212  + #ELF32_R_TYPE +( +x +è((xè& 0xff) + + ) + +214  + #R_386_NONE + 0 + + ) + +215  + #R_386_32 + 1 + + ) + +216  + #R_386_PC32 + 2 + + ) + +217  + #R_386_GOT32 + 3 + + ) + +218  + #R_386_PLT32 + 4 + + ) + +219  + #R_386_COPY + 5 + + ) + +220  + #R_386_GLOB_DAT + 6 + + ) + +221  + #R_386_JMP_SLOT + 7 + + ) + +222  + #R_386_RELATIVE + 8 + + ) + +223  + #R_386_GOTOFF + 9 + + ) + +224  + #R_386_GOTPC + 10 + + ) + +225  + #R_386_NUM + 11 + + ) + +227  + #R_MIPS_NONE + 0 + + ) + +228  + #R_MIPS_16 + 1 + + ) + +229  + #R_MIPS_32 + 2 + + ) + +230  + #R_MIPS_REL32 + 3 + + ) + +231  + #R_MIPS_26 + 4 + + ) + +232  + #R_MIPS_HI16 + 5 + + ) + +233  + #R_MIPS_LO16 + 6 + + ) + +234  + #R_MIPS_GPREL16 + 7 + + ) + +235  + #R_MIPS_LITERAL + 8 + + ) + +236  + #R_MIPS_GOT16 + 9 + + ) + +237  + #R_MIPS_PC16 + 10 + + ) + +238  + #R_MIPS_CALL16 + 11 + + ) + +239  + #R_MIPS_GPREL32 + 12 + + ) + +242  + #R_MIPS_UNUSED1 + 13 + + ) + +243  + #R_MIPS_UNUSED2 + 14 + + ) + +244  + #R_MIPS_UNUSED3 + 15 + + ) + +245  + #R_MIPS_SHIFT5 + 16 + + ) + +246  + #R_MIPS_SHIFT6 + 17 + + ) + +247  + #R_MIPS_64 + 18 + + ) + +248  + #R_MIPS_GOT_DISP + 19 + + ) + +249  + #R_MIPS_GOT_PAGE + 20 + + ) + +250  + #R_MIPS_GOT_OFST + 21 + + ) + +255  + #R_MIPS_GOTHI16 + 22 + + ) + +256  + #R_MIPS_GOTLO16 + 23 + + ) + +257  + #R_MIPS_SUB + 24 + + ) + +258  + #R_MIPS_INSERT_A + 25 + + ) + +259  + #R_MIPS_INSERT_B + 26 + + ) + +260  + #R_MIPS_DELETE + 27 + + ) + +261  + #R_MIPS_HIGHER + 28 + + ) + +262  + #R_MIPS_HIGHEST + 29 + + ) + +267  + #R_MIPS_CALLHI16 + 30 + + ) + +268  + #R_MIPS_CALLLO16 + 31 + + ) + +272  + #R_MIPS_LOVENDOR + 100 + + ) + +273  + #R_MIPS_HIVENDOR + 127 + + ) + +279  + #R_SPARC_NONE + 0 + + ) + +280  + #R_SPARC_8 + 1 + + ) + +281  + #R_SPARC_16 + 2 + + ) + +282  + #R_SPARC_32 + 3 + + ) + +283  + #R_SPARC_DISP8 + 4 + + ) + +284  + #R_SPARC_DISP16 + 5 + + ) + +285  + #R_SPARC_DISP32 + 6 + + ) + +286  + #R_SPARC_WDISP30 + 7 + + ) + +287  + #R_SPARC_WDISP22 + 8 + + ) + +288  + #R_SPARC_HI22 + 9 + + ) + +289  + #R_SPARC_22 + 10 + + ) + +290  + #R_SPARC_13 + 11 + + ) + +291  + #R_SPARC_LO10 + 12 + + ) + +292  + #R_SPARC_GOT10 + 13 + + ) + +293  + #R_SPARC_GOT13 + 14 + + ) + +294  + #R_SPARC_GOT22 + 15 + + ) + +295  + #R_SPARC_PC10 + 16 + + ) + +296  + #R_SPARC_PC22 + 17 + + ) + +297  + #R_SPARC_WPLT30 + 18 + + ) + +298  + #R_SPARC_COPY + 19 + + ) + +299  + #R_SPARC_GLOB_DAT + 20 + + ) + +300  + #R_SPARC_JMP_SLOT + 21 + + ) + +301  + #R_SPARC_RELATIVE + 22 + + ) + +302  + #R_SPARC_UA32 + 23 + + ) + +303  + #R_SPARC_PLT32 + 24 + + ) + +304  + #R_SPARC_HIPLT22 + 25 + + ) + +305  + #R_SPARC_LOPLT10 + 26 + + ) + +306  + #R_SPARC_PCPLT32 + 27 + + ) + +307  + #R_SPARC_PCPLT22 + 28 + + ) + +308  + #R_SPARC_PCPLT10 + 29 + + ) + +309  + #R_SPARC_10 + 30 + + ) + +310  + #R_SPARC_11 + 31 + + ) + +311  + #R_SPARC_WDISP16 + 40 + + ) + +312  + #R_SPARC_WDISP19 + 41 + + ) + +313  + #R_SPARC_7 + 43 + + ) + +314  + #R_SPARC_5 + 44 + + ) + +315  + #R_SPARC_6 + 45 + + ) + +319  + #HWCAP_SPARC_FLUSH + 1 + + ) + +320  + #HWCAP_SPARC_STBAR + 2 + + ) + +321  + #HWCAP_SPARC_SWAP + 4 + + ) + +322  + #HWCAP_SPARC_MULDIV + 8 + + ) + +323  + #HWCAP_SPARC_V9 + 16 + + ) + +329  + #R_68K_NONE + 0 + + ) + +330  + #R_68K_32 + 1 + + ) + +331  + #R_68K_16 + 2 + + ) + +332  + #R_68K_8 + 3 + + ) + +333  + #R_68K_PC32 + 4 + + ) + +334  + #R_68K_PC16 + 5 + + ) + +335  + #R_68K_PC8 + 6 + + ) + +336  + #R_68K_GOT32 + 7 + + ) + +337  + #R_68K_GOT16 + 8 + + ) + +338  + #R_68K_GOT8 + 9 + + ) + +339  + #R_68K_GOT32O + 10 + + ) + +340  + #R_68K_GOT16O + 11 + + ) + +341  + #R_68K_GOT8O + 12 + + ) + +342  + #R_68K_PLT32 + 13 + + ) + +343  + #R_68K_PLT16 + 14 + + ) + +344  + #R_68K_PLT8 + 15 + + ) + +345  + #R_68K_PLT32O + 16 + + ) + +346  + #R_68K_PLT16O + 17 + + ) + +347  + #R_68K_PLT8O + 18 + + ) + +348  + #R_68K_COPY + 19 + + ) + +349  + #R_68K_GLOB_DAT + 20 + + ) + +350  + #R_68K_JMP_SLOT + 21 + + ) + +351  + #R_68K_RELATIVE + 22 + + ) + +356  + #R_ALPHA_NONE + 0 + + ) + +357  + #R_ALPHA_REFLONG + 1 + + ) + +358  + #R_ALPHA_REFQUAD + 2 + + ) + +359  + #R_ALPHA_GPREL32 + 3 + + ) + +360  + #R_ALPHA_LITERAL + 4 + + ) + +361  + #R_ALPHA_LITUSE + 5 + + ) + +362  + #R_ALPHA_GPDISP + 6 + + ) + +363  + #R_ALPHA_BRADDR + 7 + + ) + +364  + #R_ALPHA_HINT + 8 + + ) + +365  + #R_ALPHA_SREL16 + 9 + + ) + +366  + #R_ALPHA_SREL32 + 10 + + ) + +367  + #R_ALPHA_SREL64 + 11 + + ) + +368  + #R_ALPHA_OP_PUSH + 12 + + ) + +369  + #R_ALPHA_OP_STORE + 13 + + ) + +370  + #R_ALPHA_OP_PSUB + 14 + + ) + +371  + #R_ALPHA_OP_PRSHIFT + 15 + + ) + +372  + #R_ALPHA_GPVALUE + 16 + + ) + +373  + #R_ALPHA_GPRELHIGH + 17 + + ) + +374  + #R_ALPHA_GPRELLOW + 18 + + ) + +375  + #R_ALPHA_IMMED_GP_16 + 19 + + ) + +376  + #R_ALPHA_IMMED_GP_HI32 + 20 + + ) + +377  + #R_ALPHA_IMMED_SCN_HI32 + 21 + + ) + +378  + #R_ALPHA_IMMED_BR_HI32 + 22 + + ) + +379  + #R_ALPHA_IMMED_LO32 + 23 + + ) + +380  + #R_ALPHA_COPY + 24 + + ) + +381  + #R_ALPHA_GLOB_DAT + 25 + + ) + +382  + #R_ALPHA_JMP_SLOT + 26 + + ) + +383  + #R_ALPHA_RELATIVE + 27 + + ) + +387  + #EF_ALPHA_32BIT + 1 + + ) + +390  + s–f32_»l + { + +391 +Elf32_Addr + + mr_off£t +; + +392 +Elf32_WÜd + + mr_šfo +; + +393 } + tElf32_R– +; + +395  + s–f64_»l + { + +396 +Elf64_Addr + + mr_off£t +; + +397 +Elf64_WÜd + + mr_šfo +; + +398 } + tElf64_R– +; + +400  + s–f32_»Ï +{ + +401 +Elf32_Addr + + mr_off£t +; + +402 +Elf32_WÜd + + mr_šfo +; + +403 +Elf32_SwÜd + + mr_add’d +; + +404 } + tElf32_R–a +; + +406  + s–f64_»Ï + { + +407 +Elf64_Addr + + mr_off£t +; + +408 +Elf64_WÜd + + mr_šfo +; + +409 +Elf64_WÜd + + mr_add’d +; + +410 } + tElf64_R–a +; + +412  + s–f32_sym +{ + +413 +Elf32_WÜd + + m¡_Çme +; + +414 +Elf32_Addr + + m¡_v®ue +; + +415 +Elf32_WÜd + + m¡_size +; + +416  + m¡_šfo +; + +417  + m¡_Ùh” +; + +418 +Elf32_H®f + + m¡_shndx +; + +419 } + tElf32_Sym +; + +421  + s–f64_sym + { + +422 +Elf32_WÜd + + m¡_Çme +; + +423  + m¡_šfo +; + +424  + m¡_Ùh” +; + +425 +Elf64_H®f + + m¡_shndx +; + +426 +Elf64_Addr + + m¡_v®ue +; + +427 +Elf64_WÜd + + m¡_size +; + +428 } + tElf64_Sym +; + +431  + #EI_NIDENT + 16 + + ) + +433  + s–f32_hdr +{ + +434  + me_id’t +[ +EI_NIDENT +]; + +435 +Elf32_H®f + + me_ty³ +; + +436 +Elf32_H®f + + me_machše +; + +437 +Elf32_WÜd + + me_v”siÚ +; + +438 +Elf32_Addr + + me_’Œy +; + +439 +Elf32_Off + + me_phoff +; + +440 +Elf32_Off + + me_shoff +; + +441 +Elf32_WÜd + + me_æags +; + +442 +Elf32_H®f + + me_ehsize +; + +443 +Elf32_H®f + + me_ph’tsize +; + +444 +Elf32_H®f + + me_phnum +; + +445 +Elf32_H®f + + me_sh’tsize +; + +446 +Elf32_H®f + + me_shnum +; + +447 +Elf32_H®f + + me_sh¡ºdx +; + +448 } + tElf32_Ehdr +; + +450  + s–f64_hdr + { + +451  + me_id’t +[16]; + +452 +Elf64_SH®f + + me_ty³ +; + +453 +Elf64_H®f + + me_machše +; + +454 +INT32 + + me_v”siÚ +; + +455 +Elf64_Addr + + me_’Œy +; + +456 +Elf64_Off + + me_phoff +; + +457 +Elf64_Off + + me_shoff +; + +458 +INT32 + + me_æags +; + +459 +Elf64_SH®f + + me_ehsize +; + +460 +Elf64_SH®f + + me_ph’tsize +; + +461 +Elf64_SH®f + + me_phnum +; + +462 +Elf64_SH®f + + me_sh’tsize +; + +463 +Elf64_SH®f + + me_shnum +; + +464 +Elf64_SH®f + + me_sh¡ºdx +; + +465 } + tElf64_Ehdr +; + +469  + #PF_R + 0x4 + + ) + +470  + #PF_W + 0x2 + + ) + +471  + #PF_X + 0x1 + + ) + +473  + s–f32_phdr +{ + +474 +Elf32_WÜd + + mp_ty³ +; + +475 +Elf32_Off + + mp_off£t +; + +476 +Elf32_Addr + + mp_vaddr +; + +477 +Elf32_Addr + + mp_·ddr +; + +478 +Elf32_WÜd + + mp_fžesz +; + +479 +Elf32_WÜd + + mp_memsz +; + +480 +Elf32_WÜd + + mp_æags +; + +481 +Elf32_WÜd + + mp_®ign +; + +482 } + tElf32_Phdr +; + +484  + s–f64_phdr + { + +485 +INT32 + + mp_ty³ +; + +486 +INT32 + + mp_æags +; + +487 +Elf64_Off + + mp_off£t +; + +488 +Elf64_Addr + + mp_vaddr +; + +489 +Elf64_Addr + + mp_·ddr +; + +490 +Elf64_WÜd + + mp_fžesz +; + +491 +Elf64_WÜd + + mp_memsz +; + +492 +Elf64_WÜd + + mp_®ign +; + +493 } + tElf64_Phdr +; + +496  + #SHT_NULL + 0 + + ) + +497  + #SHT_PROGBITS + 1 + + ) + +498  + #SHT_SYMTAB + 2 + + ) + +499  + #SHT_STRTAB + 3 + + ) + +500  + #SHT_RELA + 4 + + ) + +501  + #SHT_HASH + 5 + + ) + +502  + #SHT_DYNAMIC + 6 + + ) + +503  + #SHT_NOTE + 7 + + ) + +504  + #SHT_NOBITS + 8 + + ) + +505  + #SHT_REL + 9 + + ) + +506  + #SHT_SHLIB + 10 + + ) + +507  + #SHT_DYNSYM + 11 + + ) + +508  + #SHT_NUM + 12 + + ) + +509  + #SHT_LOPROC + 0x70000000 + + ) + +510  + #SHT_HIPROC + 0x7fffffff + + ) + +511  + #SHT_LOUSER + 0x80000000 + + ) + +512  + #SHT_HIUSER + 0xffffffff + + ) + +513  + #SHT_MIPS_LIST + 0x70000000 + + ) + +514  + #SHT_MIPS_CONFLICT + 0x70000002 + + ) + +515  + #SHT_MIPS_GPTAB + 0x70000003 + + ) + +516  + #SHT_MIPS_UCODE + 0x70000004 + + ) + +519  + #SHF_WRITE + 0x1 + + ) + +520  + #SHF_ALLOC + 0x2 + + ) + +521  + #SHF_EXECINSTR + 0x4 + + ) + +522  + #SHF_MASKPROC + 0xf0000000 + + ) + +523  + #SHF_MIPS_GPREL + 0x10000000 + + ) + +526  + #SHN_UNDEF + 0 + + ) + +527  + #SHN_LORESERVE + 0xff00 + + ) + +528  + #SHN_LOPROC + 0xff00 + + ) + +529  + #SHN_HIPROC + 0xff1f + + ) + +530  + #SHN_ABS + 0xfff1 + + ) + +531  + #SHN_COMMON + 0xfff2 + + ) + +532  + #SHN_HIRESERVE + 0xffff + + ) + +533  + #SHN_MIPS_ACCOMON + 0xff00 + + ) + +536 +Elf32_WÜd + + msh_Çme +; + +537 +Elf32_WÜd + + msh_ty³ +; + +538 +Elf32_WÜd + + msh_æags +; + +539 +Elf32_Addr + + msh_addr +; + +540 +Elf32_Off + + msh_off£t +; + +541 +Elf32_WÜd + + msh_size +; + +542 +Elf32_WÜd + + msh_lšk +; + +543 +Elf32_WÜd + + msh_šfo +; + +544 +Elf32_WÜd + + msh_add¿lign +; + +545 +Elf32_WÜd + + msh_’tsize +; + +546 } + tElf32_Shdr +; + +548  + s–f64_shdr + { + +549 +Elf32_WÜd + + msh_Çme +; + +550 +Elf32_WÜd + + msh_ty³ +; + +551 +Elf64_WÜd + + msh_æags +; + +552 +Elf64_Addr + + msh_addr +; + +553 +Elf64_Off + + msh_off£t +; + +554 +Elf64_WÜd + + msh_size +; + +555 +Elf32_WÜd + + msh_lšk +; + +556 +Elf32_WÜd + + msh_šfo +; + +557 +Elf64_WÜd + + msh_add¿lign +; + +558 +Elf64_WÜd + + msh_’tsize +; + +559 } + tElf64_Shdr +; + +561  + #EI_MAG0 + 0 + + ) + +562  + #EI_MAG1 + 1 + + ) + +563  + #EI_MAG2 + 2 + + ) + +564  + #EI_MAG3 + 3 + + ) + +565  + #EI_CLASS + 4 + + ) + +566  + #EI_DATA + 5 + + ) + +567  + #EI_VERSION + 6 + + ) + +568  + #EI_PAD + 7 + + ) + +570  + #ELFMAG0 + 0x7à + + ) + +571  + #ELFMAG1 + 'E' + + ) + +572  + #ELFMAG2 + 'L' + + ) + +573  + #ELFMAG3 + 'F' + + ) + +574  + #ELFMAG + "\177ELF" + + ) + +575  + #SELFMAG + 4 + + ) + +577  + #ELFCLASSNONE + 0 + + ) + +578  + #ELFCLASS32 + 1 + + ) + +579  + #ELFCLASS64 + 2 + + ) + +580  + #ELFCLASSNUM + 3 + + ) + +582  + #ELFDATANONE + 0 + + ) + +583  + #ELFDATA2LSB + 1 + + ) + +584  + #ELFDATA2MSB + 2 + + ) + +586  + #EV_NONE + 0 + + ) + +587  + #EV_CURRENT + 1 + + ) + +588  + #EV_NUM + 2 + + ) + +591  + #NT_PRSTATUS + 1 + + ) + +592  + #NT_PRFPREG + 2 + + ) + +593  + #NT_PRPSINFO + 3 + + ) + +594  + #NT_TASKSTRUCT + 4 + + ) + +597  + s–f32_nÙe + { + +598 +Elf32_WÜd + + mn_Çmesz +; + +599 +Elf32_WÜd + + mn_descsz +; + +600 +Elf32_WÜd + + mn_ty³ +; + +601 } + tElf32_Nhdr +; + +609  + s–f64_nÙe + { + +610 +Elf32_WÜd + + mn_Çmesz +; + +611 +Elf32_WÜd + + mn_descsz +; + +612 +Elf32_WÜd + + mn_ty³ +; + +613 } + tElf64_Nhdr +; + +615 #ià +ELF_CLASS + =ð +ELFCLASS32 + + +617 +Elf32_Dyn + +_DYNAMIC + []; + +618  + #–fhdr + +–f32_hdr + + + ) + +619  + #–f_phdr + +–f32_phdr + + + ) + +620  + #–f_nÙe + +–f32_nÙe + + + ) + +624 +Elf64_Dyn + +_DYNAMIC + []; + +625  + #–fhdr + +–f64_hdr + + + ) + +626  + #–f_phdr + +–f64_phdr + + + ) + +627  + #–f_nÙe + +–f64_nÙe + + + ) + + @elilo.c + +32  + ~ + +33  + ~ + +35  + ~"–žo.h +" + +36  + ~"v¬s.h +" + +37  + ~"gz.h +" + +39  + ~"g‘Ýt.h +" + +40  + ~"fžeÝs.h +" + +41  + ~"lßd”.h +" + +42  + ~"cÚfig.h +" + +44  + #ELILO_VERSION + +L +"3.4" + + ) + +45  + #ELILO_SHARED_CMDLINE_OPTS + +L +"pPMC:aDhd:i:vVc:E" + + ) + +47 +–žo_cÚfig_t + + g–žo_Ýt +; + +49 +EFI_SYSTEM_TABLE + * + gsy¡ab +; + +62  +INTN + + +63 + $do_k”Ãl_lßd +( +CHAR16 + * +kÇme +, +kdesc_t + * +kd +) + +65 +lßd”_Ýs_t + * +ldÝs +; + +66 +EFI_STATUS + +¡©us +; + +67 +fÝs_fd_t + +fd +; + +69 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +70 ià( + `EFI_ERROR +( +¡©us +)) { + +71 + `ERR_PRT +(( +L +"K”ÃÈfž‚Ù found %s", +kÇme +)); + +72  +ELILO_LOAD_ERROR +; + +74 + `fÝs_þo£ +( +fd +); + +76 +ldÝs + = + `lßd”_´obe +( +kÇme +); + +77 ià( +ldÝs + =ð +NULL +) { + +78 + `ERR_PRT +(( +L +"CªnÙ fšd‡†ßd” fÜ %s", +kÇme +)); + +79  +ELILO_LOAD_ERROR +; + +82 + `VERB_PRT +(1, + `Pršt +( +L +"Usšg % lßd”\n", +ldÝs +-> +ld_Çme +)); + +84  +ldÝs +-> + `ld_lßd_k”Ãl +( +kÇme +, +kd +); + +85 + } +} + +87 +INTN + + +88 + $k”Ãl_lßd +( +EFI_HANDLE + +image +, +CHAR16 + * +kÇme +, +kdesc_t + * +kd +, +memdesc_t + * +imem +, memdesc_ˆ* +mmem +) + +90 +CHAR16 + +k”Ãl +[ +CMDLINE_MAXLEN +]; + +97 ià( +–žo_Ýt +. +vmcode +[0]) + +98 + `SŒCpy +( +k”Ãl +, +–žo_Ýt +. +vmcode +); + +100 + `SŒCpy +( +k”Ãl +, +kÇme +); + +104  + `do_k”Ãl_lßd +( +k”Ãl +, +kd +)) { + +105  +ELILO_LOAD_SUCCESS +: + +108  +ELILO_LOAD_ERROR +: + +110  +ELILO_LOAD_ERROR +; + +112  +ELILO_LOAD_ABORTED +: + +114 +–žo_Ýt +. +š™rd +[0] = +CHAR_NULL +; + +115 +–žo_Ýt +. +vmcode +[0] = +CHAR_NULL +; + +118 +–žo_Ýt +. +´om± + = 1; + +119 +–žo_Ýt +. +timeout + = +ELILO_DEFAULT_TIMEOUT +; + +120 +–žo_Ýt +. +d–ay + = 0; + +122  +ELILO_LOAD_RETRY +; + +125 + `VERB_PRT +(3, + `Pršt +( +L +"kernel†oaded in [0x%lx-0x%lx]ƒntry=0x%lx\n", + +126 () +kd +-> +k¡¬t +, ()kd-> +k’d +, ()kd-> +k’Œy +)); + +128 ià( +–žo_Ýt +. +š™rd +[0]) { + +130 ià( + `sysd•s_š™rd_g‘_addr +( +kd +, +imem +è=ð-1è +ex™_”rÜ +; + +132  + `lßd_fže +( +–žo_Ýt +. +š™rd +, +imem +)) { + +133  +ELILO_LOAD_SUCCESS +: + +135  +ELILO_LOAD_ERROR +: + +136  +ex™_”rÜ +; + +137  +ELILO_LOAD_ABORTED +: + +138 + `ä“_kmem +(); + +140 +–žo_Ýt +. +š™rd +[0] = +CHAR_NULL +; + +141 +–žo_Ýt +. +vmcode +[0] = +CHAR_NULL +; + +142 +–žo_Ýt +. +´om± + = 1; + +143 +–žo_Ýt +. +timeout + = +ELILO_DEFAULT_TIMEOUT +; + +144 +–žo_Ýt +. +d–ay + = 0; + +146  +ELILO_LOAD_RETRY +; + +150 ià( +–žo_Ýt +. +vmcode +[0]) { + +152 +mmem +-> +¡¬t_addr + = 0; + +154  + `lßd_fže +( +kÇme +, +mmem +)) { + +155  +ELILO_LOAD_SUCCESS +: + +157  +ELILO_LOAD_ERROR +: + +158  +ex™_”rÜ +; + +159  +ELILO_LOAD_ABORTED +: + +160 ià( +imem +-> +¡¬t_addr +) + +161 + `ä“ +( +imem +-> +¡¬t_addr +); + +162 + `ä“_kmem +(); + +164 +–žo_Ýt +. +š™rd +[0] = +CHAR_NULL +; + +165 +–žo_Ýt +. +vmcode +[0] = +CHAR_NULL +; + +166 +–žo_Ýt +. +´om± + = 1; + +167 +–žo_Ýt +. +timeout + = +ELILO_DEFAULT_TIMEOUT +; + +168 +–žo_Ýt +. +d–ay + = 0; + +170  +ELILO_LOAD_RETRY +; + +174 ià( + `gz_´obe +( +mmem +-> +¡¬t_addr +, mmem-> +size +) == 0 && + +175 + `gunz_image +( +mmem +è!ð +ELILO_LOAD_SUCCESS +) { + +176 ià( +imem +-> +¡¬t_addr +) + +177 + `ä“ +( +imem +-> +¡¬t_addr +); + +178 + `ä“ +( +mmem +-> +¡¬t_addr +); + +179 + `ä“_kmem +(); + +181 +–žo_Ýt +. +š™rd +[0] = +CHAR_NULL +; + +182 +–žo_Ýt +. +vmcode +[0] = +CHAR_NULL +; + +183 +–žo_Ýt +. +´om± + = 1; + +184 +–žo_Ýt +. +timeout + = +ELILO_DEFAULT_TIMEOUT +; + +185 +–žo_Ýt +. +d–ay + = 0; + +187  +ELILO_LOAD_RETRY +; + +190  +ELILO_LOAD_SUCCESS +; + +191 +ex™_”rÜ +: + +192 + `ä“_kmem +(); + +193 ià( +imem +-> +¡¬t_addr +è + `ä“ +(imem->start_addr); + +194 ià( +mmem +-> +¡¬t_addr +è + `ä“ +(mmem->start_addr); + +196  +ELILO_LOAD_ERROR +; + +197 + } +} + +199  +INTN + + +200 + $maš_loÝ +( +EFI_HANDLE + +dev +, +CHAR16 + ** +¬gv +, +INTN + +¬gc +, INTN +šdex +, EFI_HANDLE +image +) + +202 +CHAR16 + +kÇme +[ +FILENAME_MAXLEN +]; + +203 +CHAR16 + +cmdlše_tmp +[ +CMDLINE_MAXLEN +]; + +204 +CHAR16 + +cmdlše +[ +CMDLINE_MAXLEN +]; + +205 +VOID + * +bp +; + +206 +UINTN + +cook› +; + +207 +EFI_STATUS + +¡©us + = +EFI_SUCCESS +; + +208 +kdesc_t + +kd +; + +209 +memdesc_t + +imem +, +mmem +; + +210 +INTN + +r +; + +217 ià( + `sysd•s_´–oÝ_aùiÚs +( +dev +, +¬gv +, +¬gc +, +šdex +, +image +) == -1)  -1; + +220 +kÇme +[0] = +cmdlše_tmp +[0] = +cmdlše +[0] = +CHAR_NULL +; + +221 +imem +. +¡¬t_addr + = 0; imem. +pgút + = 0; imem. +size + = 0; + +222 +–žo_Ýt +. +sys_img_Ýts + = +NULL +; + +224 ià( + `k”Ãl_choo£r +( +¬gv +, +¬gc +, +šdex +, +kÇme +, +cmdlše_tmp +è=ð-1è +ex™_”rÜ +; + +226  + `k”Ãl_lßd +( +image +, +kÇme +, & +kd +, & +imem +, & +mmem +)) { + +227  +ELILO_LOAD_SUCCESS +: + +228  +do_Ïunch +; + +229  +ELILO_LOAD_ERROR +: + +230  +ex™_”rÜ +; + +235 +do_Ïunch +: + +236 +r + = + `sub¡_v¬s +( +cmdlše_tmp +, +cmdlše +, +CMDLINE_MAXLEN +); + +238 + `VERB_PRT +(3, + `Pršt +( +L +"fš® cmdlše(%d): %s\n", +r +, +cmdlše +)); + +241 + `þo£_deviûs +(); + +244 ià(( +bp += + `ü—‹_boÙ_·¿ms +( +cmdlše +, & +imem +, & +mmem +, & +cook› +)è=ð0è +”rÜ +; + +247 +¡©us + = +BS +-> + `Ex™BoÙS”viûs +( +image +, +cook› +); + +248 ià( + `EFI_ERROR +( +¡©us +)è +bad_ex™ +; + +250 + `¡¬t_k”Ãl +( +kd +. +k’Œy +, +bp +); + +253 + `ERR_PRT +(( +L +"start_kernel()„eturn !")); + +254 +bad_ex™ +: + +258 + `ERR_PRT +(( +L +"Ex™BoÙS”viû çžed %r", +¡©us +)); + +259 +”rÜ +: + +260 + `ä“_kmem +(); + +261 ià( +imem +. +¡¬t_addr +è + `ä“ +(imem.start_addr); + +262 ià( +bp +è + `ä“_boÙ_·¿ms +(bp); + +263 +ex™_”rÜ +: + +264  +ELILO_LOAD_ERROR +; + +266 + } +} + +268  +VOID + + +269 + $–žo_h–p +( +VOID +) + +272 + `Pršt +( +L +"-d secsimeout in 10th of second before booting\n"); + +273 + `Pršt +( +L +"-hhis helpext\n"); + +274 + `Pršt +( +L +"-V…rint version\n"); + +275 + `Pršt +( +L +"-v verbose†evel(can‡ppear multipleimes)\n"); + +276 + `Pršt +( +L +"-a‡lways check for‡lternate kernel image\n"); + +277 + `Pršt +( +L +"-i file†oad file‡she initial„amdisk\n"); + +278 + `Pršt +( +L +"-m file†oad file‡s‡dditional bootime vmm module\n"); + +279 + `Pršt +( +L +"-C file indicatehe config fileo use\n"); + +280 + `Pršt +( +L +"-P…arse config file only (verify syntax)\n"); + +281 + `Pršt +( +L +"-Dƒnable debug…rints\n"); + +282 + `Pršt +( +L +"-p force interactive mode\n"); + +283 + `Pršt +( +L +"-c‚ame image choosero use\n"); + +284 + `Pršt +( +L +"-E do‚ot force EDD30 variable\n"); + +286 + `sysd•s_´št_cmdlše_Ýts +(); + +288 + `Pršt +( +L +"\n"); + +290 + `´št_cÚfig_ÝtiÚs +(); + +291 + } +} + +298  +CHAR16 + * + gdeçuÉ_lßd_ÝtiÚs +; + +299  +UINTN + + gdeçuÉ_lßd_ÝtiÚs_size +; + +300  +INTN + + gdÚe_fixups +; + +302  +VOID + + +303 + $fixu·rgs +( +EFI_LOADED_IMAGE + * +šfo +) + +305 +EFI_STATUS + +¡©us +; + +306 +EFI_PXE_BASE_CODE + * +pxe +; + +308  + #FAKE_ELILONAME + +L +"–žo-fÜûd" + + ) + +310 +¡©us + = +BS +-> + `HªdËPrÙocÞ + ( +šfo +-> +DeviûHªdË +, & +PxeBa£CodePrÙocÞ +, ( +VOID + **)& +pxe +); + +311 ià( + `EFI_ERROR +( +¡©us +)) ; + +313 +deçuÉ_lßd_ÝtiÚs + = +šfo +-> +LßdO±iÚs +; + +314 +deçuÉ_lßd_ÝtiÚs_size + = +šfo +-> +LßdO±iÚsSize +; + +316 +šfo +-> +LßdO±iÚs + = +FAKE_ELILONAME +; + +317 +šfo +-> +LßdO±iÚsSize + = + `SŒL’ +(šfo-> +LßdO±iÚs +)*( +CHAR16 +); + +319 +dÚe_fixups + = 1; + +320 + } +} + +326  +VOID + + +327 + $unfixu·rgs +( +EFI_LOADED_IMAGE + * +šfo +) + +329 ià( +dÚe_fixups + == 0) ; + +331 +šfo +-> +LßdO±iÚs + = +deçuÉ_lßd_ÝtiÚs +; + +332 +šfo +-> +LßdO±iÚsSize + = +deçuÉ_lßd_ÝtiÚs_size +; + +333 + } +} + +353  + #EDD30_GUID + \ + +354 {0x964e5b21, 0x6459, 0x11d2, { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}} + + ) + +356  + #EDD30_ATTR + ( +EFI_VARIABLE_RUNTIME_ACCESS +| +EFI_VARIABLE_BOOTSERVICE_ACCESS +| +EFI_VARIABLE_NON_VOLATILE +) + + ) + +358  +EFI_GUID + + gedd30_guid + = +EDD30_GUID +; + +360  +INTN + + +361 + $check_edd30 +( +VOID +) + +363 +EFI_STATUS + +¡©us +; + +364 +UINTN + +l + = ( +BOOLEAN +); + +365 +UINT8 + +boÞ + = +FALSE +; + +366 +INTN + +»t + = -1; + +368 +¡©us + = +RT +-> + `G‘V¬ŸbË +( +L +"EDD30", & +edd30_guid +, +NULL +, & +l +, & +boÞ +); + +369 ià( +¡©us + =ð +EFI_BUFFER_TOO_SMALL + || ( +boÞ + !ð +TRUE + && boÞ !ð +FALSE +)) { + +370 + `ERR_PRT +(( +L +"Warning: EDD30 EFI variable is‚ot boolean value: forcing ito TRUE")); + +373 ià( +¡©us + =ð +EFI_SUCCESS + && +boÞ + =ð +TRUE +) { + +374 + `VERB_PRT +(3, + `Pršt +( +L +"EDD30 is TRUE\n")); + +375 +–žo_Ýt +. +edd30_Ú + = +TRUE +; + +376 +»t + = 0; + +378 + `VERB_PRT +(4, + +379 ià( +¡©us + !ð +EFI_SUCCESS +) { + +380 + `Pršt +( +L +"EDD30 EFI variable‚ot defined\n"); + +382 + `Pršt +( +L +"EDD30 EFI variable is false\n"); + +387  +»t +; + +388 + } +} + +390  +INTN + + +391 + $fÜû_edd30 +( +VOID +) + +393 +EFI_STATUS + +¡©us +; + +394 +UINTN + +l + = ( +BOOLEAN +); + +395 +UINT8 + +boÞ +; + +397 +boÞ + = +TRUE +; + +398 +¡©us + = +RT +-> + `S‘V¬ŸbË +( +L +"EDD30", & +edd30_guid +, +EDD30_ATTR +, +l +, & +boÞ +); + +399 ià( + `EFI_ERROR +( +¡©us +)) { + +400 + `ERR_PRT +(( +L +"can't set EDD30 variable: ignoring it")); + +404 + `VERB_PRT +(3, + `Pršt +( +L +"EDD30 variable forcedo TRUE. You should„ebootoake‡dvantage of EDD3.0.\n")); + +407 + } +} + +412 +EFI_STATUS + + +413 + $efi_maš + ( +EFI_HANDLE + +image +, +EFI_SYSTEM_TABLE + * +sy¡em_b +) + +415 +CHAR16 + * +¬gv +[ +MAX_ARGS +]; + +416 +CHAR16 + +Ýt¡ršg +[ +MAX_ARGS +]; + +417 +EFI_LOADED_IMAGE + * +šfo +; + +418 +EFI_STATUS + +¡©us +, +»t + = +EFI_LOAD_ERROR +; + +419 +INTN + +¬gc + = 0, +c +; + +420 +INTN + +edd30_¡©us +, +»Œy +; + +421 +CHAR16 + * +±r +, * +¬gli¡ + = +NULL +; + +422 +BOOLEAN + +deviûs_š™Ÿlized + = +FALSE +; + +423 +CHAR16 + +d·th +[ +FILENAME_MAXLEN +]; + +424 +CHAR16 + * +dev·th +; + +426 +–žo_Ýt +. +v”bo£ +=0; + +427 +–žo_Ýt +. +debug +=0; + +430 +sy¡ab + = +sy¡em_b +; + +433 + `In™ŸlizeLib +( +image +, +sy¡ab +); + +442 +BS +-> + `S‘W©chdogTim” +(0, 0x0, 0, +NULL +); + +445 ià( + `®loc_š™ +(è=ð-1è +EFI_LOAD_ERROR +; + +447 +¡©us + = +BS +-> + `HªdËPrÙocÞ +( +image +, & +LßdedImagePrÙocÞ +, ( +VOID + **è& +šfo +); + +448 ià( + `EFI_ERROR +( +¡©us +)) { + +449 + `ERR_PRT +(( +L +"image handle does‚ot support LOADED_IMAGE…rotocol")); + +450  +EFI_LOAD_ERROR +; + +453 + `VERB_PRT +(5, + `Pršt +( +L +"Lßded‡ˆ0x%lx size=%d by‹ code=%d d©a=%d\n", +šfo +-> +ImageBa£ +, info-> +ImageSize +, info-> +ImageCodeTy³ +, info-> +ImageD©aTy³ +)); + +458 +edd30_¡©us + = + `check_edd30 +(); + +463 ià( + `cÚfig_š™ +(è=ð-1è +do_ex™ +; + +468 ià( + `sysd•s_š™ +( +šfo +-> +DeviûHªdË +è=ð-1è +do_ex™ +; + +469 ià( + `sysd•s_»gi¡”_ÝtiÚs +(è=ð-1è +do_ex™ +; + +484 + `fixu·rgs +( +šfo +); + +487 + `Pršt +( +L +"LßdO±iÚs=%x O³nSize=%d\n", +šfo +-> +LßdO±iÚs +, info-> +LßdO±iÚsSize +); + +488 { +INTN + +i +; i=0; i< +šfo +-> +LßdO±iÚsSize +>>1; i++è + `Pršt +( +L +"ÝtiÚs[%d]=%d (%c)\n", i, (( +CHAR16 + *)šfo-> +LßdO±iÚs +)[i], ((CHAR16 *)info->LoadOptions)[i]); } + +499 +¬gli¡ + = + `®loc +( +šfo +-> +LßdO±iÚsSize ++( +CHAR16 +), +EfiLßd”D©a +); + +500 ià( +¬gli¡ + =ð +NULL +) { + +501 + `ERR_PRT +(( +L +"cannot copy‡rgument†ist")); + +502  +EFI_OUT_OF_RESOURCES +; + +504 + `Memýy +( +¬gli¡ +, +šfo +-> +LßdO±iÚs +, info-> +LßdO±iÚsSize +); + +506 +¬gc + = + `¬gify +( +¬gli¡ +, +šfo +-> +LßdO±iÚsSize +, +¬gv +); + +508 + `SŒCpy +( +Ýt¡ršg +, +ELILO_SHARED_CMDLINE_OPTS +); + +509 + `SŒC© +( +Ýt¡ršg +, + `sysd•s_g‘_cmdlše_Ýts +()); + +511 ( +c += + `G‘Ýt +( +¬gc +, +¬gv +, +Ýt¡ršg +)) != -1 ) { + +512  +c +) { + +514 +–žo_Ýt +. +®t_check + = 1; + +517 +–žo_Ýt +. +debug + = 1; + +520 +–žo_Ýt +. +´om± + = 1; + +523 +–žo_Ýt +. +v”bo£ +++; + +524 ià( +–žo_Ýt +. +v”bo£ + > 5)ƒlilo_opt.verbose = 5; + +527 + `–žo_h–p +(); + +528 +»t + = +EFI_SUCCESS +; + +529  +do_ex™ +; + +535 +–žo_Ýt +. +d–ay + = + `Atoi +( +O±¬g +); + +536 +–žo_Ýt +. +d–ay_£t + = 1; + +540 +–žo_Ýt +. +edd30_no_fÜû + = 1; + +543 ià( + `SŒL’ +( +O±¬g +è>ð +FILENAME_MAXLEN +-1) { + +544 + `Pršt +( +L +"š™rd fž’ami lim™edØ%d ch¬aù”s\n", +FILENAME_MAXLEN +); + +545  +do_ex™ +; + +547 + `SŒCpy +( +–žo_Ýt +. +š™rd +, +O±¬g +); + +550 ià( + `SŒL’ +( +O±¬g +è>ð +FILENAME_MAXLEN +-1) { + +551 + `Pršt +( +L +"vmm moduË fž’ami lim™edØ%d ch¬aù”s\n", +FILENAME_MAXLEN +); + +552  +do_ex™ +; + +554 + `SŒCpy +( +–žo_Ýt +. +vmcode +, +O±¬g +); + +557 ià( + `SŒL’ +( +O±¬g +è>ð +FILENAME_MAXLEN +-1) { + +558 + `Pršt +( +L +"cÚfig fž’ami lim™edØ%d ch¬aù”s\n", +FILENAME_MAXLEN +); + +559  +do_ex™ +; + +561 + `SŒCpy +( +–žo_Ýt +. +cÚfig +, +O±¬g +); + +564 { +mm­_desc_t + +mdesc +; + +565 ià( + `g‘_memm­ +(& +mdesc +) == -1) { + +566 + `Pršt +( +L +"Cannot get memory map\n"); + +567  +EFI_LOAD_ERROR +; + +569 + `´št_memm­ +(& +mdesc +); + +570 +»t + = +EFI_SUCCESS +; + +571  +do_ex™ +; + +574 + `Pršt +( +L +"ELILO v% fÜ EFI/%a\n", +ELILO_VERSION +, +ELILO_ARCH +); + +575 +»t + = +EFI_SUCCESS +; + +576  +do_ex™ +; + +579 +–žo_Ýt +. +·r£_Úly + = 1; + +582 ià( + `SŒL’ +( +O±¬g +è>ð +FILENAME_MAXLEN +-1) { + +583 + `Pršt +( +L +"choo£¸Çmi lim™edØ%d ch¬aù”s\n", +FILENAME_MAXLEN +); + +584  +do_ex™ +; + +586 + `SŒCpy +( +–žo_Ýt +. +choo£r +, +O±¬g +); + +592 ià( + `sysd•s_g‘Ýt +( +c +, +O±šd +, +O±¬g +) == 0) ; + +594 + `Pršt +( +L +"UnknowÀÝtiÚ -%c\n", ( +CHAR16 +) +c +); + +595  +do_ex™ +; + +598 + `DBG_PRT +(( +L +"O±šd=%d o±¬g=%x‡rgc=%d", +O±šd +, +O±¬g +, +¬gc +)); + +604 ià( + `š™_deviûs +( +šfo +-> +DeviûHªdË +è=ð-1è +do_ex™ +; + +606 +deviûs_š™Ÿlized + = +TRUE +; + +608 +dev·th + = + `DeviûP©hToSŒ +( +šfo +-> +FžeP©h +); + +613 + `fÝs_£tdeçuÉs +( +–žo_Ýt +. +deçuÉ_cÚfigs +,ƒlžo_Ýt. +deçuÉ_k”Ãl +, +FILENAME_MAXLEN +, +dev·th +); + +618 + `VERB_PRT +(2, + `Pršt +( +L +"Default config: %s\nDefault_kernel: %s\n", + +619 +–žo_Ýt +. +deçuÉ_cÚfigs +[0]. +âame +,ƒlžo_Ýt. +deçuÉ_k”Ãl +)); + +623 +±r + = +–žo_Ýt +. +cÚfig +[0] =ð +CHAR_NULL + ? ( +»Œy +=1,–žo_Ýt. +deçuÉ_cÚfigs +[0]. +âame +) : (retry=0,elilo_opt.config); + +628 +»t + = + `»ad_cÚfig +( +±r +); + +629 + `VERB_PRT +(1, + `Pršt +( +L +"»ad_cÚfig=%r\n", +»t +)); + +633 ià( +–žo_Ýt +. +cÚfig +[0] =ð +CHAR_NULL +) { + +634 ( +»t + !ð +EFI_SUCCESS +) && + +635 ( +»Œy + < +MAX_DEFAULT_CONFIGS +) && + +636 ( +–žo_Ýt +. +deçuÉ_cÚfigs +[ +»Œy +]. +âame +[0] !ð +CHAR_NULL +)) { + +638 +±r + = +–žo_Ýt +. +deçuÉ_cÚfigs +[ +»Œy +]. +âame +; + +639 +»t + = + `»ad_cÚfig +( +±r +); + +640 + `VERB_PRT +(1, + `Pršt +( +L +"»ad_cÚfig=%r\n", +»t +)); + +641 +»Œy + += 1; + +649 ià( +»t + =ð +EFI_NOT_FOUND + ||„‘ =ð +EFI_TFTP_ERROR +) { + +650 ià( +–žo_Ýt +. +´om± + =ð0 &&ƒlžo_Ýt. +cÚfig +[0] !ð +CHAR_NULL +) { + +651 + `Pršt +( +L +"cÚfig fž% nÙ found\n", +±r +); + +652  +do_ex™ +; + +654 + `fÝs_g‘deçuÉ_·th +( +d·th +, +FILENAME_MAXLEN +); + +655 ià( +»t + =ð +EFI_TFTP_ERROR +) + +656 + `Pršt +( +L +"nØcÚfig fžfound oÀTFTP s”v” iÀ%s\n", +d·th +); + +658 + `Pršt +( +L +"nØcÚfig fžfound iÀ%s\n", +d·th +); + +663 ià( +–žo_Ýt +. +·r£_Úly +) { + +664 ià( +»t + =ð +EFI_SUCCESS +) + +665 + `Pršt +( +L +"CÚfig fž% ·r£d sucûssfuÎy\n", +±r +); + +666  +do_ex™ +; + +673 ià( +»t + !ð +EFI_SUCCESS +) { + +674 + `Pršt +( +L +"forcing interactive mode dueo config fileƒrror(s)\n"); + +675 +–žo_Ýt +. +´om± + = 1; + +682 ià( +¬gc + > +O±šd +) { + +683 +–žo_Ýt +. +´om± + = 0; + +694 ià( +edd30_¡©us + =ð-1 && +–žo_Ýt +. +edd30_no_fÜû + == 0) { + +695 + `fÜû_edd30 +(); + +698 +»t + = +EFI_LOAD_ERROR +; + +703 ià(( +–žo_Ýt +. +´om± + &&ƒlžo_Ýt. +timeout + == 0)) { + +704 +–žo_Ýt +. +timeout + = +ELILO_DEFAULT_TIMEOUT +; + +710 ià( + `š™_choo£r +( +šfo +-> +DeviûHªdË +) == -1) { + +711 + `ERR_PRT +(( +L +"Cannot find‡ decent chooser\n")); + +712  +do_ex™ +; + +717 + `maš_loÝ +( +šfo +-> +DeviûHªdË +, +¬gv +, +¬gc +, +O±šd +, +image +); + +719 +do_ex™ +: + +720 + `unfixu·rgs +( +šfo +); + +725 ià( +deviûs_š™Ÿlized +è + `þo£_deviûs +(); + +728 + `ä“_®l_memÜy +(); + +730  +»t +; + +731 + } +} + + @elilo.h + +29 #iâdeà +__ELILO_H__ + + +30  + #__ELILO_H__ + + + ) + +32  + ~ + +34  + ~"–žo_debug.h +" + +36  + ~"fžeÝs.h +" + +37  + ~"choo£r.h +" + +39  + ~"¡rÝs.h +" + +41  + ~"sysd•s.h +" + +43  + #MB + (1024*1024è + + ) + +46  + #ROUNDUP +( +x +, +a +è(((xè+ (aè- 1è& ~(×è- 1)) + + ) + +47  + #ROUNDDOWN +( +x +, +a +è((xè& ~(×è- 1)) + + ) + +52  + #ELILO_LOAD_SUCCESS + 0 + + ) + +53  + #ELILO_LOAD_ABORTED + 1 + + ) + +54  + #ELILO_LOAD_ERROR + 2 + + ) + +55  + #ELILO_LOAD_RETRY + 3 + + ) + +57  + #ELILO_DEFAULT_TIMEOUT + +ELILO_TIMEOUT_INFINITY + + + ) + +58  + #ELILO_TIMEOUT_INFINITY + (~0UL) + + ) + +60  + #CMDLINE_MAXLEN + 512 + + ) + +61  + #FILENAME_MAXLEN + 256 + + ) + +62  + #MAX_ARGS + 256 + + ) + +64  + #MAX_DEFAULT_CONFIGS + 16 + + ) + +67 +UINT8 + + mnÙhšg_y‘ +; + +68 } + timage_Ýt_t +; + +70  + scÚfig_fže + { + +71 +CHAR16 + + mâame +[ +FILENAME_MAXLEN +]; + +72 } + tcÚfig_fže_t +; + +79 +UINTN + + m®t_check +; + +80 +UINTN + + mdebug +; + +81 +UINTN + + md–ay +; + +82 +UINTN + + mv”bo£ +; + +83 +CHAR16 + + mš™rd +[ +FILENAME_MAXLEN +]; + +84 +CHAR16 + + mvmcode +[ +FILENAME_MAXLEN +]; + +85 +UINT8 + + md–ay_£t +; + +86 +UINT8 + + medd30_Ú +; + +87 +UINT8 + + medd30_no_fÜû +; + +92 +UINTN + + m´om± +; + +93 +UINTN + + m·r£_Úly +; + +94 +UINTN + + mtimeout +; + +96 +image_Ýt_t + + mimg_Ýt +; + +98 +sys_img_ÝtiÚs_t + * + msys_img_Ýts +; + +100 +CHAR16 + + mdeçuÉ_k”Ãl +[ +FILENAME_MAXLEN +]; + +102 +cÚfig_fže_t + + mdeçuÉ_cÚfigs +[ +MAX_DEFAULT_CONFIGS +]; + +104 +CHAR16 + + mcÚfig +[ +FILENAME_MAXLEN +]; + +105 +CHAR16 + + mchoo£r +[ +FILENAME_MAXLEN +]; + +106 } + t–žo_cÚfig_t +; + +109 +–žo_cÚfig_t + +–žo_Ýt +; + +111 +EFI_SYSTEM_TABLE + * +sy¡ab +; + +114 +VOID + * + m¡¬t_addr +; + +115 +UINTN + + mpgút +; + +116 +UINTN + + msize +; + +117 } + tmemdesc_t +; + +120 +VOID + * + mk¡¬t +; + +121 +VOID + * + mk’d +; + +122 +VOID + * + mk’Œy +; + +123 } + tkdesc_t +; + +126 +EFI_MEMORY_DESCRIPTOR + * + mmd +; + +127 +UINTN + + mm­_size +; + +128 +UINTN + + mdesc_size +; + +129 +UINTN + + mcook› +; + +130 +UINT32 + + mdesc_v”siÚ +; + +131 } + tmm­_desc_t +; + +133 #iâdeà +MAX + + +134  + #MAX +( +a +, +b +è(×)>(bè? (aè: (b)) + + ) + +137 #iâdeà +MIN + + +138  + #MIN +( +a +, +b +è(×)>(bè? (bè: (a)) + + ) + +141  + #VERB_PRT +( +n +, +cmd +) \ + +142 { ià( +–žo_Ýt +. +v”bo£ + >ð( +n +)è{ +cmd +; } } + + ) + +146 +INTN + +®loc_š™ +( +VOID +); + +147 +VOID + * +®loc +( +UINTN +, +EFI_MEMORY_TYPE +); + +148 +VOID + +ä“ +(VOID *); + +149 +VOID + * +®loc_·ges +( +UINTN +, +EFI_MEMORY_TYPE +, +EFI_ALLOCATE_TYPE +, VOID *); + +150 +VOID + +ä“_·ges +(VOID *); + +151 +VOID + +ä“_®l +(VOID); + +152 +INTN + +®loc_kmem +( +VOID + *, +UINTN +); + +153 +VOID + +ä“_kmem +(VOID); + +154 +VOID + +ä“_®l_memÜy +(VOID); + +157 +INTN + +»ad_fže +( +UINTN + +fd +, UINTN, +CHAR8 + *); + +158 +EFI_STATUS + +check_abÜt +( +VOID +); + +159 +VOID + +»£t_šput +(VOID); + +160 +INTN + +wa™_timeout +( +UINTN +); + +161 +INTN + +¬gify +( +CHAR16 + *, +UINTN +, CHAR16 **); + +162 +VOID + +uÇrgify +( +CHAR16 + **, CHAR16 **); + +163  +¥l™_¬gs +( +CHAR16 + *, CHAR16 *, CHAR16 *); + +164 +INTN + +g‘_memm­ +( +mm­_desc_t + *); + +165 +VOID + +ä“_memm­ +( +mm­_desc_t + *); + +166 +INTN + +fšd_k”Ãl_memÜy +( +VOID + * +low_addr +, VOID * +max_addr +, +UINTN + +®ignm’t +, VOID ** +¡¬t +); + +167 +VOID + +´št_memm­ +( +mm­_desc_t + *); + +168 +VOID + +ascii2U +( +CHAR8 + *, +CHAR16 + *, +UINTN +); + +169 +VOID + +U2ascii +( +CHAR16 + *, +CHAR8 + *, +UINTN +); + +172 +EFI_STATUS + +»ad_cÚfig +( +CHAR16 + *); + +173 +VOID + +´št_cÚfig_ÝtiÚs +(VOID); + +174 +INTN + +fšd_Ïb– +( +CHAR16 + *, CHAR16 *, CHAR16 *, CHAR16 *, CHAR16 *); + +175 +VOID + +´št_Ïb–_li¡ +(VOID); + +176 +INTN + +cÚfig_š™ +( +VOID +); + +177 +CHAR16 + * +g‘_mes§ge_fž’ame +( +INTN + +which +); + +178 +CHAR16 + * +fšd_desütiÚ +(CHAR16 * +Ïb– +); + +179 +VOID + * +g‘_Ãxt_desütiÚ +(VOID * +´ev +, +CHAR16 + ** +Ïb– +, CHAR16 ** +desütiÚ +); + +180 +CHAR16 + * +g‘_cÚfig_fže +( +VOID +); + +183 +INTN + +lßd_fže +( +CHAR16 + *, +memdesc_t + *); + +186 +INTN + +®‹º©e_k”Ãl +( +CHAR16 + *, INTN); + +189 +VOID + * +ü—‹_boÙ_·¿ms + ( +CHAR16 + *, +memdesc_t + *, memdesc_ˆ*, +UINTN + *); + +190 +VOID + +ä“_boÙ_·¿ms +(VOID * +bp +); + +197 +INTN + +sysd•s_ü—‹_boÙ_·¿ms +( +boÙ_·¿ms_t + *, +CHAR8 + *, +memdesc_t + *, memdesc_ˆ*, +UINTN + *); + +198 +VOID + +sysd•s_ä“_boÙ_·¿ms +( +boÙ_·¿ms_t + *); + +199 +INTN + +sysd•s_š™ +( +EFI_HANDLE + +dev +); + +200 +INTN + +sysd•s_š™rd_g‘_addr +( +kdesc_t + *, +memdesc_t + *); + +201 +INTN + +sysd•s_´–oÝ_aùiÚs +( +EFI_HANDLE +, +CHAR16 + **, INTN, INTN, EFI_HANDLE); + +202 +CHAR16 + * +sysd•s_g‘_cmdlše_Ýts +( +VOID +); + +203 +INTN + +sysd•s_g‘Ýt +(INTN, INTN, +CHAR16 + *); + +204 +VOID + +sysd•s_´št_cmdlše_Ýts +(VOID); + +205 +INTN + +sysd•s_»gi¡”_ÝtiÚs +( +VOID +); + +207  + #CHAR_SLASH + +L +'/' + + ) + +208  + #CHAR_BACKSLASH + +L +'\\' + + ) + + @elilo_debug.h + +26 #iâdeà +__ELILO_DEBUG__ + + +27  + #__ELILO_DEBUG__ + + + ) + +29  + #ELILO_DEBUG + 1 + + ) + +31  + #ERR_PRT +( +a +èdØ{ + `Pršt +( +L +"%a֚%d):", +__FILE__ +, +__LINE__ +); +Pršt +‡; Pršt(L"\n"); } 0); + + ) + +33 #ifdeà +ELILO_DEBUG + + +34  + #DBG_PRT +( +a +) do { \ + +35 ià( +–žo_Ýt +. +debug +) { \ + +36 + `Pršt +( +L +"%a֚%d):", +__FILE__ +, +__LINE__ +); \ + +37 +Pršt + +a +; \ + +38 + `Pršt +( +L +"\n"); \ + +39 } } 0); + + ) + +41  + #DBG_PRT +( +a +) + + ) + + @fileops.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"fžeÝs.h +" + +35 #ifdeà +CONFIG_LOCALFS + + +36  + ~"glue_loÿlfs.h +" + +38 #ifdeà +CONFIG_NETFS + + +39  + ~"glue_Ãtfs.h +" + +42 #ifdeà +CONFIG_EXT2FS + + +43  + ~"glue_ext2fs.h +" + +50 +devÇme_scheme_t + +sim¶e_devÇme_scheme +; + +52  +devÇme_scheme_t + * + gdevÇme_scheme_b +[]={ + +53 & +sim¶e_devÇme_scheme +, + +54 +NULL + + +65  + $EFI_STATUS + ( + tfÝs_fixups_t +)( + tEFI_HANDLE + + tdev +, + tdeviû_t + * + td +); + +72  +fžeÝs_fs_t + * +fs_b +[]={ + +73 #ifdeà +CONFIG_LOCALFS + + +74 & +loÿlfs_glue +, + +76 #ifdeà +CONFIG_EXT2FS + + +77 & +ext2fs_glue +, + +79 #ifdeà +CONFIG_NETFS + + +80 & +Ãtfs_glue +, + +82 +NULL + + +83 + } +}; + +85  +deviû_t + * + gdev_b +; + +86  +UINTN + + gndev +, + gndev_boÙ +; + +87  +deviû_t + * + gboÙ_dev +; + +89  + s_fdesc_t + { + +90  +_fdesc_t + * + mÃxt +; + +91 +fžeÝs_t + * + mfÝs +; + +92 +UINTN + + mfh +; + +93 } + tfdesc_t +; + +95  + #FILEOPS_FD_MAX + 16 + + ) + +97  +fdesc_t + + gfd_b +[ +FILEOPS_FD_MAX +]; + +98  +fdesc_t + * + gä“_fd +; + +100  +devÇme_scheme_t + * + gcu¼’t_devÇme_scheme +; + +102  + #FDESC_IDX +( +f +è( +fÝs_fd_t +)(f- +fd_b +) + + ) + +103  + #FDESC_INVALID_FD +( +fd +è(fd >ð +FILEOPS_FD_MAX + || +fd_b +[(fd)]. +fÝs + =ð +NULL +) + + ) + +104  + #FDESC_F +( +fd +è( +fd_b ++(fd)) + + ) + +106  +fdesc_t + * + +107 + $fd_®loc +( +VOID +) + +109 +fdesc_t + * +tmp + = +NULL +; + +111 ià( +ä“_fd + =ð +NULL +) { + +112 + `ERR_PRT +(( +L +"out of file descriptor")); + +114 +tmp + = +ä“_fd +; + +115 +ä“_fd + = f»e_fd-> +Ãxt +; + +117  +tmp +; + +118 + } +} + +120  +VOID + + +121 + $fd_ä“ +( +fdesc_t + * +fd +) + +123 ià( +fd + =ð +NULL +) { + +124 + `ERR_PRT +(( +L +"invalid fd")); + +126 +fd +-> +fÝs + = +NULL +; + +127 +fd +-> +Ãxt + = +ä“_fd +; + +128 +ä“_fd + = +fd +; + +129 + } +} + +131  +fžeÝs_t + * + +132 + $glue_fžesy¡em +( +EFI_GUID + * +´Ùo +, +EFI_HANDLE + +dev +, +fÝs_fs_glue_t + +glue +) + +134 +fžeÝs_t + * +fÝs +; + +135 +VOID + * +štf + = +NULL +; + +136 +EFI_STATUS + +¡©us +; + +138 +¡©us + = +BS +-> + `HªdËPrÙocÞ +( +dev +, +´Ùo +, & +štf +); + +139 ià( + `EFI_ERROR +( +¡©us +)) { + +140 + `ERR_PRT +(( +L +"uÇbˁØloÿ‹ %g: should‚Ù h­³n", +´Ùo +)); + +141  +NULL +; + +143 +fÝs + = ( +fžeÝs_t + *) + `®loc +((*fÝs), +EfiLßd”D©a +); + +144 ià( +fÝs + =ð +NULL +) { + +145 + `ERR_PRT +(( +L +"failedo‡llocate fileops")); + +146  +NULL +; + +148 + `Mem£t +( +fÝs +, 0, (*fops)); + +150 +fÝs +-> +dev + = dev; + +153 + `glue +( +fÝs +, +štf +); + +155  +fÝs +; + +156 + } +} + +158 +INTN + + +159 + $fÝs_¥l™_·th +( +CHAR16 + * +·th +, CHAR16 * +dev +) + +161 +CHAR16 + * +p +, * +d + = +dev +; + +162 +UINTN + +Ën + = +FILEOPS_DEVNAME_MAXLEN +; + +163  + #CHAR_COLON + +L +':' + + ) + +165 +p + = + `SŒChr +( +·th +, +CHAR_COLON +); + +166 ià( +p + =ð +NULL +) { + +167 * +dev + = +CHAR_NULL +; + +171  +d + = +dev + ; +·th + !ð +p + ;) { + +172 ià(-- +Ën + == 0)  -1; + +173 * +d +++ = * +·th +++; + +175 * +d + = +CHAR_NULL +; + +177 + } +} + +179  +deviû_t + * + +180 + $fšd_deviû_byÇme +( +CHAR16 + * +dev +) + +182 +UINTN + +i +; + +183  +i +=0; i < +ndev +; i++) { + +184 ià(! + `SŒCmp +( +dev +, +dev_b +[ +i +]. +Çme +))  dev_tab+i; + +186  +NULL +; + +187 + } +} + +206 +EFI_STATUS + + +207 + $fÝs_g‘_Ãxt_deviû +( +UINTN + +pidx +, +CHAR16 + * +ty³ +, UINTN +maxËn +, UINTN * +idx +, CHAR16 * +Çme +, +EFI_HANDLE + * +dev +) + +209 +UINTN + +i +; + +211 ià( +Çme + =ð +NULL + || +idx + =ðNULLè +EFI_INVALID_PARAMETER +; + +213  +i += +pidx +; i < +ndev +; i++) { + +214 ià( +ty³ + =ð +NULL + || ! + `SŒCmp +( +dev_b +[ +i +]. +fÝs +-> +Çme +,y³)è +found +; + +216  +EFI_NOT_FOUND +; + +217 +found +: + +218 ià( + `SŒL’ +( +dev_b +[ +i +]. +Çme +è>ð +maxËn +) { + +219 * +idx + = +pidx +; + +220  +EFI_BUFFER_TOO_SMALL +; + +222 + `SŒCpy +( +Çme +, +dev_b +[ +i +].name); + +223 * +idx + = +i ++1; + +224 ià( +dev +è*dev = +dev_b +[ +i +].dev; + +226  +EFI_SUCCESS +; + +227 + } +} + +229 +EFI_STATUS + + +230 + $fÝs_g‘_deviû_hªdË +( +CHAR16 + * +Çme +, +EFI_HANDLE + * +dev +) + +232 +UINTN + +i +; + +234 ià( +Çme + =ð +NULL + || +dev + =ðNULLè +EFI_INVALID_PARAMETER +; + +236  +i +=0; i < +ndev +; i++) { + +237 ià(! + `SŒCmp +( +dev_b +[ +i +]. +Çme +,‚ame)è +found +; + +239  +EFI_NOT_FOUND +; + +240 +found +: + +241 * +dev + = +dev_b +[ +i +].dev; + +243  +EFI_SUCCESS +; + +244 + } +} + +247 +EFI_STATUS + + +248 + $fÝs_ݒ +( +CHAR16 + * +fuÎÇme +, +fÝs_fd_t + * +fd +) + +250 +fdesc_t + * +f +; + +251 +EFI_STATUS + +¡©us +; + +252 +fžeÝs_t + * +fÝs +; + +253 +deviû_t + * +dev +; + +254 +CHAR16 + +dev_Çme +[ +FILEOPS_DEVNAME_MAXLEN +]; + +255 +CHAR16 + * +Çme +; + +258 ià( +fd + =ð +NULL + || +fuÎÇme + =ðNULL || *fuÎÇm=ð +CHAR_NULL + || + `fÝs_¥l™_·th +(fuÎÇme, +dev_Çme +) == -1) + +259  +EFI_INVALID_PARAMETER +; + +261 + `DBG_PRT +(( +L +"fÝs_ݒ(%s), dev:%s:", +fuÎÇme + ? fuÎÇm: L"(NULL)", +dev_Çme +)); + +263 +Çme + = +fuÎÇme +; + +264 ià( +dev_Çme +[0] =ð +CHAR_NULL +) { + +265 ià( +boÙ_dev + =ð +NULL +è +EFI_INVALID_PARAMETER +; + +266 +fÝs + = +boÙ_dev +->fops; + +268 ià(( +dev += + `fšd_deviû_byÇme +( +dev_Çme +)è=ð +NULL +è +EFI_INVALID_PARAMETER +; + +270 +Çme + +ð + `SŒL’ +( +dev_Çme +)+1; + +272 +fÝs + = +dev +->fops; + +275 ià( +fÝs + =ð +NULL +è +EFI_INVALID_PARAMETER +; + +277 ià(( +f += + `fd_®loc +()è=ð +NULL +è +EFI_OUT_OF_RESOURCES +; + +279 + `DBG_PRT +(( +L +"dev:%s: fuÎÇme:%s:‚ame:%s: f=%d", +dev_Çme +, +fuÎÇme +, +Çme +, +f + - +fd_b +)); + +281 +¡©us + = +fÝs +-> + `ݒ +(fÝs-> +štf +, +Çme +, & +f +-> +fh +); + +282 ià( + `EFI_ERROR +( +¡©us +)è +”rÜ +; + +284 +f +-> +fÝs + = fops; + +286 * +fd + = + `FDESC_IDX +( +f +); + +288  +EFI_SUCCESS +; + +289 +”rÜ +: + +290 + `fd_ä“ +( +f +); + +291  +¡©us +; + +292 + } +} + +294 +EFI_STATUS + + +295 + $fÝs_»ad +( +fÝs_fd_t + +fd +, +VOID + * +buf +, +UINTN + * +size +) + +297 +fdesc_t + * +f +; + +299 ià( +buf + =ð +NULL + || + `FDESC_INVALID_FD +( +fd +è|| +size + =ðNULLè +EFI_INVALID_PARAMETER +; + +301 +f + = + `FDESC_F +( +fd +); + +303  +f +-> +fÝs +-> + `»ad +(f->fÝs-> +štf +, f-> +fh +, +buf +, +size +); + +304 + } +} + +306 +EFI_STATUS + + +307 + $fÝs_þo£ +( +fÝs_fd_t + +fd +) + +309 +fdesc_t + * +f +; + +310 +EFI_STATUS + +¡©us +; + +312 ià( + `FDESC_INVALID_FD +( +fd +)è +EFI_INVALID_PARAMETER +; + +314 +f + = + `FDESC_F +( +fd +); + +316 +¡©us + = +f +-> +fÝs +-> + `þo£ +(f->fÝs-> +štf +, f-> +fh +); + +318 + `fd_ä“ +( +f +); + +320  +¡©us +; + +321 + } +} + +323 +EFI_STATUS + + +324 + $fÝs_šfosize +( +fÝs_fd_t + +fd +, +UINT64 + * +size +) + +326 +fdesc_t + * +f +; + +328 ià( + `FDESC_INVALID_FD +( +fd +è|| +size + =ð +NULL +è +EFI_INVALID_PARAMETER +; + +330 +f + = + `FDESC_F +( +fd +); + +332  +f +-> +fÝs +-> + `šfosize +(f->fÝs-> +štf +, f-> +fh +, +size +); + +333 + } +} + +335 +EFI_STATUS + + +336 + $fÝs_£ek +( +fÝs_fd_t + +fd +, +UINT64 + +Ãwpos +) + +338 +fdesc_t + * +f +; + +340 ià( + `FDESC_INVALID_FD +( +fd +)è +EFI_INVALID_PARAMETER +; + +342 +f + = + `FDESC_F +( +fd +); + +344  +f +-> +fÝs +-> + `£ek +(f->fÝs-> +štf +, f-> +fh +, +Ãwpos +); + +345 + } +} + +347 +EFI_STATUS + + +348 + $fÝs_£tdeçuÉs +( +cÚfig_fže + * +defcÚf +, +CHAR16 + * +kÇme +, +UINTN + +maxËn +, CHAR16 * +dev·th +) + +350 +INTN + +i +; + +357 #ià + `defšed +( +CONFIG_Ÿ64 +) + +358  + #FILEOPS_ARCH_DEFAULT_CONFIG + +L +"–žo-Ÿ64.cÚf" + + ) + +359 #–ià + `defšed + ( +CONFIG_Ÿ32 +) + +360  + #FILEOPS_ARCH_DEFAULT_CONFIG + +L +"–žo-Ÿ32.cÚf" + + ) + +368  + #FILEOPS_DEFAULT_CONFIG + +L +"–žo.cÚf" + + ) + +370  + #FILEOPS_DEFAULT_KERNEL + +L +"vmlšux" + + ) + +372 #ifdeà +ELILO_DEBUG + + +373 ià( +defcÚf + =ð +NULL + || +kÇme + =ðNULLè +EFI_INVALID_PARAMETER +; + +376  +i +=0; i< +MAX_DEFAULT_CONFIGS +; i++) { + +377 +defcÚf +[ +i +]. +âame +[0] = +CHAR_NULL +; + +380 ià( +boÙ_dev + =ð +NULL + || boÙ_dev-> +fÝs + == NULL) { + +381 ià( +boÙ_dev + =ð +NULL +) + +382 + `Pršt +( +L +"Warning boot device‚ot„ecognized\n"); + +384 + `Pršt +( +L +"Unknown filesystem on boot device\n"); + +386 + `Pršt +( +L +"Using builtin defaults for kernel‡nd config file\n"); + +388 + `SŒnCpy +( +kÇme +, +FILEOPS_DEFAULT_KERNEL +, +maxËn +-1); + +391 +boÙ_dev +-> +fÝs +-> + `£tdeçuÉs +(boÙ_dev->fÝs-> +štf +, +defcÚf +, +kÇme +, +maxËn +, +dev·th +); + +393 +i +=0; i< +MAX_DEFAULT_CONFIGS + && +defcÚf +[i]. +âame +[0] !ð +CHAR_NULL +) i += 1; + +394 #ifdeà +ELILO_DEBUG + + +395 ià(( +i ++3è>ð +MAX_DEFAULT_CONFIGS +) { + +396 + `Pršt +( +L +"ERROR: i = %d, MAX_DEFAULT_CONFIGS i nن¬g’ough\n", +i +); + +397  +EFI_INVALID_PARAMETER +; + +400 + `SŒnCpy +( +defcÚf +[ +i +]. +âame +, +FILEOPS_ARCH_DEFAULT_CONFIG +, +maxËn +-1); + +401 + `SŒnCpy +( +defcÚf +[ +i ++1]. +âame +, +FILEOPS_DEFAULT_CONFIG +, +maxËn +-1); + +403 #ifdeà +ELILO_DEBUG + + +404 + `VERB_PRT +(3, + `Pršt +( +L +"Default config filename†ist:\n")); + +405  +i +=0; i< +MAX_DEFAULT_CONFIGS +; i++) { + +406 ià( +defcÚf +[ +i +]. +âame +[0] =ð +CHAR_NULL +) { ; } + +407 + `VERB_PRT +(3, + `Pršt +( +L +"\t%s\n", +defcÚf +[ +i +]. +âame +)); + +411  +EFI_SUCCESS +; + +412 + } +} + +414 +EFI_STATUS + + +415 + $fÝs_g‘deçuÉ_·th +( +CHAR16 + * +·th +, +UINTN + +maxËn +) + +417 ià( +·th + =ð +NULL + || +maxËn + =ð0è +EFI_INVALID_PARAMETER +; + +423 ià( +boÙ_dev +-> +fÝs +-> +g‘deçuÉ_·th +) + +424  +boÙ_dev +-> +fÝs +-> + `g‘deçuÉ_·th +( +·th +, +maxËn +); + +426 +·th +[0] = +CHAR_NULL +; + +428  +EFI_SUCCESS +; + +429 + } +} + +431 +CHAR16 + * + +432 + $fÝs_boÙdev_Çme +( +VOID +) + +434  +boÙ_dev + ? boÙ_dev-> +Çme + : +L +"not supported"; + +435 + } +} + +437  +INTN + + +438 + $add_dev_b +( +EFI_GUID + * +´Ùo +, +EFI_HANDLE + +boÙ_hªdË +, +UINTN + +size +, +fÝs_fs_glue_t + +glue +) + +440 +EFI_STATUS + +¡©us +; + +441 +EFI_HANDLE + * +b +; + +442 +UINTN + +i +; + +443  +UINTN + +idx +; + +445 ià( +size + == 0)  0; + +447 +b + = ( +EFI_HANDLE + *) + `®loc +( +size +, +EfiLßd”D©a +); + +448 ià( +b + =ð +NULL +) { + +449 + `ERR_PRT +(( +L +"failedo‡llocate handleable")); + +453 + `Mem£t +( +b +, 0, +size +); + +458 +¡©us + = +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, +´Ùo +, +NULL +, & +size +, +b +); + +459 ià( +¡©us + !ð +EFI_SUCCESS +) { + +460 + `ERR_PRT +(( +L +"çžedØg‘ hªdË f܅rÙØ%g size=%d: %r", +´Ùo +, +size +, +¡©us +)); + +461 + `ä“ +( +b +); + +464 +size + /ð( +EFI_HANDLE +); + +466  +i +=0; i < +size +; i++) { + +467 +dev_b +[ +idx +]. +dev + = +b +[ +i +]; + +468 +dev_b +[ +idx +]. +fÝs + = + `glue_fžesy¡em +( +´Ùo +, +b +[ +i +], +glue +); + +470 ià( +b +[ +i +] =ð +boÙ_hªdË +è +boÙ_dev + = +dev_b ++ +idx +; + +473 ià( +dev_b +[ +idx +]. +fÝs +è +ndev_boÙ +++; + +476 +dev_b +[ +idx +]. +Çme +[0] = +L +'d'; + +477 +dev_b +[ +idx +]. +Çme +[1] = +L +'e'; + +478 +dev_b +[ +idx +]. +Çme +[2] = +L +'v'; + +479 +dev_b +[ +idx +]. +Çme +[3] = +L +'0' + idx/100; + +480 +dev_b +[ +idx +]. +Çme +[4] = +L +'0' + (idx%100)/10; + +481 +dev_b +[ +idx +]. +Çme +[5] = +L +'0' + (idx%100) % 10; + +482 +dev_b +[ +idx +]. +Çme +[6] = +CHAR_NULL +; + +484 #ifdeà +ELILO_DEBUG + + +485 ià( +–žo_Ýt +. +debug +) { + +486 +EFI_DEVICE_PATH + * +dp +; + +487 +CHAR16 + * +¡r +, * +¡r2 +; + +489 +¡r + = +NULL +; + +490 +dp + = + `DeviûP©hFromHªdË +( +dev_b +[ +idx +]. +dev +); + +491 ià( +dp +è +¡r + = + `DeviûP©hToSŒ +(dp); + +493 +¡r2 + = +¡r + =ð +NULL + ? +L +"Unknown" : str; + +495 + `DBG_PRT +(( +L +"% : %-8 : %s\n", +dev_b +[ +idx +]. +Çme +, + +496 ( +dev_b +[ +idx +]. +fÝs + ? dev_b[idx].fÝs-> +Çme +: +L +"N/A"), +¡r2 +)); + +498 ià( +¡r +è + `F»ePoÞ +(str); + +502 +idx +++; + +504 + `ä“ +( +b +); + +507 +ndev + = +idx +; + +510 + } +} + +512  +INTN + + +513 + $´obe_devÇme_schemes +( +deviû_t + * +dev_b +, +INTN + +ndev +) + +515 +devÇme_scheme_t + ** +p +; + +517  +p + = +devÇme_scheme_b +; *p ;…++) { + +518 ià((* +p +)-> + `š¡®l_scheme +( +dev_b +, +ndev +è=ð0è +found +; + +520 + `ERR_PRT +(( +L +"No devname schemes worked, using builtin\n")); + +522 +found +: + +523 + `VERB_PRT +(3, + `Pršt +( +L +"devÇmscheme: %s\n", (* +p +)-> +Çme +)); + +524 +cu¼’t_devÇme_scheme + = * +p +; + +526 + } +} + +528  +INTN + + +529 + $fšd_fžesy¡ems +( +EFI_HANDLE + +boÙ_hªdË +) + +531 +UINTN + +size +, +tÙ® + = 0; + +532 +fžeÝs_fs_t + ** +fs +; + +537  +fs + = +fs_b +; *fs; fs++) { + +538 +size + = 0; + +539 +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, &(* +fs +)-> +´Ùo +, +NULL +, & +size +, NULL); + +540 +tÙ® + +ð +size +; + +542 ià( +tÙ® + == 0) { + +543 + `ERR_PRT +(( +L +"No useable filesystem found")); + +546 +tÙ® + /ð( +EFI_HANDLE +); + +547 + `DBG_PRT +(( +L +"found %d fžesy¡ems", +tÙ® +)); + +549 +dev_b + = ( +deviû_t + *) + `®loc +( +tÙ® +*(deviû_t), +EfiLßd”D©a +); + +550 ià( +dev_b + =ð +NULL +) { + +551 + `ERR_PRT +(( +L +"failedo‡llocate handleable")); + +555 + `Mem£t +( +dev_b +, 0, +tÙ® +*( +deviû_t +)); + +560  +fs + = +fs_b +; *fs; fs++) { + +561 +size + = 0; + +563 +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, &(* +fs +)-> +´Ùo +, +NULL +, & +size +, NULL); + +564 ià( +size + == 0) ; + +566 + `add_dev_b +(&(* +fs +)-> +´Ùo +, +boÙ_hªdË +, +size +, (*fs)-> +glue +); + +568 + `´obe_devÇme_schemes +( +dev_b +, +ndev +); + +571 + } +} + +573  +INTN + + +574 + $fžeÝs_š™ +( +VOID +) + +576 +UINTN + +i +; + +578  +i +=0; i < +FILEOPS_FD_MAX +-1; i++) { + +579 +fd_b +[ +i +]. +Ãxt + = &fd_tab[i+1]; + +581 +fd_b +[ +i +]. +Ãxt + = +NULL +; + +582 +ä“_fd + = +fd_b +; + +585 + } +} + +590  +INTN + + +591 + $š¡®l_fžesy¡ems +( +VOID +) + +593 +fžeÝs_fs_t + ** +fs +; + +595  +fs + = +fs_b +; *fs; fs++è(*fs)-> + `š¡®l +(); + +598 + } +} + +600  +INTN + + +601 + $unš¡®l_fžesy¡ems +( +VOID +) + +603 +fžeÝs_fs_t + ** +fs +; + +605  +fs + = +fs_b +; *fs; fs++è(*fs)-> + `unš¡®l +(); + +608 + } +} + +610 +INTN + + +611 + $š™_deviûs +( +EFI_HANDLE + +boÙ_hªdË +) + +614 + `š¡®l_fžesy¡ems +(); + +619 + `fžeÝs_š™ +(); + +621  + `fšd_fžesy¡ems +( +boÙ_hªdË +); + +622 + } +} + +624 +INTN + + +625 + $þo£_deviûs +( +VOID +) + +627 +INTN + +i +; + +629  +i +=0; i < +FILEOPS_FD_MAX +; i++) { + +630 + `fÝs_þo£ +( +i +); + +632 + `ä“ +( +dev_b +); + +637 + `unš¡®l_fžesy¡ems +(); + +640 + } +} + +642 +VOID + + +643 + $´št_deviûs +( +VOID +) + +645 +UINTN + +idx +; + +646 +EFI_DEVICE_PATH + * +dp +; + +647 +CHAR16 + * +¡r +, * +¡r2 +; + +649  +idx +=0; idx< +ndev +; idx++) { + +650 +¡r + = +NULL +; + +652 +dp + = + `DeviûP©hFromHªdË +( +dev_b +[ +idx +]. +dev +); + +653 ià( +dp +è +¡r + = + `DeviûP©hToSŒ +(dp); + +655 +¡r2 + = +¡r + =ð +NULL + ? +L +"Unknown" : str; + +657 + `Pršt +( +L +"%8 : %-6 : %s\n", +dev_b +[ +idx +]. +Çme +, + +658 ( +dev_b +[ +idx +]. +fÝs + ? dev_b[idx].fÝs-> +Çme +: +L +"N/A"), +¡r2 +); + +660 ià( +¡r +è + `F»ePoÞ +(str); + +662 + `Pršt +( +L +"%d deviû avažabË fÜ boٚg\n", +ndev_boÙ +); + +664 ià( +boÙ_dev + =ð +NULL +) { + +665 + `Pršt +( +L +"boot device‚ot detected\n"); + +667 + `Pršt +( +L +"boÙ deviû %s: %s\n", +boÙ_dev +-> +Çme +, + +668 ( +boÙ_dev +-> +fÝs + ? boÙ_dev->fÝs-> +Çme + : +L +"No file‡ccess")); + +670 + } +} + + @fileops.h + +26 #iâdeà +__FILEOPS_H__ + + +27  + #__FILEOPS_H__ + + + ) + +29  + #FILEOPS_NAME_MAXLEN + 32 + + ) + +34  +UINTN + + tfÝs_fd_t +; + +37  + gcÚfig_fže +; + +39 +EFI_STATUS + +fÝs_ݒ +( +CHAR16 + * +Çme +, +fÝs_fd_t + * +fd +); + +40 +EFI_STATUS + +fÝs_»ad +( +fÝs_fd_t + +fd +, +VOID + * +buf +, +UINTN + * +size +); + +41 +EFI_STATUS + +fÝs_þo£ +( +fÝs_fd_t + +fd +); + +42 +EFI_STATUS + +fÝs_šfosize +( +fÝs_fd_t + +fd +, +UINT64 + * +size +); + +43 +EFI_STATUS + +fÝs_£ek +( +fÝs_fd_t + +fd +, +UINT64 + +Ãwpos +); + +44 +EFI_STATUS + +fÝs_£tdeçuÉs +( +cÚfig_fže + * +defcÚf +, +CHAR16 + * +kÇme +, +UINTN + +maxËn +, CHAR16 * +dev·th +); + +45 +EFI_STATUS + +fÝs_g‘deçuÉ_·th +( +CHAR16 + * +·th +, +UINTN + +maxËn +); + +46 +CHAR16 + * +fÝs_boÙdev_Çme +( +VOID +); + +53  + $EFI_STATUS + (* + tfÝs_ݒ_t +)( + tVOID + * + tštf +, + tCHAR16 + * + tÇme +, + tfÝs_fd_t + * + tfd +); + +54  + $EFI_STATUS + (* + tfÝs_»ad_t +)( + tVOID + * + tštf +, + tfÝs_fd_t + + tfd +, VOID * + tbuf +, + tUINTN + * + tsize +); + +55  + $EFI_STATUS + (* + tfÝs_þo£_t +)( + tVOID + * + tštf +, + tfÝs_fd_t + + tfd +); + +56  + $EFI_STATUS + (* + tfÝs_šfosize_t +)( + tVOID + * + tštf +, + tfÝs_fd_t + + tfd +, + tUINT64 + * + tsize +); + +57  + $EFI_STATUS + (* + tfÝs_£ek_t +)( + tVOID + * + tštf +, + tfÝs_fd_t + + tfd +, + tUINT64 + + tÃwpos +); + +58  + $EFI_STATUS + (* + tfÝs_£tdeçuÉs_t +)( + tVOID + * + tštf +,  + tcÚfig_fže + * + tdefcÚfs +, + tCHAR16 + * + tkÇme +, + tUINTN + + tmaxËn +, CHAR16 * + tdev·th +); + +59  + $EFI_STATUS + (* + tfÝs_g‘deçuÉ_·th_t +)( + tCHAR16 + * + t·th +, + tUINTN + + tmaxËn +); + +62 +VOID + * +štf +; + +64 +fÝs_ݒ_t + +ݒ +; + +65 +fÝs_»ad_t + +»ad +; + +66 +fÝs_þo£_t + +þo£ +; + +67 +fÝs_šfosize_t + +šfosize +; + +68 +fÝs_£ek_t + +£ek +; + +69 +fÝs_£tdeçuÉs_t + +£tdeçuÉs +; + +70 +fÝs_g‘deçuÉ_·th_t + +g‘deçuÉ_·th +; + +72 +EFI_HANDLE + +dev +; + +73 +CHAR16 + +Çme +[ +FILEOPS_NAME_MAXLEN +]; + +74 } + tfžeÝs_t +; + +79  + $INTN + (* + tfÝs_fs_glue_t +)( + tfžeÝs_t + * + tthis +, + tVOID + * + tštf +); + +80  + $EFI_STATUS + (* + tfÝs_fs_š¡®l_t +)( + tVOID +); + +81  + $EFI_STATUS + (* + tfÝs_fs_unš¡®l_t +)( + tVOID +); + +84 +EFI_GUID + +´Ùo +; + +85 +fÝs_fs_glue_t + +glue +; + +86 +fÝs_fs_š¡®l_t + +š¡®l +; + +87 +fÝs_fs_unš¡®l_t + +unš¡®l +; + +88 } + tfžeÝs_fs_t +; + +94  + #FILEOPS_DEVNAME_MAXLEN + 16 + + ) + +97 +EFI_HANDLE + +dev +; + +98 +fžeÝs_t + * +fÝs +; + +99 +CHAR16 + +Çme +[ +FILEOPS_DEVNAME_MAXLEN +]; + +100 } + tdeviû_t +; + +102 +INTN + + `š™_deviûs +( +EFI_HANDLE + +boÙ_hªdË +); + +103 +INTN + + `þo£_deviûs +( +VOID +); + +104 +VOID + + `´št_deviûs +(VOID); + +105 +EFI_STATUS + + `fÝs_g‘_Ãxt_deviû +( +UINTN + +pidx +, +CHAR16 + * +ty³ +, UINTN +maxËn +, UINTN * +idx +, CHAR16 * +Çme +, +EFI_HANDLE + * +dev +); + +106 +INTN + + `fÝs_¥l™_·th +( +CHAR16 + * +·th +, CHAR16 * +dev +); + +107 +EFI_STATUS + + `fÝs_g‘_deviû_hªdË +( +CHAR16 + * +Çme +, +EFI_HANDLE + * +dev +); + +123 +CHAR16 + * +Çme +; + +124 + `INTN + (* +š¡®l_scheme +)( +deviû_t + * +b +, +UINTN + +ndev +); + +125 } + tdevÇme_scheme_t +; + + @fs/ext2_fs.h + +16 #iâdeà +_LINUX_EXT2_FS_H + + +17  + #_LINUX_EXT2_FS_H + + + ) + +26 #undeà +EXT2FS_DEBUG + + +31  + #EXT2_PREALLOCATE + + + ) + +32  + #EXT2_DEFAULT_PREALLOC_BLOCKS + 8 + + ) + +37  + #EXT2FS_DATE + "95/08/09" + + ) + +38  + #EXT2FS_VERSION + "0.5b" + + ) + +43 #ifdeà +EXT2FS_DEBUG + + +44  + #ext2_debug +( +f +, +a +...) { \ + +45 + `´štk + ("EXT2-fs DEBUG (%s, %d): %s:", \ + +46 +__FILE__ +, +__LINE__ +, +__FUNCTION__ +); \ + +47 + `´štk + ( +f +, ## +a +); \ + +48 } + + ) + +50  + #ext2_debug +( +f +, +a +...è + + ) + +56  + #EXT2_BAD_INO + 1 + + ) + +57  + #EXT2_ROOT_INO + 2 + + ) + +58  + #EXT2_ACL_IDX_INO + 3 + + ) + +59  + #EXT2_ACL_DATA_INO + 4 + + ) + +60  + #EXT2_BOOT_LOADER_INO + 5 + + ) + +61  + #EXT2_UNDEL_DIR_INO + 6 + + ) + +64  + #EXT2_GOOD_OLD_FIRST_INO + 11 + + ) + +69  + #EXT2_SUPER_MAGIC + 0xEF53 + + ) + +74  + #EXT2_LINK_MAX + 32000 + + ) + +79  + #EXT2_MIN_BLOCK_SIZE + 1024 + + ) + +80  + #EXT2_MAX_BLOCK_SIZE + 4096 + + ) + +81  + #EXT2_MIN_BLOCK_LOG_SIZE + 10 + + ) + +82 #ifdeà +__KERNEL__ + + +83  + #EXT2_BLOCK_SIZE +( +s +è((s)-> +s_blocksize +) + + ) + +85  + #EXT2_BLOCK_SIZE +( +s +è( +EXT2_MIN_BLOCK_SIZE + << (s)-> +s_log_block_size +) + + ) + +87  + #EXT2_ACLE_PER_BLOCK +( +s +è( + `EXT2_BLOCK_SIZE +(sè/  ( +ext2_aþ_’Œy +)) + + ) + +88  + #EXT2_ADDR_PER_BLOCK +( +s +è( + `EXT2_BLOCK_SIZE +(sè/  ( +__u32 +)) + + ) + +89 #ifdeà +__KERNEL__ + + +90  + #EXT2_BLOCK_SIZE_BITS +( +s +è((s)-> +s_blocksize_b™s +) + + ) + +92  + #EXT2_BLOCK_SIZE_BITS +( +s +è((s)-> +s_log_block_size + + 10) + + ) + +94 #ifdeà +__KERNEL__ + + +95  + #EXT2_ADDR_PER_BLOCK_BITS +( +s +è((s)-> +u +. +ext2_sb +. +s_addr_³r_block_b™s +) + + ) + +96  + #EXT2_INODE_SIZE +( +s +è((s)-> +u +. +ext2_sb +. +s_šode_size +) + + ) + +97  + #EXT2_FIRST_INO +( +s +è((s)-> +u +. +ext2_sb +. +s_fœ¡_šo +) + + ) + +99  + #EXT2_INODE_SIZE +( +s +è(((s)-> +s_»v_Ëv– + =ð +EXT2_GOOD_OLD_REV +) ? \ + +100 +EXT2_GOOD_OLD_INODE_SIZE + : \ + +101 ( +s +)-> +s_šode_size +) + + ) + +102  + #EXT2_FIRST_INO +( +s +è(((s)-> +s_»v_Ëv– + =ð +EXT2_GOOD_OLD_REV +) ? \ + +103 +EXT2_GOOD_OLD_FIRST_INO + : \ + +104 ( +s +)-> +s_fœ¡_šo +) + + ) + +110  + #EXT2_MIN_FRAG_SIZE + 1024 + + ) + +111  + #EXT2_MAX_FRAG_SIZE + 4096 + + ) + +112  + #EXT2_MIN_FRAG_LOG_SIZE + 10 + + ) + +113 #ifdeà +__KERNEL__ + + +114  + #EXT2_FRAG_SIZE +( +s +è((s)-> +u +. +ext2_sb +. +s_äag_size +) + + ) + +115  + #EXT2_FRAGS_PER_BLOCK +( +s +è((s)-> +u +. +ext2_sb +. +s_äags_³r_block +) + + ) + +117  + #EXT2_FRAG_SIZE +( +s +è( +EXT2_MIN_FRAG_SIZE + << (s)-> +s_log_äag_size +) + + ) + +118  + #EXT2_FRAGS_PER_BLOCK +( +s +è( + `EXT2_BLOCK_SIZE +(sè/ + `EXT2_FRAG_SIZE +(s)) + + ) + +124  + sext2_aþ_h—d” + + +126 +__u32 + + maþh_size +; + +127 +__u32 + + maþh_fže_couÁ +; + +128 +__u32 + + maþh_aþe_couÁ +; + +129 +__u32 + + maþh_fœ¡_aþe +; + +132  + sext2_aþ_’Œy + + +134 +__u32 + + maþe_size +; + +135 +__u16 + + maþe_³rms +; + +136 +__u16 + + maþe_ty³ +; + +137 +__u16 + + maþe_g +; + +138 +__u16 + + maþe_·d1 +; + +139 +__u32 + + maþe_Ãxt +; + +146  + sext2_group_desc + + +148 +__u32 + + mbg_block_b™m­ +; + +149 +__u32 + + mbg_šode_b™m­ +; + +150 +__u32 + + mbg_šode_bË +; + +151 +__u16 + + mbg_ä“_blocks_couÁ +; + +152 +__u16 + + mbg_ä“_šodes_couÁ +; + +153 +__u16 + + mbg_u£d_dœs_couÁ +; + +154 +__u16 + + mbg_·d +; + +155 +__u32 + + mbg_»£rved +[3]; + +161 #ifdeà +__KERNEL__ + + +162  + #EXT2_BLOCKS_PER_GROUP +( +s +è((s)-> +u +. +ext2_sb +. +s_blocks_³r_group +) + + ) + +163  + #EXT2_DESC_PER_BLOCK +( +s +è((s)-> +u +. +ext2_sb +. +s_desc_³r_block +) + + ) + +164  + #EXT2_INODES_PER_GROUP +( +s +è((s)-> +u +. +ext2_sb +. +s_šodes_³r_group +) + + ) + +165  + #EXT2_DESC_PER_BLOCK_BITS +( +s +è((s)-> +u +. +ext2_sb +. +s_desc_³r_block_b™s +) + + ) + +167  + #EXT2_BLOCKS_PER_GROUP +( +s +è((s)-> +s_blocks_³r_group +) + + ) + +168  + #EXT2_DESC_PER_BLOCK +( +s +è( + `EXT2_BLOCK_SIZE +(sè/  ( +ext2_group_desc +)) + + ) + +169  + #EXT2_INODES_PER_GROUP +( +s +è((s)-> +s_šodes_³r_group +) + + ) + +175  + #EXT2_NDIR_BLOCKS + 12 + + ) + +176  + #EXT2_IND_BLOCK + +EXT2_NDIR_BLOCKS + + + ) + +177  + #EXT2_DIND_BLOCK + ( +EXT2_IND_BLOCK + + 1) + + ) + +178  + #EXT2_TIND_BLOCK + ( +EXT2_DIND_BLOCK + + 1) + + ) + +179  + #EXT2_N_BLOCKS + ( +EXT2_TIND_BLOCK + + 1) + + ) + +184  + #EXT2_SECRM_FL + 0x00000001 + + ) + +185  + #EXT2_UNRM_FL + 0x00000002 + + ) + +186  + #EXT2_COMPR_FL + 0x00000004 + + ) + +187  + #EXT2_SYNC_FL + 0x00000008 + + ) + +188  + #EXT2_IMMUTABLE_FL + 0x00000010 + + ) + +189  + #EXT2_APPEND_FL + 0x00000020 + + ) + +190  + #EXT2_NODUMP_FL + 0x00000040 + + ) + +191  + #EXT2_NOATIME_FL + 0x00000080 + + ) + +193  + #EXT2_DIRTY_FL + 0x00000100 + + ) + +194  + #EXT2_COMPRBLK_FL + 0x00000200 + + ) + +195  + #EXT2_NOCOMP_FL + 0x00000400 + + ) + +196  + #EXT2_ECOMPR_FL + 0x00000800 + + ) + +198  + #EXT2_BTREE_FL + 0x00001000 + + ) + +199  + #EXT2_RESERVED_FL + 0x80000000 + + ) + +201  + #EXT2_FL_USER_VISIBLE + 0x00001FFF + + ) + +202  + #EXT2_FL_USER_MODIFIABLE + 0x000000FF + + ) + +207  + #EXT2_IOC_GETFLAGS + + `_IOR +('f', 1, ) + + ) + +208  + #EXT2_IOC_SETFLAGS + + `_IOW +('f', 2, ) + + ) + +209  + #EXT2_IOC_GETVERSION + + `_IOR +('v', 1, ) + + ) + +210  + #EXT2_IOC_SETVERSION + + `_IOW +('v', 2, ) + + ) + +215  + sext2_šode + { + +216 +__u16 + + mi_mode +; + +217 +__u16 + + mi_uid +; + +218 +__u32 + + mi_size +; + +219 +__u32 + + mi_©ime +; + +220 +__u32 + + mi_ùime +; + +221 +__u32 + + mi_mtime +; + +222 +__u32 + + mi_dtime +; + +223 +__u16 + + mi_gid +; + +224 +__u16 + + mi_lšks_couÁ +; + +225 +__u32 + + mi_blocks +; + +226 +__u32 + + mi_æags +; + +229 +__u32 + + ml_i_»£rved1 +; + +230 } + mlšux1 +; + +232 +__u32 + + mh_i_Œª¦©Ü +; + +233 } + mhurd1 +; + +235 +__u32 + + mm_i_»£rved1 +; + +236 } + mmasix1 +; + +237 } + mosd1 +; + +238 +__u32 + + mi_block +[ +EXT2_N_BLOCKS +]; + +239 +__u32 + + mi_g’”©iÚ +; + +240 +__u32 + + mi_fže_aþ +; + +241 +__u32 + + mi_dœ_aþ +; + +242 +__u32 + + mi_çddr +; + +245 +__u8 + + ml_i_äag +; + +246 +__u8 + + ml_i_fsize +; + +247 +__u16 + + mi_·d1 +; + +248 +__u16 + + ml_i_uid_high +; + +249 +__u16 + + ml_i_gid_high +; + +250 +__u32 + + ml_i_»£rved2 +; + +251 } + mlšux2 +; + +253 +__u8 + + mh_i_äag +; + +254 +__u8 + + mh_i_fsize +; + +255 +__u16 + + mh_i_mode_high +; + +256 +__u16 + + mh_i_uid_high +; + +257 +__u16 + + mh_i_gid_high +; + +258 +__u32 + + mh_i_authÜ +; + +259 } + mhurd2 +; + +261 +__u8 + + mm_i_äag +; + +262 +__u8 + + mm_i_fsize +; + +263 +__u16 + + mm_·d1 +; + +264 +__u32 + + mm_i_»£rved2 +[2]; + +265 } + mmasix2 +; + +266 } + mosd2 +; + +269  + #i_size_high + +i_dœ_aþ + + + ) + +271 #ià +defšed +( +__KERNEL__ +è|| defšed( +__lšux__ +) + +272  + #i_»£rved1 + +osd1 +. +lšux1 +. +l_i_»£rved1 + + + ) + +273  + #i_äag + +osd2 +. +lšux2 +. +l_i_äag + + + ) + +274  + #i_fsize + +osd2 +. +lšux2 +. +l_i_fsize + + + ) + +275  + #i_uid_low + +i_uid + + + ) + +276  + #i_gid_low + +i_gid + + + ) + +277  + #i_uid_high + +osd2 +. +lšux2 +. +l_i_uid_high + + + ) + +278  + #i_gid_high + +osd2 +. +lšux2 +. +l_i_gid_high + + + ) + +279  + #i_»£rved2 + +osd2 +. +lšux2 +. +l_i_»£rved2 + + + ) + +282 #ifdef +__hurd__ + + +283  + #i_Œª¦©Ü + +osd1 +. +hurd1 +. +h_i_Œª¦©Ü + + + ) + +284  + #i_äag + +osd2 +. +hurd2 +. +h_i_äag +; + + ) + +285  + #i_fsize + +osd2 +. +hurd2 +. +h_i_fsize +; + + ) + +286  + #i_uid_high + +osd2 +. +hurd2 +. +h_i_uid_high + + + ) + +287  + #i_gid_high + +osd2 +. +hurd2 +. +h_i_gid_high + + + ) + +288  + #i_authÜ + +osd2 +. +hurd2 +. +h_i_authÜ + + + ) + +291 #ifdef +__masix__ + + +292  + #i_»£rved1 + +osd1 +. +masix1 +. +m_i_»£rved1 + + + ) + +293  + #i_äag + +osd2 +. +masix2 +. +m_i_äag + + + ) + +294  + #i_fsize + +osd2 +. +masix2 +. +m_i_fsize + + + ) + +295  + #i_»£rved2 + +osd2 +. +masix2 +. +m_i_»£rved2 + + + ) + +301  + #EXT2_VALID_FS + 0x0001 + + ) + +302  + #EXT2_ERROR_FS + 0x0002 + + ) + +307  + #EXT2_MOUNT_CHECK + 0x0001 + + ) + +308  + #EXT2_MOUNT_GRPID + 0x0004 + + ) + +309  + #EXT2_MOUNT_DEBUG + 0x0008 + + ) + +310  + #EXT2_MOUNT_ERRORS_CONT + 0x0010 + + ) + +311  + #EXT2_MOUNT_ERRORS_RO + 0x0020 + + ) + +312  + #EXT2_MOUNT_ERRORS_PANIC + 0x0040 + + ) + +313  + #EXT2_MOUNT_MINIX_DF + 0x0080 + + ) + +314  + #EXT2_MOUNT_NO_UID32 + 0x0200 + + ) + +316  + #þ—r_Ýt +( +o +, +Ýt +èØ&ð~ +EXT2_MOUNT_ +## + ) +opt + +317  + #£t_Ýt +( +o +, +Ýt +èØ|ð +EXT2_MOUNT_ +## + ) +opt + +318  + #‹¡_Ýt +( +sb +, +Ýt +è((sb)-> +u +. +ext2_sb +. +s_mouÁ_Ýt + & \ + +319 +EXT2_MOUNT_ +## +Ýt +) + + ) + +323  + #EXT2_DFL_MAX_MNT_COUNT + 20 + + ) + +324  + #EXT2_DFL_CHECKINTERVAL + 0 + + ) + +329  + #EXT2_ERRORS_CONTINUE + 1 + + ) + +330  + #EXT2_ERRORS_RO + 2 + + ) + +331  + #EXT2_ERRORS_PANIC + 3 + + ) + +332  + #EXT2_ERRORS_DEFAULT + +EXT2_ERRORS_CONTINUE + + + ) + +337  + sext2_su³r_block + { + +338 +__u32 + + ms_šodes_couÁ +; + +339 +__u32 + + ms_blocks_couÁ +; + +340 +__u32 + + ms_r_blocks_couÁ +; + +341 +__u32 + + ms_ä“_blocks_couÁ +; + +342 +__u32 + + ms_ä“_šodes_couÁ +; + +343 +__u32 + + ms_fœ¡_d©a_block +; + +344 +__u32 + + ms_log_block_size +; + +345 +__s32 + + ms_log_äag_size +; + +346 +__u32 + + ms_blocks_³r_group +; + +347 +__u32 + + ms_äags_³r_group +; + +348 +__u32 + + ms_šodes_³r_group +; + +349 +__u32 + + ms_mtime +; + +350 +__u32 + + ms_wtime +; + +351 +__u16 + + ms_mÁ_couÁ +; + +352 +__s16 + + ms_max_mÁ_couÁ +; + +353 +__u16 + + ms_magic +; + +354 +__u16 + + ms_¡©e +; + +355 +__u16 + + ms_”rÜs +; + +356 +__u16 + + ms_mšÜ_»v_Ëv– +; + +357 +__u32 + + ms_Ï¡check +; + +358 +__u32 + + ms_checkš‹rv® +; + +359 +__u32 + + ms_ü—tÜ_os +; + +360 +__u32 + + ms_»v_Ëv– +; + +361 +__u16 + + ms_def_»suid +; + +362 +__u16 + + ms_def_»sgid +; + +376 +__u32 + + ms_fœ¡_šo +; + +377 +__u16 + + ms_šode_size +; + +378 +__u16 + + ms_block_group_Ä +; + +379 +__u32 + + ms_ã©u»_com·t +; + +380 +__u32 + + ms_ã©u»_šcom·t +; + +381 +__u32 + + ms_ã©u»_ro_com·t +; + +382 +__u8 + + ms_uuid +[16]; + +383  + ms_vÞume_Çme +[16]; + +384  + ms_Ï¡_mouÁed +[64]; + +385 +__u32 + + ms_®gܙhm_u§ge_b™m­ +; + +390 +__u8 + + ms_´—Îoc_blocks +; + +391 +__u8 + + ms_´—Îoc_dœ_blocks +; + +392 +__u16 + + ms_·ddšg1 +; + +393 +__u32 + + ms_»£rved +[204]; + +396 #ifdeà +__KERNEL__ + + +397  + #EXT2_SB +( +sb +è(&((sb)-> +u +. +ext2_sb +)) + + ) + +402  + #EXT2_SB +( +sb +è(sb) + + ) + +408  + #EXT2_OS_LINUX + 0 + + ) + +409  + #EXT2_OS_HURD + 1 + + ) + +410  + #EXT2_OS_MASIX + 2 + + ) + +411  + #EXT2_OS_FREEBSD + 3 + + ) + +412  + #EXT2_OS_LITES + 4 + + ) + +417  + #EXT2_GOOD_OLD_REV + 0 + + ) + +418  + #EXT2_DYNAMIC_REV + 1 + + ) + +420  + #EXT2_CURRENT_REV + +EXT2_GOOD_OLD_REV + + + ) + +421  + #EXT2_MAX_SUPP_REV + +EXT2_DYNAMIC_REV + + + ) + +423  + #EXT2_GOOD_OLD_INODE_SIZE + 128 + + ) + +429  + #EXT2_HAS_COMPAT_FEATURE +( +sb +, +mask +) \ + +430 Ð + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_com·t + & + `ýu_to_Ë32 +( +mask +è) + + ) + +431  + #EXT2_HAS_RO_COMPAT_FEATURE +( +sb +, +mask +) \ + +432 Ð + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_ro_com·t + & + `ýu_to_Ë32 +( +mask +è) + + ) + +433  + #EXT2_HAS_INCOMPAT_FEATURE +( +sb +, +mask +) \ + +434 Ð + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_šcom·t + & + `ýu_to_Ë32 +( +mask +è) + + ) + +435  + #EXT2_SET_COMPAT_FEATURE +( +sb +, +mask +) \ + +436 + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_com·t + |ð + `ýu_to_Ë32 +( +mask +) + + ) + +437  + #EXT2_SET_RO_COMPAT_FEATURE +( +sb +, +mask +) \ + +438 + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_ro_com·t + |ð + `ýu_to_Ë32 +( +mask +) + + ) + +439  + #EXT2_SET_INCOMPAT_FEATURE +( +sb +, +mask +) \ + +440 + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_šcom·t + |ð + `ýu_to_Ë32 +( +mask +) + + ) + +441  + #EXT2_CLEAR_COMPAT_FEATURE +( +sb +, +mask +) \ + +442 + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_com·t + &ð~ + `ýu_to_Ë32 +( +mask +) + + ) + +443  + #EXT2_CLEAR_RO_COMPAT_FEATURE +( +sb +, +mask +) \ + +444 + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_ro_com·t + &ð~ + `ýu_to_Ë32 +( +mask +) + + ) + +445  + #EXT2_CLEAR_INCOMPAT_FEATURE +( +sb +, +mask +) \ + +446 + `EXT2_SB +( +sb +)-> +s_es +-> +s_ã©u»_šcom·t + &ð~ + `ýu_to_Ë32 +( +mask +) + + ) + +448  + #EXT2_FEATURE_COMPAT_DIR_PREALLOC + 0x0001 + + ) + +450  + #EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER + 0x0001 + + ) + +451  + #EXT2_FEATURE_RO_COMPAT_LARGE_FILE + 0x0002 + + ) + +452  + #EXT2_FEATURE_RO_COMPAT_BTREE_DIR + 0x0004 + + ) + +454  + #EXT2_FEATURE_INCOMPAT_COMPRESSION + 0x0001 + + ) + +455  + #EXT2_FEATURE_INCOMPAT_FILETYPE + 0x0002 + + ) + +457  + #EXT2_FEATURE_COMPAT_SUPP + 0 + + ) + +458  + #EXT2_FEATURE_INCOMPAT_SUPP + +EXT2_FEATURE_INCOMPAT_FILETYPE + + + ) + +459  + #EXT2_FEATURE_RO_COMPAT_SUPP + ( +EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER +| \ + +460 +EXT2_FEATURE_RO_COMPAT_LARGE_FILE +| \ + +461 +EXT2_FEATURE_RO_COMPAT_BTREE_DIR +) + + ) + +466  + #EXT2_DEF_RESUID + 0 + + ) + +467  + #EXT2_DEF_RESGID + 0 + + ) + +472  + #EXT2_NAME_LEN + 255 + + ) + +474  + sext2_dœ_’Œy + { + +475 +__u32 + + mšode +; + +476 +__u16 + + m»c_Ën +; + +477 +__u16 + + mÇme_Ën +; + +478  + mÇme +[ +EXT2_NAME_LEN +]; + +487  + sext2_dœ_’Œy_2 + { + +488 +__u32 + + mšode +; + +489 +__u16 + + m»c_Ën +; + +490 +__u8 + + mÇme_Ën +; + +491 +__u8 + + mfže_ty³ +; + +492  + mÇme +[ +EXT2_NAME_LEN +]; + +499  + #EXT2_FT_UNKNOWN + 0 + + ) + +500  + #EXT2_FT_REG_FILE + 1 + + ) + +501  + #EXT2_FT_DIR + 2 + + ) + +502  + #EXT2_FT_CHRDEV + 3 + + ) + +503  + #EXT2_FT_BLKDEV + 4 + + ) + +504  + #EXT2_FT_FIFO + 5 + + ) + +505  + #EXT2_FT_SOCK + 6 + + ) + +506  + #EXT2_FT_SYMLINK + 7 + + ) + +508  + #EXT2_FT_MAX + 8 + + ) + +515  + #EXT2_DIR_PAD + 4 + + ) + +516  + #EXT2_DIR_ROUND + ( +EXT2_DIR_PAD + - 1) + + ) + +517  + #EXT2_DIR_REC_LEN +( +Çme_Ën +è((Òame_Ënè+ 8 + +EXT2_DIR_ROUND +) & \ + +518 ~ +EXT2_DIR_ROUND +) + + ) + +520 #ifdeà +__KERNEL__ + + +529  + #NORET_TYPE + + + ) + +530  + #ATTRIB_NORET + + `__©Œibu‹__ +(( +nܑuº +)) + + ) + +531  + #NORET_AND + +nܑuº +, + + ) + +534  +ext2_³rmissiÚ + ( +šode + *, ); + +537  +ext2_bg_has_su³r +( +su³r_block + * +sb +,  +group +); + +538  +ext2_bg_num_gdb +( +su³r_block + * +sb +,  +group +); + +539  +ext2_Ãw_block + (cÚ¡  +šode + *, , + +540 +__u32 + *, __u32 *, *); + +541  +ext2_ä“_blocks + (cÚ¡  +šode + *, , + +543  +ext2_couÁ_ä“_blocks + ( +su³r_block + *); + +544  +ext2_check_blocks_b™m­ + ( +su³r_block + *); + +545  +ext2_group_desc + * +ext2_g‘_group_desc +( +su³r_block + * +sb +, + +546  +block_group +, + +547  +bufãr_h—d + ** +bh +); + +550  +ext2_couÁ_ä“ + ( +bufãr_h—d + *, ); + +553  +ext2_check_dœ_’Œy + (cÚ¡ *,  +šode + *, + +554  +ext2_dœ_’Œy_2 + *,  +bufãr_h—d + *, + +558  +ext2_»ad + ( +šode + *,  +fže + *, *, ); + +559  +ext2_wr™e + ( +šode + *,  +fže + *, *, ); + +562  +ext2_sync_fže + ( +fže + *,  +d’Œy + *, ); + +563  +ext2_fsync_šode + ( +šode + *, ); + +566  +šode + * +ext2_Ãw_šode + (const inode *, ); + +567  +ext2_ä“_šode + ( +šode + *); + +568  +ext2_couÁ_ä“_šodes + ( +su³r_block + *); + +569  +ext2_check_šodes_b™m­ + ( +su³r_block + *); + +573  +bufãr_h—d + * +ext2_g‘blk + ( +šode + *, , , *); + +574  +bufãr_h—d + * +ext2_b»ad + ( +šode + *, , , *); + +576  +ext2_»ad_šode + ( +šode + *); + +577  +ext2_wr™e_šode + ( +šode + *, ); + +578  +ext2_put_šode + ( +šode + *); + +579  +ext2_d–‘e_šode + ( +šode + *); + +580  +ext2_sync_šode + ( +šode + *); + +581  +ext2_disÿrd_´—Îoc + ( +šode + *); + +584  +ext2_ioùl + ( +šode + *,  +fže + *, , + +588  +šode_ݔ©iÚs + +ext2_dœ_šode_ݔ©iÚs +; + +591  + $ext2_”rÜ + ( +su³r_block + *, const *, const *, ...) + +592 + `__©Œibu‹__ + (( + `fÜm© + ( +´štf +, 3, 4))); + +593 +NORET_TYPE +  + $ext2_·nic + ( +su³r_block + *, const *, + +595 + `__©Œibu‹__ + (( +NORET_AND + + `fÜm© + ( +´štf +, 3, 4))); + +596  + $ext2_w¬nšg + ( +su³r_block + *, const *, const *, ...) + +597 + `__©Œibu‹__ + (( + `fÜm© + ( +´štf +, 3, 4))); + +598  + `ext2_upd©e_dyÇmic_»v + ( +su³r_block + * +sb +); + +599  + `ext2_put_su³r + ( +su³r_block + *); + +600  + `ext2_wr™e_su³r + ( +su³r_block + *); + +601  + `ext2_»mouÁ + ( +su³r_block + *, *, *); + +602  +su³r_block + * + `ext2_»ad_su³r + (super_block *,*,); + +603  + `ext2_¡©fs + ( +su³r_block + *,  +¡©fs + *); + +606  + `ext2_Œunÿ‹ + ( +šode + *); + +613  +fže_ݔ©iÚs + +ext2_dœ_ݔ©iÚs +; + +616  +šode_ݔ©iÚs + +ext2_fže_šode_ݔ©iÚs +; + +617  +fže_ݔ©iÚs + +ext2_fže_ݔ©iÚs +; + +620  +šode_ݔ©iÚs + +ext2_ç¡_symlšk_šode_ݔ©iÚs +; + +622  +add»ss_¥aû_ݔ©iÚs + +ext2_aÝs +; + + @fs/ext2_fs_i.h + +16 #iâdeà +_LINUX_EXT2_FS_I + + +17  + #_LINUX_EXT2_FS_I + + + ) + +22  + sext2_šode_šfo + { + +23 +__u32 + + mi_d©a +[15]; + +24 +__u32 + + mi_æags +; + +25 +__u32 + + mi_çddr +; + +26 +__u8 + + mi_äag_no +; + +27 +__u8 + + mi_äag_size +; + +28 +__u16 + + mi_osync +; + +29 +__u32 + + mi_fže_aþ +; + +30 +__u32 + + mi_dœ_aþ +; + +31 +__u32 + + mi_dtime +; + +32 +__u32 + + mnÙ_u£d_1 +; + +33 +__u32 + + mi_block_group +; + +34 +__u32 + + mi_Ãxt_®loc_block +; + +35 +__u32 + + mi_Ãxt_®loc_gßl +; + +36 +__u32 + + mi_´—Îoc_block +; + +37 +__u32 + + mi_´—Îoc_couÁ +; + +38 +__u32 + + mi_high_size +; + +39  + mi_Ãw_šode +:1; + + @fs/ext2_fs_sb.h + +16 #iâdeà +_LINUX_EXT2_FS_SB + + +17  + #_LINUX_EXT2_FS_SB + + + ) + +25  + #EXT2_MAX_GROUP_LOADED + 8 + + ) + +30  + sext2_sb_šfo + { + +31  + ms_äag_size +; + +32  + ms_äags_³r_block +; + +33  + ms_šodes_³r_block +; + +34  + ms_äags_³r_group +; + +35  + ms_blocks_³r_group +; + +36  + ms_šodes_³r_group +; + +37  + ms_™b_³r_group +; + +38  + ms_gdb_couÁ +; + +39  + ms_desc_³r_block +; + +40  + ms_groups_couÁ +; + +41  +bufãr_h—d + * + ms_sbh +; + +42  +ext2_su³r_block + * + ms_es +; + +43  +bufãr_h—d + ** + ms_group_desc +; + +44  + ms_lßded_šode_b™m­s +; + +45  + ms_lßded_block_b™m­s +; + +46  + ms_šode_b™m­_numb” +[ +EXT2_MAX_GROUP_LOADED +]; + +47  +bufãr_h—d + * + ms_šode_b™m­ +[ +EXT2_MAX_GROUP_LOADED +]; + +48  + ms_block_b™m­_numb” +[ +EXT2_MAX_GROUP_LOADED +]; + +49  +bufãr_h—d + * + ms_block_b™m­ +[ +EXT2_MAX_GROUP_LOADED +]; + +50  + ms_mouÁ_Ýt +; + +51 +uid_t + + ms_»suid +; + +52 +gid_t + + ms_»sgid +; + +53  + ms_mouÁ_¡©e +; + +54  + ms_·d +; + +55  + ms_addr_³r_block_b™s +; + +56  + ms_desc_³r_block_b™s +; + +57  + ms_šode_size +; + +58  + ms_fœ¡_šo +; + + @fs/ext2_private.h + +26 #iâdeà +__FS_EXT2FS_PRIVATE_H__ + + +27  + #__FS_EXT2FS_PRIVATE_H__ + + + ) + +33  +UINT32 + + t__u32 +; + +34  +INT32 + + t__s32 +; + +35  +UINT16 + + t__u16 +; + +36  +INT16 + + t__s16 +; + +37  +UINT8 + + t__u8 +; + +38  +INT8 + + t__s8 +; + +39  +UINT32 + + tuid_t +; + +40  +UINT32 + + tgid_t +; + +45  + #S_IFMT + 00170000 + + ) + +46  + #S_IFSOCK + 0140000 + + ) + +47  + #S_IFLNK + 0120000 + + ) + +48  + #S_IFREG + 0100000 + + ) + +49  + #S_IFBLK + 0060000 + + ) + +50  + #S_IFDIR + 0040000 + + ) + +51  + #S_IFCHR + 0020000 + + ) + +52  + #S_IFIFO + 0010000 + + ) + +53  + #S_ISUID + 0004000 + + ) + +54  + #S_ISGID + 0002000 + + ) + +55  + #S_ISVTX + 0001000 + + ) + +57  + #S_ISLNK +( +m +è(((mè& +S_IFMT +è=ð +S_IFLNK +) + + ) + +58  + #S_ISREG +( +m +è(((mè& +S_IFMT +è=ð +S_IFREG +) + + ) + +59  + #S_ISDIR +( +m +è(((mè& +S_IFMT +è=ð +S_IFDIR +) + + ) + +60  + #S_ISCHR +( +m +è(((mè& +S_IFMT +è=ð +S_IFCHR +) + + ) + +61  + #S_ISBLK +( +m +è(((mè& +S_IFMT +è=ð +S_IFBLK +) + + ) + +62  + #S_ISFIFO +( +m +è(((mè& +S_IFMT +è=ð +S_IFIFO +) + + ) + +63  + #S_ISSOCK +( +m +è(((mè& +S_IFMT +è=ð +S_IFSOCK +) + + ) + +66  + ~"fs/ext2_fs.h +" + +67  + ~"fs/ext2_fs_sb.h +" + +68  + ~"fs/ext2_fs_i.h +" + + @fs/ext2fs.c + +32  + ~ + +33  + ~ + +35  + ~"–žo.h +" + +37  + #FS_NAME + +L +"ext2fs" + + ) + +39 #ifdeà +PATH_MAX + + +40 #”rÜ +You + +mu¡ + +have + +šþuded + +some + +Lšux + +h—d” + +fže + +by + +”rÜ + + +43  + #PATH_MAX + 4095 + + ) + +44  + #EXT2FS_PATH_MAXLEN + +PATH_MAX + + + ) + +46  + ~"fs/ext2fs.h +" + +47  + ~"fs/ext2_´iv©e.h +" + +53  + #EXT2FS_MEMTYPE + +EfiLßd”D©a + + + ) + +56  + #EXT2_FILESIZE_MAX + (0x100000000UL) + + ) + +62  + #MAX_OPEN_FILES + 32 + + ) + +64  + sšode_bË_’Œy + { + +65  +ext2_šode + + mšode +; + +66  + mšumb” +; + +67  + mä“ +; + +68  + mÞd_mode +; + +70 +UINT32 + + mpos +; + +71 } + tšode_’Œy_t +; + +75  +ext2_su³r_block + + msb +; + +76  +ext2_group_desc + * + mgds +; + +77  +ext2_šode + * + mroÙ_šode +; + +78  + mngroups +; + +79  + mdœeùlim +; + +80  + mšd1lim +; + +81  + mšd2lim +; + +82  + m±rs_³r_blk +; + +83 +CHAR8 + + mblkbuf +[ +EXT2_MAX_BLOCK_SIZE +]; + +84  + mÿched_iblkno +; + +85 +CHAR8 + + miblkbuf +[ +EXT2_MAX_BLOCK_SIZE +]; + +86  + mÿched_diblkno +; + +87 +CHAR8 + + mdiblkbuf +[ +EXT2_MAX_BLOCK_SIZE +]; + +88  + mblocksize +; + +91 +šode_’Œy_t + + mšode_bË +[ +MAX_OPEN_FILES +]; + +94 +EFI_BLOCK_IO + * + mblkio +; + +95 +UINT32 + + mmedŸid +; + +96 +EFI_HANDLE + + mdev +; + +97 } + text2fs_´iv_¡©e_t +; + +101 +ext2fs_š‹rçû_t + + mpub_štf +; + +103 +ext2fs_š‹rçû_t + + mpub_štf +; + +104 +ext2fs_´iv_¡©e_t + + m´iv_d©a +; + +105 } + mext2fs_´iv +; + +106 } + text2fs_t +; + +108  + #FS_PRIVATE +( +n +è(&((( +ext2fs_t + *ê)-> +ext2fs_´iv +. +´iv_d©a +)) + + ) + +111 +EFI_HANDLE + * + mdev +; + +112 +ext2fs_t + * + mštf +; + +113 } + tdev_b_t +; + +115  +dev_b_t + * + gdev_b +; + +116  +UINTN + + gndev +; + +119  +EFI_GUID + + gExt2FsPrÙocÞ + = +EXT2FS_PROTOCOL +; + +121  +INTN + + +122 + $»ad_by‹s +( +EFI_BLOCK_IO + * +blkio +, +UINT32 + +medŸid +, +UINTN + +off£t +, +VOID + * +addr +, UINTN +size +) + +124 +EFI_STATUS + +¡©us +; + +125 +UINT8 + * +bufãr +; + +126 +UINTN + +couÁ +, +bufãr_size +; + +127 +EFI_LBA + +ba£ +; + +128 +INTN + +»t + = +EFI_INVALID_PARAMETER +; + +130 +ba£ + = +off£t + / +blkio +-> +MedŸ +-> +BlockSize +; + +131 +couÁ + = ( +size + + +blkio +-> +MedŸ +-> +BlockSize + -1) / blkio->Media->BlockSize; + +132 +bufãr_size + = +couÁ + * +blkio +-> +MedŸ +-> +BlockSize +; + +134 + `DBG_PRT +(( +L +"»adblock(%x, %d,%dèba£=%d couÁ=%d", +blkio +, +off£t +, +size +, +ba£ +, +couÁ +)); + +139 +bufãr + = ( +UINT8 + *) + `®loc +( +bufãr_size +, +EfiLßd”D©a +); + +140 ià( +bufãr + =ð +NULL +) { + +141 + `ERR_PRT +(( +L +"ÿÂهÎoÿ‹ƒxt2f bufã¸size=%d", +bufãr_size +)); + +142  +»t +; + +145 + `DBG_PRT +(( +L +"»adblock(%x, %d, %d, %d, %x)", +blkio +, +medŸid +, +ba£ +, +bufãr_size +, +bufãr +)); + +147 +¡©us + = +blkio +-> + `R—dBlocks +(blkio, +medŸid +, +ba£ +, +bufãr_size +, +bufãr +); + +148 ià( + `EFI_ERROR +( +¡©us +)) { + +149 + `ERR_PRT +(( +L +"»adblock(%d,%d)=%r", +ba£ +, +bufãr_size +, +¡©us +)); + +150  +”rÜ +; + +153 + `DBG_PRT +(( +L +"»adblock(%d,%d)->%r", +off£t +, +bufãr_size +, +¡©us +)); + +155 + `Memýy +( +addr +, +bufãr ++( +off£t +-( +ba£ +* +blkio +-> +MedŸ +-> +BlockSize +)), +size +); + +157 +»t + = 0; + +159 +”rÜ +: + +160 + `ä“ +( +bufãr +); + +162  +»t +; + +163 + } +} + +169  +ext2_šode + * + +170 + $ext2_ig‘ +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +šo +) + +172  +i +; + +173  +ext2_šode + * + +; + +174  +šode_bË_’Œy + * +™p + = 0; + +175  +group +; + +176  +off£t +; + +178 + + = 0; + +179  +i + = 0; i < +MAX_OPEN_FILES +; i++) { + +180 + `DBG_PRT +(( +L +"ext2_iget:†ooping,ƒntry %d inode %d free %d", + +181 +i +, +e2fs +-> +šode_bË +[i]. +šumb” +,ƒ2fs->šode_bË[i]. +ä“ +)); + +182 ià( +e2fs +-> +šode_bË +[ +i +]. +ä“ +) { + +183 +™p + = & +e2fs +-> +šode_bË +[ +i +]; + +184 + + = & +™p +-> +šode +; + +188 ià(! + +) { + +189 + `ERR_PRT +(( +L +"ext2_iget:‚o free inodes")); + +190  +NULL +; + +194 +group + = ( +šo +-1è/ +e2fs +-> +sb +. +s_šodes_³r_group +; + +196 + `DBG_PRT +(( +L +" i-šode_bË=%d bg_šode_bË=%d group=%d ino=%d\n", ( +UINTN +)( +™p +- +e2fs +-> +šode_bË +), + +197 ( +UINTN +)( +e2fs +-> +gds +[ +group +]. +bg_šode_bË +), (UINTN)group, (UINTN) +šo +)); + +199 +off£t + = ((è +e2fs +-> +gds +[ +group +]. +bg_šode_bË + *ƒ2fs-> +blocksize +) + +200 + ((( +šo + - 1è% + `EXT2_INODES_PER_GROUP +(& +e2fs +-> +sb +)è* + `EXT2_INODE_SIZE +(&e2fs->sb)); + +202 + `DBG_PRT +(( +L +"ext2_iget:„eading %d bytes‡t offset %d" + +205 ( +ext2_šode +), + +206 ( +UINTN +) +off£t +, + +207 ( +UINTN +) +e2fs +-> +gds +[ +group +]. +bg_šode_bË +, (UINTNë2fs-> +blocksize +, + +208 ( +UINTN +)( +šo + - 1), (UINTN) + `EXT2_INODES_PER_GROUP +(& +e2fs +-> +sb +), + `EXT2_INODE_SIZE +(&e2fs->sb), + +209 ( +UINTN +) +šo +, (UINTNè( +™p + - +e2fs +-> +šode_bË +))); + +211 ià( + `»ad_by‹s +( +e2fs +-> +blkio +,ƒ2fs-> +medŸid +, +off£t +, + +, ( +ext2_šode +))) { + +212 + `ERR_PRT +(( +L +"ext2_iget:„eadƒrror")); + +213  +NULL +; + +216 + `DBG_PRT +(( +L +"mode=%x uid=%d size=%d gid=%d†inks=%d flags=%d", + +217 ( +UINTN +) + +-> +i_mode +, + +218 ( +UINTN +) + +-> +i_uid +, + +219 ( +UINTN +) + +-> +i_size +, + +220 ( +UINTN +) + +-> +i_gid +, + +221 ( +UINTN +) + +-> +i_æags +)); + +223 +™p +-> +ä“ + = 0; + +224 +™p +-> +šumb” + = +šo +; + +225 +™p +-> +Þd_mode + = + +-> +i_mode +; + +227  + +; + +228 + } +} + +236 + $ext2_ut +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +ext2_šode + * + +) + +238  +šode_bË_’Œy + * +™p +; + +241 +™p + = ( +šode_bË_’Œy + *) + +; + +243 + `DBG_PRT +(( +L +"ext2_ut: inod%dabË %d", +™p +-> +šumb” +, (è(™°- +e2fs +-> +šode_bË +))); + +245 +™p +-> +šumb” + = 0; + +246 +™p +-> +ä“ + = 1; + +247 + } +} + +260 + $ext2_blkno +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +ext2_šode + * + +,  +blkoff +) + +262 * +Í +; + +263 * +žp +; + +264 * +dÍ +; + +265  +blkno +; + +266  +iblkno +; + +267  +diblkno +; + +268  +off£t +; + +270 +žp + = (*) +e2fs +-> +iblkbuf +; + +271 +dÍ + = (*) +e2fs +-> +diblkbuf +; + +272 +Í + = (*) +e2fs +-> +blkbuf +; + +275 ià( +blkoff + <ð +e2fs +-> +dœeùlim +) { + +276  + +-> +i_block +[ +blkoff +]; + +280 ià( +blkoff + <ð +e2fs +-> +šd1lim +) { + +281 +iblkno + = + +-> +i_block +[ +EXT2_IND_BLOCK +]; + +283 ià( +iblkno + == 0) { + +288 ià( +e2fs +-> +ÿched_iblkno + !ð +iblkno +) { + +289 +off£t + = +iblkno + * +e2fs +-> +blocksize +; + +290 ià( + `»ad_by‹s +( +e2fs +-> +blkio +,ƒ2fs-> +medŸid +, +off£t +,ƒ2fs-> +iblkbuf +,ƒ2fs-> +blocksize +)) { + +291 + `ERR_PRT +(( +L +"ext2_blkno:ƒrror on iblk„ead")); + +294 +e2fs +-> +ÿched_iblkno + = +iblkno +; + +297 +blkno + = +žp +[ +blkoff +-( +e2fs +-> +dœeùlim ++1)]; + +298  +blkno +; + +302 ià( +blkoff + <ð +e2fs +-> +šd2lim +) { + +304 +diblkno + = + +-> +i_block +[ +EXT2_DIND_BLOCK +]; + +306 ià( +diblkno + == 0) { + +311 ià( +e2fs +-> +ÿched_diblkno + !ð +diblkno +) { + +312 +off£t + = +diblkno + * +e2fs +-> +blocksize +; + +313 ià( + `»ad_by‹s +( +e2fs +-> +blkio +,ƒ2fs-> +medŸid +, +off£t +,ƒ2fs-> +diblkbuf +,ƒ2fs-> +blocksize +)) { + +314 + `ERR_PRT +(( +L +"ext2_blkno:ƒrr„eading dindr blk")); + +317 +e2fs +-> +ÿched_diblkno + = +diblkno +; + +321 +iblkno + = +dÍ +[( +blkoff + - ( +e2fs +-> +šd1lim ++1)è/ƒ2fs-> +±rs_³r_blk +]; + +323 ià( +iblkno + == 0) { + +329 ià( +e2fs +-> +ÿched_iblkno + !ð +iblkno +) { + +330 +off£t + = +iblkno + * +e2fs +-> +blocksize +; + +331 ià( + `»ad_by‹s +( +e2fs +-> +blkio +,ƒ2fs-> +medŸid +, +off£t +,ƒ2fs-> +iblkbuf +,ƒ2fs-> +blocksize +)) { + +332 + `ERR_PRT +(( +L +"ext2_blkno:ƒrr on iblk„ead")); + +335 +e2fs +-> +ÿched_iblkno + = +iblkno +; + +339 +blkno + = +žp +[( +blkoff +-( +e2fs +-> +šd1lim ++1)è%ƒ2fs-> +±rs_³r_blk +]; + +340  +blkno +; + +343 ià( +blkoff + > +e2fs +-> +šd2lim +) { + +344 + `ERR_PRT +(( +L +"ext2_blkno: block‚umb”oØÏrge: %d", +blkoff +)); + +348 + } +} + +352 + $ext2_b»adi +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +ext2_šode + * + +,  +blkno +,  +nblks +, +CHAR8 + * +bufãr +) + +354  +dev_blkno +, +ncÚtig +, +off£t +, +nby‹s +, +tÙ_by‹s +; + +356 +tÙ_by‹s + = 0; + +357 ià(( +blkno ++ +nblks +)* +e2fs +-> +blocksize + > + +-> +i_size +) + +358 +nblks + = ( + +-> +i_size + + +e2fs +-> +blocksize +è/ƒ2fs->blocksiz- +blkno +; + +360  +nblks +) { + +365 +ncÚtig + = 0; +nby‹s + = 0; + +366 +dev_blkno + = + `ext2_blkno +( +e2fs +, + +, +blkno +); + +368 ++ +blkno +; ++ +ncÚtig +; -- +nblks +; + +369 +nby‹s + +ð +e2fs +-> +blocksize +; + +370 }  +nblks + && + +371 + `ext2_blkno +( +e2fs +, + +, +blkno +è=ð +dev_blkno + + +ncÚtig +); + +373 ià( +dev_blkno + == 0) { + +375 + `Mem£t +( +bufãr +, 0, +nby‹s +); + +378 +off£t + = +dev_blkno +* +e2fs +-> +blocksize +; + +379 + `DBG_PRT +(( +L +"ext2_b»ad:„—dšg %d by‹ © off£ˆ%d", +nby‹s +, +off£t +)); + +381 ià( + `»ad_by‹s +( +e2fs +-> +blkio +,ƒ2fs-> +medŸid +, +off£t +, +bufãr +, +nby‹s +)) { + +382 + `ERR_PRT +(( +L +"ext2_bread:„eadƒrror")); + +386 +bufãr + +ð +nby‹s +; + +387 +tÙ_by‹s + +ð +nby‹s +; + +389  +tÙ_by‹s +; + +390 + } +} + +392  +ext2_dœ_’Œy_2 + * + +393 + $ext2_»addœi +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +ext2_šode + * +dœ_šode +,  +»wšd +) + +395  +ext2_dœ_’Œy_2 + * +dp +; + +396  +dœoff£t + = 0, +blockoff£t + = 0; + +399 ià( +»wšd +) { + +400 +dœoff£t + = 0; + +401 +blockoff£t + = 0; + +403 ià( + `ext2_b»adi +( +e2fs +, +dœ_šode +, 0, 1,ƒ2fs-> +blkbuf +) < 0) + +404  +NULL +; + +407 + `DBG_PRT +(( +L +"ext2_»addœi: blkoff£ˆ%d dœoff£ˆ%d†’ %d", +blockoff£t +, +dœoff£t +, +dœ_šode +-> +i_size +)); + +409 ià( +blockoff£t + >ð +e2fs +-> +blocksize +) { + +410 +dœoff£t + +ð +e2fs +-> +blocksize +; + +411 ià( +dœoff£t + >ð +dœ_šode +-> +i_size +) + +412  +NULL +; + +413 + `ERR_PRT +(( +L +"ext2_»addœi:„—dšg block‡ˆ%d", +dœoff£t +)); + +415 ià( + `ext2_b»adi +( +e2fs +, +dœ_šode +, +dœoff£t + /ƒ2fs-> +blocksize +, 1,ƒ2fs-> +blkbuf +è< 0è +NULL +; + +416 +blockoff£t + = 0; + +419 +dp + = ( +ext2_dœ_’Œy_2 + *è( +e2fs +-> +blkbuf + + +blockoff£t +); + +420 +blockoff£t + +ð +dp +-> +»c_Ën +; + +423 + `Pršt +( +L +"ext2_readdiri:„eturning %x = "); + +424 { +INTN + +i +; i=0; i < +dp +-> +Çme_Ën +; i++è + `Pršt +( +L +"%c", ( +CHAR16 +)dp-> +Çme +[i]); Print(L"\n");} + +426  +dp +; + +427 + } +} + +433  +ext2_šode + * + +434 + $ext2_Çmei +( +ext2fs_´iv_¡©e_t + * +e2fs +, +CHAR8 + * +Çme +) + +436 +CHAR8 + * +compڒt +; + +437  +ext2_šode + * +dœ_šode +; + +438  +ext2_dœ_’Œy_2 + * +dp +; + +439  +Ãxt_šo +; + +442 ià(! +e2fs +-> +roÙ_šode +) + +443 +e2fs +-> +roÙ_šode + = + `ext2_ig‘ +Ó2fs, +EXT2_ROOT_INO +); + +444 +dœ_šode + = +e2fs +-> +roÙ_šode +; + +445 ià(! +dœ_šode +) + +446  +NULL +; + +448 +compڒt + = + `¡¹ok_sim¶e +( +Çme +, '/'); + +449  +compڒt +) { + +450  +compڒt_Ëngth +; + +451  +»wšd + = 0; + +456 +Ãxt_šo + = -1; + +457 +compڒt_Ëngth + = + `¡¾’a +( +compڒt +); + +459 + `DBG_PRT +(( +L +"ext2_Çmei: compڒˆð%a", +compڒt +)); + +462 ( +dp + = + `ext2_»addœi +( +e2fs +, +dœ_šode +, ! +»wšd +++))) { + +463 ià(( +dp +-> +Çme_Ën + =ð +compڒt_Ëngth +) && + +464 ( + `¡ºcm· +( +compڒt +, +dp +-> +Çme +, + +465 +compڒt_Ëngth +) == 0)) + +468 + `DBG_PRT +(( +L +"ext2_Çmei: foundƒÁry %a", +compڒt +)); + +469 +Ãxt_šo + = +dp +-> +šode +; + +472 + `DBG_PRT +(( +L +"ext2_namei:†ooping")); + +475 + `DBG_PRT +(( +L +"ext2_Çmei:‚ext_šØð%d", +Ãxt_šo +)); + +481 ià( +dœ_šode + !ð +e2fs +-> +roÙ_šode +è + `ext2_ut +(e2fs, dir_inode); + +487 ià( +Ãxt_šo + < 0) { + +488  +NULL +; + +495 +dœ_šode + = + `ext2_ig‘ +( +e2fs +, +Ãxt_šo +); + +496 ià(! +dœ_šode +) + +497  +NULL +; + +499 +compڒt + = + `¡¹ok_sim¶e +( +NULL +, '/'); + +506  +dœ_šode +; + +507 + } +} + +514 + $ext2_b»ad +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +fd +,  +blkno +,  +nblks +, * +bufãr +) + +516  +ext2_šode + * + +; + +517 + + = & +e2fs +-> +šode_bË +[ +fd +]. +šode +; + +518  + `ext2_b»adi +( +e2fs +, + +, +blkno +, +nblks +, +bufãr +); + +519 + } +} + +527 + $ext2_»addœ +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +fd +,  +»wšd +) + +529  +ext2_šode + * + + = & +e2fs +-> +šode_bË +[ +fd +]. +šode +; + +530  +ext2_dœ_’Œy_2 + * +’t +; + +531 ià(! + `S_ISDIR +( + +-> +i_mode +)) { + +532 + `ERR_PRT +(( +L +"fd %d (inode %d) is‚ot‡ directory (mode %x)", + +533 +fd +, +e2fs +-> +šode_bË +[fd]. +šumb” +, + +-> +i_mode +)); + +534  +NULL +; + +536 +’t + = + `ext2_»addœi +( +e2fs +, + +, +»wšd +); + +537 ià( +’t +) { + +538 +’t +-> +Çme +[’t-> +Çme_Ën +] = '\0'; + +539  +’t +-> +Çme +; + +541  +NULL +; + +543 + } +} + +547 + $ext2_f¡© +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +fd +, +ext2fs_¡©_t + * +buf +) + +549  +ext2_šode + * + + = & +e2fs +-> +šode_bË +[ +fd +]. +šode +; + +551 + `Mem£t +( +buf +, 0, (*buf)); + +554 +buf +-> +¡_šo + = +e2fs +-> +šode_bË +[ +fd +]. +šumb” +; + +555 +buf +-> +¡_mode + = + +-> +i_mode +; + +556 +buf +-> +¡_ƚk + = + +-> +i_lšks_couÁ +; + +557 +buf +-> +¡_uid + = + +-> +i_uid +; + +558 +buf +-> +¡_gid + = + +-> +i_gid +; + +559 +buf +-> +¡_size + = + +-> +i_size +; + +560 +buf +-> +¡_©ime + = + +-> +i_©ime +; + +561 +buf +-> +¡_mtime + = + +-> +i_mtime +; + +562 +buf +-> +¡_ùime + = + +-> +i_ùime +; + +565 + } +} + +567  +EFI_STATUS + + +568 + $ext2fs_f¡© +( +ext2fs_š‹rçû_t + * +this +, +UINTN + +fd +, +ext2fs_¡©_t + * +¡ +) + +570 +ext2fs_´iv_¡©e_t + * +e2fs +; + +572 ià( +this + =ð +NULL + || +fd + > +MAX_OPEN_FILES + || +¡ + =ðNULLè +EFI_INVALID_PARAMETER +; + +574 +e2fs + = + `FS_PRIVATE +( +this +); + +576 + `ext2_f¡© +( +e2fs +, +fd +, +¡ +); + +578  +EFI_SUCCESS +; + +579 + } +} + +581  +EFI_STATUS + + +582 + $ext2fs_£ek +( +ext2fs_š‹rçû_t + * +this +, +UINTN + +fd +, +UINT64 + +Ãwpos +) + +584 +ext2fs_´iv_¡©e_t + * +e2fs +; + +586 ià( +this + =ð +NULL + || +fd + > +MAX_OPEN_FILES + || +Ãwpos + >ð +EXT2_FILESIZE_MAX +è +EFI_INVALID_PARAMETER +; + +588 +e2fs + = + `FS_PRIVATE +( +this +); + +589 ià( +Ãwpos + > ( +UINT64 +) +e2fs +-> +šode_bË +[ +fd +]. +šode +. +i_size +è +EFI_INVALID_PARAMETER +; + +591 +e2fs +-> +šode_bË +[ +fd +]. +pos + = +Ãwpos +; + +593  +EFI_SUCCESS +; + +594 + } +} + +596  +EFI_STATUS + + +597 + $ext2fs_»ad +( +ext2fs_š‹rçû_t + * +this +, +UINTN + +fd +, +VOID + * +buf +, UINTN * +size +) + +599 +ext2fs_´iv_¡©e_t + * +e2fs +; + +600 +UINTN + +couÁ +, +nc +, +bofs +, +bnum +, +pos +; + +601 +EFI_STATUS + +»t + = +EFI_INVALID_PARAMETER +; + +602 +CHAR8 + * +block +; + +604 ià( +this + =ð +NULL + || +size + =ðNULL || +buf + =ðNULL || +fd + > +MAX_OPEN_FILES +è +EFI_INVALID_PARAMETER +; + +606 +e2fs + = + `FS_PRIVATE +( +this +); + +608 +couÁ + = + `MIN +(* +size +, +e2fs +-> +šode_bË +[ +fd +]. +šode +. +i_size + -ƒ2fs->šode_bË[fd]. +pos +); + +610 ià( +couÁ + == 0) { + +611 * +size + = 0; + +612  +EFI_SUCCESS +; + +614 +block + = +e2fs +-> +blkbuf +; + +616 * +size + = 0; + +618 +pos + = +e2fs +-> +šode_bË +[ +fd +].pos; + +619 + `DBG_PRT +(( +L +"size=%d i_size=%d couÁ=%d…os=%ld", * +size +, +e2fs +-> +šode_bË +[ +fd +]. +šode +. +i_size +, +couÁ +, +pos +)); + +620  +couÁ +) { + +621 +bnum + = +pos + / +e2fs +-> +blocksize +; + +622 +bofs + = +pos + % +e2fs +-> +blocksize +; + +623 +nc + = + `MIN +( +couÁ +, +e2fs +-> +blocksize + - +bofs +); + +625 + `DBG_PRT +(( +L +"bnum =%d bofs=%d‚c=%d *size=%d", +bnum +, +bofs +, +nc +, * +size +)); + +627 ià( + `ext2_b»ad +( +e2fs +, +fd +, +bnum +, 1, +block +è=ð-1è +”rÜ +; + +629 {  +i +; * +p + = +block ++ +bofs +; + +630  +i += + `MIN +( +nc +, 64); i>=0 ; i--, +p +++) { + +631 ià( +i + % 16 =ð0è + `Pršt +( +L +"\n"); + +632 + `Pršt +( +L +"%02x ", ( +UINTN +)* +p + & 0xff); + +637 + `Memýy +( +buf +, +block ++ +bofs +, +nc +); + +638 +couÁ + -ð +nc +; + +639 +pos + +ð +nc +; + +640 +buf + +ð +nc +; + +641 * +size + +ð +nc +; + +644 +e2fs +-> +šode_bË +[ +fd +]. +pos + +ð* +size +; + +645 +»t + = +EFI_SUCCESS +; + +646 +”rÜ +: + +647 + `DBG_PRT +(( +L +"*size=%d„‘=%r", * +size +, +»t +)); + +648  +»t +; + +649 + } +} + +651  +ext2_šode + * + +652 + $ext2_fÞlow_lšk +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +ext2_šode + * +äom +, cÚ¡ * +ba£ +) + +654 * +lškto +; + +656 ià( +äom +-> +i_blocks +) { + +657 +lškto + = +e2fs +-> +blkbuf +; + +658 ià( + `ext2_b»adi +( +e2fs +, +äom +, 0, 1,ƒ2fs-> +blkbuf +) == -1) + +659  +NULL +; + +660 + `DBG_PRT +(( +L +"long†ink!")); + +662 +lškto + = (*) +äom +-> +i_block +; + +664 + `DBG_PRT +(( +L +"symlškØ%s", +lškto +)); + +667 ià( +lškto +[0] != '/') { + +668 * +’d + = + `¡¼ch¿ +( +ba£ +, '/'); + +669 ià( +’d +) { + +671  +fuÎÇme +[ +EXT2FS_PATH_MAXLEN +]; + +673 ià((( +’d + - +ba£ + + 1è+ + `¡¾’a +( +lškto +è+ 1è>ð +EXT2FS_PATH_MAXLEN +) { + +674 + `Pršt +( +L +"%s: fž’amtoØlÚg, cª'ˆ»sÞve\n", +__FUNCTION__ +); + +675  +NULL +; + +678 + `¡ºýya +( +fuÎÇme +, +ba£ +, +’d + - base + 1); + +679 +fuÎÇme +[ +’d + - +ba£ + + 1] = '\0'; + +680 + `¡rÿ +( +fuÎÇme +, +lškto +); + +681 + `DBG_PRT +(( +L +"»sÞvedØ%s", +fuÎÇme +)); + +682  + `ext2_Çmei +( +e2fs +, +fuÎÇme +); + +685  + `ext2_Çmei +( +e2fs +, +lškto +); + +688  + `ext2_Çmei +( +e2fs +, +lškto +); + +690 + } +} + +693 + $ext2_ݒ +( +ext2fs_´iv_¡©e_t + * +e2fs +, * +fž’ame +) + +699  +ext2_šode + * + +; + +701 + + = + `ext2_Çmei +( +e2fs +, +fž’ame +); + +702 ià( + +) { + +703  +šode_bË_’Œy + * +™p +; + +705  + `S_ISLNK +( + +-> +i_mode +)) { + +706 + + = + `ext2_fÞlow_lšk +( +e2fs +, ip, +fž’ame +); + +707 ià(! + +)  -1; + +709 +™p + = ( +šode_bË_’Œy + *) + +; + +710  +™p + - +e2fs +-> +šode_bË +; + +713 + } +} + +715  + $ext2_þo£ +( +ext2fs_´iv_¡©e_t + * +e2fs +,  +fd +) + +718 ià(& +e2fs +-> +šode_bË +[ +fd +]. +šode + !ðe2fs-> +roÙ_šode +) + +719 + `ext2_ut +( +e2fs +, &e2fs-> +šode_bË +[ +fd +]. +šode +); + +720 + } +} + +722  +EFI_STATUS + + +723 + $ext2fs_þo£ +( +ext2fs_š‹rçû_t + * +this +, +UINTN + +fd +) + +725 +ext2fs_´iv_¡©e_t + * +e2fs +; + +727 ià( +this + =ð +NULL + || +fd + > +MAX_OPEN_FILES +è +EFI_INVALID_PARAMETER +; + +729 +e2fs + = + `FS_PRIVATE +( +this +); + +731 + `ext2_þo£ +( +e2fs +, +fd +); + +733  +EFI_SUCCESS +; + +734 + } +} + +736  +EFI_STATUS + + +737 + $ext2fs_ݒ +( +ext2fs_š‹rçû_t + * +this +, +CHAR16 + * +Çme +, +UINTN + * +fd +) + +739 +ext2fs_´iv_¡©e_t + * +e2fs +; + +740 +CHAR8 + +fž’ame +[ +EXT2FS_PATH_MAXLEN +]; + +741 +INTN + +tmp +; + +743 + `DBG_PRT +(( +L +"Çme:% fd=%x", +Çme +, +fd +)); + +745 ià( +this + =ð +NULL + || +Çme + =ðNULL || +fd + =ðNULL || + `SŒL’ +Òameè>= +EXT2FS_PATH_MAXLEN +è +EFI_INVALID_PARAMETER +; + +747 +e2fs + = + `FS_PRIVATE +( +this +); + +752 + `SŒnXCpy +( +fž’ame +, +Çme +, +EXT2FS_PATH_MAXLEN +); + +754 + `DBG_PRT +(( +L +"ASCII‚ame:%¨UTF-Çme:%s", +fž’ame +, +Çme +)); + +756 +tmp + = + `ext2_ݒ +( +e2fs +, +fž’ame +); + +757 ià( +tmp + != -1) { + +758 * +fd + = ( +UINTN +) +tmp +; + +759 +e2fs +-> +šode_bË +[ +tmp +]. +pos + = 0; + +762 + `DBG_PRT +(( +L +"Çme: % fd=%dmp=%d", +Çme +, * +fd +, +tmp +)); + +764  +tmp + =ð-1 ? +EFI_NOT_FOUND + : +EFI_SUCCESS +; + +765 + } +} + +767  +EFI_STATUS + + +768 + $ext2fs_Çme +( +ext2fs_š‹rçû_t + * +this +, +CHAR16 + * +Çme +, +UINTN + +maxËn +) + +770 ià( +Çme + =ð +NULL + || +maxËn + < 1è +EFI_INVALID_PARAMETER +; + +772 + `SŒnCpy +( +Çme +, +FS_NAME +, +maxËn +-1); + +774 +Çme +[ +maxËn +-1] = +CHAR_NULL +; + +776  +EFI_SUCCESS +; + +777 + } +} + +779  +INTN + + +780 + $ext2fs_š™_¡©e +( +ext2fs_t + * +ext2fs +, +EFI_HANDLE + +dev +, +EFI_BLOCK_IO + * +blkio +,  +ext2_su³r_block + * +sb +) + +782 +ext2fs_´iv_¡©e_t + * +e2fs + = + `FS_PRIVATE +( +ext2fs +); + +783 +UINTN + +i +; + +784 +EFI_STATUS + +¡©us +; + +786 + `Mem£t +( +ext2fs +, 0, (*ext2fs)); + +788 +e2fs +-> +dev + = dev; + +789 +e2fs +-> +blkio + = blkio; + +790 +e2fs +-> +medŸid + = +blkio +-> +MedŸ +-> +MedŸId +; + +793 + `Memýy +(& +e2fs +-> +sb +, sb, (*sb)); + +795 +e2fs +-> +ngroups + = ( +sb +-> +s_blocks_couÁ + - sb-> +s_fœ¡_d©a_block + + + `EXT2_BLOCKS_PER_GROUP +(sb) - 1) / EXT2_BLOCKS_PER_GROUP(sb); + +797 +e2fs +-> +gds + = ( +ext2_group_desc + *) + `®loc +Ó2fs-> +ngroups + * (ext2_group_desc), +EXT2FS_MEMTYPE +); + +798 ià( +e2fs +-> +gds + =ð +NULL +) { + +799 + `ERR_PRT +(( +L +"failedo‡llocate gds")); + +800  +EFI_OUT_OF_RESOURCES +; + +803 +e2fs +-> +blocksize + = + `EXT2_BLOCK_SIZE +( +sb +); + +805 + `DBG_PRT +(( +L +"gds_size=%d gds_offset=%d‚groups=%d blocksize=%d", + +806 +e2fs +-> +ngroups + * ( +ext2_group_desc +), + +807 +e2fs +-> +blocksize + * ( +EXT2_MIN_BLOCK_SIZE +/e2fs->blocksize + 1), + +808 +e2fs +-> +ngroups +, ( +UINTN +ë2fs-> +blocksize +)); + +811 +¡©us + = + `»ad_by‹s +( +blkio +, +e2fs +-> +medŸid +,ƒ2fs-> +blocksize + * ( +EXT2_MIN_BLOCK_SIZE +/e2fs->blocksize + 1), + +812 +e2fs +-> +gds +,ƒ2fs-> +ngroups + * ( +ext2_group_desc +)); + +813 ià( + `EFI_ERROR +( +¡©us +)) { + +814 + `ERR_PRT +(( +L +"ÿÂل—d gds: %r", +¡©us +)); + +815 + `ä“ +( +e2fs +-> +gds +); + +816  +EFI_INVALID_PARAMETER +; + +819 {  +i +; * +p + = (*) +e2fs +-> +gds +; + +820  +i += +e2fs +-> +ngroups +*(*e2fs-> +gds +); i ; i--, +p +++) { + +821 ià( +i + % 16 =ð0è + `Pršt +( +L +"\n"); + +822 + `Pršt +( +L +"%02x ", ( +UINTN +)* +p + & 0xff); + +828 +e2fs +-> +ÿched_diblkno + = -1; + +829 +e2fs +-> +ÿched_iblkno + = -1; + +832  +i + = 0; i < +MAX_OPEN_FILES +; i++) { + +833 +e2fs +-> +šode_bË +[ +i +]. +ä“ + = 1; + +834 +e2fs +-> +šode_bË +[ +i +]. +šumb” + = 0; + +837 +e2fs +-> +roÙ_šode + = +NULL +; + +844 +e2fs +-> +dœeùlim + = +EXT2_NDIR_BLOCKS + - 1; + +845 +e2fs +-> +±rs_³r_blk + =ƒ2fs-> +blocksize +/(); + +846 +e2fs +-> +šd1lim + =ƒ2fs-> +±rs_³r_blk + +ƒ2fs-> +dœeùlim +; + +847 +e2fs +-> +šd2lim + = (e2fs-> +±rs_³r_blk + *ƒ2fs->±rs_³r_blkè+ƒ2fs-> +dœeùlim +; + +849 +ext2fs +-> +pub_štf +. +ext2fs_Çme + =ƒxt2fs_name; + +850 +ext2fs +-> +pub_štf +. +ext2fs_ݒ + =ƒxt2fs_open; + +851 +ext2fs +-> +pub_štf +. +ext2fs_»ad + =ƒxt2fs_read; + +852 +ext2fs +-> +pub_štf +. +ext2fs_þo£ + =ƒxt2fs_close; + +853 +ext2fs +-> +pub_štf +. +ext2fs_£ek + =ƒxt2fs_seek; + +854 +ext2fs +-> +pub_štf +. +ext2fs_f¡© + =ƒxt2fs_fstat; + +856  +EFI_SUCCESS +; + +857 + } +} + +860  +EFI_STATUS + + +861 + $ext2fs_š¡®l_Úe +( +EFI_HANDLE + +dev +, +VOID + ** +štf +) + +863  +ext2_su³r_block + +sb +; + +864  +sb_block + = 1; + +865 +EFI_STATUS + +¡©us +; + +866 +EFI_BLOCK_IO + * +blkio +; + +867 +ext2fs_t + * +ext2fs +; + +869 +¡©us + = +BS +-> + `HªdËPrÙocÞ + ( +dev +, & +Ext2FsPrÙocÞ +, ( +VOID + **)& +ext2fs +); + +870 ià( +¡©us + =ð +EFI_SUCCESS +) { + +871 + `ERR_PRT +(( +L +"W¬nšg: foundƒxi¡šg % ´ÙocÞ oÀdeviû", +FS_NAME +)); + +872  +found +; + +875 +¡©us + = +BS +-> + `HªdËPrÙocÞ +( +dev +, & +BlockIoPrÙocÞ +, ( +VOID + **)& +blkio +); + +876 ià( + `EFI_ERROR +( +¡©us +)è +EFI_INVALID_PARAMETER +; + +878 + `VERB_PRT +(5, + +879 { +EFI_DEVICE_PATH + * +dp +; +CHAR16 + * +¡r +; + +880 +dp + = + `DeviûP©hFromHªdË +( +dev +); + +881 +¡r + = + `DeviûP©hToSŒ +( +dp +); + +882 + `Pršt +( +L +"dev:%s\nLogiÿÈ·¹™iÚ: %  BlockSize: %d Wr™eCachšg: % \n", +¡r +, + +883 +blkio +-> +MedŸ +-> +LogiÿlP¬t™iÚ + ? +L +"Yes": L"No", + +884 +blkio +-> +MedŸ +-> +BlockSize +, + +885 +blkio +-> +MedŸ +-> +Wr™eCachšg + ? +L +"Yes":L"No"); + +886 + `F»ePoÞ +( +¡r +); + +888 ià( +blkio +-> +MedŸ +-> +LogiÿlP¬t™iÚ + =ð +FALSE +è +EFI_INVALID_PARAMETER +; + +896 +blkio +-> + `Re£t +(blkio, +FALSE +); + +899 +¡©us + = + `»ad_by‹s +( +blkio +, blkio-> +MedŸ +-> +MedŸId +, +sb_block + * +EXT2_MIN_BLOCK_SIZE +, & +sb +, (sb)); + +900 ià( + `EFI_ERROR +( +¡©us +)) { + +901 + `DBG_PRT +(( +L +"ÿÂل—d su³rblock: %r", +¡©us +)); + +902  +EFI_INVALID_PARAMETER +; + +905 ià( +sb +. +s_magic + !ð +EXT2_SUPER_MAGIC +) { + +906 + `DBG_PRT +(( +L +"bad magiø0x%x\n", +sb +. +s_magic +)); + +907  +EFI_INVALID_PARAMETER +; + +910 +ext2fs + = ( +ext2fs_t + *) + `®loc +((*ext2fs), +EXT2FS_MEMTYPE +); + +911 ià( +ext2fs + =ð +NULL +è +EFI_OUT_OF_RESOURCES +; + +913 +¡©us + = + `ext2fs_š™_¡©e +( +ext2fs +, +dev +, +blkio +, & +sb +); + +914 ià( +¡©us + !ð +EFI_SUCCESS +) { + +915 + `ä“ +( +ext2fs +); + +916  +¡©us +; + +919 +¡©us + = + `LibIn¡®lPrÙocÞIÁ”çûs +(& +dev +, & +Ext2FsPrÙocÞ +, +ext2fs +, +NULL +); + +920 ià( + `EFI_ERROR +( +¡©us +)) { + +921 + `ERR_PRT +(( +L +"CªnÙ in¡®È% ´ÙocÞ: %r", +FS_NAME +, +¡©us +)); + +922 + `ä“ +( +ext2fs +); + +923  +¡©us +; + +925 +found +: + +926 ià( +štf +è*štàð( +VOID + *) +ext2fs +; + +928 + `VERB_PRT +(3, + +929 { +EFI_DEVICE_PATH + * +dp +; +CHAR16 + * +¡r +; + +930 +dp + = + `DeviûP©hFromHªdË +( +dev +); + +931 +¡r + = + `DeviûP©hToSŒ +( +dp +); + +932 + `Pršt +( +L +"dev:% % d‘eùed\n", +¡r +, +FS_NAME +); + +933 + `F»ePoÞ +( +¡r +); + +936  +EFI_SUCCESS +; + +937 + } +} + +939 +EFI_STATUS + + +940 + $ext2fs_š¡®l +( +VOID +) + +942 +UINTN + +size + = 0; + +943 +UINTN + +i +; + +944 +EFI_STATUS + +¡©us +; + +945 +VOID + * +štf +; + +947 +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, & +BlockIoPrÙocÞ +, +NULL +, & +size +, NULL); + +948 ià( +size + =ð0è +EFI_UNSUPPORTED +; + +950 + `DBG_PRT +(( +L +"size=%d", +size +)); + +952 +dev_b + = ( +dev_b_t + *) + `®loc +( +size +, +EfiLßd”D©a +); + +953 ià( +dev_b + =ð +NULL +) { + +954 + `ERR_PRT +(( +L +"failedo‡llocate handleable")); + +955  +EFI_OUT_OF_RESOURCES +; + +958 +¡©us + = +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, & +BlockIoPrÙocÞ +, +NULL +, & +size +, ( +VOID + **) +dev_b +); + +959 ià( +¡©us + !ð +EFI_SUCCESS +) { + +960 + `ERR_PRT +(( +L +"çžedØg‘ hªdËs: %r", +¡©us +)); + +961 + `ä“ +( +dev_b +); + +962  +¡©us +; + +964 +ndev + = +size + / ( +EFI_HANDLE +); + +966  +i +=0; i < +ndev +; i++) { + +967 +štf + = +NULL +; + +968 + `ext2fs_š¡®l_Úe +( +dev_b +[ +i +]. +dev +, & +štf +); + +970 +dev_b +[ +i +]. +štf + = intf; + +973  +EFI_SUCCESS +; + +974 + } +} + +976 +EFI_STATUS + + +977 + $ext2fs_unš¡®l +( +VOID +) + +980 +ext2fs_´iv_¡©e_t + * +e2fs +; + +981 +EFI_STATUS + +¡©us +; + +982 +UINTN + +i +; + +984  +i +=0; i < +ndev +; i++) { + +985 ià( +dev_b +[ +i +]. +štf + =ð +NULL +) ; + +986 +e2fs + = + `FS_PRIVATE +( +dev_b +[ +i +]. +štf +); + +987 +¡©us + = +BS +-> + `Unš¡®lPrÙocÞIÁ”çû +( +e2fs +-> +dev +, & +Ext2FsPrÙocÞ +, +dev_b +[ +i +]. +štf +); + +988 ià( + `EFI_ERROR +( +¡©us +)) { + +989 + `ERR_PRT +(( +L +"Unš¡®È% ”rÜ: %r", +FS_NAME +, +¡©us +)); + +992 + `VERB_PRT +(3, + +993 { +EFI_DEVICE_PATH + * +dp +; +CHAR16 + * +¡r +; + +994 +dp + = + `DeviûP©hFromHªdË +( +e2fs +-> +dev +); + +995 +¡r + = + `DeviûP©hToSŒ +( +dp +); + +996 + `Pršt +( +L +"unš¡®Ëd % Ú %s\n", +FS_NAME +, +¡r +); + +997 + `F»ePoÞ +( +¡r +); + +999 + `ä“ +( +dev_b +[ +i +]. +štf +); + +1001 ià( +dev_b +è + `ä“ +(dev_tab); + +1003  +EFI_SUCCESS +; + +1004 + } +} + + @fs/ext2fs.h + +25 #iâdeà +__EXT2FS_H__ + + +26  + #__EXT2FS_H__ + + + ) + +28 +INTERFACE_DECL +( +_ext2fs_š‹rçû_t +); + +35  + m¡_šo +; + +36  + m¡_ƚk +; + +37  + m¡_mode +; + +38  + m¡_uid +; + +39  + m¡_gid +; + +40  + m¡_size +; + +41  + m¡_©ime +; + +42  + m¡_mtime +; + +43  + m¡_ùime +; + +44 } + text2fs_¡©_t +; + +47  + s_ext2fs_š‹rçû_t + { + +48 +EFI_STATUS + (* +ext2fs_Çme +)( +_ext2fs_š‹rçû_t + * + mthis +, +CHAR16 + * + mÇme +, +UINTN + + mmaxËn +); + +49 +EFI_STATUS + (* +ext2fs_ݒ +)( +_ext2fs_š‹rçû_t + * + mthis +, +CHAR16 + * + mÇme +, +UINTN + * + mfd +); + +50 +EFI_STATUS + (* +ext2fs_»ad +)( +_ext2fs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +VOID + * + mbuf +, UINTN * + msize +); + +51 +EFI_STATUS + (* +ext2fs_þo£ +)( +_ext2fs_š‹rçû_t + * + mthis +, +UINTN + + mfd +); + +52 +EFI_STATUS + (* +ext2fs_f¡© +)( +_ext2fs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +ext2fs_¡©_t + * + m¡ +); + +53 +EFI_STATUS + (* +ext2fs_£ek +)( +_ext2fs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +UINT64 + + mÃwpos +); + +54 } + text2fs_š‹rçû_t +; + +56  + #EXT2FS_PROTOCOL + \ + +57 { 0x6—924f6, 0xc9f2, 0x4331, {0x83, 0x54, 0x19, 0xd0, 0x17, 0x50, 0xd9, 0xc7} } + + ) + +59 +EFI_STATUS + +ext2fs_š¡®l +( +VOID +); + +60 +EFI_STATUS + +ext2fs_unš¡®l +( +VOID +); + + @fs/fs.h + +1 #iâdeà +_LINUX_FS_H + + +2  + #_LINUX_FS_H + + + ) + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +25  + ~ + +26  + ~ + +28  + gpÞl_bË_¡ruù +; + +42 #undeà +NR_OPEN + + +43  + #NR_OPEN + (1024*1024è + + ) + +44  + #INR_OPEN + 1024 + + ) + +46  + #BLOCK_SIZE_BITS + 10 + + ) + +47  + #BLOCK_SIZE + (1<< +BLOCK_SIZE_BITS +) + + ) + +50  + sfžes_¡©_¡ruù + { + +51  + mÄ_fžes +; + +52  + mÄ_ä“_fžes +; + +53  + mmax_fžes +; + +55  +fžes_¡©_¡ruù + +fžes_¡© +; + +57  + sšodes_¡©_t + { + +58  + mÄ_šodes +; + +59  + mÄ_unu£d +; + +60  + mdummy +[5]; + +62  +šodes_¡©_t + +šodes_¡© +; + +64  +max_su³r_blocks +, +Ä_su³r_blocks +; + +65  +Ëa£s_’abË +, +dœ_nÙify_’abË +, +Ëa£_b»ak_time +; + +67  + #NR_FILE + 8192 + + ) + +68  + #NR_RESERVED_FILES + 10 + + ) + +69  + #NR_SUPER + 256 + + ) + +71  + #MAY_EXEC + 1 + + ) + +72  + #MAY_WRITE + 2 + + ) + +73  + #MAY_READ + 4 + + ) + +75  + #FMODE_READ + 1 + + ) + +76  + #FMODE_WRITE + 2 + + ) + +78  + #READ + 0 + + ) + +79  + #WRITE + 1 + + ) + +80  + #READA + 2 + + ) + +81  + #SPECIAL + 4 + + ) + +83  + #SEL_IN + 1 + + ) + +84  + #SEL_OUT + 2 + + ) + +85  + #SEL_EX + 4 + + ) + +88  + #FS_REQUIRES_DEV + 1 + + ) + +89  + #FS_NO_DCACHE + 2 + + ) + +90  + #FS_NO_PRELIM + 4 + + ) + +93  + #FS_SINGLE + 8 + + ) + +99  + #FS_NOMOUNT + 16 + + ) + +100  + #FS_LITTER + 32 + + ) + +101  + #FS_ODD_RENAME + 32768 + + ) + +107  + #MS_RDONLY + 1 + + ) + +108  + #MS_NOSUID + 2 + + ) + +109  + #MS_NODEV + 4 + + ) + +110  + #MS_NOEXEC + 8 + + ) + +111  + #MS_SYNCHRONOUS + 16 + + ) + +112  + #MS_REMOUNT + 32 + + ) + +113  + #MS_MANDLOCK + 64 + + ) + +114  + #MS_NOATIME + 1024 + + ) + +115  + #MS_NODIRATIME + 2048 + + ) + +116  + #MS_BIND + 4096 + + ) + +121  + #MS_RMT_MASK + ( +MS_RDONLY +| +MS_NOSUID +| +MS_NODEV +| +MS_NOEXEC +|\ + +122 +MS_SYNCHRONOUS +| +MS_MANDLOCK +| +MS_NOATIME +| +MS_NODIRATIME +) + + ) + +127  + #MS_MGC_VAL + 0xC0ED0000 + + ) + +128  + #MS_MGC_MSK + 0xffff0000 + + ) + +132  + #S_SYNC + 1 + + ) + +133  + #S_NOATIME + 2 + + ) + +134  + #S_QUOTA + 4 + + ) + +135  + #S_APPEND + 8 + + ) + +136  + #S_IMMUTABLE + 16 + + ) + +137  + #S_DEAD + 32 + + ) + +152  + #__IS_FLG +( +šode +, +æg +è((šode)-> +i_sb +-> +s_æags + & (æg)) + + ) + +154  + #IS_RDONLY +( +šode +è((šode)-> +i_sb +-> +s_æags + & +MS_RDONLY +) + + ) + +155  + #IS_NOSUID +( +šode +è + `__IS_FLG +(šode, +MS_NOSUID +) + + ) + +156  + #IS_NODEV +( +šode +è + `__IS_FLG +(šode, +MS_NODEV +) + + ) + +157  + #IS_NOEXEC +( +šode +è + `__IS_FLG +(šode, +MS_NOEXEC +) + + ) + +158  + #IS_SYNC +( +šode +è( + `__IS_FLG +(šode, +MS_SYNCHRONOUS +è|| ((šode)-> +i_æags + & +S_SYNC +)) + + ) + +159  + #IS_MANDLOCK +( +šode +è + `__IS_FLG +(šode, +MS_MANDLOCK +) + + ) + +161  + #IS_QUOTAINIT +( +šode +è((šode)-> +i_æags + & +S_QUOTA +) + + ) + +162  + #IS_APPEND +( +šode +è((šode)-> +i_æags + & +S_APPEND +) + + ) + +163  + #IS_IMMUTABLE +( +šode +è((šode)-> +i_æags + & +S_IMMUTABLE +) + + ) + +164  + #IS_NOATIME +( +šode +è( + `__IS_FLG +(šode, +MS_NOATIME +è|| ((šode)-> +i_æags + & +S_NOATIME +)) + + ) + +165  + #IS_NODIRATIME +( +šode +è + `__IS_FLG +(šode, +MS_NODIRATIME +) + + ) + +167  + #IS_DEADDIR +( +šode +è((šode)-> +i_æags + & +S_DEAD +) + + ) + +172  + #BLKROSET + + `_IO +(0x12,93è + + ) + +173  + #BLKROGET + + `_IO +(0x12,94è + + ) + +174  + #BLKRRPART + + `_IO +(0x12,95è + + ) + +175  + #BLKGETSIZE + + `_IO +(0x12,96è + + ) + +176  + #BLKFLSBUF + + `_IO +(0x12,97è + + ) + +177  + #BLKRASET + + `_IO +(0x12,98è + + ) + +178  + #BLKRAGET + + `_IO +(0x12,99è + + ) + +179  + #BLKFRASET + + `_IO +(0x12,100) + + ) + +180  + #BLKFRAGET + + `_IO +(0x12,101) + + ) + +181  + #BLKSECTSET + + `_IO +(0x12,102) + + ) + +182  + #BLKSECTGET + + `_IO +(0x12,103) + + ) + +183  + #BLKSSZGET + + `_IO +(0x12,104) + + ) + +185  + #BLKPG + + `_IO +(0x12,105) + + ) + +186  + #BLKELVGET + + `_IOR +(0x12,106,( +blk–v_ioùl_¬g_t +)) + + ) + +187  + #BLKELVSET + + `_IOW +(0x12,107,( +blk–v_ioùl_¬g_t +)) + + ) + +193  + #BMAP_IOCTL + 1 + + ) + +194  + #FIBMAP + + `_IO +(0x00,1è + + ) + +195  + #FIGETBSZ + + `_IO +(0x00,2è + + ) + +197 #ifdeà +__KERNEL__ + + +199  + ~ + +200  + ~ + +202  +upd©e_©ime + ( +šode + *); + +203  + #UPDATE_ATIME +( +šode +è + `upd©e_©ime + (šode) + + ) + +205  +bufãr_š™ +(); + +206  +šode_š™ +(); + +209  + #BH_U±od©e + 0 + + ) + +210  + #BH_Dœty + 1 + + ) + +211  + #BH_Lock + 2 + + ) + +212  + #BH_Req + 3 + + ) + +213  + #BH_M­³d + 4 + + ) + +214  + #BH_New + 5 + + ) + +215  + #BH_PrÙeùed + 6 + + ) + +228  + sbufãr_h—d + { + +230  +bufãr_h—d + * + mb_Ãxt +; + +231  + mb_blockÄ +; + +232  + mb_size +; + +233  + mb_li¡ +; + +234 +kdev_t + + mb_dev +; + +236 +©omic_t + + mb_couÁ +; + +237 +kdev_t + + mb_rdev +; + +238  + mb_¡©e +; + +239  + mb_æushtime +; + +241  +bufãr_h—d + * + mb_Ãxt_ä“ +; + +242  +bufãr_h—d + * + mb_´ev_ä“ +; + +243  +bufãr_h—d + * + mb_this_·ge +; + +244  +bufãr_h—d + * + mb_»qÃxt +; + +246  +bufãr_h—d + ** + mb_µ»v +; + +247 * + mb_d©a +; + +248  +·ge + * + mb_·ge +; + +249 (* + mb_’d_io +)( +bufãr_h—d + * + mbh +,  + mu±od©e +); + +250 * + mb_´iv©e +; + +252  + mb_r£ùÜ +; + +253 +wa™_queue_h—d_t + + mb_wa™ +; + +255  +šode + * + mb_šode +; + +256  +li¡_h—d + + mb_šode_bufãrs +; + +259 ( + tbh_’d_io_t +)( + tbufãr_h—d + * + tbh +,  + tu±od©e +); + +260  + `š™_bufãr +( +bufãr_h—d + *, +bh_’d_io_t + *, *); + +262  + #__bufãr_¡©e +( +bh +, +¡©e +è(((bh)-> +b_¡©e + & (1UL << +BH_ +##¡©e)è!ð0) + + ) + +264  + #bufãr_u±od©e +( +bh +è + `__bufãr_¡©e +(bh, +U±od©e +) + + ) + +265  + #bufãr_dœty +( +bh +è + `__bufãr_¡©e +(bh, +Dœty +) + + ) + +266  + #bufãr_locked +( +bh +è + `__bufãr_¡©e +(bh, +Lock +) + + ) + +267  + #bufãr_»q +( +bh +è + `__bufãr_¡©e +(bh, +Req +) + + ) + +268  + #bufãr_m­³d +( +bh +è + `__bufãr_¡©e +(bh, +M­³d +) + + ) + +269  + #bufãr_Ãw +( +bh +è + `__bufãr_¡©e +(bh, +New +) + + ) + +270  + #bufãr_´Ùeùed +( +bh +è + `__bufãr_¡©e +(bh, +PrÙeùed +) + + ) + +272  + #bh_off£t +( +bh +è(()(bh)-> +b_d©a + & ~ +PAGE_MASK +) + + ) + +274  + `£t_bh_·ge +( +bufãr_h—d + * +bh +,  +·ge + *·ge,  +off£t +); + +276  + #touch_bufãr +( +bh +è + `S‘PageReã»nûd +(bh-> +b_·ge +) + + ) + +279  + ~ + +280  + ~ + +281  + ~ + +282  + ~ + +283  + ~ + +284  + ~ + +285  + ~ + +286  + ~ + +287  + ~ + +288  + ~ + +289  + ~ + +290  + ~ + +291  + ~ + +292  + ~ + +293  + ~ + +294  + ~ + +295  + ~ + +296  + ~ + +297  + ~ + +298  + ~ + +299  + ~ + +300  + ~ + +301  + ~ + +302  + ~ + +303  + ~ + +304  + ~ + +310  + #ATTR_MODE + 1 + + ) + +311  + #ATTR_UID + 2 + + ) + +312  + #ATTR_GID + 4 + + ) + +313  + #ATTR_SIZE + 8 + + ) + +314  + #ATTR_ATIME + 16 + + ) + +315  + #ATTR_MTIME + 32 + + ) + +316  + #ATTR_CTIME + 64 + + ) + +317  + #ATTR_ATIME_SET + 128 + + ) + +318  + #ATTR_MTIME_SET + 256 + + ) + +319  + #ATTR_FORCE + 512 + + ) + +320  + #ATTR_ATTR_FLAG + 1024 + + ) + +331  + sŸ‰r + { + +332  +Ÿ_v®id +; + +333 +umode_t + +Ÿ_mode +; + +334 +uid_t + +Ÿ_uid +; + +335 +gid_t + +Ÿ_gid +; + +336 +loff_t + +Ÿ_size +; + +337 +time_t + +Ÿ_©ime +; + +338 +time_t + +Ÿ_mtime +; + +339 +time_t + +Ÿ_ùime +; + +340  +Ÿ_©Œ_æags +; + +346  + #ATTR_FLAG_SYNCRONOUS + 1 + + ) + +347  + #ATTR_FLAG_NOATIME + 2 + + ) + +348  + #ATTR_FLAG_APPEND + 4 + + ) + +349  + #ATTR_FLAG_IMMUTABLE + 8 + + ) + +350  + #ATTR_FLAG_NODIRATIME + 16 + + ) + +355  + ~ + +356  + ~ + +361  +·ge +; + +362  +add»ss_¥aû +; + +364  + sadd»ss_¥aû_ݔ©iÚs + { + +365 (* +wr™•age +)( +·ge + *); + +366 (* +»ad·ge +)( +fže + *,  +·ge + *); + +367 (* +sync_·ge +)( +·ge + *); + +368 (* +´•¬e_wr™e +)( +fže + *,  +·ge + *, , ); + +369 (* +comm™_wr™e +)( +fže + *,  +·ge + *, , ); + +371 (* +bm­ +)( +add»ss_¥aû + *, ); + +374  + sadd»ss_¥aû + { + +375  +li¡_h—d + +þ—n_·ges +; + +376  +li¡_h—d + +dœty_·ges +; + +377  +li¡_h—d + +locked_·ges +; + +378  +Ä·ges +; + +379  +add»ss_¥aû_ݔ©iÚs + * +a_Ýs +; + +380  +šode + * +ho¡ +; + +381  +vm_¬—_¡ruù + * +i_mm­ +; + +382  +vm_¬—_¡ruù + * +i_mm­_sh¬ed +; + +383 +¥šlock_t + +i_sh¬ed_lock +; + +384  +gå_mask +; + +387  + sch¬_deviû + { + +388  +li¡_h—d + +hash +; + +389 +©omic_t + +couÁ +; + +390 +dev_t + +dev +; + +391 +©omic_t + +ݒ”s +; + +392  +£m­hÜe + +£m +; + +395  + sblock_deviû + { + +396  +li¡_h—d + +bd_hash +; + +397 +©omic_t + +bd_couÁ +; + +399 +dev_t + +bd_dev +; + +400 +©omic_t + +bd_ݒ”s +; + +401 cÚ¡  +block_deviû_ݔ©iÚs + * +bd_Ý +; + +402  +£m­hÜe + +bd_£m +; + +405  + sšode + { + +406  +li¡_h—d + +i_hash +; + +407  +li¡_h—d + +i_li¡ +; + +408  +li¡_h—d + +i_d’Œy +; + +410  +li¡_h—d + +i_dœty_bufãrs +; + +412  +i_šo +; + +413 +©omic_t + +i_couÁ +; + +414 +kdev_t + +i_dev +; + +415 +umode_t + +i_mode +; + +416 +ƚk_t + +i_ƚk +; + +417 +uid_t + +i_uid +; + +418 +gid_t + +i_gid +; + +419 +kdev_t + +i_rdev +; + +420 +loff_t + +i_size +; + +421 +time_t + +i_©ime +; + +422 +time_t + +i_mtime +; + +423 +time_t + +i_ùime +; + +424  +i_blksize +; + +425  +i_blocks +; + +426  +i_v”siÚ +; + +427  +£m­hÜe + +i_£m +; + +428  +£m­hÜe + +i_zomb› +; + +429  +šode_ݔ©iÚs + * +i_Ý +; + +430  +fže_ݔ©iÚs + * +i_fÝ +; + +431  +su³r_block + * +i_sb +; + +432 +wa™_queue_h—d_t + +i_wa™ +; + +433  +fže_lock + * +i_æock +; + +434  +add»ss_¥aû + * +i_m­pšg +; + +435  +add»ss_¥aû + +i_d©a +; + +436  +dquÙ + * +i_dquÙ +[ +MAXQUOTAS +]; + +438  +pe_šode_šfo + * +i_pe +; + +439  +block_deviû + * +i_bdev +; + +440  +ch¬_deviû + * +i_cdev +; + +442  +i_dnÙify_mask +; + +443  +dnÙify_¡ruù + * +i_dnÙify +; + +445  +i_¡©e +; + +447  +i_æags +; + +448  +i_sock +; + +450 +©omic_t + +i_wr™ecouÁ +; + +451  +i_©Œ_æags +; + +452 +__u32 + +i_g’”©iÚ +; + +454  +mšix_šode_šfo + +mšix_i +; + +455  +ext2_šode_šfo + +ext2_i +; + +456  +hpfs_šode_šfo + +hpfs_i +; + +457  +Áfs_šode_šfo + +Áfs_i +; + +458  +msdos_šode_šfo + +msdos_i +; + +459  +umsdos_šode_šfo + +umsdos_i +; + +460  +iso_šode_šfo + +isofs_i +; + +461  +nfs_šode_šfo + +nfs_i +; + +462  +sysv_šode_šfo + +sysv_i +; + +463  +affs_šode_šfo + +affs_i +; + +464  +ufs_šode_šfo + +ufs_i +; + +465  +efs_šode_šfo + +efs_i +; + +466  +romfs_šode_šfo + +romfs_i +; + +467  +shmem_šode_šfo + +shmem_i +; + +468  +coda_šode_šfo + +coda_i +; + +469  +smb_šode_šfo + +smbfs_i +; + +470  +hfs_šode_šfo + +hfs_i +; + +471  +adfs_šode_šfo + +adfs_i +; + +472  +qnx4_šode_šfo + +qnx4_i +; + +473  +»i£rfs_šode_šfo + +»i£rfs_i +; + +474  +bfs_šode_šfo + +bfs_i +; + +475  +udf_šode_šfo + +udf_i +; + +476  +ný_šode_šfo + +nýfs_i +; + +477  +´oc_šode_šfo + +´oc_i +; + +478  +sock‘ + +sock‘_i +; + +479  +usbdev_šode_šfo + +usbdev_i +; + +480 * +g’”ic_ +; + +481 } +u +; + +484  + sfown_¡ruù + { + +485  +pid +; + +486 +uid_t + +uid +, +euid +; + +487  +signum +; + +490  + sfže + { + +491  +li¡_h—d + +f_li¡ +; + +492  +d’Œy + * +f_d’Œy +; + +493  +vfsmouÁ + * +f_vfsmÁ +; + +494  +fže_ݔ©iÚs + * +f_Ý +; + +495 +©omic_t + +f_couÁ +; + +496  +f_æags +; + +497 +mode_t + +f_mode +; + +498 +loff_t + +f_pos +; + +499  +f_»ada +, +f_¿max +, +f_¿’d +, +f_¿Ën +, +f_¿wš +; + +500  +fown_¡ruù + +f_owÃr +; + +501  +f_uid +, +f_gid +; + +502  +f_”rÜ +; + +504  +f_v”siÚ +; + +507 * +´iv©e_d©a +; + +509 +¥šlock_t + +fžes_lock +; + +510  + #fže_li¡_lock +(è + `¥š_lock +(& +fžes_lock +); + + ) + +511  + #fže_li¡_uÆock +(è + `¥š_uÆock +(& +fžes_lock +); + + ) + +513  + #g‘_fže +( +x +è + `©omic_šc +(&(x)-> +f_couÁ +) + + ) + +514  + #fže_couÁ +( +x +è + `©omic_»ad +(&(x)-> +f_couÁ +) + + ) + +516  + `š™_´iv©e_fže +( +fže + *,  +d’Œy + *, ); + +518  + #MAX_NON_LFS + ((1UL<<31è- 1) + + ) + +520  + #FL_POSIX + 1 + + ) + +521  + #FL_FLOCK + 2 + + ) + +522  + #FL_BROKEN + 4 + + ) + +523  + #FL_ACCESS + 8 + + ) + +524  + #FL_LOCKD + 16 + + ) + +525  + #FL_LEASE + 32 + + ) + +534  +fžes_¡ruù + * + tæ_owÃr_t +; + +536  + sfže_lock + { + +537  +fže_lock + * +æ_Ãxt +; + +538  +li¡_h—d + +æ_lšk +; + +539  +li¡_h—d + +æ_block +; + +540 +æ_owÃr_t + +æ_owÃr +; + +541  +æ_pid +; + +542 +wa™_queue_h—d_t + +æ_wa™ +; + +543  +fže + * +æ_fže +; + +544  +æ_æags +; + +545  +æ_ty³ +; + +546 +loff_t + +æ_¡¬t +; + +547 +loff_t + +æ_’d +; + +549 (* +æ_nÙify +)( +fže_lock + *); + +550 (* +æ_š£¹ +)( +fže_lock + *); + +551 (* +æ_»move +)( +fže_lock + *); + +553  +çsync_¡ruù + * +æ_çsync +; + +556  +nfs_lock_šfo + +nfs_æ +; + +557 } +æ_u +; + +561 #iâdeà +OFFSET_MAX + + +562  + #INT_LIMIT +( +x +è(~((x)1 << ((x)*8 - 1))) + + ) + +563  + #OFFSET_MAX + + `INT_LIMIT +( +loff_t +) + + ) + +564  + #OFFT_OFFSET_MAX + + `INT_LIMIT +( +off_t +) + + ) + +567  +li¡_h—d + +fže_lock_li¡ +; + +569  + ~ + +571  + `fúŽ_g‘lk +(,  +æock + *); + +572  + `fúŽ_£Žk +(, ,  +æock + *); + +574  + `fúŽ_g‘lk64 +(,  +æock64 + *); + +575  + `fúŽ_£Žk64 +(, ,  +æock64 + *); + +578  + `locks_š™_lock +( +fže_lock + *); + +579  + `locks_cÝy_lock +( +fže_lock + *, file_lock *); + +580  + `locks_»move_posix +( +fže + *, +æ_owÃr_t +); + +581  + `locks_»move_æock +( +fže + *); + +582  +fže_lock + * + `posix_‹¡_lock +( +fže + *, file_lock *); + +583  + `posix_lock_fže +( +fže + *,  +fže_lock + *, ); + +584  + `posix_block_lock +( +fže_lock + *, file_lock *); + +585  + `posix_unblock_lock +( +fže_lock + *); + +586  + `__g‘_Ëa£ +( +šode + *šode,  +æags +); + +587 +time_t + + `Ëa£_g‘_mtime +( +šode + *); + +588  + `lock_may_»ad +( +šode + *, +loff_t + +¡¬t +,  +couÁ +); + +589  + `lock_may_wr™e +( +šode + *, +loff_t + +¡¬t +,  +couÁ +); + +591  + sçsync_¡ruù + { + +592  +magic +; + +593  +ç_fd +; + +594  +çsync_¡ruù + * +ç_Ãxt +; + +595  +fže + * +ç_fže +; + +598  + #FASYNC_MAGIC + 0x4601 + + ) + +601  + `çsync_h–³r +(,  +fže + *, ,  +çsync_¡ruù + **); + +603  + `kžl_çsync +( +çsync_¡ruù + **, , ); + +605  + `__kžl_çsync +( +çsync_¡ruù + *, , ); + +607  + sÇmeid©a + { + +608  +d’Œy + *dentry; + +609  +vfsmouÁ + * +mÁ +; + +610  +q¡r + +Ï¡ +; + +611  +æags +; + +612  +Ï¡_ty³ +; + +615  + #DQUOT_USR_ENABLED + 0x01 + + ) + +616  + #DQUOT_GRP_ENABLED + 0x02 + + ) + +618  + squÙa_mouÁ_ÝtiÚs + + +620  +æags +; + +621  +£m­hÜe + +dqio_£m +; + +622  +£m­hÜe + +dqoff_£m +; + +623  +fže + * +fžes +[ +MAXQUOTAS +]; + +624 +time_t + +šode_expœe +[ +MAXQUOTAS +]; + +625 +time_t + +block_expœe +[ +MAXQUOTAS +]; + +626  +rsquash +[ +MAXQUOTAS +]; + +633  + #MNT_FORCE + 0x00000001 + + ) + +635  + ~ + +636  + ~ + +637  + ~ + +638  + ~ + +639  + ~ + +640  + ~ + +641  + ~ + +642  + ~ + +643  + ~ + +644  + ~ + +645  + ~ + +646  + ~ + +647  + ~ + +648  + ~ + +649  + ~ + +650  + ~ + +651  + ~ + +652  + ~ + +653  + ~ + +654  + ~ + +655  + ~ + +657  +li¡_h—d + +su³r_blocks +; + +659  + #sb_’Œy +( +li¡ +è + `li¡_’Œy +(Öi¡),  +su³r_block +, +s_li¡ +) + + ) + +660  + ssu³r_block + { + +661  +li¡_h—d + +s_li¡ +; + +662 +kdev_t + +s_dev +; + +663  +s_blocksize +; + +664  +s_blocksize_b™s +; + +665  +s_dœt +; + +666  +s_maxby‹s +; + +667  +fže_sy¡em_ty³ + * +s_ty³ +; + +668  +su³r_ݔ©iÚs + * +s_Ý +; + +669  +dquÙ_ݔ©iÚs + * +dq_Ý +; + +670  +s_æags +; + +671  +s_magic +; + +672  +d’Œy + * +s_roÙ +; + +673  +rw_£m­hÜe + +s_umouÁ +; + +674  +£m­hÜe + +s_lock +; + +676  +li¡_h—d + +s_dœty +; + +677  +li¡_h—d + +s_locked_šodes +; + +678  +li¡_h—d + +s_fžes +; + +680  +block_deviû + * +s_bdev +; + +681  +li¡_h—d + +s_mouÁs +; + +682  +quÙa_mouÁ_ÝtiÚs + +s_dquÙ +; + +685  +mšix_sb_šfo + +mšix_sb +; + +686  +ext2_sb_šfo + +ext2_sb +; + +687  +hpfs_sb_šfo + +hpfs_sb +; + +688  +Áfs_sb_šfo + +Áfs_sb +; + +689  +msdos_sb_šfo + +msdos_sb +; + +690  +isofs_sb_šfo + +isofs_sb +; + +691  +nfs_sb_šfo + +nfs_sb +; + +692  +sysv_sb_šfo + +sysv_sb +; + +693  +affs_sb_šfo + +affs_sb +; + +694  +ufs_sb_šfo + +ufs_sb +; + +695  +efs_sb_šfo + +efs_sb +; + +696  +shmem_sb_šfo + +shmem_sb +; + +697  +romfs_sb_šfo + +romfs_sb +; + +698  +smb_sb_šfo + +smbfs_sb +; + +699  +hfs_sb_šfo + +hfs_sb +; + +700  +adfs_sb_šfo + +adfs_sb +; + +701  +qnx4_sb_šfo + +qnx4_sb +; + +702  +»i£rfs_sb_šfo + +»i£rfs_sb +; + +703  +bfs_sb_šfo + +bfs_sb +; + +704  +udf_sb_šfo + +udf_sb +; + +705  +ný_sb_šfo + +nýfs_sb +; + +706  +usbdev_sb_šfo + +usbdevfs_sb +; + +707 * +g’”ic_sbp +; + +708 } +u +; + +713  +£m­hÜe + +s_vfs_»Çme_£m +; + +722  +£m­hÜe + +s_nfsd_ä“_·th_£m +; + +728  + `vfs_ü—‹ +( +šode + *,  +d’Œy + *, ); + +729  + `vfs_mkdœ +( +šode + *,  +d’Œy + *, ); + +730  + `vfs_mknod +( +šode + *,  +d’Œy + *, , +dev_t +); + +731  + `vfs_symlšk +( +šode + *,  +d’Œy + *, const *); + +732  + `vfs_lšk +( +d’Œy + *,  +šode + *, dentry *); + +733  + `vfs_rmdœ +( +šode + *,  +d’Œy + *); + +734  + `vfs_uƚk +( +šode + *,  +d’Œy + *); + +735  + `vfs_»Çme +( +šode + *,  +d’Œy + *, inode *, dentry *); + +740  + #DT_UNKNOWN + 0 + + ) + +741  + #DT_FIFO + 1 + + ) + +742  + #DT_CHR + 2 + + ) + +743  + #DT_DIR + 4 + + ) + +744  + #DT_BLK + 6 + + ) + +745  + #DT_REG + 8 + + ) + +746  + #DT_LNK + 10 + + ) + +747  + #DT_SOCK + 12 + + ) + +748  + #DT_WHT + 14 + + ) + +756 (* + tfžldœ_t +)(*, cÚ¡ *, , + toff_t +, + tšo_t +, ); + +758  + sblock_deviû_ݔ©iÚs + { + +759 (* +ݒ +è( +šode + *,  +fže + *); + +760 (* +»Ëa£ +è( +šode + *,  +fže + *); + +761 (* +ioùl +è( +šode + *,  +fže + *, , ); + +762 (* +check_medŸ_chªge +è( +kdev_t +); + +763 (* +»v®id©e +è( +kdev_t +); + +771  + sfže_ݔ©iÚs + { + +772  +moduË + * +owÃr +; + +773 + `loff_t + (* +Σek +è( +fže + *, +loff_t +, ); + +774 + `ssize_t + (* +»ad +è( +fže + *, *, +size_t +, +loff_t + *); + +775 + `ssize_t + (* +wr™e +è( +fže + *, cÚ¡ *, +size_t +, +loff_t + *); + +776 (* +»addœ +è( +fže + *, *, +fžldœ_t +); + +777 (* +pÞl +è( +fže + *,  +pÞl_bË_¡ruù + *); + +778 (* +ioùl +è( +šode + *,  +fže + *, , ); + +779 (* +mm­ +è( +fže + *,  +vm_¬—_¡ruù + *); + +780 (* +ݒ +è( +šode + *,  +fže + *); + +781 (* +æush +è( +fže + *); + +782 (* +»Ëa£ +è( +šode + *,  +fže + *); + +783 (* +fsync +è( +fže + *,  +d’Œy + *,  +d©async +); + +784 (* +çsync +è(,  +fže + *, ); + +785 (* +lock +è( +fže + *, ,  +fže_lock + *); + +786 + `ssize_t + (* +»adv +è( +fže + *, cÚ¡  +iovec + *, , +loff_t + *); + +787 + `ssize_t + (* +wr™ev +è( +fže + *, cÚ¡  +iovec + *, , +loff_t + *); + +788 + `ssize_t + (* +£nd·ge +è( +fže + *,  +·ge + *, , +size_t +, +loff_t + *, ); + +789 (* +g‘_unm­³d_¬— +)( +fže + *, , , , ); + +792  + sšode_ݔ©iÚs + { + +793 (* +ü—‹ +è( +šode + *, +d’Œy + *,); + +794  +d’Œy + * (* +lookup +è( +šode + *,dentry *); + +795 (* +lšk +è( +d’Œy + *, +šode + *,dentry *); + +796 (* +uƚk +è( +šode + *, +d’Œy + *); + +797 (* +symlšk +è( +šode + *, +d’Œy + *,const *); + +798 (* +mkdœ +è( +šode + *, +d’Œy + *,); + +799 (* +rmdœ +è( +šode + *, +d’Œy + *); + +800 (* +mknod +è( +šode + *, +d’Œy + *,,); + +801 (* +»Çme +è( +šode + *,  +d’Œy + *, + +802  +šode + *,  +d’Œy + *); + +803 (* +»adlšk +è( +d’Œy + *, *,); + +804 (* +fÞlow_lšk +è( +d’Œy + *,  +Çmeid©a + *); + +805 (* +Œunÿ‹ +è( +šode + *); + +806 (* +³rmissiÚ +è( +šode + *, ); + +807 (* +»v®id©e +è( +d’Œy + *); + +808 (* +£‰r +è( +d’Œy + *,  +Ÿ‰r + *); + +809 (* +g‘©Œ +è( +d’Œy + *,  +Ÿ‰r + *); + +816  + ssu³r_ݔ©iÚs + { + +817 (* +»ad_šode +è( +šode + *); + +825 (* +»ad_šode2 +è( +šode + *, *) ; + +826 (* +dœty_šode +è( +šode + *); + +827 (* +wr™e_šode +è( +šode + *, ); + +828 (* +put_šode +è( +šode + *); + +829 (* +d–‘e_šode +è( +šode + *); + +830 (* +put_su³r +è( +su³r_block + *); + +831 (* +wr™e_su³r +è( +su³r_block + *); + +832 (* +wr™e_su³r_lockfs +è( +su³r_block + *); + +833 (* +uÆockfs +è( +su³r_block + *); + +834 (* +¡©fs +è( +su³r_block + *, statfs *); + +835 (* +»mouÁ_fs +è( +su³r_block + *, *, *); + +836 (* +þ—r_šode +è( +šode + *); + +837 (* +umouÁ_begš +è( +su³r_block + *); + +841  + #I_DIRTY_SYNC + 1 + + ) + +842  + #I_DIRTY_DATASYNC + 2 + + ) + +843  + #I_DIRTY_PAGES + 4 + + ) + +844  + #I_LOCK + 8 + + ) + +845  + #I_FREEING + 16 + + ) + +846  + #I_CLEAR + 32 + + ) + +848  + #I_DIRTY + ( +I_DIRTY_SYNC + | +I_DIRTY_DATASYNC + | +I_DIRTY_PAGES +) + + ) + +850  + `__m¬k_šode_dœty +( +šode + *, ); + +851  +šlše +  + $m¬k_šode_dœty +( +šode + *inode) + +853 + `__m¬k_šode_dœty +( +šode +, +I_DIRTY +); + +854 + } +} + +856  +šlše +  + $m¬k_šode_dœty_sync +( +šode + *inode) + +858 + `__m¬k_šode_dœty +( +šode +, +I_DIRTY_SYNC +); + +859 + } +} + +861  +šlše +  + $m¬k_šode_dœty_·ges +( +šode + *inode) + +863 + `__m¬k_šode_dœty +( +šode +, +I_DIRTY_PAGES +); + +864 + } +} + +866  + sdquÙ_ݔ©iÚs + { + +867 (* + mš™Ÿlize +è( + mšode + *, ); + +868 (* + mdrÝ +è( + mšode + *); + +869 (* + m®loc_block +è(cÚ¡  + mšode + *, , ); + +870 (* + m®loc_šode +è(cÚ¡  + mšode + *, ); + +871 (* + mä“_block +è(cÚ¡  + mšode + *, ); + +872 (* + mä“_šode +è(cÚ¡  + mšode + *, ); + +873 (* + mŒªsãr +è( + md’Œy + *,  + mŸ‰r + *); + +876  + sfže_sy¡em_ty³ + { + +877 cÚ¡ * + mÇme +; + +878  + mfs_æags +; + +879  + msu³r_block + *(* + m»ad_su³r +) (super_block *, *, ); + +880  +moduË + * + mowÃr +; + +881  +vfsmouÁ + * + mk”n_mÁ +; + +882  +fže_sy¡em_ty³ + * + mÃxt +; + +885  + #DECLARE_FSTYPE +( +v¬ +, +ty³ +, +»ad +, +æags +) \ + +886  +fže_sy¡em_ty³ + +v¬ + = { \ + +887 +Çme +: +ty³ +, \ + +888 +»ad_su³r +: +»ad +, \ + +889 +fs_æags +: +æags +, \ + +890 +owÃr +: +THIS_MODULE +, \ + +891 } + + ) + +893  + #DECLARE_FSTYPE_DEV +( +v¬ +, +ty³ +, +»ad +) \ + +894 + `DECLARE_FSTYPE +( +v¬ +, +ty³ +, +»ad +, +FS_REQUIRES_DEV +) + + ) + +897  + #fÝs_g‘ +( +fÝs +) \ + +898 ((( +fÝs +è&& (fÝs)-> +owÃr +) \ + +899 ? ( + `Œy_šc_mod_couÁ +(( +fÝs +)-> +owÃr +è? (fÝsè: +NULL + ) \ + +900 : ( +fÝs +)) + + ) + +902  + #fÝs_put +( +fÝs +) \ + +904 ià(( +fÝs +è&& (fÝs)-> +owÃr +) \ + +905 + `__MOD_DEC_USE_COUNT +(( +fÝs +)-> +owÃr +); \ + +906 } 0) + + ) + +908  +»gi¡”_fžesy¡em +( +fže_sy¡em_ty³ + *); + +909  +uÄegi¡”_fžesy¡em +( +fže_sy¡em_ty³ + *); + +910  +vfsmouÁ + * +k”n_mouÁ +( +fže_sy¡em_ty³ + *); + +911  +may_umouÁ +( +vfsmouÁ + *); + +912  +do_mouÁ +(*, *, *, , *); + +914  + #k”n_umouÁ + +mÁput + + + ) + +916  +vfs_¡©fs +( +su³r_block + *,  +¡©fs + *); + +921  + #LOCK_USE_CLNT + 1 + + ) + +923  + #FLOCK_VERIFY_READ + 1 + + ) + +924  + #FLOCK_VERIFY_WRITE + 2 + + ) + +926  +locks_mªd©Üy_locked +( +šode + *); + +927  +locks_mªd©Üy_¬— +(,  +šode + *,  +fže + *, +loff_t +, +size_t +); + +933  + #MANDATORY_LOCK +( +šode +) \ + +934 ( + `IS_MANDLOCK +( +šode +è&& ((šode)-> +i_mode + & ( +S_ISGID + | +S_IXGRP +)è=ðS_ISGID) + + ) + +936  +šlše +  + $locks_v”ify_locked +( +šode + *inode) + +938 ià( + `MANDATORY_LOCK +( +šode +)) + +939  + `locks_mªd©Üy_locked +( +šode +); + +941 + } +} + +943  +šlše +  + $locks_v”ify_¬— +( +»ad_wr™e +,  +šode + *inode, + +944  +fže + * +fžp +, +loff_t + +off£t +, + +945 +size_t + +couÁ +) + +947 ià( +šode +-> +i_æock + && + `MANDATORY_LOCK +(inode)) + +948  + `locks_mªd©Üy_¬— +( +»ad_wr™e +, +šode +, +fžp +, +off£t +, +couÁ +); + +950 + } +} + +952  +šlše +  + $locks_v”ify_Œunÿ‹ +( +šode + *inode, + +953  +fže + * +fžp +, + +954 +loff_t + +size +) + +956 ià( +šode +-> +i_æock + && + `MANDATORY_LOCK +(inode)) + +957  + `locks_mªd©Üy_¬— +( + +958 +FLOCK_VERIFY_WRITE +, +šode +, +fžp +, + +959 +size + < +šode +-> +i_size + ? size : inode->i_size, + +960 ( +size + < +šode +-> +i_size + ? inode->i_size - size + +961 : +size + - +šode +-> +i_size +) + +964 + } +} + +966 +šlše +  + $g‘_Ëa£ +( +šode + *šode,  +mode +) + +968 ià( +šode +-> +i_æock + && (šode->i_æock-> +æ_æags + & +FL_LEASE +)) + +969  + `__g‘_Ëa£ +( +šode +, +mode +); + +971 + } +} + +975 +asmlškage +  +sys_ݒ +(const *, , ); + +976 +asmlškage +  +sys_þo£ +(); + +977  +do_Œunÿ‹ +( +d’Œy + *, +loff_t + +¡¬t +); + +979  +fže + * +fžp_ݒ +(const *, , ); + +980  +fže + * +d’Œy_ݒ +( +d’Œy + *,  +vfsmouÁ + *, ); + +981  +fžp_þo£ +( +fže + *, +æ_owÃr_t + +id +); + +982 * +g‘Çme +(const *); + +985  +vfs_ÿches_š™ +(); + +987  + #__g‘Çme +(è + `kmem_ÿche_®loc +( +Çmes_ÿch• +, +SLAB_KERNEL +) + + ) + +988  + #puŠame +( +Çme +è + `kmem_ÿche_ä“ +( +Çmes_ÿch• +, (*)Òame)) + + ) + +990 ’um { + mBDEV_FILE +, + mBDEV_SWAP +, + mBDEV_FS +, + mBDEV_RAW +}; + +991  +»gi¡”_blkdev +(, cÚ¡ *,  +block_deviû_ݔ©iÚs + *); + +992  +uÄegi¡”_blkdev +(, const *); + +993  +block_deviû + * +bdg‘ +( +dev_t +); + +994  +bdput +( +block_deviû + *); + +995  +ch¬_deviû + * +cdg‘ +( +dev_t +); + +996  +cdput +( +ch¬_deviû + *); + +997  +blkdev_ݒ +( +šode + *,  +fže + *); + +998  +fže_ݔ©iÚs + +def_blk_fÝs +; + +999  +fže_ݔ©iÚs + +def_fifo_fÝs +; + +1000  +ioùl_by_bdev +( +block_deviû + *, , ); + +1001  +blkdev_g‘ +( +block_deviû + *, +mode_t +, , ); + +1002  +blkdev_put +( +block_deviû + *, ); + +1005 cÚ¡  +block_deviû_ݔ©iÚs + * +g‘_blkfÝs +(); + +1006  +»gi¡”_chrdev +(, cÚ¡ *,  +fže_ݔ©iÚs + *); + +1007  +uÄegi¡”_chrdev +(, const *); + +1008  +chrdev_ݒ +( +šode + *,  +fže + *); + +1009 cÚ¡ * +bdevÇme +( +kdev_t +); + +1010 cÚ¡ * +cdevÇme +( +kdev_t +); + +1011 cÚ¡ * +kdevÇme +( +kdev_t +); + +1012  +š™_¥ecŸl_šode +( +šode + *, +umode_t +, ); + +1015  +make_bad_šode +( +šode + *); + +1016  +is_bad_šode +( +šode + *); + +1018  +fže_ݔ©iÚs + +»ad_fifo_fÝs +; + +1019  +fže_ݔ©iÚs + +wr™e_fifo_fÝs +; + +1020  +fže_ݔ©iÚs + +rdwr_fifo_fÝs +; + +1021  +fže_ݔ©iÚs + +»ad_pe_fÝs +; + +1022  +fže_ݔ©iÚs + +wr™e_pe_fÝs +; + +1023  +fže_ݔ©iÚs + +rdwr_pe_fÝs +; + +1025  +fs_may_»mouÁ_ro +( +su³r_block + *); + +1027  +Œy_to_ä“_bufãrs +( +·ge + *, ); + +1028  +»fže_bufãr +( +bufãr_h—d + * +buf +); + +1031  +£t_bufãr_async_io +( +bufãr_h—d + * +bh +) ; + +1033  + #BUF_CLEAN + 0 + + ) + +1034  + #BUF_LOCKED + 1 + + ) + +1035  + #BUF_DIRTY + 2 + + ) + +1036  + #BUF_PROTECTED + 3 + + ) + +1037  + #NR_LIST + 4 + + ) + +1042  +šlše +  + $m¬k_bufãr_u±od©e +( +bufãr_h—d + * +bh +,  +Ú +) + +1044 ià( +Ú +) + +1045 + `£t_b™ +( +BH_U±od©e +, & +bh +-> +b_¡©e +); + +1047 + `þ—r_b™ +( +BH_U±od©e +, & +bh +-> +b_¡©e +); + +1048 + } +} + +1050  + #©omic_£t_bufãr_þ—n +( +bh +è + `‹¡_ªd_þ—r_b™ +( +BH_Dœty +, &(bh)-> +b_¡©e +) + + ) + +1052  +šlše +  + $__m¬k_bufãr_þ—n +( +bufãr_h—d + * +bh +) + +1054 + `»fže_bufãr +( +bh +); + +1055 + } +} + +1057  +šlše +  + $m¬k_bufãr_þ—n +( +bufãr_h—d + * +bh +) + +1059 ià( + `©omic_£t_bufãr_þ—n +( +bh +)) + +1060 + `__m¬k_bufãr_þ—n +( +bh +); + +1061 + } +} + +1063  + #©omic_£t_bufãr_´Ùeùed +( +bh +è + `‹¡_ªd_£t_b™ +( +BH_PrÙeùed +, &(bh)-> +b_¡©e +) + + ) + +1065  +šlše +  + $__m¬k_bufãr_´Ùeùed +( +bufãr_h—d + * +bh +) + +1067 + `»fže_bufãr +( +bh +); + +1068 + } +} + +1070  +šlše +  + $m¬k_bufãr_´Ùeùed +( +bufãr_h—d + * +bh +) + +1072 ià(! + `©omic_£t_bufãr_´Ùeùed +( +bh +)) + +1073 + `__m¬k_bufãr_´Ùeùed +( +bh +); + +1074 + } +} + +1076  +FASTCALL +( +__m¬k_bufãr_dœty +( +bufãr_h—d + * +bh +)); + +1077  +FASTCALL +( +m¬k_bufãr_dœty +( +bufãr_h—d + * +bh +)); + +1079  + #©omic_£t_bufãr_dœty +( +bh +è + `‹¡_ªd_£t_b™ +( +BH_Dœty +, &(bh)-> +b_¡©e +) + + ) + +1087  +šlše +  + $bufãr_IO_”rÜ +( +bufãr_h—d + * +bh +) + +1089 + `m¬k_bufãr_þ—n +( +bh +); + +1093 +bh +-> + `b_’d_io +(bh, 0); + +1094 + } +} + +1096  +bufãr_š£¹_šode_queue +( +bufãr_h—d + *,  +šode + *); + +1097  +šlše +  + $m¬k_bufãr_dœty_šode +( +bufãr_h—d + * +bh +,  +šode + *inode) + +1099 + `m¬k_bufãr_dœty +( +bh +); + +1100 + `bufãr_š£¹_šode_queue +( +bh +, +šode +); + +1101 + } +} + +1103  +b®ªû_dœty +( +kdev_t +); + +1104  +check_disk_chªge +( +kdev_t +); + +1105  +šv®id©e_šodes +( +su³r_block + *); + +1106  +šv®id©e_deviû +( +kdev_t +, ); + +1107  +šv®id©e_šode_·ges +( +šode + *); + +1108  +šv®id©e_šode_bufãrs +( +šode + *); + +1109  + #šv®id©e_bufãrs +( +dev +è + `__šv®id©e_bufãrs +((dev), 0) + + ) + +1110  + #de¡roy_bufãrs +( +dev +è + `__šv®id©e_bufãrs +((dev), 1) + + ) + +1111  +__šv®id©e_bufãrs +( +kdev_t + +dev +, ); + +1112  +sync_šodes +( +kdev_t +); + +1113  +sync_uÆocked_šodes +(); + +1114  +wr™e_šode_now +( +šode + *, ); + +1115  +sync_dev +( +kdev_t +); + +1116  +fsync_dev +( +kdev_t +); + +1117  +fsync_su³r +( +su³r_block + *); + +1118  +sync_šodes_sb +( +su³r_block + *); + +1119  +fsync_šode_bufãrs +( +šode + *); + +1120  +osync_šode_bufãrs +( +šode + *); + +1121  +šode_has_bufãrs +( +šode + *); + +1122  +fžem­_fd©async +( +add»ss_¥aû + *); + +1123  +fžem­_fd©awa™ +( +add»ss_¥aû + *); + +1124  +sync_su³rs +( +kdev_t +); + +1125  +bm­ +( +šode + *, ); + +1126  +nÙify_chªge +( +d’Œy + *,  +Ÿ‰r + *); + +1127  +³rmissiÚ +( +šode + *, ); + +1128  +vfs_³rmissiÚ +( +šode + *, ); + +1129  +g‘_wr™e_acûss +( +šode + *); + +1130  +d’y_wr™e_acûss +( +fže + *); + +1131  +šlše +  + $put_wr™e_acûss +( +šode + * inode) + +1133 + `©omic_dec +(& +šode +-> +i_wr™ecouÁ +); + +1134 + } +} + +1135  +šlše +  + $®low_wr™e_acûss +( +fže + *file) + +1137 ià( +fže +) + +1138 + `©omic_šc +(& +fže +-> +f_d’Œy +-> +d_šode +-> +i_wr™ecouÁ +); + +1139 + } +} + +1140  +do_pe +(*); + +1142  +ݒ_Çmei +(cÚ¡ *, , ,  +Çmeid©a + *); + +1144  +k”Ãl_»ad +( +fže + *, , *, ); + +1145  +fže + * +ݒ_exec +(const *); + +1148  +is_subdœ +( +d’Œy + *, dentry *); + +1149 +šo_t + +fšd_šode_numb” +( +d’Œy + *,  +q¡r + *); + +1159  +šlše + * + $ERR_PTR +( +”rÜ +) + +1161  (*è +”rÜ +; + +1162 + } +} + +1164  +šlše +  + $PTR_ERR +(cÚ¡ * +±r +) + +1166  (è +±r +; + +1167 + } +} + +1169  +šlše +  + $IS_ERR +(cÚ¡ * +±r +) + +1171  () +±r + > ()-1000L; + +1172 + } +} + +1181  + #LOOKUP_FOLLOW + (1) + + ) + +1182  + #LOOKUP_DIRECTORY + (2) + + ) + +1183  + #LOOKUP_CONTINUE + (4) + + ) + +1184  + #LOOKUP_POSITIVE + (8) + + ) + +1185  + #LOOKUP_PARENT + (16) + + ) + +1186  + #LOOKUP_NOALT + (32) + + ) + +1190 ’um { + mLAST_NORM +, + mLAST_ROOT +, + mLAST_DOT +, + mLAST_DOTDOT +, + mLAST_BIND +}; + +1202 +size_t + + mwr™‹n +; + +1203 +size_t + + mcouÁ +; + +1204 * + mbuf +; + +1205  + m”rÜ +; + +1206 } + t»ad_desütÜ_t +; + +1208 (* + t»ad_aùÜ_t +)( + t»ad_desütÜ_t + *,  + t·ge + *, , ); + +1211 +loff_t + + `deçuÉ_Σek +( +fže + *fže,†off_ˆ +off£t +,  +Üigš +); + +1213  + `__u£r_w®k +(cÚ¡ *, ,  +Çmeid©a + *); + +1214  + `·th_š™ +(cÚ¡ *, ,  +Çmeid©a + *); + +1215  + `·th_w®k +(cÚ¡ *,  +Çmeid©a + *); + +1216  + `·th_»Ëa£ +( +Çmeid©a + *); + +1217  + `fÞlow_down +( +vfsmouÁ + **,  +d’Œy + **); + +1218  + `fÞlow_up +( +vfsmouÁ + **,  +d’Œy + **); + +1219  +d’Œy + * + `lookup_Úe_Ën +(const *, dentry *, ); + +1220  +d’Œy + * + `lookup_hash +( +q¡r + *, dentry *); + +1221  + #u£r_·th_w®k +( +Çme +, +nd +è + `__u£r_w®k +Òame, +LOOKUP_FOLLOW +| +LOOKUP_POSITIVE +,‚d) + + ) + +1222  + #u£r_·th_w®k_lšk +( +Çme +, +nd +è + `__u£r_w®k +Òame, +LOOKUP_POSITIVE +,‚d) + + ) + +1224  + `ut +( +šode + *); + +1225  + `fÜû_d–‘e +( +šode + *); + +1226  +šode + * + `ig¿b +(inode *); + +1227 +šo_t + + `iunique +( +su³r_block + *, ino_t); + +1229 (* + tfšd_šode_t +)( + tšode + *, , *); + +1230  +šode + * + `ig‘4 +( +su³r_block + *, , +fšd_šode_t +, *); + +1231  +šlše +  +šode + * + $ig‘ +( +su³r_block + * +sb +,  +šo +) + +1233  + `ig‘4 +( +sb +, +šo +, +NULL +, NULL); + +1234 + } +} + +1236  +þ—r_šode +( +šode + *); + +1237  +šode + * +g‘_em±y_šode +(); + +1238  +šlše +  +šode + * + $Ãw_šode +( +su³r_block + * +sb +) + +1240  +šode + *šodð + `g‘_em±y_šode +(); + +1241 ià( +šode +) { + +1242 +šode +-> +i_sb + = +sb +; + +1243 +šode +-> +i_dev + = +sb +-> +s_dev +; + +1245  +šode +; + +1246 + } +} + +1247  +»move_suid +( +šode + *inode); + +1249  +š£¹_šode_hash +( +šode + *); + +1250  +»move_šode_hash +( +šode + *); + +1251  +fže + * +g‘_em±y_fžp +(); + +1252  +fže_move +( +fže + * +f +,  +li¡_h—d + * +li¡ +); + +1253  +fže_mov‘o +( +fže + * +Ãw +, fž* +Þd +); + +1254  +bufãr_h—d + * +g‘_hash_bË +( +kdev_t +, , ); + +1255  +bufãr_h—d + * +g‘blk +( +kdev_t +, , ); + +1256  +Î_rw_block +(, ,  +bufãr_h—d + * +bh +[]); + +1257  +subm™_bh +(,  +bufãr_h—d + *); + +1258  +is_»ad_Úly +( +kdev_t +); + +1259  +__b»l£ +( +bufãr_h—d + *); + +1260  +šlše +  + $b»l£ +( +bufãr_h—d + * +buf +) + +1262 ià( +buf +) + +1263 + `__b»l£ +( +buf +); + +1264 + } +} + +1265  +__bfÜg‘ +( +bufãr_h—d + *); + +1266  +šlše +  + $bfÜg‘ +( +bufãr_h—d + * +buf +) + +1268 ià( +buf +) + +1269 + `__bfÜg‘ +( +buf +); + +1270 + } +} + +1271  +£t_blocksize +( +kdev_t +, ); + +1272  +bufãr_h—d + * +b»ad +( +kdev_t +, , ); + +1273  +wakeup_bdæush +( +wa™ +); + +1275  +brw_·ge +(,  +·ge + *, +kdev_t +, [], ); + +1277 ( + tg‘_block_t +)( + tšode +*,, + tbufãr_h—d +*,); + +1280  + `block_æush·ge +( +·ge + *, ); + +1281  + `block_symlšk +( +šode + *, const *, ); + +1282  + `block_wr™e_fuÎ_·ge +( +·ge +*, +g‘_block_t +*); + +1283  + `block_»ad_fuÎ_·ge +( +·ge +*, +g‘_block_t +*); + +1284  + `block_´•¬e_wr™e +( +·ge +*, , , +g‘_block_t +*); + +1285  + `cÚt_´•¬e_wr™e +( +·ge +*, , , +g‘_block_t +*, + +1287  + `block_sync_·ge +( +·ge + *); + +1289  + `g’”ic_block_bm­ +( +add»ss_¥aû + *, , +g‘_block_t + *); + +1290  + `g’”ic_comm™_wr™e +( +fže + *,  +·ge + *, , ); + +1291  + `block_Œunÿ‹_·ge +( +add»ss_¥aû + *, +loff_t +, +g‘_block_t + *); + +1293  + `wa™fÜ_Úe_·ge +( +·ge +*); + +1294  + `g’”ic_fže_mm­ +( +fže + *,  +vm_¬—_¡ruù + *); + +1295  + `fže_»ad_aùÜ +( +»ad_desütÜ_t + * +desc +,  +·ge + *·ge,  +off£t +,  +size +); + +1296 +ssize_t + + `g’”ic_fže_»ad +( +fže + *, *, +size_t +, +loff_t + *); + +1297 +ssize_t + + `g’”ic_fže_wr™e +( +fže + *, cÚ¡ *, +size_t +, +loff_t + *); + +1298  + `do_g’”ic_fže_»ad +( +fže + *, +loff_t + *, +»ad_desütÜ_t + *, +»ad_aùÜ_t +); + +1300 +ssize_t + + `g’”ic_»ad_dœ +( +fže + *, *, +size_t +, +loff_t + *); + +1302  +fže_ݔ©iÚs + +g’”ic_ro_fÝs +; + +1304  + `vfs_»adlšk +( +d’Œy + *, *, , const *); + +1305  + `vfs_fÞlow_lšk +( +Çmeid©a + *, const *); + +1306  + `·ge_»adlšk +( +d’Œy + *, *, ); + +1307  + `·ge_fÞlow_lšk +( +d’Œy + *,  +Çmeid©a + *); + +1308  +šode_ݔ©iÚs + +·ge_symlšk_šode_ݔ©iÚs +; + +1310  + `vfs_»addœ +( +fže + *, +fžldœ_t +, *); + +1311  + `dÿche_»addœ +( +fže + *, *, +fžldœ_t +); + +1313  +fže_sy¡em_ty³ + * + `g‘_fs_ty³ +(cÚ¡ * +Çme +); + +1314  +su³r_block + * + `g‘_su³r +( +kdev_t +); + +1315  + `put_su³r +( +kdev_t +); + +1316  +šlše +  + $is_mouÁed +( +kdev_t + +dev +) + +1318  +su³r_block + * +sb + = + `g‘_su³r +( +dev +); + +1319 ià( +sb +) { + +1324 + } +} + +1325  +g’”©e_þu¡” +( +kdev_t +,  +b +[], ); + +1326  +g’”©e_þu¡”_swab32 +( +kdev_t +,  +b +[], ); + +1327 +kdev_t + +ROOT_DEV +; + +1328  +roÙ_deviû_Çme +[]; + +1331  +show_bufãrs +(); + +1332  +mouÁ_roÙ +(); + +1334 #ifdeà +CONFIG_BLK_DEV_INITRD + + +1335 +kdev_t + +»®_roÙ_dev +; + +1336  +chªge_roÙ +( +kdev_t +, const *); + +1339 +ssize_t + +ch¬_»ad +( +fže + *, *, +size_t +, +loff_t + *); + +1340 +ssize_t + +block_»ad +( +fže + *, *, +size_t +, +loff_t + *); + +1341  +»ad_ah—d +[]; + +1343 +ssize_t + +ch¬_wr™e +( +fže + *, cÚ¡ *, +size_t +, +loff_t + *); + +1344 +ssize_t + +block_wr™e +( +fže + *, cÚ¡ *, +size_t +, +loff_t + *); + +1346  +fže_fsync +( +fže + *,  +d’Œy + *, ); + +1347  +g’”ic_bufãr_fd©async +( +šode + *šode,  +¡¬t_idx +,  +’d_idx +); + +1348  +g’”ic_osync_šode +( +šode + *, ); + +1350  +šode_chªge_ok +( +šode + *,  +Ÿ‰r + *); + +1351  +šode_£‰r +( +šode + *,  +Ÿ‰r + *); + +1372  +šlše +  +d’Œy + * + $lock_·»Á +( +d’Œy + *dentry) + +1374  +d’Œy + * +dœ + = + `dg‘ +(d’Œy-> +d_·»Á +); + +1376 + `down +(& +dœ +-> +d_šode +-> +i_£m +); + +1377  +dœ +; + +1378 + } +} + +1380  +šlše +  +d’Œy + * + $g‘_·»Á +( +d’Œy + *dentry) + +1382  + `dg‘ +( +d’Œy +-> +d_·»Á +); + +1383 + } +} + +1385  +šlše +  + $uÆock_dœ +( +d’Œy + * +dœ +) + +1387 + `up +(& +dœ +-> +d_šode +-> +i_£m +); + +1388 + `dput +( +dœ +); + +1389 + } +} + +1395  +šlše +  + $doubË_down +( +£m­hÜe + * +s1 +, £m­hܐ* +s2 +) + +1397 ià( +s1 + !ð +s2 +) { + +1398 ià((è +s1 + < (è +s2 +) { + +1399  +£m­hÜe + * +tmp + = +s2 +; + +1400 +s2 + = +s1 +; s1 = +tmp +; + +1402 + `down +( +s1 +); + +1404 + `down +( +s2 +); + +1405 + } +} + +1416  +šlše +  + $ŒË_down +( +£m­hÜe + * +s1 +, + +1417  +£m­hÜe + * +s2 +, + +1418  +£m­hÜe + * +s3 +) + +1420 ià( +s1 + !ð +s2 +) { + +1421 ià((è +s1 + < (è +s2 +) { + +1422 ià((è +s1 + < (è +s3 +) { + +1423  +£m­hÜe + * +tmp + = +s3 +; + +1424 +s3 + = +s1 +; s1 = +tmp +; + +1426 ià((è +s1 + < (è +s2 +) { + +1427  +£m­hÜe + * +tmp + = +s2 +; + +1428 +s2 + = +s1 +; s1 = +tmp +; + +1431 ià((è +s1 + < (è +s3 +) { + +1432  +£m­hÜe + * +tmp + = +s3 +; + +1433 +s3 + = +s1 +; s1 = +tmp +; + +1435 ià((è +s2 + < (è +s3 +) { + +1436  +£m­hÜe + * +tmp + = +s3 +; + +1437 +s3 + = +s2 +; s2 = +tmp +; + +1440 + `down +( +s1 +); + +1441 } ià((è +s2 + < (è +s3 +) { + +1442  +£m­hÜe + * +tmp + = +s3 +; + +1443 +s3 + = +s2 +; s2 = +tmp +; + +1445 + `down +( +s2 +); + +1446 + `down +( +s3 +); + +1447 + } +} + +1449  +šlše +  + $doubË_up +( +£m­hÜe + * +s1 +, £m­hܐ* +s2 +) + +1451 + `up +( +s1 +); + +1452 ià( +s1 + !ð +s2 +) + +1453 + `up +( +s2 +); + +1454 + } +} + +1456  +šlše +  + $ŒË_up +( +£m­hÜe + * +s1 +, + +1457  +£m­hÜe + * +s2 +, + +1458  +£m­hÜe + * +s3 +) + +1460 + `up +( +s1 +); + +1461 ià( +s1 + !ð +s2 +) + +1462 + `up +( +s2 +); + +1463 + `up +( +s3 +); + +1464 + } +} + +1466  +šlše +  + $doubË_lock +( +d’Œy + * +d1 +, d’Œy * +d2 +) + +1468 + `doubË_down +(& +d1 +-> +d_šode +-> +i_£m +, & +d2 +->d_inode->i_sem); + +1469 + } +} + +1471  +šlše +  + $doubË_uÆock +( +d’Œy + * +d1 +, d’Œy * +d2 +) + +1473 + `doubË_up +(& +d1 +-> +d_šode +-> +i_£m +,& +d2 +->d_inode->i_sem); + +1474 + `dput +( +d1 +); + +1475 + `dput +( +d2 +); + +1476 + } +} + + @fs/localfs.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"fs/loÿlfs.h +" + +36  + #FS_NAME + +L +"vçt" + + ) + +40 +EFI_HANDLE + + mdev +; + +41 +EFI_FILE_HANDLE + + mvÞume +; + +42 } + tloÿlfs_´iv_¡©e_t +; + +44  + #LOCALFS_F2FD +( +f +è(( +UINTN +)(f)) + + ) + +45  + #LOCALFS_FD2F +( +fd +è(( +EFI_FILE_HANDLE +)(fd)) + + ) + +48 +loÿlfs_š‹rçû_t + + mpub_štf +; + +50 +loÿlfs_š‹rçû_t + + mpub_štf +; + +51 +loÿlfs_´iv_¡©e_t + + m´iv_d©a +; + +52 } + mloÿlfs_´iv +; + +53 } + tloÿlfs_t +; + +55  + #FS_PRIVATE +( +n +è(&((( +loÿlfs_t + *ê)-> +loÿlfs_´iv +. +´iv_d©a +)) + + ) + +58  +EFI_GUID + + gLoÿlFsPrÙocÞ + = +LOCALFS_PROTOCOL +; + +64 +EFI_HANDLE + * + mdev +; + +65 +loÿlfs_t + * + mštf +; + +66 } + tdev_b_t +; + +68  +dev_b_t + * + gdev_b +; + +69  +UINTN + + gndev +; + +71  +EFI_STATUS + + +72 + $loÿlfs_Çme +( +loÿlfs_š‹rçû_t + * +this +, +CHAR16 + * +Çme +, +UINTN + +maxËn +) + +74 ià( +Çme + =ð +NULL + || +maxËn + < 1è +EFI_INVALID_PARAMETER +; + +76 + `SŒnCpy +( +Çme +, +FS_NAME +, +maxËn +-1); + +78 +Çme +[ +maxËn +-1] = +CHAR_NULL +; + +80  +EFI_SUCCESS +; + +81 + } +} + +84  +EFI_STATUS + + +85 + $loÿlfs_ݒ +( +loÿlfs_š‹rçû_t + * +this +, +CHAR16 + * +Çme +, +UINTN + * +fd +) + +87 +loÿlfs_´iv_¡©e_t + * +lfs +; + +88 +EFI_STATUS + +¡©us +; + +89 +EFI_FILE_HANDLE + +fh +; + +91 ià( +this + =ð +NULL + || +Çme + =ðNULL || +fd + =ðNULLè +EFI_INVALID_PARAMETER +; + +93 +lfs + = + `FS_PRIVATE +( +this +); + +95 + `DBG_PRT +(( +L +"loÿlfs_ݒ oÀ%s\n", +Çme +)); + +97 +¡©us + = +lfs +-> +vÞume +-> + `O³n +Öfs->vÞume, & +fh +, +Çme +, +EFI_FILE_MODE_READ +, 0); + +98 ià( +¡©us + =ð +EFI_SUCCESS +) { + +99 * +fd + = + `LOCALFS_F2FD +( +fh +); + +101  +¡©us +; + +102 + } +} + +104  +EFI_STATUS + + +105 + $loÿlfs_»ad +( +loÿlfs_š‹rçû_t + * +this +, +UINTN + +fd +, +VOID + * +buf +, UINTN * +size +) + +107 +loÿlfs_´iv_¡©e_t + * +lfs +; + +109 ià( +this + =ð +NULL + || +fd + =ð0 || +buf + =ðNULL || +size + =ðNULLè +EFI_INVALID_PARAMETER +; + +111 +lfs + = + `FS_PRIVATE +( +this +); + +113  +lfs +-> +vÞume +-> + `R—d +( + `LOCALFS_FD2F +( +fd +), +size +, +buf +); + +114 + } +} + +116  +EFI_STATUS + + +117 + $loÿlfs_þo£ +( +loÿlfs_š‹rçû_t + * +this +, +UINTN + +fd +) + +119 +loÿlfs_´iv_¡©e_t + * +lfs +; + +121 ià( +this + =ð +NULL + || +fd + =ð0è +EFI_INVALID_PARAMETER +; + +123 +lfs + = + `FS_PRIVATE +( +this +); + +125  +lfs +-> +vÞume +-> + `Clo£ +( + `LOCALFS_FD2F +( +fd +)); + +126 + } +} + +128  +EFI_STATUS + + +129 + $loÿlfs_šfosize +( +loÿlfs_š‹rçû_t + * +this +, +UINTN + +fd +, +UINT64 + * +sz +) + +131 +loÿlfs_´iv_¡©e_t + * +lfs +; + +132 +EFI_FILE_INFO + * +šfo +; + +134 ià( +this + =ð +NULL + || +fd + =ð0 || +sz + =ðNULLè +EFI_INVALID_PARAMETER +; + +136 +lfs + = + `FS_PRIVATE +( +this +); + +138 +šfo + = + `LibFžeInfo +( + `LOCALFS_FD2F +( +fd +)); + +139 ià( +šfo + =ð +NULL +è +EFI_UNSUPPORTED +; + +141 * +sz + = +šfo +-> +FžeSize +; + +143 + `F»ePoÞ +( +šfo +); + +145  +EFI_SUCCESS +; + +146 + } +} + +148  +EFI_STATUS + + +149 + $loÿlfs_£ek +( +loÿlfs_š‹rçû_t + * +this +, +UINTN + +fd +, +UINT64 + +Ãwpos +) + +151 +loÿlfs_´iv_¡©e_t + * +lfs +; + +153 ià( +this + =ð +NULL + || +fd + =ð0è +EFI_INVALID_PARAMETER +; + +155 +lfs + = + `FS_PRIVATE +( +this +); + +157  +lfs +-> +vÞume +-> + `S‘Pos™iÚ +( + `LOCALFS_FD2F +( +fd +), +Ãwpos +); + +158 + } +} + +160  +VOID + + +161 + $loÿlfs_š™_¡©e +( +loÿlfs_t + * +loÿlfs +, +EFI_HANDLE + +dev +, +EFI_FILE_HANDLE + +vÞume +) + +163 +loÿlfs_´iv_¡©e_t + * +lfs + = + `FS_PRIVATE +( +loÿlfs +); + +166 + `Mem£t +( +loÿlfs +, 0, (*localfs)); + +168 +loÿlfs +-> +pub_štf +. +loÿlfs_Çme + =†ocalfs_name; + +169 +loÿlfs +-> +pub_štf +. +loÿlfs_ݒ + =†ocalfs_open; + +170 +loÿlfs +-> +pub_štf +. +loÿlfs_»ad + =†ocalfs_read; + +171 +loÿlfs +-> +pub_štf +. +loÿlfs_þo£ + =†ocalfs_close; + +172 +loÿlfs +-> +pub_štf +. +loÿlfs_šfosize + =†ocalfs_infosize; + +173 +loÿlfs +-> +pub_štf +. +loÿlfs_£ek + =†ocalfs_seek; + +175 +lfs +-> +dev + = dev; + +176 +lfs +-> +vÞume + = volume; + +177 + } +} + +179  +EFI_STATUS + + +180 + $loÿlfs_š¡®l_Úe +( +EFI_HANDLE + +dev +, +VOID + ** +štf +) + +183 +EFI_STATUS + +¡©us +; + +184 +loÿlfs_t + * +loÿlfs +; + +185 +EFI_FILE_IO_INTERFACE + * +vÞume +; + +186 +EFI_FILE_HANDLE + +vÞume_fh +; + +188 +¡©us + = +BS +-> + `HªdËPrÙocÞ + ( +dev +, & +LoÿlFsPrÙocÞ +, ( +VOID + **)& +loÿlfs +); + +189 ià( +¡©us + =ð +EFI_SUCCESS +) { + +190 + `ERR_PRT +(( +L +"W¬nšg: foundƒxi¡šg % ´ÙocÞ oÀdeviû", +FS_NAME +)); + +191  +found +; + +194 +¡©us + = +BS +-> + `HªdËPrÙocÞ + ( +dev +, & +FžeSy¡emPrÙocÞ +, ( +VOID + **)& +vÞume +); + +195 ià( + `EFI_ERROR +( +¡©us +)è +EFI_INVALID_PARAMETER +; + +197 +¡©us + = +vÞume +-> + `O³nVÞume +(vÞume, & +vÞume_fh +); + +198 ià( + `EFI_ERROR +( +¡©us +)) { + +199 + `ERR_PRT +(( +L +"cannot open volume")); + +200  +¡©us +; + +203 +loÿlfs + = ( +loÿlfs_t + *) + `®loc +((*loÿlfs), +EfiLßd”D©a +); + +204 ià( +loÿlfs + =ð +NULL +) { + +205 + `ERR_PRT +(( +L +"çžedØ®loÿ‹ %s", +FS_NAME +)); + +206  +EFI_OUT_OF_RESOURCES +; + +208 + `loÿlfs_š™_¡©e +( +loÿlfs +, +dev +, +vÞume_fh +); + +210 +¡©us + = + `LibIn¡®lPrÙocÞIÁ”çûs +(& +dev +, & +LoÿlFsPrÙocÞ +, +loÿlfs +, +NULL +); + +211 ià( + `EFI_ERROR +( +¡©us +)) { + +212 + `ERR_PRT +(( +L +"CªnÙ in¡®È% ´ÙocÞ: %r", +FS_NAME +, +¡©us +)); + +213 + `ä“ +( +loÿlfs +); + +214  +¡©us +; + +216 +found +: + +217 ià( +štf +è*štàð( +VOID + *) +loÿlfs +; + +219 + `VERB_PRT +(3, + +220 { +EFI_DEVICE_PATH + * +dp +; +CHAR16 + * +¡r +; + +221 +dp + = + `DeviûP©hFromHªdË +( +dev +); + +222 +¡r + = + `DeviûP©hToSŒ +( +dp +); + +223 + `Pršt +( +L +"©ched % tØ%s\n", +FS_NAME +, +¡r +); + +224 + `F»ePoÞ +( +¡r +); + +227  +EFI_SUCCESS +; + +228 + } +} + +230 +EFI_STATUS + + +231 + $loÿlfs_š¡®l +( +VOID +) + +233 +UINTN + +size + = 0; + +234 +UINTN + +i +; + +235 +EFI_STATUS + +¡©us +; + +236 +VOID + * +štf +; + +238 +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, & +FžeSy¡emPrÙocÞ +, +NULL +, & +size +, NULL); + +239 ià( +size + =ð0è +EFI_UNSUPPORTED +; + +241 + `DBG_PRT +(( +L +"size=%d", +size +)); + +243 +dev_b + = ( +dev_b_t + *) + `®loc +( +size +, +EfiLßd”D©a +); + +244 ià( +dev_b + =ð +NULL +) { + +245 + `ERR_PRT +(( +L +"failedo‡llocate handleable")); + +246  +EFI_OUT_OF_RESOURCES +; + +249 +¡©us + = +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, & +FžeSy¡emPrÙocÞ +, +NULL +, & +size +, ( +VOID + **) +dev_b +); + +250 ià( +¡©us + !ð +EFI_SUCCESS +) { + +251 + `ERR_PRT +(( +L +"çžedØg‘ hªdËs: %r", +¡©us +)); + +252 + `ä“ +( +dev_b +); + +253  +¡©us +; + +255 +ndev + = +size + / ( +EFI_HANDLE +); + +257  +i +=0; i < +ndev +; i++) { + +258 +štf + = +NULL +; + +259 + `loÿlfs_š¡®l_Úe +( +dev_b +[ +i +]. +dev +, & +štf +); + +261 +dev_b +[ +i +]. +štf + = intf; + +264  +EFI_SUCCESS +; + +265 + } +} + +267 +EFI_STATUS + + +268 + $loÿlfs_unš¡®l +( +VOID +) + +271 +loÿlfs_´iv_¡©e_t + * +lfs +; + +272 +EFI_STATUS + +¡©us +; + +273 +UINTN + +i +; + +275  +i +=0; i < +ndev +; i++) { + +276 ià( +dev_b +[ +i +]. +štf + =ð +NULL +) ; + +277 +lfs + = + `FS_PRIVATE +( +dev_b +[ +i +]. +štf +); + +278 +¡©us + = +BS +-> + `Unš¡®lPrÙocÞIÁ”çû +( +lfs +-> +dev +, & +LoÿlFsPrÙocÞ +, +dev_b +[ +i +]. +štf +); + +279 ià( + `EFI_ERROR +( +¡©us +)) { + +280 + `ERR_PRT +(( +L +"Unš¡®È% ”rÜ: %r", +FS_NAME +, +¡©us +)); + +283 + `VERB_PRT +(3, + +284 { +EFI_DEVICE_PATH + * +dp +; +CHAR16 + * +¡r +; + +285 +dp + = + `DeviûP©hFromHªdË +( +lfs +-> +dev +); + +286 +¡r + = + `DeviûP©hToSŒ +( +dp +); + +287 + `Pršt +( +L +"unš¡®Ëd % Ú %s\n", +FS_NAME +, +¡r +); + +288 + `F»ePoÞ +( +¡r +); + +290 + `ä“ +( +dev_b +[ +i +]. +štf +); + +292 ià( +dev_b +è + `ä“ +(dev_tab); + +294  +EFI_SUCCESS +; + +295 + } +} + + @fs/localfs.h + +26 #iâdeà +__LOCALFS_H__ + + +27  + #__LOCALFS_H__ + + + ) + +29 +INTERFACE_DECL +( +_loÿlfs_š‹rçû_t +); + +31  + s_loÿlfs_š‹rçû_t + { + +32 +EFI_STATUS + (* +loÿlfs_Çme +)( +_loÿlfs_š‹rçû_t + * + mthis +, +CHAR16 + * + mÇme +, +UINTN + + mmaxËn +); + +33 +EFI_STATUS + (* +loÿlfs_ݒ +)( +_loÿlfs_š‹rçû_t + * + mthis +, +CHAR16 + * + mÇme +, +UINTN + * + mfd +); + +34 +EFI_STATUS + (* +loÿlfs_»ad +)( +_loÿlfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +VOID + * + mbuf +, UINTN * + msize +); + +35 +EFI_STATUS + (* +loÿlfs_þo£ +)( +_loÿlfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +); + +36 +EFI_STATUS + (* +loÿlfs_šfosize +)( +_loÿlfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +UINT64 + * + msize +); + +37 +EFI_STATUS + (* +loÿlfs_£ek +)( +_loÿlfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +UINT64 + + mÃwpos +); + +38 } + tloÿlfs_š‹rçû_t +; + +40  + #LOCALFS_PROTOCOL + \ + +41 { 0x3a42ff5d, 0x43c9, 0x4db8, {0x82, 0x4e, 0xb8, 0x5b, 0xab, 0x97, 0x63, 0xcc} } + + ) + +43 +EFI_STATUS + +loÿlfs_š¡®l +( +VOID +); + +44 +EFI_STATUS + +loÿlfs_unš¡®l +( +VOID +); + + @fs/netfs.c + +26  + ~ + +27  + ~ + +29  + ~"fs/Ãtfs.h +" + +31  + ~"–žo.h +" + +33  + #FS_NAME + +L +"Ãtfs" + + ) + +35  + #NETFS_DEFAULT_BUFSIZE + 16* +MB + + + ) + +36  + #NETFS_DEFAULT_BUFSIZE_INC + 8* +MB + + + ) + +38  + #NETFS_DEFAULT_SERVER_TYPE + +EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP + + + ) + +39  + #NETFS_FD_MAX + 2 + + ) + +41  + s_Ãtfs_fd + { + +42  +_Ãtfs_fd + * + mÃxt +; + +44 +CHAR8 + * + mÃtbuf +; + +45 +UINT64 + + mÃtbuf_maxsize +; + +46 +UINTN + + mÃtbuf_size +; + +47 +UINT64 + + mÃtbuf_pos +; + +48 +BOOLEAN + + mis_v®id +; + +49 +BOOLEAN + + mÃtbuf_»u£ +; + +51 +CHAR16 + + mÏ¡_fže +[ +FILENAME_MAXLEN +]; + +52 } + tÃtfs_fd_t +; + +56 +EFI_PXE_BASE_CODE + * + mpxe +; + +57 +EFI_HANDLE + + mdev +; + +58 +BOOLEAN + + musšg_pxe +; + +60 +EFI_IP_ADDRESS + + m¤v_ +; + +61 +EFI_IP_ADDRESS + + mþn_ +; + +62 +EFI_IP_ADDRESS + + mgw_ +; + +63 +EFI_IP_ADDRESS + + mÃtmask +; + +64 +UINT8 + + mhw_addr +[16]; + +66 +Ãtfs_fd_t + + mfd_b +[ +NETFS_FD_MAX +]; + +67 +Ãtfs_fd_t + * + mä“_fd +; + +68 +UINTN + + mä“_fd_couÁ +; + +70 } + tÃtfs_´iv_¡©e_t +; + +72  + #NETFS_F2FD +( +l +, +f +è( +UINTN +)((f)-Ö)-> +fd_b +) + + ) + +73  + #NETFS_FD2F +( +l +, +fd +è(Ö)-> +fd_b ++fd) + + ) + +74  + #NETFS_F_INVALID +( +f +è((f)-> +is_v®id + =ð +FALSE +) + + ) + +78 +Ãtfs_š‹rçû_t + + mpub_štf +; + +80 +Ãtfs_š‹rçû_t + + mpub_štf +; + +81 +Ãtfs_´iv_¡©e_t + + m´iv_d©a +; + +82 } + mÃtfs_´iv +; + +83 } + tÃtfs_t +; + +85  + #FS_PRIVATE +( +n +è(&((( +Ãtfs_t + *ê)-> +Ãtfs_´iv +. +´iv_d©a +)) + + ) + +88 +EFI_HANDLE + * + mdev +; + +89 +Ãtfs_t + * + mštf +; + +90 } + tdev_b_t +; + +92  +dev_b_t + * + gdev_b +; + +93  +UINTN + + gndev +; + +95  +EFI_GUID + + gN‘FsPrÙocÞ + = +NETFS_PROTOCOL +; + +99  +EFI_PXE_BASE_CODE_CALLBACK_STATUS + + +100 + $Ãtfs_ÿÎback_func +( + +101 +IN + +EFI_PXE_BASE_CODE_CALLBACK + * +this +, + +102 +IN + +EFI_PXE_BASE_CODE_FUNCTION + +funùiÚ +, + +103 +IN + +BOOLEAN + +»ûived +, + +104 +IN + +UINT32 + +·ck‘_Ën +, + +105 +IN + +EFI_PXE_BASE_CODE_PACKET + * +·ck‘ + +OPTIONAL + + +108 + `Pršt +( +L +"Ãtfs_ÿÎback c®Ëd„eûived=%d…ack‘_Ën=%d\n", +»ûived +, +·ck‘_Ën +); + +109  +EFI_ABORTED +; + +110 + } +} + +112  +EFI_PXE_BASE_CODE_CALLBACK + + gÃtfs_ÿÎback + = { + +113 +EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION +, + +114 & +Ãtfs_ÿÎback_func + + +118  +Ãtfs_fd_t + * + +119 + $Ãtfs_fd_®loc +( +Ãtfs_´iv_¡©e_t + * +nfs +, +CHAR16 + * +Çme +) + +121 +Ãtfs_fd_t + * +tmp + = +NULL +, * +´ev + = NULL, * +m©ch +; + +122 +UINT8 + +Ãtbuf_»u£ + = 0; + +124 ià( +nfs +-> +ä“_fd + =ð +NULL +) { + +125 + `ERR_PRT +(( +L +"out of file descriptor")); + +126  +NULL +; + +128 +m©ch + = +nfs +-> +ä“_fd +; + +129  +tmp + = +nfs +-> +ä“_fd +;mp;m°ðtmp-> +Ãxt +) { + +130 ià(! + `SŒCmp +( +Çme +, +tmp +-> +Ï¡_fže +)) { + +131 + `DBG_PRT +(( +L +"Usšg cached fž% Ãtbuf_size=%d", +tmp +-> +Ï¡_fže +,mp-> +Ãtbuf_size +)); + +132 +Ãtbuf_»u£ + = 1; + +133 +m©ch + = +tmp +; + +136 +´ev + = +tmp +; + +139 +m©ch +-> +Ãtbuf_»u£ + =‚etbuf_reuse; + +141 ià( +m©ch + =ð +nfs +-> +ä“_fd +) + +142 +nfs +-> +ä“_fd + = +m©ch +-> +Ãxt +; + +144 +´ev +-> +Ãxt + = +m©ch +->next; + +146 +nfs +-> +ä“_fd_couÁ +--; + +148  +m©ch +; + +149 + } +} + +151  +VOID + + +152 + $Ãtfs_fd_ä“ +( +Ãtfs_´iv_¡©e_t + * +nfs +, +Ãtfs_fd_t + * +f +) + +154 ià( +f + =ð +NULL +) { + +155 + `ERR_PRT +(( +L +"invalid fd")); + +158 +f +-> +Ãxt + = +nfs +-> +ä“_fd +; + +161 +f +-> +is_v®id + = +FALSE +; + +163 +nfs +-> +ä“_fd + = +f +; + +164 +nfs +-> +ä“_fd_couÁ +++; + +166 ià( +nfs +-> +ä“_fd_couÁ + > +NETFS_FD_MAX +) { + +167 + `ERR_PRT +(( +L +"toØmªy f»desütÜ %d", +nfs +-> +ä“_fd_couÁ +)); + +169 + } +} + +172  +INTN + + +173 + $Ãtbuf_®loc +( +Ãtfs_fd_t + * +f +) + +176 ià( +f +-> +Ãtbuf + != 0)  0; + +178 +f +-> +Ãtbuf_pos + = 0; + +180 +f +-> +Ãtbuf + = ( +CHAR8 + *) + `®loc_·ges +( + `EFI_SIZE_TO_PAGES +(f-> +Ãtbuf_maxsize +), +EfiLßd”D©a +, +AÎoÿ‹AnyPages +, 0); + +182  +f +-> +Ãtbuf + == 0 ? -1 : 0; + +183 + } +} + +185  +EFI_STATUS + + +186 + $Ãtfs_Çme +( +Ãtfs_š‹rçû_t + * +this +, +CHAR16 + * +Çme +, +UINTN + +maxËn +) + +188 ià( +Çme + =ð +NULL + || +maxËn + < 1è +EFI_INVALID_PARAMETER +; + +190 + `SŒnCpy +( +Çme +, +FS_NAME +, +maxËn +-1); + +192 +Çme +[ +maxËn +-1] = +CHAR_NULL +; + +194  +EFI_SUCCESS +; + +195 + } +} + +197  +VOID + + +198 + $Ãtfs_exŒaù_ +( +Ãtfs_´iv_¡©e_t + * +nfs +) + +200 +EFI_PXE_BASE_CODE + * +pxe + = +nfs +->pxe; + +202 ià( +pxe +-> +Mode +-> +PxeDiscov”V®id +) { + +203 +nfs +-> +usšg_pxe + = +TRUE +; + +204 + `Memýy +(& +nfs +-> +¤v_ +, +pxe +-> +Mode +-> +PxeR•ly +. +Dhýv4 +. +BoÙpSiAddr +, ( +EFI_IP_ADDRESS +)); + +205 + `Memýy +(& +nfs +-> +hw_addr +, +pxe +-> +Mode +-> +PxeR•ly +. +Dhýv4 +. +BoÙpHwAddr +, 16*( +UINT8 +)); + +207 + `Memýy +(& +nfs +-> +¤v_ +, +pxe +-> +Mode +-> +DhýAck +. +Dhýv4 +. +BoÙpSiAddr +, ( +EFI_IP_ADDRESS +)); + +208 + `Memýy +(& +nfs +-> +hw_addr +, +pxe +-> +Mode +-> +DhýAck +. +Dhýv4 +. +BoÙpHwAddr +, (nfs->hw_addr)); + +211 + `Memýy +(& +nfs +-> +þn_ +, & +pxe +-> +Mode +-> +StiÚIp +, ( +EFI_IP_ADDRESS +)); + +212 + `Memýy +(& +nfs +-> +Ãtmask +, & +pxe +-> +Mode +-> +SubÃtMask +, ( +EFI_IP_ADDRESS +)); + +217 ià( +pxe +-> +Mode +-> +Rou‹TabËEÁr›s +>0) + +218 + `Memýy +(& +nfs +-> +gw_ +, & +pxe +-> +Mode +-> +Rou‹TabË +[0]. +GwAddr +, ( +EFI_IP_ADDRESS +)); + +220 + `VERB_PRT +(1, + `Pršt +( +L +"PXE PxeDiscov”V®id: %s\n", +pxe +-> +Mode +-> +PxeDiscov”V®id +? L"Yes (PXE-aware DHCPD)" : L"No (Regular DHCPD)")); + +222 +¡©us + = +BS +-> + `HªdËPrÙocÞ +( +dev +, & +PxeC®lbackPrÙocÞ +, ( +VOID + **)& +Ãtfs_ÿÎback +); + +223 +¡©us + = + `LibIn¡®lPrÙocÞIÁ”çûs +(& +dev +, & +PxeC®lbackPrÙocÞ +, & +Ãtfs_ÿÎback +, +NULL +); + +224 + `Pršt +( +L +"PXE C®lback suµÜˆ: %r\n", +¡©us +); + +225 ià( +¡©us + =ð +EFI_SUCCESS +) { + +226 +BOOLEAN + +do™ + = +TRUE +; + +227 +¡©us + = +pxe +-> + `S‘P¬am‘”s +Õxe, +NULL +, NULL, NULL, NULL, & +do™ +); + +228 + `Pršt +( +L +"PXE C®lback S‘P¬am‘”s: %r\n", +¡©us +); + +234 + `VERB_PRT +(1, + `Pršt +( +L +"Local IP: %d.%d.%d.%d\n", + +235 +pxe +-> +Mode +-> +StiÚIp +. +v4 +. +Addr +[0] & 0xff, + +236 +pxe +-> +Mode +-> +StiÚIp +. +v4 +. +Addr +[1] & 0xff, + +237 +pxe +-> +Mode +-> +StiÚIp +. +v4 +. +Addr +[2] & 0xff, + +238 +pxe +-> +Mode +-> +StiÚIp +. +v4 +. +Addr +[3] & 0xff)); + +240 + `VERB_PRT +(1, + `Pršt +( +L +"SM: %d.%d.%d.%d\n", + +241 +pxe +-> +Mode +-> +SubÃtMask +. +v4 +. +Addr +[0] & 0xff, + +242 +pxe +-> +Mode +-> +SubÃtMask +. +v4 +. +Addr +[1] & 0xff, + +243 +pxe +-> +Mode +-> +SubÃtMask +. +v4 +. +Addr +[2] & 0xff, + +244 +pxe +-> +Mode +-> +SubÃtMask +. +v4 +. +Addr +[3] & 0xff)); + +246 + `VERB_PRT +(1, + `Pršt +( +L +"TFTPD IP: %d.%d.%d.%d\n", + +247 +nfs +-> +¤v_ +. +v4 +. +Addr +[0] & 0xff, + +248 +nfs +-> +¤v_ +. +v4 +. +Addr +[1] & 0xff, + +249 +nfs +-> +¤v_ +. +v4 +. +Addr +[2] & 0xff, + +250 +nfs +-> +¤v_ +. +v4 +. +Addr +[3] & 0xff)); + +252 + `VERB_PRT +(1, + `Pršt +( +L +"Gateway IP: %d.%d.%d.%d\n", + +253 +nfs +-> +gw_ +. +v4 +. +Addr +[0] & 0xff, + +254 +nfs +-> +gw_ +. +v4 +. +Addr +[1] & 0xff, + +255 +nfs +-> +gw_ +. +v4 +. +Addr +[2] & 0xff, + +256 +nfs +-> +gw_ +. +v4 +. +Addr +[3] & 0xff)); + +258 + } +} + +260  +EFI_STATUS + + +261 + $Ãtfs_¡¬t +( +EFI_PXE_BASE_CODE + * +pxe +) + +263 +EFI_STATUS + +¡©us +; + +265 +¡©us + = +pxe +-> + `S¹ +Õxe, +FALSE +); + +266 ià( + `EFI_ERROR +( +¡©us +))  status; + +268  +pxe +-> + `Dhý +Õxe, +FALSE +); + +269 + } +} + +271  +EFI_STATUS + + +272 + $Ãtfs_ݒ +( +Ãtfs_š‹rçû_t + * +this +, +CHAR16 + * +Çme +, +UINTN + * +fd +) + +274 +Ãtfs_´iv_¡©e_t + * +nfs +; + +275 +Ãtfs_fd_t + * +f +; + +276 +EFI_STATUS + +¡©us +; + +277 +CHAR8 + +ascii_Çme +[ +FILENAME_MAXLEN +]; + +278 +UINTN + +blocksize + = 0, +´ev_Ãtbufsize +; + +280 ià( +this + =ð +NULL + || +Çme + =ðNULL || +fd + =ðNULLè +EFI_INVALID_PARAMETER +; + +282 +nfs + = + `FS_PRIVATE +( +this +); + +284 ià( +nfs +-> +pxe + =ð +NULL +è +EFI_INVALID_PARAMETER +; + +289 ià( +nfs +-> +pxe +-> +Mode +-> +S¹ed + =ð +FALSE +) { + +290 +¡©us + = + `Ãtfs_¡¬t +( +nfs +-> +pxe +); + +291 ià( + `EFI_ERROR +( +¡©us +))  status; + +292 + `Ãtfs_exŒaù_ +( +nfs +); + +295 ià(( +f += + `Ãtfs_fd_®loc +( +nfs +, +Çme +)è=ð +NULL +è +EFI_OUT_OF_RESOURCES +; + +297 ià( +f +-> +Ãtbuf_»u£ +) { + +298 +f +-> +Ãtbuf_pos + = 0; + +299 +f +-> +is_v®id + = +TRUE +; + +300 * +fd + = + `NETFS_F2FD +( +nfs +, +f +); + +301  +EFI_SUCCESS +; + +303 +f +-> +Ãtbuf_maxsize + = +NETFS_DEFAULT_BUFSIZE +; + +305 ià( +f +-> +Ãtbuf + =ð +NULL + && + `Ãtbuf_®loc +(f) == -1) { + +306 + `Ãtfs_fd_ä“ +( +nfs +, +f +); + +307  +EFI_OUT_OF_RESOURCES +; + +312 + `U2ascii +( +Çme +, +ascii_Çme +, +FILENAME_MAXLEN +); + +314 + `VERB_PRT +(2, + `Pršt +( +L +"dowÆßdšg %¨äom %d.%d.%d.%d...", +ascii_Çme +, + +315 +nfs +-> +¤v_ +. +v4 +. +Addr +[0], + +316 +nfs +-> +¤v_ +. +v4 +. +Addr +[1], + +317 +nfs +-> +¤v_ +. +v4 +. +Addr +[2], + +318 +nfs +-> +¤v_ +. +v4 +. +Addr +[3])); + +319 +»Œy +: + +320 +f +-> +Ãtbuf_size + = f-> +Ãtbuf_maxsize +; + +322 + `DBG_PRT +(( +L +"\nbefܐÃtbuf:0x%lx‚‘buf_size=%ld\n", +f +-> +Ãtbuf +, f-> +Ãtbuf_size +)); + +338 +´ev_Ãtbufsize + = +f +-> +Ãtbuf_size +; + +340 +¡©us + = +nfs +-> +pxe +-> + `Mtáp +Òfs->pxe, +EFI_PXE_BASE_CODE_TFTP_READ_FILE +, +f +-> +Ãtbuf +, +FALSE +, + +341 &( +f +-> +Ãtbuf_size +), + +342 +blocksize + > 0 ? &blocksiz: +NULL +, + +343 & +nfs +-> +¤v_ +, + +344 +ascii_Çme +, + +345 +NULL +, + +346 +FALSE +); + +348 + `DBG_PRT +(( +L +"after Mftp=%r‚etbuf:0x%lx‚etbuf_size=%ld blocksize=%ld\n", + +349 +¡©us +, + +350 +f +-> +Ãtbuf +, + +351 +f +-> +Ãtbuf_size +, + +352 +blocksize +)); + +354 ià( +¡©us + =ð +EFI_TIMEOUT + && +blocksize + == 0) { + +359 +¡©us + = +EFI_BUFFER_TOO_SMALL +; + +364 ià( +¡©us + =ð +EFI_BUFFER_TOO_SMALL +) { + +365 + `DBG_PRT +(( +L +"bufã¸toØsm®l,‚“d‚‘buf_size=%d", +f +-> +Ãtbuf_size +)); + +372 ià( +f +-> +Ãtbuf_size + =ð +´ev_Ãtbufsize +) { + +373 +f +-> +Ãtbuf_maxsize + +ð +NETFS_DEFAULT_BUFSIZE_INC +; + +376 +f +-> +Ãtbuf_maxsize + = f-> +Ãtbuf_size +; + +378 + `ä“ +( +f +-> +Ãtbuf +); + +380 +f +-> +Ãtbuf + = +NULL +; + +382 ià( + `Ãtbuf_®loc +( +f +è=ð0è +»Œy +; + +387 ià( +¡©us + =ð +EFI_SUCCESS +) { + +389 +f +-> +Ãtbuf_pos + = 0; + +392 + `SŒCpy +( +f +-> +Ï¡_fže +, +Çme +); + +394 +f +-> +is_v®id + = 1; + +396 * +fd + = + `NETFS_F2FD +( +nfs +, +f +); + +397 + `VERB_PRT +(2, + `Pršt +( +L +"Done\n")); + +399 + `Ãtfs_fd_ä“ +( +nfs +, +f +); + +400 + `VERB_PRT +(2, + `Pršt +( +L +"Fažed: %r\n", +¡©us +)); + +402 + `DBG_PRT +(( +L +"Fž% Ãtbuf_size=%d: %r", +Çme +, +f +-> +Ãtbuf_size +, +¡©us +)); + +404 + `Pršt +( +L +"\n---\n"); + +405 { +INTN + +i +; + +406  +i +=0; i < +Ãtbuf_size +; i++) { + +407 + `Pršt +( +L +"%c", ( +CHAR16 +) +Ãtbuf +[ +i +]); + +410 + `Pršt +( +L +"\n---\n"); + +412  +¡©us +; + +413 + } +} + +416  +EFI_STATUS + + +417 + $Ãtfs_»ad +( +Ãtfs_š‹rçû_t + * +this +, +UINTN + +fd +, +VOID + * +buf +, UINTN * +size +) + +419 +Ãtfs_´iv_¡©e_t + * +nfs +; + +420 +Ãtfs_fd_t + * +f +; + +421 +UINTN + +couÁ +; + +423 ià( +this + =ð +NULL + || +fd + >ð +NETFS_FD_MAX + || +buf + =ðNULL || +size + =ðNULLè +EFI_INVALID_PARAMETER +; + +425 +nfs + = + `FS_PRIVATE +( +this +); + +426 +f + = + `NETFS_FD2F +( +nfs +, +fd +); + +428 ià( + `NETFS_F_INVALID +( +f +)è +EFI_INVALID_PARAMETER +; + +430 +couÁ + = + `MIN +(* +size +, +f +-> +Ãtbuf_size + - f-> +Ãtbuf_pos +); + +432 ià( +couÁ +è + `Memýy +( +buf +, +f +-> +Ãtbuf ++f-> +Ãtbuf_pos +, count); + +434 * +size + = +couÁ +; + +435 +f +-> +Ãtbuf_pos + +ð +couÁ +; + +437  +EFI_SUCCESS +; + +438 + } +} + +440  +EFI_STATUS + + +441 + $Ãtfs_þo£ +( +Ãtfs_š‹rçû_t + * +this +, +UINTN + +fd +) + +443 +Ãtfs_´iv_¡©e_t + * +nfs +; + +444 +Ãtfs_fd_t + * +f +; + +446 ià( +this + =ð +NULL + || +fd + >ð +NETFS_FD_MAX +è +EFI_INVALID_PARAMETER +; + +448 +nfs + = + `FS_PRIVATE +( +this +); + +449 +f + = + `NETFS_FD2F +( +nfs +, +fd +); + +451 ià( + `NETFS_F_INVALID +( +f +)è +EFI_INVALID_PARAMETER +; + +453 + `Ãtfs_fd_ä“ +( +nfs +, +f +); + +455  +EFI_SUCCESS +; + +456 + } +} + +458  +EFI_STATUS + + +459 + $Ãtfs_£ek +( +Ãtfs_š‹rçû_t + * +this +, +UINTN + +fd +, +UINT64 + +Ãwpos +) + +461 +Ãtfs_´iv_¡©e_t + * +nfs +; + +462 +Ãtfs_fd_t + * +f +; + +464 ià( +this + =ð +NULL + || +fd + >ð +NETFS_FD_MAX +è +EFI_INVALID_PARAMETER +; + +466 +nfs + = + `FS_PRIVATE +( +this +); + +467 +f + = + `NETFS_FD2F +( +nfs +, +fd +); + +469 ià( + `NETFS_F_INVALID +( +f +)è +EFI_INVALID_PARAMETER +; + +471 ià( +Ãwpos + > +f +-> +Ãtbuf_size +è +EFI_INVALID_PARAMETER +; + +473 +f +-> +Ãtbuf_pos + = +Ãwpos +; + +475  +EFI_SUCCESS +; + +476 + } +} + +478  +EFI_STATUS + + +479 + $Ãtfs_šfosize +( +Ãtfs_š‹rçû_t + * +this +, +UINTN + +fd +, +UINT64 + * +sz +) + +481 +Ãtfs_´iv_¡©e_t + * +nfs +; + +482 +Ãtfs_fd_t + * +f +; + +484 ià( +this + =ð +NULL + || +fd + >ð +NETFS_FD_MAX + || +sz + =ðNULLè +EFI_INVALID_PARAMETER +; + +486 +nfs + = + `FS_PRIVATE +( +this +); + +487 +f + = + `NETFS_FD2F +( +nfs +, +fd +); + +489 ià( + `NETFS_F_INVALID +( +f +)è +EFI_INVALID_PARAMETER +; + +491 * +sz + = +f +-> +Ãtbuf_size +; + +493  +EFI_SUCCESS +; + +494 + } +} + +496  +INTN + + +497 + $fšd_dhý_ÝtiÚ +( +EFI_PXE_BASE_CODE_PACKET + * +·ck‘ +, +UINT8 + +u£_v6 +, UINT8 +ÝtiÚ +, +CHAR8 + * +¡r +, +INTN + * +Ën +) + +499 +INTN + +i + = 0; + +500 +UINT8 + +g +, +Ëngth +; + +501 +UINT8 + * +Ýts + = +·ck‘ +-> +Dhýv4 +. +DhýO±iÚs +; + +503 * +Ën + = 0; + +506 ià( +i + >= 56) { + +507 + `DBG_PRT +(( +L +"reachƒnd of options (no marker)\n")); + +510 +g + = +Ýts +[ +i +++]; + +512 ià( +g + == 0) ; + +513 ià( +g + == 255) ; + +515 +Ëngth + = +Ýts +[ +i +++]; + +518 { +UINT8 + +l + = +Ëngth +, +k + = 0; + +519 + `Pršt +( +L +"found o±iÚ %d†’=%d: ", +g +, +Ëngth +); + +520  +l +--è{ + `Pršt +( +L +"%c(%d)\n", ( +CHAR16 +) +Ýts +[ +k +], opts[k]); k++; } + +521 + `Pršt +( +L +"\n"); + +524 ià( +g + =ð +ÝtiÚ +) { + +525 * +Ën + = +Ëngth +; + +526  +Ëngth +--è{ * +¡r +++ = +Ýts +[ +i +++]; } + +529 +i + +ð +Ëngth +; + +532 + } +} + +534  +EFI_STATUS + + +535 + $Ãtfs_g‘šfo +( +Ãtfs_š‹rçû_t + * +this +, +Ãtfs_šfo_t + * +šfo +) + +537 +Ãtfs_´iv_¡©e_t + * +nfs +; + +538 +CHAR8 + +¡r +[256]; + +539 +INTN + +Ën +, +r +; + +541 ià( +this + =ð +NULL + || +šfo + =ðNULLè +EFI_INVALID_PARAMETER +; + +543 +nfs + = + `FS_PRIVATE +( +this +); + +545 + `Memýy +(& +šfo +-> +þn_addr +, & +nfs +-> +þn_ +, ( +EFI_IP_ADDRESS +)); + +546 + `Memýy +(& +šfo +-> +¤v_addr +, & +nfs +-> +¤v_ +, ( +EFI_IP_ADDRESS +)); + +547 + `Memýy +(& +šfo +-> +Ãtmask +, & +nfs +->Ãtmask, ( +EFI_IP_ADDRESS +)); + +548 + `Memýy +(& +šfo +-> +gw_addr +, & +nfs +-> +gw_ +, ( +EFI_IP_ADDRESS +)); + +549 + `Memýy +(& +šfo +-> +hw_addr +, & +nfs +->hw_addr, (info->hw_addr)); + +551 +šfo +-> +usšg_pxe + = +nfs +->using_pxe; + +552 +šfo +-> +¡¬‹d + = +nfs +-> +pxe +-> +Mode +-> +S¹ed +; + +553 +šfo +-> +usšg_v6 + = +nfs +-> +pxe +-> +Mode +-> +UsšgIpv6 +; + +555 ià( +nfs +-> +pxe +-> +Mode +-> +UsšgIpv6 +è +sk_ÝtiÚs +; + +557 +r + = + `fšd_dhý_ÝtiÚ +(& +nfs +-> +pxe +-> +Mode +-> +DhýAck +,nfs->pxe->Mode-> +UsšgIpv6 +, 15, +¡r +, & +Ën +); + +558 +¡r +[ +Ën +] = '\0'; + +559 + `ascii2U +( +¡r +, +šfo +-> +domašame +, 255); + +561 + `VERB_PRT +(3, + `Pršt +( +L +"domaš(15): %a\n", +¡r +)); + +563 +r + = + `fšd_dhý_ÝtiÚ +(& +nfs +-> +pxe +-> +Mode +-> +DhýAck +,nfs->pxe->Mode-> +UsšgIpv6 +, 12, +¡r +, & +Ën +); + +564 +¡r +[ +Ën +] = '\0'; + +565 + `ascii2U +( +¡r +, +šfo +-> +ho¡Çme +, 255); + +567 + `VERB_PRT +(3, + `Pršt +( +L +"ho¡Çme(12): %a\n", +¡r +)); + +572 ià( +nfs +-> +usšg_pxe + == 0) { + +573 + `ascii2U +( +nfs +-> +pxe +-> +Mode +-> +DhýAck +. +Dhýv4 +. +BoÙpBoÙFže +, +šfo +-> +boÙfže +, +NETFS_BOOTFILE_MAXLEN +); + +574 + `VERB_PRT +(3, + `Pršt +( +L +"boÙfže: %s\n", +šfo +-> +boÙfže +)); + +577 +sk_ÝtiÚs +: + +578  +EFI_SUCCESS +; + +579 + } +} + +581  +UINT16 + + +582 + $fšd_pxe_£rv”_ty³ +( +EFI_PXE_BASE_CODE + * +pxe +) + +584 +INTN + +i + = 0, +max +; + +585 +UINT8 + +g +, +Ëngth +; + +586 +UINT8 + * +Ýts + = +pxe +-> +Mode +-> +PxeR•ly +. +Dhýv4 +. +DhýO±iÚs +; + +587 +UINT16 + +£rv”_ty³ +; + +589  +i + < 55) { + +590 +g + = +Ýts +[ +i +]; + +591 +Ëngth + = +Ýts +[ +i ++1]; + +593 + `DBG_PRT +(( +L +"Tag #%d L’gth %d\n", +g +, +Ëngth +)); + +595 ià( +g + =ð43è +found +; + +597 +i + +ð2 + +Ëngth +; + +599  +NETFS_DEFAULT_SERVER_TYPE +; + +600 +found +: + +601 +max + = +i ++2+ +Ëngth +; + +602 +i + += 2; + +603  +i + < +max +) { + +604 +g + = +Ýts +[ +i +]; + +605 +Ëngth + = +Ýts +[ +i ++1]; + +606 ià( +g + == 71) { + +607 +£rv”_ty³ + =( +Ýts +[ +i ++2]<<8) | opts[i+3]; + +608 + `DBG_PRT +(( +L +"S”v”Ty³: %d\n", +£rv”_ty³ +)); + +609  +£rv”_ty³ +; + +611 +i ++ð2 + +Ëngth +; + +613  +NETFS_DEFAULT_SERVER_TYPE +; + +614 + } +} + +616  +EFI_STATUS + + +617 + $Ãtfs_qu”y_Ïy” +( +Ãtfs_š‹rçû_t + * +this +, +UINT16 + +£rv”_ty³ +, UINT16 +Ïy” +, +UINTN + +maxËn +, +CHAR16 + * +¡r +) + +619 +Ãtfs_´iv_¡©e_t + * +nfs +; + +620 +EFI_STATUS + +¡©us +; + +622 ià( +this + =ð +NULL + || +¡r + =ðNULLè +EFI_INVALID_PARAMETER +; + +624 +nfs + = + `FS_PRIVATE +( +this +); + +626 ià( +nfs +-> +usšg_pxe + =ð +FALSE +è +EFI_UNSUPPORTED +; + +628 ià( +£rv”_ty³ + =ð0è£rv”_ty³ = + `fšd_pxe_£rv”_ty³ +( +nfs +-> +pxe +); + +630 +¡©us + = +nfs +-> +pxe +-> + `Discov” +Òfs->pxe, +£rv”_ty³ +, & +Ïy” +, +FALSE +, 0); + +631 if( +¡©us + =ð +EFI_SUCCESS +) { + +632 + `ascii2U +( +nfs +-> +pxe +-> +Mode +-> +PxeR•ly +. +Dhýv4 +. +BoÙpBoÙFže +, +¡r +, +maxËn +); + +634  +¡©us +; + +635 + } +} + +637  +VOID + + +638 + $Ãtfs_š™_¡©e +( +Ãtfs_t + * +Ãtfs +, +EFI_HANDLE + +dev +, +EFI_PXE_BASE_CODE + * +pxe +) + +640 +Ãtfs_´iv_¡©e_t + * +nfs + = + `FS_PRIVATE +( +Ãtfs +); + +641 +UINTN + +i +; + +644 + `Mem£t +( +Ãtfs +, 0, (*netfs)); + +647 +Ãtfs +-> +pub_štf +. +Ãtfs_Çme + =‚etfs_name; + +648 +Ãtfs +-> +pub_štf +. +Ãtfs_ݒ + =‚etfs_open; + +649 +Ãtfs +-> +pub_štf +. +Ãtfs_»ad + =‚etfs_read; + +650 +Ãtfs +-> +pub_štf +. +Ãtfs_þo£ + =‚etfs_close; + +651 +Ãtfs +-> +pub_štf +. +Ãtfs_šfosize + =‚etfs_infosize; + +652 +Ãtfs +-> +pub_štf +. +Ãtfs_£ek + =‚etfs_seek; + +653 +Ãtfs +-> +pub_štf +. +Ãtfs_qu”y_Ïy” + =‚etfs_query_layer; + +654 +Ãtfs +-> +pub_štf +. +Ãtfs_g‘šfo + =‚etfs_getinfo; + +656 +nfs +-> +dev + = dev; + +657 +nfs +-> +pxe + =…xe; + +662 ià( +pxe +-> +Mode +-> +S¹ed + =ð +TRUE +è + `Ãtfs_exŒaù_ +( +nfs +); + +664 + `Mem£t +( +nfs +-> +fd_b +, 0, (nfs->fd_tab)); + +666  +i +=0; i < +NETFS_FD_MAX +-1; i++) { + +667 +nfs +-> +fd_b +[ +i +]. +Ãxt + = &nfs->fd_tab[i+1]; + +671 +nfs +-> +ä“_fd + =‚fs-> +fd_b +; + +672 +nfs +-> +ä“_fd_couÁ + = +NETFS_FD_MAX +; + +673 + } +} + +675  +EFI_STATUS + + +676 + $Ãtfs_š¡®l_Úe +( +EFI_HANDLE + +dev +, +VOID + ** +štf +) + +679 +EFI_STATUS + +¡©us +; + +680 +Ãtfs_t + * +Ãtfs +; + +681 +EFI_PXE_BASE_CODE + * +pxe +; + +683 +¡©us + = +BS +-> + `HªdËPrÙocÞ + ( +dev +, & +N‘FsPrÙocÞ +, ( +VOID + **)& +Ãtfs +); + +684 ià( +¡©us + =ð +EFI_SUCCESS +) { + +685 + `ERR_PRT +(( +L +"W¬nšg: foundƒxi¡šg % ´ÙocÞ oÀdeviû", +FS_NAME +)); + +686  +found +; + +689 +¡©us + = +BS +-> + `HªdËPrÙocÞ + ( +dev +, & +PxeBa£CodePrÙocÞ +, ( +VOID + **)& +pxe +); + +690 ià( + `EFI_ERROR +( +¡©us +)è +EFI_INVALID_PARAMETER +; + +693 +Ãtfs + = ( +Ãtfs_t + *) + `®loc +((*Ãtfs), +EfiLßd”D©a +); + +694 ià( +Ãtfs + =ð +NULL +) { + +695 + `ERR_PRT +(( +L +"çžedØ®loÿ‹ %s", +FS_NAME +)); + +696  +EFI_OUT_OF_RESOURCES +; + +699 + `Ãtfs_š™_¡©e +( +Ãtfs +, +dev +, +pxe +); + +701 +¡©us + = + `LibIn¡®lPrÙocÞIÁ”çûs +(& +dev +, & +N‘FsPrÙocÞ +, +Ãtfs +, +NULL +); + +702 ià( + `EFI_ERROR +( +¡©us +)) { + +703 + `ERR_PRT +(( +L +"CªnÙ in¡®È% ´ÙocÞ: %r", +FS_NAME +, +¡©us +)); + +704 + `ä“ +( +Ãtfs +); + +705  +¡©us +; + +708 +found +: + +709 ià( +štf +è*štàð( +VOID + *) +Ãtfs +; + +711 + `VERB_PRT +(3, + +712 { +EFI_DEVICE_PATH + * +dp +; +CHAR16 + * +¡r +; + +713 +dp + = + `DeviûP©hFromHªdË +( +dev +); + +714 +¡r + = + `DeviûP©hToSŒ +( +dp +); + +715 + `Pršt +( +L +"©ched % tØ%s\n", +FS_NAME +, +¡r +); + +716 + `F»ePoÞ +( +¡r +); + +719  +EFI_SUCCESS +; + +720 + } +} + +722 +EFI_STATUS + + +723 + $Ãtfs_š¡®l +( +VOID +) + +725 +UINTN + +size + = 0; + +726 +UINTN + +i +; + +727 +EFI_STATUS + +¡©us +; + +728 +VOID + * +štf +; + +730 +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, & +PxeBa£CodePrÙocÞ +, +NULL +, & +size +, NULL); + +731 ià( +size + =ð0è +EFI_UNSUPPORTED +; + +733 + `DBG_PRT +(( +L +"size=%d", +size +)); + +735 +dev_b + = ( +dev_b_t + *) + `®loc +( +size +, +EfiLßd”D©a +); + +736 ià( +dev_b + =ð +NULL +) { + +737 + `ERR_PRT +(( +L +"failedo‡llocate handleable")); + +738  +EFI_OUT_OF_RESOURCES +; + +741 +¡©us + = +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, & +PxeBa£CodePrÙocÞ +, +NULL +, & +size +, ( +VOID + **) +dev_b +); + +742 ià( +¡©us + !ð +EFI_SUCCESS +) { + +743 + `ERR_PRT +(( +L +"çžedØg‘ hªdËs: %r", +¡©us +)); + +744 + `ä“ +( +dev_b +); + +745  +¡©us +; + +747 +ndev + = +size + / ( +EFI_HANDLE +); + +749  +i +=0; i < +ndev +; i++) { + +750 +štf + = +NULL +; + +751 + `Ãtfs_š¡®l_Úe +( +dev_b +[ +i +]. +dev +, & +štf +); + +753 +dev_b +[ +i +]. +štf + = intf; + +756  +EFI_SUCCESS +; + +757 + } +} + +759 +EFI_STATUS + + +760 + $Ãtfs_unš¡®l +( +VOID +) + +763 +Ãtfs_´iv_¡©e_t + * +nfs +; + +764 +EFI_STATUS + +¡©us +; + +765 +UINTN + +i +; + +767  +i +=0; i < +ndev +; i++) { + +768 ià( +dev_b +[ +i +]. +štf + =ð +NULL +) ; + +769 +nfs + = + `FS_PRIVATE +( +dev_b +[ +i +]. +štf +); + +770 +¡©us + = +BS +-> + `Unš¡®lPrÙocÞIÁ”çû +( +nfs +-> +dev +, & +N‘FsPrÙocÞ +, +dev_b +[ +i +]. +štf +); + +771 ià( + `EFI_ERROR +( +¡©us +)) { + +772 + `ERR_PRT +(( +L +"Unš¡®È% ”rÜ: %r", +FS_NAME +, +¡©us +)); + +775 + `VERB_PRT +(3, + +776 { +EFI_DEVICE_PATH + * +dp +; +CHAR16 + * +¡r +; + +777 +dp + = + `DeviûP©hFromHªdË +( +nfs +-> +dev +); + +778 +¡r + = + `DeviûP©hToSŒ +( +dp +); + +779 + `Pršt +( +L +"unš¡®Ëd % Ú %s\n", +FS_NAME +, +¡r +); + +780 + `F»ePoÞ +( +¡r +); + +783 ià( +nfs +-> +pxe +-> +Mode +-> +S¹ed + =ð +TRUE +ènfs->pxe-> + `StÝ +(nfs->pxe); + +785 + `ä“ +( +dev_b +[ +i +]. +štf +); + +787 ià( +dev_b +è + `ä“ +(dev_tab); + +789  +EFI_SUCCESS +; + +790 + } +} + + @fs/netfs.h + +26 #iâdeà +__NETLFS_H__ + + +27  + #__NETLFS_H__ + + + ) + +29  + ~ + +30  + ~ + +32  + #NETFS_BOOTFILE_MAXLEN + 256 + + ) + +35 +EFI_IP_ADDRESS + + mþn_addr +; + +36 +EFI_IP_ADDRESS + + m¤v_addr +; + +37 +EFI_IP_ADDRESS + + mÃtmask +; + +38 +EFI_IP_ADDRESS + + mgw_addr +; + +39 +UINT8 + + mhw_addr +[16]; + +40 +CHAR16 + + mho¡Çme +[255]; + +41 +CHAR16 + + mdomašame +[255]; + +42 +CHAR16 + + mboÙfže +[ +NETFS_BOOTFILE_MAXLEN +]; + +43 +BOOLEAN + + musšg_pxe +; + +44 +BOOLEAN + + m¡¬‹d +; + +45 +BOOLEAN + + musšg_v6 +; + +46 } + tÃtfs_šfo_t +; + +49 +INTERFACE_DECL +( +_Ãtfs_š‹rçû_t +); + +51  + s_Ãtfs_š‹rçû_t + { + +52 +EFI_STATUS + (* +Ãtfs_Çme +)( +_Ãtfs_š‹rçû_t + * + mthis +, +CHAR16 + * + mÇme +, +UINTN + + mmaxËn +); + +53 +EFI_STATUS + (* +Ãtfs_ݒ +)( +_Ãtfs_š‹rçû_t + * + mthis +, +CHAR16 + * + mÇme +, +UINTN + * + mfd +); + +54 +EFI_STATUS + (* +Ãtfs_»ad +)( +_Ãtfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +VOID + * + mbuf +, UINTN * + msize +); + +55 +EFI_STATUS + (* +Ãtfs_þo£ +)( +_Ãtfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +); + +56 +EFI_STATUS + (* +Ãtfs_šfosize +)( +_Ãtfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +UINT64 + * + msize +); + +57 +EFI_STATUS + (* +Ãtfs_£ek +)( +_Ãtfs_š‹rçû_t + * + mthis +, +UINTN + + mfd +, +UINT64 + + mÃwpos +); + +58 +EFI_STATUS + (* +Ãtfs_qu”y_Ïy” +)( +_Ãtfs_š‹rçû_t + * + mthis +, +UINT16 + + m£rv”_ty³ +, UINT16 + mÏy” +, +UINTN + + mmaxËn +, +CHAR16 + * + m¡r +); + +59 +EFI_STATUS + (* +Ãtfs_g‘šfo +)( +_Ãtfs_š‹rçû_t + * + mthis +, +Ãtfs_šfo_t + * + mšfo +); + +60 } + tÃtfs_š‹rçû_t +; + +62  + #NETFS_PROTOCOL + \ + +63 { 0x6746de4f, 0xcc1e, 0x4c5f, {0xb7, 0xfb, 0x85, 0x6a, 0x5d, 0x69, 0x0f, 0x06} } + + ) + +65 +EFI_STATUS + +Ãtfs_š¡®l +( +VOID +); + +66 +EFI_STATUS + +Ãtfs_unš¡®l +( +VOID +); + + @getopt.c + +29  + ~ + +30  + ~ + +33  + #DASH + ( +CHAR16 +)'-' + + ) + +34  + #COLON + ( +CHAR16 +)':' + + ) + +35  + #EOS + ( +CHAR16 +)'\0' + + ) + +36  + #BADCH + ( +INTN +)'?' + + ) + +37  + #BADARG + ( +INTN +)':' + + ) + +39 +CHAR16 + * +SŒChr +( +IN + cÚ¡ CHAR16 * +s +, +INT16 + +c +); + +41 +CHAR16 + * + gO±¬g +; + +42 +INTN + + gO±šd + = 1; + +43 +INTN + + gO±Ýt +; + +54 +INTN + + +55 + $G‘Ýt +( +INTN + +¬gc +, +CHAR16 + *cÚ¡ +¬gv +[], cÚ¡ CHAR16 * +Ýt¡ršg +) + +57  +CHAR16 + * +cur_chr + = +NULL +; + +58 +CHAR16 + * +Ýt +; + +60 ià( +O±šd + >ð +¬gc +) { + +61 +cur_chr + = +NULL +; + +64 ià( +cur_chr + =ð +NULL + || *cur_ch¸=ð +EOS +) { + +65 +cur_chr + = +¬gv +[ +O±šd +]; + +66 ià(* +cur_chr +++ !ð +DASH +) { + +67 +cur_chr + = +NULL +; + +70 ià(* +cur_chr + =ð +DASH +) { + +71 +cur_chr + = +NULL +; + +72 +O±šd +++; + +76 +O±Ýt + = * +cur_chr +++; + +77 +Ýt + = + `SŒChr +( +Ýt¡ršg +, +O±Ýt +); + +78 ià(! +Ýt +) { + +79 + `Pršt +( +L +"%s: iÎeg® o±iÚ -- %c\n", +¬gv +[0], +O±Ýt +); + +80 ià(* +cur_chr + =ð +EOS +è +O±šd +++; + +81  +BADCH +; + +83 ià(*( +Ýt ++1è!ð +COLON +) { + +84 +O±¬g + = +NULL +; + +85 ià(* +cur_chr + =ð +EOS +è +O±šd +++; + +87 ià(* +cur_chr +) { + +88 +O±¬g + = +cur_chr +; + +89 } iàÐ++ +O±šd + >ð +¬gc + ) { + +90 + `Pršt +( +L +"%s: o±iÚ `%s'„equœe ª‡rgum’t\n", +¬gv +[0],‡rgv[ +O±šd +-1]), + +91 +cur_chr + = +NULL +; + +92  +BADARG +; + +94 +O±¬g + = +¬gv +[ +O±šd +]; + +96 +O±šd +++; + +98  +O±Ýt +; + +99 + } +} + + @getopt.h + +25 #iâdeà +__EFI_GETOPT_H__ + + +26  + #__EFI_GETOPT_H__ + + + ) + +28 +CHAR16 + * +O±¬g +; + +29 +INTN + +O±šd +, +O±Ýt +; + +31 +INTN + +G‘Ýt +(INTN +¬gc +, +CHAR16 + *cÚ¡ +¬gv +[], cÚ¡ CHAR16 * +Ýt¡ršg +); + + @glue_ext2fs.c + +25  + ~ + +26  + ~ + +28  + ~"glue_ext2fs.h +" + +29  + ~"fs/ext2fs.h +" + +30  + ~"¡rÝs.h +" + +33  +INTN + +glue +( +fžeÝs_t + * +this +, +VOID + * +štf +); + +37 +fžeÝs_fs_t + + gext2fs_glue + = { +EXT2FS_PROTOCOL + , +glue +, +ext2fs_š¡®l +, +ext2fs_unš¡®l +}; + +39  +EFI_STATUS + + +40 + $ext2fs_šfosize +( +ext2fs_š‹rçû_t + * +this +, +fÝs_fd_t + +fd +, +UINT64 + * +sz +) + +42 +ext2fs_¡©_t + +¡ +; + +43 +EFI_STATUS + +¡©us +; + +45 ià( +this + =ð +NULL + || +sz + =ðNULLè +EFI_INVALID_PARAMETER +; + +47 +¡©us + = +this +-> + `ext2fs_f¡© +Ñhis, +fd +, & +¡ +); + +48 ià( +¡©us + !ð +EFI_SUCCESS +)  status; + +50 * +sz + = ( +UINT64 +) +¡ +. +¡_size +; + +52  +EFI_SUCCESS +; + +53 + } +} + +55  +INTN + + +56 + $glue +( +fžeÝs_t + * +å +, +VOID + * +štf +) + +58 +ext2fs_š‹rçû_t + * +ext2fs + = (ext2fs_š‹rçû_ˆ*) +štf +; + +61 +å +-> +štf + = intf; + +63 +å +-> +ݒ + = ( +fÝs_ݒ_t +) +ext2fs +-> +ext2fs_ݒ +; + +64 +å +-> +»ad + = ( +fÝs_»ad_t +) +ext2fs +-> +ext2fs_»ad +; + +65 +å +-> +þo£ + = ( +fÝs_þo£_t +) +ext2fs +-> +ext2fs_þo£ +; + +66 +å +-> +šfosize + = ( +fÝs_šfosize_t +) +ext2fs_šfosize +; + +67 +å +-> +£ek + = ( +fÝs_£ek_t +) +ext2fs +-> +ext2fs_£ek +; + +70 +ext2fs +-> + `ext2fs_Çme +Óxt2fs, +å +-> +Çme +, +FILEOPS_NAME_MAXLEN +); + +73 + } +} + + @glue_ext2fs.h + +26 #iâdeà +__GLUE_EXT2FS_H__ + + +27  + #__GLUE_EXT2FS_H__ + + + ) + +29  + ~"fžeÝs.h +" + +31 +fžeÝs_fs_t + +ext2fs_glue +; + + @glue_localfs.c + +25  + ~ + +26  + ~ + +28  + ~"fs/loÿlfs.h +" + +29  + ~"glue_loÿlfs.h +" + +30  + ~"¡rÝs.h +" + +31  + ~"–žo.h +" + +33  +INTN + +glue +( +fžeÝs_t + * +this +, +VOID + * +štf +); + +37 +fžeÝs_fs_t + + gloÿlfs_glue + = { +LOCALFS_PROTOCOL +, +glue +, +loÿlfs_š¡®l +, +loÿlfs_unš¡®l +}; + +40  +CHAR16 + + gloÿlfs_deçuÉ_·th +[ +FILENAME_MAXLEN +]; + +58  +VOID + + +59 + $£t_deçuÉ_·th +( +CHAR16 + * +¥Œ +) + +61  + #is_£p +( +h +è(h =ð +CHAR_SLASH + || h =ð +CHAR_BACKSLASH +) + + ) + +62 +CHAR16 + * +d±r +, * +Ï¡_£p + = +NULL +; + +63 +UINTN + +Ën + = +FILENAME_MAXLEN + - 1; + +64 +UINTN + +Ï¡_was_£p + = 0; + +65 +CHAR16 + +c +; + +67 +d±r + = +loÿlfs_deçuÉ_·th +; + +69  +Ën +-- && * +¥Œ +) { + +70 +c + = +¥Œ +[0]; + +72 ià( + `is_£p +( +c +)) { + +73 ià( +Ï¡_was_£p +) { + +74 +¥Œ +++; + +77 +c + = +CHAR_BACKSLASH +; + +78 +Ï¡_was_£p + = 1; + +79 +Ï¡_£p + = +d±r +; + +81 +Ï¡_was_£p + = 0; + +83 * +d±r +++ = +c +; + +84 +¥Œ +++; + +86 ià( +Ï¡_£p +) + +87 *++ +Ï¡_£p + = +CHAR_NULL +; + +89 * +d±r + = +CHAR_NULL +; + +91 + `DBG_PRT +(( +L +"loÿlfs_deçuÉ_·th=%s\n", +loÿlfs_deçuÉ_·th +)); + +92 + } +} + +99  + #LOCALFS_DEFAULT_KERNEL + +L +"vmlšux" + + ) + +100  + #LOCALFS_DEFAULT_CONFIG + +L +"–žo.cÚf" + + ) + +101  +EFI_STATUS + + +102 + $loÿlfs_£tdeçuÉs +( +VOID + * +this +, +cÚfig_fže_t + * +cÚfig +, +CHAR16 + * +kÇme +, +UINTN + +maxËn +, CHAR16 * +dev·th +) + +104 + `SŒnCpy +( +kÇme +, +LOCALFS_DEFAULT_KERNEL +, +maxËn +-1); + +105 +kÇme +[ +maxËn +-1] = +CHAR_NULL +; + +107 + `SŒnCpy +( +cÚfig +[0]. +âame +, +LOCALFS_DEFAULT_CONFIG +, +maxËn +-1); + +108 +cÚfig +[0]. +âame +[ +maxËn +-1] = +CHAR_NULL +; + +110 + `£t_deçuÉ_·th +( +dev·th +); + +112  +EFI_SUCCESS +; + +113 + } +} + +115  +EFI_STATUS + + +116 + $loÿlfs_g‘deçuÉ_·th +( +CHAR16 + * +·th +, +UINTN + +maxËn +) + +118 ià( +maxËn + <ð + `SŒL’ +( +loÿlfs_deçuÉ_·th +)è +EFI_BUFFER_TOO_SMALL +; + +120 + `SŒCpy +( +·th +, +loÿlfs_deçuÉ_·th +); + +121  +EFI_SUCCESS +; + +122 + } +} + +131  +EFI_STATUS + + +132 + $glue_ݒ +( +VOID + * +štf +, +CHAR16 + * +Çme +, +fÝs_fd_t + * +fd +) + +134 +CHAR16 + * +p +; + +135 +loÿlfs_š‹rçû_t + * +loÿlfs + = (loÿlfs_š‹rçû_ˆ*) +štf +; + +136 +CHAR16 + +fuÎÇme +[ +FILENAME_MAXLEN +]; + +141  +p +ð +Çme +; *°!ð +CHAR_NULL +;…++) { + +142 ià(* +p + =ð +CHAR_SLASH +è*°ð +CHAR_BACKSLASH +; + +144 ià( +Çme +[0] !ð +CHAR_BACKSLASH + && +loÿlfs_deçuÉ_·th +[0] !ð +CHAR_NULL +) { + +145 ià( + `SŒL’ +( +loÿlfs_deçuÉ_·th +è+ SŒL’( +Çme +è+ 1 >ð +FILENAME_MAXLEN +) + +146  +EFI_INVALID_PARAMETER +; + +148 + `SŒCpy +( +fuÎÇme +, +loÿlfs_deçuÉ_·th +); + +149 + `SŒC© +( +fuÎÇme +, +Çme +); + +150 +Çme + = +fuÎÇme +; + +152  +loÿlfs +-> + `loÿlfs_ݒ +( +štf +, +Çme +, +fd +); + +153 + } +} + +155  +INTN + + +156 + $glue +( +fžeÝs_t + * +å +, +VOID + * +štf +) + +158 +loÿlfs_š‹rçû_t + * +loÿlfs + = (loÿlfs_š‹rçû_ˆ*) +štf +; + +160 +å +-> +ݒ + = +glue_ݒ +; + +161 +å +-> +»ad + = ( +fÝs_»ad_t +) +loÿlfs +-> +loÿlfs_»ad +; + +162 +å +-> +þo£ + = ( +fÝs_þo£_t +) +loÿlfs +-> +loÿlfs_þo£ +; + +163 +å +-> +šfosize + = ( +fÝs_šfosize_t +) +loÿlfs +-> +loÿlfs_šfosize +; + +164 +å +-> +£ek + = ( +fÝs_£ek_t +) +loÿlfs +-> +loÿlfs_£ek +; + +165 +å +-> +£tdeçuÉs + = ( +fÝs_£tdeçuÉs_t +) +loÿlfs_£tdeçuÉs +; + +166 +å +-> +g‘deçuÉ_·th + = ( +fÝs_g‘deçuÉ_·th_t +) +loÿlfs_g‘deçuÉ_·th +; + +167 +å +-> +štf + = intf; + +170 +loÿlfs +-> + `loÿlfs_Çme +Öoÿlfs, +å +-> +Çme +, +FILEOPS_NAME_MAXLEN +); + +173 + } +} + + @glue_localfs.h + +26 #iâdeà +__GLUE_LOCALFS_H__ + + +27  + #__GLUE_LOCALFS_H__ + + + ) + +29  + ~"fžeÝs.h +" + +31 +fžeÝs_fs_t + +loÿlfs_glue +; + + @glue_netfs.c + +25  + ~ + +26  + ~ + +28  + ~"glue_Ãtfs.h +" + +29  + ~"fs/Ãtfs.h +" + +30  + ~"¡rÝs.h +" + +32  + ~"–žo.h +" + +33  + ~"v¬s.h +" + +40  +INTN + +glue +( +fžeÝs_t + * +this +, +VOID + * +štf +); + +43 +fžeÝs_fs_t + + gÃtfs_glue + = { +NETFS_PROTOCOL + , +glue +, +Ãtfs_š¡®l +, +Ãtfs_unš¡®l +}; + +46  + #NETFS_DEFAULT_KERNEL + +L +"vmlšux" + + ) + +47  + #NETFS_DEFAULT_CONFIG + +L +"–žo.cÚf" + + ) + +48  + #NETFS_DEFAULT_SERVER_TYPE + +EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT + + + ) + +51  +CHAR16 + + gÃtfs_deçuÉ_·th +[ +FILENAME_MAXLEN +]; + +58  + #NETFS_CONFIG_LAYER + 1 + + ) + +59  + #NETFS_KERNEL_LAYER + 2 + + ) + +61  +CHAR16 + * + ghexa += +L +"0123456789ABCDEF"; + +63  +VOID + + +64 + $cÚv”t_2hex +( +UINT8 + * + +, +INTN + +l +, +CHAR16 + * +¡r +) + +66 +UINTN + +i +; + +68  +i +=0; i < +l +; i++) { + +69 +¡r +[2* +i +] = +hexa +[( + +[i] & 0xf0)>>4]; + +70 +¡r +[2* +i ++1] = +hexa +[ + +[i] & 0x0f]; + +72 + } +} + +74  +VOID + + +75 + $cÚv”t_2dec¡r +( +UINT8 + * + +, +INTN + +l +, +CHAR16 + * +¡r +) + +77 +UINTN + +i +, +j +; + +78 +UINTN + +v +, +v® +; + +80  +i +=0, +j +=0; i < +l +; i++) { + +81 +v® + = + +[ +i +]; + +82 +v + = +v® + / 100; + +83 ià( +v +) { + +84 +¡r +[ +j +++] = +L +'0'+ +v +; + +86 +v® + = val % 100; + +87 +v + = +v® + / 10; + +88 ià( +v + || + +[ +i +] >= 100) { + +89 +¡r +[ +j +++] = +L +'0'+ +v +; + +92 +v + = +v® + % 10; + +93 +¡r +[ +j +++] = +L +'0'+ +v +; + +94 ià( +i + < +l +-1è +¡r +[ +j +++] = +L +'.'; + +96 +¡r +[ +j +] = +CHAR_NULL +; + +97 + } +} + +100 + $Ãtfs_£t_deçuÉ_·th +( +Ãtfs_š‹rçû_t + * +Ãtfs +, +Ãtfs_šfo_t + * +šfo +) + +102 +INTN + +Ën +; + +104 + `SŒnCpy +( +Ãtfs_deçuÉ_·th +, +šfo +-> +boÙfže +, +FILENAME_MAXLEN +); + +106 +Ën + = + `SŒL’ +( +Ãtfs_deçuÉ_·th +) - 1; + +108  +Ën + >= 0) { + +109 ià( +Ãtfs_deçuÉ_·th +[ +Ën +] =ð +CHAR_SLASH + ||‚‘fs_deçuÉ_·th[Ën] =ð +CHAR_BACKSLASH +) ; + +110 +Ën +--; + +112 +Ãtfs_deçuÉ_·th +[ +Ën ++1] = +CHAR_NULL +; + +114 + `DBG_PRT +(( +L +"Ãtfs_deçuÉ_·th=%s\n", +Ãtfs_deçuÉ_·th +)); + +116  +EFI_SUCCESS +; + +117 + } +} + +119  +EFI_STATUS + + +120 + $Ãtfs_£tdeçuÉs +( +VOID + * +štf +, +cÚfig_fže_t + * +cÚfig +, +CHAR16 + * +kÇme +, +UINTN + +maxËn +, CHAR16 * +dev·th +) + +122 +Ãtfs_š‹rçû_t + * +Ãtfs + = (Ãtfs_š‹rçû_ˆ*) +štf +; + +123 +Ãtfs_šfo_t + +šfo +; + +124 +EFI_STATUS + +¡©us +; + +125 +UINT8 + * +addr +; + +126 +UINTN + +m +; + +127 +CHAR16 + +_v¬ +[64], +¡r +[64]; + +128 +UINT8 + * + +; + +130 ià( +cÚfig + =ð +NULL + || +kÇme + =ðNULL || +maxËn + < 1è +EFI_INVALID_PARAMETER +; + +132 +Ãtfs +-> + `Ãtfs_g‘šfo +ґfs, & +šfo +); + +134 +m + = +šfo +. +usšg_v6 + ? 16 : 4; + +135 +addr + = +šfo +. +usšg_v6 + ? info. +þn_addr +. +v6 +. +Addr +: info.þn_addr. +v4 +.Addr; + +137 + `cÚv”t_2dec¡r +( +addr +, +m +, +_v¬ +); + +138 + `£t_v¬ +( +VAR_NETFS_IPADDR +, +_v¬ +); + +140 + + = +šfo +. +usšg_v6 + ? info. +Ãtmask +. +v6 +. +Addr +: info.Ãtmask. +v4 +.Addr; + +141 + `cÚv”t_2dec¡r +( + +, +m +, +¡r +); + +142 + `£t_v¬ +( +VAR_NETFS_NETMASK +, +¡r +); + +144 + + = +šfo +. +usšg_v6 + ? info. +gw_addr +. +v6 +. +Addr +: info.gw_addr. +v4 +.Addr; + +145 + `cÚv”t_2dec¡r +( + +, +m +, +¡r +); + +146 + `£t_v¬ +( +VAR_NETFS_GATEWAY +, +¡r +); + +148 + `£t_v¬ +( +VAR_NETFS_HOSTNAME +, +šfo +. +ho¡Çme +); + +149 + `£t_v¬ +( +VAR_NETFS_DOMAINAME +, +šfo +. +domašame +); + +151 ià( +šfo +. +usšg_pxe +) { + +152 +¡©us + = +Ãtfs +-> + `Ãtfs_qu”y_Ïy” +ґfs, 0, +NETFS_CONFIG_LAYER +, +maxËn +, +cÚfig +[0]. +âame +); + +153 ià( + `EFI_ERROR +( +¡©us +)) { + +154 + `SŒnCpy +( +cÚfig +[0]. +âame +, +NETFS_DEFAULT_CONFIG +, +maxËn +-1); + +155 +cÚfig +[0]. +âame +[ +maxËn +-1] = +CHAR_NULL +; + +158 +¡©us + = +Ãtfs +-> + `Ãtfs_qu”y_Ïy” +ґfs, 0, +NETFS_KERNEL_LAYER +, +maxËn +, +kÇme +); + +159 ià( + `EFI_ERROR +( +¡©us +)) { + +160 + `SŒnCpy +( +kÇme +, +NETFS_DEFAULT_KERNEL +, +maxËn +-1); + +161 +kÇme +[ +maxËn +-1] = +CHAR_NULL +; + +164 #ifdeà +ENABLE_MACHINE_SPECIFIC_NETCONFIG + + +166 #ià + `defšed +( +CONFIG_Ÿ64 +) + +167  + #CONFIG_ARCH_EXTENSION + +L +"-Ÿ64.cÚf\0" + + ) + +168 #–ià + `defšed + ( +CONFIG_Ÿ32 +) + +169  + #CONFIG_ARCH_EXTENSION + +L +"-Ÿ64.cÚf\0" + + ) + +174  + #CONFIG_EXTENSION + +L +".cÚf\0" + + ) + +179 + `cÚv”t_2hex +( +addr +, +m +, +¡r +); + +180 + `SŒnCpy +( +cÚfig +[0]. +âame +, +¡r +, +maxËn +-1); + +181 + `SŒnCpy +( +cÚfig +[0]. +âame ++8, +CONFIG_EXTENSION +, 6); + +183 + `SŒnCpy +( +cÚfig +[1]. +âame +, +¡r +, +maxËn +-1); + +184 + `SŒnCpy +( +cÚfig +[1]. +âame ++6, +CONFIG_ARCH_EXTENSION +, 11); + +186 + `SŒnCpy +( +cÚfig +[2]. +âame +, +¡r +, +maxËn +-1); + +187 + `SŒnCpy +( +cÚfig +[2]. +âame ++6, +CONFIG_EXTENSION +, 6); + +189 + `SŒnCpy +( +cÚfig +[3]. +âame +, +¡r +, +maxËn +-1); + +190 + `SŒnCpy +( +cÚfig +[3]. +âame ++4, +CONFIG_ARCH_EXTENSION +, 11); + +192 + `SŒnCpy +( +cÚfig +[4]. +âame +, +¡r +, +maxËn +-1); + +193 + `SŒnCpy +( +cÚfig +[4]. +âame ++4, +CONFIG_EXTENSION +, 6); + +195 + `SŒnCpy +( +cÚfig +[5]. +âame +, +¡r +, +maxËn +-1); + +196 + `SŒnCpy +( +cÚfig +[5]. +âame ++2, +CONFIG_ARCH_EXTENSION +, 11); + +198 + `SŒnCpy +( +cÚfig +[6]. +âame +, +¡r +, +maxËn +-1); + +199 + `SŒnCpy +( +cÚfig +[6]. +âame ++2, +CONFIG_EXTENSION +, 6); + +201 + `SŒnCpy +( +cÚfig +[0]. +âame +, +NETFS_DEFAULT_CONFIG +, +maxËn +-1); + +202 +cÚfig +[0]. +âame +[ +maxËn +-1] = +CHAR_NULL +; + +204 + `SŒnCpy +( +kÇme +, +NETFS_DEFAULT_KERNEL +, +maxËn +-1); + +205 +kÇme +[ +maxËn +-1] = +CHAR_NULL +; + +212 + `Ãtfs_£t_deçuÉ_·th +( +Ãtfs +, & +šfo +); + +214  +EFI_SUCCESS +; + +215 + } +} + +217  +EFI_STATUS + + +218 + $Ãtfs_g‘deçuÉ_·th +( +CHAR16 + * +·th +, +UINTN + +maxËn +) + +220 ià( +maxËn + <ð + `SŒL’ +( +Ãtfs_deçuÉ_·th +)è +EFI_BUFFER_TOO_SMALL +; + +222 + `SŒCpy +( +·th +, +Ãtfs_deçuÉ_·th +); + +223  +EFI_SUCCESS +; + +224 + } +} + +227  +EFI_STATUS + + +228 + $glue_ݒ +( +VOID + * +štf +, +CHAR16 + * +Çme +, +fÝs_fd_t + * +fd +) + +230 +Ãtfs_š‹rçû_t + * +Ãtfs + = (Ãtfs_š‹rçû_ˆ*) +štf +; + +231 +CHAR16 + +fuÎÇme +[ +FILENAME_MAXLEN +]; + +233 ià( +Çme +[0] !ð +CHAR_SLASH + &&‚ame[0] !ð +CHAR_BACKSLASH + && +Ãtfs_deçuÉ_·th +[0] !ð +CHAR_NULL +) { + +234 ià( + `SŒL’ +( +Ãtfs_deçuÉ_·th +è+ SŒL’( +Çme +è+ 1 >ð +FILENAME_MAXLEN +) + +235  +EFI_INVALID_PARAMETER +; + +237 + `SŒCpy +( +fuÎÇme +, +Ãtfs_deçuÉ_·th +); + +238 + `SŒC© +( +fuÎÇme +, +Çme +); + +239 +Çme + = +fuÎÇme +; + +241  +Ãtfs +-> + `Ãtfs_ݒ +( +štf +, +Çme +, +fd +); + +242 + } +} + +244  +INTN + + +245 + $glue +( +fžeÝs_t + * +å +, +VOID + * +štf +) + +247 +Ãtfs_š‹rçû_t + * +Ãtfs + = (Ãtfs_š‹rçû_ˆ*) +štf +; + +250 +å +-> +štf + = intf; + +252 +å +-> +ݒ + = +glue_ݒ +; + +253 +å +-> +»ad + = ( +fÝs_»ad_t +) +Ãtfs +-> +Ãtfs_»ad +; + +254 +å +-> +þo£ + = ( +fÝs_þo£_t +) +Ãtfs +-> +Ãtfs_þo£ +; + +255 +å +-> +šfosize + = ( +fÝs_šfosize_t +) +Ãtfs +-> +Ãtfs_šfosize +; + +256 +å +-> +£ek + = ( +fÝs_£ek_t +) +Ãtfs +-> +Ãtfs_£ek +; + +257 +å +-> +£tdeçuÉs + = ( +fÝs_£tdeçuÉs_t +) +Ãtfs_£tdeçuÉs +; + +258 +å +-> +g‘deçuÉ_·th + = ( +fÝs_g‘deçuÉ_·th_t +) +Ãtfs_g‘deçuÉ_·th +; + +259 +å +-> +štf + = intf; + +262 +Ãtfs +-> + `Ãtfs_Çme +ґfs, +å +-> +Çme +, +FILEOPS_NAME_MAXLEN +); + +265 + } +} + + @glue_netfs.h + +26 #iâdeà +__GLUE_NETFS_H__ + + +27  + #__GLUE_NETFS_H__ + + + ) + +29  + ~"fžeÝs.h +" + +31 +fžeÝs_fs_t + +Ãtfs_glue +; + + @gunzip.c + +32  + ~ + +33  + ~ + +35  + ~"–žo.h +" + +37  + ~"gz.h +" + +39  + #LD_NAME + +L +"gunz" + + ) + +41  + #memz”o +( +s +, +n +è + `Mem£t +(( +VOID + *)(s), 0, (n)) + + ) + +42  + #memýy +( +a +, +b +, +n +è + `Memýy +(( +VOID + *)×),(b),Ò)) + + ) + +45  + #WSIZE + 0x8000 + + ) + +50  + #OF +( +¬gs +è + ) +args + +51  + #FUNC_STATIC +  + + ) + +53  + tuch +; + +54  + tush +; + +55  + tulg +; + +62  +uch + * + gšbuf +; + +63  +uch + * + gwšdow +; + +65  +VOID + * + goutbuf +; + +66 * + gouŒ +; + +67  + goutsize +; + +69  + gš±r + = 0; + +70  + goutút + = 0; + +72  + #g‘_by‹ +(è +šbuf +[ +š±r +++] + + ) + +75 #ifdeà +INFLATE_DEBUG + + +76  + #As£¹ +( +cÚd +, +msg +è{if(!(cÚd)è + `”rÜ +(msg);} + + ) + +77  + g¡d”r +; + +78  + #T¿û +( +x +è + `Pršt +( +L +"lš%d:\n", +__LINE__ +); + + ) + +79  + #T¿ûv +( +x +è{ià( +v”bo£ +è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +80  + #T¿ûvv +( +x +è{ià( +v”bo£ +>1è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +81  + #T¿ûc +( +c +, +x +è{ià( +v”bo£ + && (c)è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +82  + #T¿ûcv +( +c +, +x +è{ià( +v”bo£ +>1 && (c)è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +84  + #As£¹ +( +cÚd +, +msg +) + + ) + +85  + #T¿û +( +x +) + + ) + +86  + #T¿ûv +( +x +) + + ) + +87  + #T¿ûvv +( +x +) + + ) + +88  + #T¿ûc +( +c +, +x +) + + ) + +89  + #T¿ûcv +( +c +, +x +) + + ) + +92  +æush_wšdow +(); + +93  +”rÜ +(* +m +); + +94  + gby‹s_out +; + +96  +”rÜ +(* +m +); + +98  + #gz_m®loc +( +size +è(*) + `®loc +(size, 0) + + ) + +99  + #gz_ä“ +( +wh”e +è + `ä“ +(wh”e) + + ) + +101  + ~"šæ©e.c +" + +113 + $updüc +(* +s +,  +n +) + +115  +c +; + +118 +c + = +üc +; + +119  +n +--) { + +120 +c + = +üc_32_b +[(()ø^ (* +s +++)) & 0xff] ^ (c >> 8); + +122 +üc + = +c +; + +124 + } +} + +130 + $þ—r_bufs +() + +132 +outút + = 0; + +133 +š±r + = 0; + +134 + } +} + +141 + $æush_wšdow +() + +147 ià(! +outút + || +by‹s_out + + outúˆ> +outsize +) + +150 + `updüc +( +wšdow +, +outút +); + +152 + `Memýy +( +ouŒ +, +wšdow +, +outút +); + +153 +ouŒ + +ð +outút +; + +154 +by‹s_out + +ð +outút +; + +156 +outút + = 0; + +157 + } +} + +160 + $”rÜ +(* +x +) + +162 + `ERR_PRT +(( +L +"% : %a", +LD_NAME +, +x +)); + +164 + } +} + +166  +INT32 + + +167 + $decom´ess +( +VOID +) + +169 +INT32 + +»t +; + +171 + `þ—r_bufs +(); + +172 + `makeüc +(); + +173 + `Pršt +( +L +"Uncompressing... "); + +174 +»t + = + `gunz +(); + +175 ià( +»t + =ð0è + `Pršt +( +L +"done\n"); + +176  +»t + == 0 ? 0 : -1; + +177 + } +} + +180 + $gunz_image +( +memdesc_t + * +image +) + +182 +UINTN + +pgút +; + +184 +šbuf + = +image +-> +¡¬t_addr +; + +189 +outsize + = +šbuf +[ +image +-> +size + - 1] << 24 | inbuf[image->size - 2] << 16 | + +190 +šbuf +[ +image +-> +size + - 3] << 8 | inbuf[image->size - 4]; + +192 +pgút + = + `EFI_SIZE_TO_PAGES +( +outsize +); + +194 +outbuf + = + `®loc_·ges +( +pgút +, +EfiLßd”D©a +, +AÎoÿ‹AnyPages +, 0); + +195 ià( +outbuf + =ð +NULL +) { + +196 + `ERR_PRT +(( +L +"% :‡Îoÿ‹ ouuˆbufã¸çžed\n", +LD_NAME +)); + +199 +ouŒ + = +outbuf +; + +201 +wšdow + = (*) + `®loc +( +WSIZE +, 0); + +202 ià( +wšdow + =ð +NULL +) { + +203 + `ERR_PRT +(( +L +"% :‡Îoÿ‹ ouuˆwšdow fažed\n", +LD_NAME +)); + +204 + `ä“ +( +outbuf +); + +208 +by‹s_out + = 0; + +210 ià( + `decom´ess +() != 0) { + +211 + `ä“ +( +wšdow +); + +212 + `ä“ +( +outbuf +); + +213  +ELILO_LOAD_ERROR +; + +216 + `ä“ +( +wšdow +); + +217 + `ä“ +( +image +-> +¡¬t_addr +); + +219 +image +-> +¡¬t_addr + = +outbuf +; + +220 +image +-> +size + = +outsize +; + +221 +image +-> +pgút + =…gcnt; + +223  +ELILO_LOAD_SUCCESS +; + +224 + } +} + + @gzip.h + +26 #iâdeà +__GZIP_H__ + + +27  + #__GZIP_H__ + + + ) + +29  +gunz_image +( +memdesc_t + *); + +30  +gunz_k”Ãl +( +fÝs_fd_t +, +kdesc_t + *); + +33  + #ASCII_FLAG + 0x01 + + ) + +34  + #CONTINUATION + 0x02 + + ) + +35  + #EXTRA_FIELD + 0x04 + + ) + +36  + #ORIG_NAME + 0x08 + + ) + +37  + #COMMENT + 0x10 + + ) + +38  + #ENCRYPTED + 0x20 + + ) + +39  + #RESERVED + 0xC0 + + ) + +47  +šlše +  + +48 + $gz_´obe +(* +buf +,  +size +) + +50 ià( +size + < 4)  -1; + +52 ià( +buf +[0] != 037 || + +53 (( +buf +[1] != 0213) && (buf[1] != 0236)))  -1; + +56 ià( +buf +[2] != 8)  -1; + +58 ià(( +buf +[3] & +ENCRYPTED +) != 0)  -1; + +60 ià(( +buf +[3] & +CONTINUATION +) != 0)  -1; + +62 ià(( +buf +[3] & +RESERVED +) != 0)  -1; + +65 + } +} + + @ia32/bin_to_h.c + +1  + ~<¡dio.h +> + +2  + ~<¡dlib.h +> + +5 + $maš +() + +7  +n + = 0; + +8  +c +; + +10 + `´štf +("UINT8„mswitch_image[] = {\n"); + +12 ( +c + = + `g‘ch¬ +()è!ð +EOF +) { + +13 + `´štf +("0x%02x,%s", + +14 +c + & 0xFF, + +15 (++ +n + & 0x07) ? " " : "\n"); + +18 ià( +n + & 0x07) { + +19 + `´štf +("\n"); + +22 + `´štf +( + +27 + } +} + + @ia32/bzimage.c + +28  + ~ + +29  + ~ + +31  + ~"–žo.h +" + +32  + ~"lßd”.h +" + +34 +boÙ_·¿ms_t + * + g·¿m_¡¬t + = +NULL +; + +35 +UINTN + + g·¿m_size + = 0; + +37 +UINTN + + gk”Ãl_size + = 0x200000; + +39  +INTN + + +40 + $bzImage_´obe +( +CHAR16 + * +kÇme +) + +42 +EFI_STATUS + +efi_¡©us +; + +43 +UINTN + +size +; + +44 +fÝs_fd_t + +fd +; + +45 +UINT8 + +boÙ£ù +[512]; + +47 + `DBG_PRT +(( +L +"probe_bzImage_boot()\n")); + +49 ià(! +kÇme +) { + +50 + `ERR_PRT +(( +L +"kÇm=ð%xh", +kÇme +)); + +51 + `ä“_kmem +(); + +58 + `DBG_PRT +(( +L +"ݒšg %s...\n", +kÇme +)); + +60 +efi_¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +61 ià( + `EFI_ERROR +( +efi_¡©us +)) { + +62 + `ERR_PRT +(( +L +"Could‚Ù o³À%s.", +kÇme +)); + +63 + `ä“_kmem +(); + +70 + `DBG_PRT +(( +L +"\nreading boot sector...\n")); + +72 +size + =  +boÙ£ù +; + +73 +efi_¡©us + = + `fÝs_»ad +( +fd +, +boÙ£ù +, & +size +); + +74 ià( + `EFI_ERROR +( +efi_¡©us +è|| +size + !ð +boÙ£ù +) { + +75 + `ERR_PRT +(( +L +"Could‚Ù„—d boÙ seùÜ from %s.", +kÇme +)); + +76 + `fÝs_þo£ +( +fd +); + +77 + `ä“_kmem +(); + +84 ià( +boÙ£ù +[0x1FE] != 0x55 || bootsect[0x1FF] != 0xAA) { + +85 + `ERR_PRT +(( +L +"% i nه bzImagk”ÃÈimage.\n", +kÇme +)); + +86 + `fÝs_þo£ +( +fd +); + +87 + `ä“_kmem +(); + +95 + `DBG_PRT +(( +L +"boÙ£ù[1F1h] =ð%d s‘u°£ùÜs\n", +boÙ£ù +[0x1F1])); + +97 ià( +boÙ£ù +[0x1F1] < 1 || bootsect[0x1F1] > 64) { + +98 + `ERR_PRT +(( +L +"%s is‚ot‡ valid bzImage kernel image.", + +99 +kÇme +)); + +100 + `fÝs_þo£ +( +fd +); + +101 + `ä“_kmem +(); + +108 + `DBG_PRT +(( +L +"reading setup data...\n")); + +110 +·¿m_size + = ( +boÙ£ù +[0x1F1] + 1) * 512; + +111 +·¿m_¡¬t + = + `®loc +( +·¿m_size +, +EfiLßd”D©a +); + +113 + `DBG_PRT +(( +L +"·¿m_size=%d…¬am_¡¬t=%x", +·¿m_size +, +·¿m_¡¬t +)); + +115 ià(! +·¿m_¡¬t +) { + +116 + `ERR_PRT +(( +L +"Could‚ot‡llocate %d bytes of setup data.", + +117 +·¿m_size +)); + +118 + `fÝs_þo£ +( +fd +); + +119 + `ä“_kmem +(); + +123 + `CÝyMem +( +·¿m_¡¬t +, +boÙ£ù +,  bootsect); + +125 +size + = +·¿m_size + - 512; + +126 +efi_¡©us + = + `fÝs_»ad +( +fd +, (( +UINT8 + *) +·¿m_¡¬t +è+ 512, & +size +); + +128 ià( + `EFI_ERROR +( +efi_¡©us +è|| +size + !ð +·¿m_size + - 512) { + +129 + `ERR_PRT +(( +L +"Could‚ot„ead %d bytes of setup data.", + +130 +·¿m_size + - 512)); + +131 + `ä“ +( +·¿m_¡¬t +); + +132 +·¿m_¡¬t + = +NULL +; + +133 +·¿m_size + = 0; + +134 + `fÝs_þo£ +( +fd +); + +135 + `ä“_kmem +(); + +143 +UINT8 + * +c + = ((UINT8 *) +·¿m_¡¬t +)+514; + +144 + `DBG_PRT +(( +L +"param_start(c=%x): %c-%c-%c-%c", + +145 +c +, ( +CHAR16 +)c[0],(CHAR16) c[1], (CHAR16)c[2], (CHAR16)c[3])); + +147 ià( + `Com·»Mem +((( +UINT8 + *) +·¿m_¡¬t +) + 514, "HdrS", 4)) { + +148 + `ERR_PRT +(( +L +"%s does‚ot have‡ setup signature.", + +149 +kÇme +)); + +150 + `ä“ +( +·¿m_¡¬t +); + +151 +·¿m_¡¬t + = +NULL +; + +152 +·¿m_size + = 0; + +153 + `fÝs_þo£ +( +fd +); + +154 + `ä“_kmem +(); + +161 ià( + `®loc_kmem +( +k”Ãl_¡¬t +, + `EFI_SIZE_TO_PAGES +( +k”Ãl_size +))) { + +162 + `ERR_PRT +(( +L +"Could‚ot‡llocate kernel memory.")); + +165 + `VERB_PRT +(3, + `Pršt +( +L +"kernel_start: 0x%x kernel_size: %d\n", + +166 +k”Ãl_¡¬t +, +k”Ãl_size +)); + +172 + `DBG_PRT +(( +L +"reading kernel image...\n")); + +174 +size + = +k”Ãl_size +; + +175 +efi_¡©us + = + `fÝs_»ad +( +fd +, +k”Ãl_¡¬t +, & +size +); + +176 ià( + `EFI_ERROR +( +efi_¡©us +è|| +size + < 0x10000) { + +177 + `ERR_PRT +(( +L +"E¼Ü„—dšg k”ÃÈimag%s.", +kÇme +)); + +178 + `ä“ +( +·¿m_¡¬t +); + +179 +·¿m_¡¬t + = +NULL +; + +180 +·¿m_size + = 0; + +181 + `fÝs_þo£ +( +fd +); + +182 + `ä“_kmem +(); + +186 + `DBG_PRT +(( +L +"k”ÃÈimag»ad: %d by‹s, %d Kby‹s\n", +size +, size / 1024)); + +192 + `fÝs_þo£ +( +fd +); + +194 + } +} + +197  +INTN + + +198 + $bzImage_lßd +( +CHAR16 + * +kÇme +, +kdesc_t + * +kd +) + +200 + `DBG_PRT +(( +L +"load_bzImage_boot()\n")); + +202 ià(! +kÇme + || ! +kd +) { + +203 + `ERR_PRT +(( +L +"kÇme=0x%x kd=0x%x", +kÇme +, +kd +)); + +204 + `ä“ +( +·¿m_¡¬t +); + +205 +·¿m_¡¬t + = +NULL +; + +206 +·¿m_size + = 0; + +207 + `ä“_kmem +(); + +210 +kd +-> +k¡¬t + = kd-> +k’Œy + = +k”Ãl_¡¬t +; + +211 +kd +-> +k’d + = (( +UINT8 + *)kd-> +k¡¬t +è+ +k”Ãl_size +; + +213 + `DBG_PRT +(( +L +"k¡¬t=0x%x k’Œy=0x%x k’d=0x%x\n", +kd +-> +k¡¬t +, kd-> +k’Œy +, kd-> +k’d +)); + +216 + } +} + +219 +lßd”_Ýs_t + + gbzimage_lßd” + = { + +220 +NULL +, + +221 +L +"bzImage_loader", + +222 & +bzImage_´obe +, + +223 & +bzImage_lßd + + + @ia32/config.c + +27  + ~ + +28  + ~ + +30  + ~"–žo.h +" + +31  + ~"cÚfig.h +" + +32  + ~"´iv©e.h +" + +35 +UINTN + + mËgacy_ä“_boÙ +; + +36 } + tŸ32_glob®_cÚfig_t +; + +39  +Ÿ32_glob®_cÚfig_t + + gŸ32_gcÚf +; + +41  +cÚfig_ÝtiÚ_t + + gsysd•s_glob®_ÝtiÚs +[]={ + +42 { +OPT_BOOL +, +OPT_GLOBAL +, +L +"Ëgacy-ä“", +NULL +, NULL, & +Ÿ32_gcÚf +. +Ëgacy_ä“_boÙ +} + +53 +INTN + + +54 + $sysd•s_´–oÝ_aùiÚs +( +EFI_HANDLE + +dev +, +CHAR16 + ** +¬gv +, +INTN + +¬gc +, INTN +šdex +, EFI_HANDLE +image +) + +57 + } +} + +59  + #IA32_CMDLINE_OPTIONS + +L +"" + + ) + +61 +CHAR16 + * + +62 + $sysd•s_g‘_cmdlše_Ýts +( +VOID +) + +64  +IA32_CMDLINE_OPTIONS +; + +65 + } +} + +67 +INTN + + +68 + $sysd•s_g‘Ýt +( +INTN + +c +, INTN +Ýtšd +, +CHAR16 + * +ݏrg +) + +71 + } +} + +73 +VOID + + +74 + $sysd•s_´št_cmdlše_Ýts +( +VOID +) + +76 + } +} + +79 +INTN + + +80 + $Ÿ32_u£_Ëgacy_ä“_boÙ +( +VOID +) + +82  +Ÿ32_gcÚf +. +Ëgacy_ä“_boÙ + ? 1 : 0; + +83 + } +} + +85 +INTN + + +86 + $sysd•s_»gi¡”_ÝtiÚs +( +VOID +) + +88 +INTN + +»t +; + +90 +»t + = + `»gi¡”_cÚfig_ÝtiÚs +( +sysd•s_glob®_ÝtiÚs +, + +91 ( +sysd•s_glob®_ÝtiÚs +)/( +cÚfig_ÝtiÚ_t +), + +92 +OPTIONS_GROUP_GLOBAL +); + +95 ià( +»t + == -1 ) „et; + +97 +»t + = + `»gi¡”_cÚfig_ÝtiÚs +( +sysd•s_image_ÝtiÚs +, + +98 ( +sysd•s_image_ÝtiÚs +)/( +cÚfig_ÝtiÚ_t +), + +99 +OPTIONS_GROUP_IMAGE +); + +102  +»t +; + +103 + } +} + + @ia32/gzip.c + +29  + ~ + +30  + ~ + +32  + ~"–f.h +" + +33  + ~"–žo.h +" + +34  + ~"gz.h +" + +35  + ~"´iv©e.h +" + +37  + #LD_NAME + +L +"gz_Ÿ32" + + ) + +39  + #memz”o +( +s +, +n +è + `Mem£t +(( +VOID + *)(s), 0, (n)) + + ) + +40  + #memýy +( +a +, +b +, +n +è + `Memýy +(( +VOID + *)×),(b),Ò)) + + ) + +43  + #WSIZE + 0x8000 + + ) + +46  + #INBUFSIZE + 0x8000 + + ) + +52  + #OF +( +¬gs +è + ) +args + +53  + #FUNC_STATIC +  + + ) + +55  + tuch +; + +56  + tush +; + +57  + tulg +; + +60  + s£gm’t + { + +61  + maddr +; + +62  + moff£t +; + +63  + msize +; + +64  + mbss_sz +; + +65 +UINT8 + + mæags +; + +66 } + t£gm’t_t +; + +68  + #CHUNK_FL_VALID + 0x1 + + ) + +69  + #CHUNK_FL_LOAD + 0x2 + + ) + +71  + #CHUNK_CAN_LOAD +( +n +è +chunks +[Ò)]. +æags + |ð +CHUNK_FL_LOAD + + + ) + +72  + #CHUNK_NO_LOAD +( +n +è +chunks +[Ò)]. +æags + &ð~ +CHUNK_FL_LOAD + + + ) + +73  + #CHUNK_IS_LOAD +( +n +è( +chunks +[Ò)]. +æags + & +CHUNK_FL_LOAD +) + + ) + +75  + #CHUNK_VALIDATE +( +n +è +chunks +[Ò)]. +æags + |ð +CHUNK_FL_VALID + + + ) + +76  + #CHUNK_INVALIDATE +( +n +è +chunks +[Ò)]. +æags + = 0 + + ) + +77  + #CHUNK_IS_VALID +( +n +è( +chunks +[Ò)]. +æags + & +CHUNK_FL_VALID +) + + ) + +84  +£gm’t_t + * + gchunks +; + +85  +£gm’t_t + * + gcur_chunk +; + +86  +UINTN + + gnchunks +; + +87  +UINTN + + gchunk +; + +88  +UINTN + + gšput_fd +; + +89  +VOID + * + gk”Ãl_’Œy +, * + gk”Ãl_ba£ +, * + gk”Ãl_’d +; + +91  +uch + * + gšbuf +; + +92  +uch + * + gwšdow +; + +93  + gfže_off£t +; + +95  + gšsize + = 0; + +96  + gš±r + = 0; + +97  + goutút + = 0; + +100  + #ASCII_FLAG + 0x01 + + ) + +101  + #CONTINUATION + 0x02 + + ) + +102  + #EXTRA_FIELD + 0x04 + + ) + +103  + #ORIG_NAME + 0x08 + + ) + +104  + #COMMENT + 0x10 + + ) + +105  + #ENCRYPTED + 0x20 + + ) + +106  + #RESERVED + 0xC0 + + ) + +108  + #g‘_by‹ +(è( +š±r + < +šsize + ? +šbuf +[š±r++] : + `fžl_šbuf +()) + + ) + +111 #ifdeà +INFLATE_DEBUG + + +112  + #As£¹ +( +cÚd +, +msg +è{if(!(cÚd)è + `”rÜ +(msg);} + + ) + +113  + g¡d”r +; + +114  + #T¿û +( +x +è + `Pršt +( +L +"lš%d:\n", +__LINE__ +); + + ) + +115  + #T¿ûv +( +x +è{ià( +v”bo£ +è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +116  + #T¿ûvv +( +x +è{ià( +v”bo£ +>1è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +117  + #T¿ûc +( +c +, +x +è{ià( +v”bo£ + && (c)è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +118  + #T¿ûcv +( +c +, +x +è{ià( +v”bo£ +>1 && (c)è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +120  + #As£¹ +( +cÚd +, +msg +) + + ) + +121  + #T¿û +( +x +) + + ) + +122  + #T¿ûv +( +x +) + + ) + +123  + #T¿ûvv +( +x +) + + ) + +124  + #T¿ûc +( +c +, +x +) + + ) + +125  + #T¿ûcv +( +c +, +x +) + + ) + +128  +fžl_šbuf +(); + +129  +æush_wšdow +(); + +130  +”rÜ +(* +m +); + +131  + gby‹s_out +; + +132  +”rÜ +(* +m +); + +133  + g”rÜ_»tuº +; + +136 + $gz_m®loc +( +size +) + +138  (*) + `®loc +( +size +, 0); + +139 + } +} + +142 + $gz_ä“ +(* +wh”e +) + +144  + `ä“ +( +wh”e +); + +145 + } +} + +147  + ~"šæ©e.c +" + +154 + $fžl_šbuf +() + +156 +INTN + +ex³ùed +, +ėd +; + +157 +EFI_STATUS + +¡©us +; + +159 +ex³ùed + = +ėd + = +INBUFSIZE +; + +161 +¡©us + = + `fÝs_»ad +( +šput_fd +, +šbuf +, & +ėd +); + +162 ià( + `EFI_ERROR +( +¡©us +)) { + +163 + `”rÜ +("elilo: Read failed"); + +165 + `DBG_PRT +(( +L +"% :„—d %d by‹ oà%d by‹s\n", +LD_NAME +, +ėd +, +ex³ùed +)); + +167 +šsize + = +ėd +; + +168 +š±r + = 1; + +170  +šbuf +[0]; + +171 + } +} + +188 + $updüc +(* +s +,  +n +) + +190  +c +; + +193 ià(! +s +) { + +194 +c + = 0xffffffffL; + +196 +c + = +üc +; + +197  +n +--) { + +198 +c + = +üc_32_b +[(()ø^ (* +s +++)) & 0xff] ^ (c >> 8); + +201 +üc + = +c +; + +202  +c + ^ 0xffffffffUL; + +203 + } +} + +210 + $þ—r_bufs +() + +212 +outút + = 0; + +213 +š±r + = 0; + +214 +chunk + = 0; + +215 +cur_chunk + = +NULL +; + +216 +fže_off£t + = 0; + +217 + } +} + +220  +INTN + + +221 + $is_v®id_h—d” +( +Elf32_Ehdr + * +ehdr +) + +223 +UINT16 + +ty³ +, +machše +; + +225 +ty³ + = +ehdr +-> +e_ty³ +; + +226 +machše + = +ehdr +-> +e_machše +; + +228 + `VERB_PRT +(3, + `Pršt +( +L +"class=%dype=%d data=%d machine=%d\n", + +229 +ehdr +-> +e_id’t +[ +EI_CLASS +], + +230 +ty³ +, + +231 +ehdr +-> +e_id’t +[ +EI_DATA +], + +232 +machše +)); + +234  +ehdr +-> +e_id’t +[ +EI_MAG0 +] == 0x7f + +235 && +ehdr +-> +e_id’t +[ +EI_MAG1 +] == 'E' + +236 && +ehdr +-> +e_id’t +[ +EI_MAG2 +] == 'L' + +237 && +ehdr +-> +e_id’t +[ +EI_MAG3 +] == 'F' + +238 && +ehdr +-> +e_id’t +[ +EI_CLASS +] =ð +ELFCLASS32 + + +239 && +ty³ + =ð +ET_EXEC + + +240 && +machše + =ð +EM_386 + ? 0 : -1; + +241 + } +} + +247 + $check_ov”Ïp +( +i +) + +249  +j +; + +250  +›nd + = +chunks +[ +i +]. +addr + + chunks[i]. +size +; + +252  +j +=0; j < +nchunks +; j++) { + +253 ià( +j + == +i +) ; + +254 ià( +chunks +[ +i +]. +addr + >ðchunks[ +j +].add¸&& +›nd + < (chunks[j].add¸+ chunks[j]. +size +)) { + +255 + `DBG_PRT +(( +L +"% : segm’ˆ%d fuÎy inþuded iÀ£gm’ˆ%d\n", +LD_NAME +, +i +, +j +)); + +256 + `CHUNK_INVALIDATE +( +i +); + +260 + } +} + +263 + $ª®yze_chunks +() + +265 +INTN + +i +; + +267  +i +=0; i < +nchunks +; i++) { + +268 ià( + `CHUNK_IS_VALID +( +i +è&& ! + `CHUNK_IS_LOAD +(i)) + +269 + `check_ov”Ïp +( +i +); + +271 + } +} + +280 + $fœ¡_block + (cÚ¡ * +buf +,  +blocksize +) + +282 +Elf32_Ehdr + * +–f +; + +283 +Elf32_Phdr + * +phdrs +; + +284 +UINTN + +tÙ®_size +, +·ges +; + +285 +UINTN + +low_addr +, +max_addr +; + +286 +UINTN + +offs + = 0; + +287 +UINT16 + +phnum +; + +288 +UINTN + +·ddr +, +memsz +; + +289 +INTN + +i +; + +291 +–f + = ( +Elf32_Ehdr + *) +buf +; + +293 ià( + `is_v®id_h—d” +( +–f +) == -1) + +296 +offs + = +–f +-> +e_phoff +; + +297 +phnum + = +–f +-> +e_phnum +; + +299 + `VERB_PRT +(3, { + +300 + `Pršt +( +L +"EÁry…ošˆ0x%lx\n", +–f +-> +e_’Œy +); + +301 + `Pršt +( +L +"%d…rog¿m h—d”s\n", +phnum +); + +302 + `Pršt +( +L +"%d segm’ˆh—d”s\n", +–f +-> +e_shnum +); + +305 ià( +offs + + +phnum + * (* +phdrs +è> (è +blocksize +) { + +306 + `ERR_PRT +(( +L +"% : ELF…rog¿m h—d” nÙ iÀfœ¡ block (%ld)\n", +LD_NAME +, +offs +)); + +310 +k”Ãl_’Œy + = ( +VOID + *)( +–f +-> +e_’Œy + & +PADDR_MASK +); + +312 +phdrs + = ( +Elf32_Phdr + *è( +buf + + +offs +); + +313 +low_addr + = ~0; + +314 +max_addr + = 0; + +321 +chunks + = (*) + `®loc +(( +£gm’t +)* +phnum +, 0); + +322 ià( +chunks + =ð +NULL +) { + +323 + `ERR_PRT +(( +L +"% : fažed‡Îoøchunk %r\n", +LD_NAME +)); + +326 +nchunks + = +phnum +; + +331  +i + = 0; i < +phnum +; ++i) { + +336 +·ddr + = ( +phdrs +[ +i +]. +p_·ddr + & +PADDR_MASK +); + +337 +memsz + = +phdrs +[ +i +]. +p_memsz +, + +339 +chunks +[ +i +]. +addr + = +·ddr +; + +340 +chunks +[ +i +]. +off£t + = +phdrs +[i]. +p_off£t +; + +341 +chunks +[ +i +]. +size + = +phdrs +[i]. +p_fžesz +; + +342 +chunks +[ +i +]. +bss_sz + = +phdrs +[i]. +p_memsz + -…hdrs[i]. +p_fžesz +; + +344 + `CHUNK_VALIDATE +( +i +); + +346 ià( +phdrs +[ +i +]. +p_ty³ + !ð +PT_LOAD +) { + +347 + `CHUNK_NO_LOAD +( +i +); + +348 + `DBG_PRT +(( +L +"% : skpšg segm’ˆ%ld\n", +LD_NAME +, +i +)); + +352 + `CHUNK_CAN_LOAD +( +i +); + +354 + `VERB_PRT +(3, + +355 + `Pršt +( +L +"\n%s : segment %ld vaddr [0x%lx-0x%lx] offset %ld filesz %ld " + +357 +LD_NAME +, 1+ +i +, +chunks +[i]. +addr +, chunks[i].addr+ +phdrs +[i]. +p_fžesz +, + +358 +chunks +[ +i +]. +off£t +, chunks[i]. +size +, +memsz +, chunks[i]. +bss_sz +)); + +360 ià( +·ddr + < +low_addr +) + +361 +low_addr + = +·ddr +; + +362 ià( +·ddr + + +memsz + > +max_addr +) + +363 +max_addr + = +·ddr + + +memsz +; + +366 ià( +low_addr + & ( +EFI_PAGE_SIZE + - 1)) { + +367 + `ERR_PRT +(( +L +"% :†ow_add¸nمag®igÃd 0x%lx\n", +LD_NAME +, +low_addr +)); + +368  +”rÜ +; + +370 + `ª®yze_chunks +(); + +372 + `DBG_PRT +(( +L +"%s : %d…rogram headersƒntry=0x%lx\nlowest_addr=0x%lx highest_addr=0x%lx\n", + +373 +LD_NAME +, + +374 +phnum +, +k”Ãl_’Œy +, +low_addr +, +max_addr +)); + +376 +tÙ®_size + = ( +UINTN +) +max_addr + - (UINTN) +low_addr +; + +377 +·ges + = + `EFI_SIZE_TO_PAGES +( +tÙ®_size +); + +382 +k”Ãl_ba£ + = (*) +low_addr +; + +383 +k”Ãl_’d + = (*)( +low_addr + + ( +·ges + << +EFI_PAGE_SHIFT +)); + +386 ià( + `®loc_kmem +((*) +low_addr +, +·ges +) == -1) { + +387 + `ERR_PRT +(( +L +"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", + +388 +LD_NAME +, +·ges +, +low_addr +)); + +389 + `ERR_PRT +(( +L +"% : Could‚Ù†ßd k”ÃÈ© 0x%lx\n", +LD_NAME +, +low_addr +)); + +390 + `ERR_PRT +(( +L +"% : Bažšg\n", +LD_NAME +)); + +391  +”rÜ +; + +394 +”rÜ +: + +395 ià( +chunks +) + +396 + `ä“ +( +chunks +); + +398 + } +} + +405 + $Ãxtchunk +() + +407  +i +; + +408 +£gm’t_t + * +ý +; + +410 +ý + = +NULL +; + +411  +i +=0; i < +nchunks +; i++) { + +413 ià(! + `CHUNK_IS_VALID +( +i +è|| ! + `CHUNK_IS_LOAD +(i)) ; + +415 ià( +fže_off£t + > +chunks +[ +i +]. +off£t +) ; + +417 ià( +ý + =ð +NULL + || +chunks +[ +i +]. +off£t + < cp->offset) cp = &chunks[i]; + +419 +cur_chunk + = +ý +; + +420 + } +} + +428 + $æush_wšdow +() + +430 cÚ¡ +CHAR8 + +h–ic݋r +[4] = { '|' , '/' , '-' , '\\' }; + +431  +UINTN + +h–i_couÁ +; + +432  +£gm’t + * +ý +; + +433 * +¤c +, * +d¡ +; + +434  +út +; + +436 ià(! +outút +) ; + +438 + `DBG_PRT +(( +L +"% : flush_wšdow ouŠù=%d fže_off£t=%ld\n", +LD_NAME +, +outút +, +fže_off£t +)); + +440 + `Pršt +( +L +"%c\b", +h–ic݋r +[ +h–i_couÁ +++%4]); + +442 + `updüc +( +wšdow +, +outút +); + +445 ià(! +by‹s_out +) { + +446 ià( + `fœ¡_block +( +wšdow +, +outút +) < 0) + +447 + `”rÜ +("invalidƒxec header"); + +448 + `Ãxtchunk +(); + +451 +by‹s_out + +ð +outút +; + +452 +¤c + = +wšdow +; + +453 +ž +: + +455 ià( + `check_abÜt +(è=ð +EFI_SUCCESS +è +lßd_abÜt +; + +457 +ý + = +cur_chunk +; + +458 ià( +ý + =ð +NULL + || +fže_off£t + + +outút + <ðý-> +off£t +) { + +459 +fže_off£t + +ð +outút +; + +464 ià( +fže_off£t + < +ý +-> +off£t +) { + +465  +sk + = +ý +-> +off£t + - +fže_off£t +; + +467 +¤c + +ð +sk +; + +468 +fže_off£t + +ð +sk +; + +469 +outút + -ð +sk +; + +471 +d¡ + = (*) +ý +-> +addr + + ( +fže_off£t + - cp-> +off£t +); + +472 +út + = +ý +-> +off£t + + cp-> +size + - +fže_off£t +; + +473 ià( +út + > +outút +) + +474 +út + = +outút +; + +476 + `Memýy +( +d¡ +, +¤c +, +út +); + +478 +fže_off£t + +ð +út +; + +479 +outút + -ð +út +; + +480 +¤c + +ð +út +; + +483 ià( +fže_off£t + =ð +ý +-> +off£t + + cp-> +size +) { + +484 ià( +ý +-> +bss_sz +) { + +485 +d¡ + = (*) +ý +-> +addr + + cp-> +size +; + +486 + `Mem£t +( +d¡ +, 0, +ý +-> +bss_sz +); + +488 + `Ãxtchunk +(); + +490 ià( +outút +) + +491  +ž +; + +494 +lßd_abÜt +: + +495 + `ä“_kmem +(); + +496 +”rÜ_»tuº + = +ELILO_LOAD_ABORTED +; + +497 + } +} + +500 + $”rÜ +(* +x +) + +502 + `ERR_PRT +(( +L +"% : %a", +LD_NAME +, +x +)); + +504 + } +} + +506 +INT32 + + +507 + $decom´ess_k”Ãl +( +VOID +) + +509 +INT32 + +»t +; + +511 + `þ—r_bufs +(); + +512 + `makeüc +(); + +513 + `Pršt +( +L +"Uncompressing Linux... "); + +514 +»t + = + `gunz +(); + +515 ià( +»t + == 0) + +516 + `Pršt +( +L +"done\n"); + +517  +»t + == 0 ? 0 : -1; + +518 + } +} + +521 + $gunz_k”Ãl +( +fÝs_fd_t + +fd +, +kdesc_t + * +kd +) + +523  +»t + = -1; + +525 +”rÜ_»tuº + = +ELILO_LOAD_ERROR +; + +527 +wšdow + = (*) + `®loc +( +WSIZE +, 0); + +528 ià( +wšdow + =ð +NULL +) { + +529 + `ERR_PRT +(( +L +"% :‡Îoÿ‹ ouuˆwšdow fažed\n", +LD_NAME +)); + +533 +šbuf + = (*) + `®loc +( +INBUFSIZE +, 0); + +534 ià( +šbuf + =ð +NULL +) { + +535 + `ERR_PRT +(( +L +"% :‡Îoÿ‹ iÅuˆwšdow fažedr\n", +LD_NAME +)); + +536  +”rÜ +; + +538 +šput_fd + = +fd +; + +539 +šsize + = 0; + +540 +by‹s_out + = 0; + +542 +»t + = + `decom´ess_k”Ãl +(); + +543 +”rÜ +: + +544 ià( +wšdow +è + `ä“ +(window); + +545 ià( +šbuf +è + `ä“ +(inbuf); + +547 ià( +»t + == 0) { + +548 +kd +-> +k’Œy + = +k”Ãl_’Œy +; + +549 +kd +-> +k’d + = +k”Ãl_’d +; + +550 +kd +-> +k¡¬t + = +k”Ãl_ba£ +; + +551 +”rÜ_»tuº + = +ELILO_LOAD_SUCCESS +; + +553  +”rÜ_»tuº +; + +554 + } +} + + @ia32/gzip_loader.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"lßd”.h +" + +31  + ~"gz.h +" + +33  + #LD_NAME + +L +"gz_Ÿ32" + + ) + +35  +INTN + + +36 + $gz_´obe_fÜm© +( +CHAR16 + * +kÇme +) + +38 +UINT8 + +buf +[4]; + +39 +EFI_STATUS + +¡©us +; + +40 +INTN + +»t + = -1; + +41 +UINTN + +size +; + +42 +fÝs_fd_t + +fd +; + +44 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +45 ià( + `EFI_ERROR +( +¡©us +))  -1; + +47 +size + = ( +buf +); + +48 +¡©us + = + `fÝs_»ad +( +fd +, +buf +, & +size +); + +50 ià( + `EFI_ERROR +( +¡©us +è|| +size + !ð( +buf +)è +”rÜ +; + +52 +»t + = + `gz_´obe +( +buf +, (buf)); + +53 +”rÜ +: + +54 + `fÝs_þo£ +( +fd +); + +55  +»t +; + +56 + } +} + +59  +INTN + + +60 + $gz_lßd_k”Ãl +( +CHAR16 + * +kÇme +, +kdesc_t + * +kd +) + +62 +EFI_STATUS + +¡©us +; + +63 +INT32 + +»t +; + +64 +fÝs_fd_t + +fd +; + +66 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +67 ià( + `EFI_ERROR +( +¡©us +)è +ELILO_LOAD_ERROR +; + +69 +»t + = + `gunz_k”Ãl +( +fd +, +kd +); + +71 + `fÝs_þo£ +( +fd +); + +73  +»t +; + +74 + } +} + +76 +lßd”_Ýs_t + + ggz_lßd” +={ + +77 +NULL +, + +78 +LD_NAME +, + +79 +gz_´obe_fÜm© +, + +80 +gz_lßd_k”Ãl + + + @ia32/plain_loader.c + +29  + ~ + +30  + ~ + +32  + ~"–žo.h +" + +33  + ~"lßd”.h +" + +34  + ~"–f.h +" + +35  + ~"´iv©e.h +" + +37  + #LD_NAME + +L +"¶aš_–f32" + + ) + +39  +INTN + + +40 + $is_v®id_h—d” +( +Elf32_Ehdr + * +ehdr +) + +42 +UINT16 + +ty³ +, +machše +; + +44 +ty³ + = +ehdr +-> +e_ty³ +; + +45 +machše + = +ehdr +-> +e_machše +; + +47 + `DBG_PRT +(( +L +"class=%dype=%d data=%d machine=%d\n", + +48 +ehdr +-> +e_id’t +[ +EI_CLASS +], + +49 +ty³ +, + +50 +ehdr +-> +e_id’t +[ +EI_DATA +], + +51 +machše +)); + +53  +ehdr +-> +e_id’t +[ +EI_MAG0 +] == 0x7f + +54 && +ehdr +-> +e_id’t +[ +EI_MAG1 +] == 'E' + +55 && +ehdr +-> +e_id’t +[ +EI_MAG2 +] == 'L' + +56 && +ehdr +-> +e_id’t +[ +EI_MAG3 +] == 'F' + +57 && +ehdr +-> +e_id’t +[ +EI_CLASS +] =ð +ELFCLASS32 + + +58 && +ty³ + =ð +ET_EXEC + + +59 && +machše + =ð +EM_386 + ? 0 : -1; + +60 + } +} + +62  +INTN + + +63 + $¶aš_´obe +( +CHAR16 + * +kÇme +) + +65 +Elf32_Ehdr + +ehdr +; + +66 +EFI_STATUS + +¡©us +; + +67 +INTN + +»t + = -1; + +68 +fÝs_fd_t + +fd +; + +69 +UINTN + +size + = ( +ehdr +); + +71 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +72 ià( + `EFI_ERROR +( +¡©us +)) + +75 +¡©us + = + `fÝs_»ad +( +fd +, & +ehdr +, & +size +); + +76 ià( + `EFI_ERROR +( +¡©us +è|| +size + !ð( +ehdr +)) + +77  +”rÜ +; + +79 +»t + = + `is_v®id_h—d” +(& +ehdr +); + +80 +”rÜ +: + +81 + `fÝs_þo£ +( +fd +); + +82  +»t +; + +83 + } +} + +86  +INTN + + +87 + $lßd_–f +( +fÝs_fd_t + +fd +, +kdesc_t + * +kd +) + +89 +Elf32_Ehdr + +ehdr +; + +90 +Elf32_Phdr + * +phdrs +; + +91 +EFI_STATUS + +¡©us +; + +92 +INTN + +»t + = +ELILO_LOAD_ERROR +; + +93 +UINTN + +i +, +tÙ®_size + = 0; + +94 +UINTN + +·ges +, +size +, +bss_sz +, +osize +; + +95 +VOID + * +low_addr + = (VOID *)~0; + +96 +VOID + * +max_addr + = (VOID *)0; + +97 +UINTN + +·ddr +, +memsz +, +fžesz +; + +98 +UINT16 + +phnum +; + +100 + `Pršt +( +L +"Loading Linux... "); + +102 +size + = ( +ehdr +); + +104 +¡©us + = + `fÝs_»ad +( +fd +, & +ehdr +, & +size +); + +105 ià( + `EFI_ERROR +( +¡©us +è|| +size + < ( +ehdr +)) + +106  +ELILO_LOAD_ERROR +; + +108 ià( + `is_v®id_h—d” +(& +ehdr +) == -1) { + +109 + `ERR_PRT +(( +L +"% :‚Ù‡ 32-b™ ELF image\n", +LD_NAME +)); + +110  +ELILO_LOAD_ERROR +; + +112 + `VERB_PRT +(3, { + +113 + `Pršt +( +L +"ELF Header information: \n"); + +114 + `Pršt +( +L +"\tEÁry…ošˆ0x%x\n", ( +ehdr +. +e_’Œy + & +PADDR_MASK +)); + +115 + `Pršt +( +L +"\t%d…rog¿m h—d”s\n", +ehdr +. +e_phnum +); + +116 + `Pršt +( +L +"\t%d segm’ˆh—d”s\n", +ehdr +. +e_shnum +); + +119 +phnum + = +ehdr +. +e_phnum +; + +121 ià( + `fÝs_£ek +( +fd +, +ehdr +. +e_phoff +) < 0) { + +122 + `ERR_PRT +(( +L +"% : s“kØ%d f܅hdr çžed", +LD_NAME +, +ehdr +. +e_phoff +)); + +123  +ELILO_LOAD_ERROR +; + +125 +size + = +osize + = ( +phnum + * ( +Elf32_Phdr +)); + +127 + `DBG_PRT +(( +L +"%s :‡llocate %d bytes for %d…headersƒach of size:%d…hentsize=%d\n", + +128 +LD_NAME +, +size +, +phnum +, ( +Elf32_Phdr +), +ehdr +. +e_ph’tsize +)); + +130 +phdrs + = ( +Elf32_Phdr + *) + `®loc +( +size +, 0); + +131 ià( +phdrs + =ð +NULL +) { + +132 + `ERR_PRT +(( +L +"% :‡Îoÿ‹ f܅hdr çžed", +LD_NAME +)); + +133  +ELILO_LOAD_ERROR +; + +135 +¡©us + = + `fÝs_»ad +( +fd +, +phdrs +, & +size +); + +136 ià( + `EFI_ERROR +( +¡©us +è|| +size + !ð +osize +) { + +137 + `ERR_PRT +(( +L +"% :…hd¸lßd fažed", +LD_NAME +, +¡©us +)); + +138  +out +; + +143  +i + = 0; i < +phnum +; i++) { + +145 +·ddr + = ( +phdrs +[ +i +]. +p_·ddr + & +PADDR_MASK +); + +146 +memsz + = +phdrs +[ +i +]. +p_memsz +; + +148 + `DBG_PRT +(( +L +"Phdr %d…addr [0x%x-0x%x] offset 0x%x" + +150 1+ +i +, +·ddr +,…addr+ +phdrs +[i]. +p_fžesz +,…hdrs[i]. +p_off£t +, + +151 +phdrs +[ +i +]. +p_fžesz +, +memsz +, + +152 ( +memsz + - +phdrs +[ +i +]. +p_fžesz +),…hdrs[i]. +p_ty³ +)); + +154 ià( +phdrs +[ +i +]. +p_ty³ + !ð +PT_LOAD +) + +156 ià( +·ddr + < ( +UINTN +) +low_addr +) + +157 +low_addr + = ( +VOID + *) +·ddr +; + +158 ià( +·ddr + + +memsz + > ( +UINTN +) +max_addr +) + +159 +max_addr + = ( +VOID + *) +·ddr + + +memsz +; + +162 ià(( +UINTN +) +low_addr + & ( +EFI_PAGE_SIZE + - 1)) { + +163 + `ERR_PRT +(( +L +"%s : kernel†ow‡ddress 0x%x‚ot…age‡ligned\n", + +164 +LD_NAME +, +low_addr +)); + +165  +out +; + +168 +tÙ®_size + = ( +UINTN +) +max_addr + - (UINTN) +low_addr +; + +171 +·ges + = + `EFI_SIZE_TO_PAGES +( +tÙ®_size +); + +174 +kd +-> +k¡¬t + = +low_addr +; + +175 +kd +-> +k’d + = ( +low_addr + + ( +·ges + << +EFI_PAGE_SHIFT +)); + +176 +kd +-> +k’Œy + = ( +VOID + *)( +ehdr +. +e_’Œy + & +PADDR_MASK +); + +178 + `VERB_PRT +(3, { + +179 + `Pršt +( +L +"Lowest PhysAddr: 0x%x\nTotalMemSize:%d bytes (%d…ages)\n", + +180 +low_addr +, +tÙ®_size +, +·ges +); + +181 + `Pršt +( +L +"K”ÃȒŒy @ 0x%x\n", +kd +-> +k’Œy +); + +185 ià( + `®loc_kmem +( +low_addr +, +·ges +) == -1) { + +186 + `ERR_PRT +(( +L +"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", + +187 +LD_NAME +, +·ges +, +low_addr +)); + +188 + `ERR_PRT +(( +L +"%s : Could‚ot‡lloc %d…ages forhe kernel‡t 0x%lx " + +190 +LD_NAME +, +·ges +, +low_addr +)); + +191  +lßd_abÜt +; + +194 + `Mem£t +( +low_addr +, 0, ( +·ges + << +EFI_PAGE_SHIFT +)); + +196 + `VERB_PRT +(1, + `Pršt +( +L +"Press‡ny keyo interrupt\n")); + +203  +i + = 0; i < +phnum +; i++) { + +206 ià( +phdrs +[ +i +]. +p_ty³ + !ð +PT_LOAD +) + +209 + `VERB_PRT +(3, + `Pršt +( +L +"poffs: 0x%x (phdrs[%d].p_offset)\n", + +210 +phdrs +[ +i +]. +p_off£t +, i)); + +212 +fžesz + = +phdrs +[ +i +]. +p_fžesz +; + +213 +low_addr + = ( +VOID + *)(( +UINTN +è +phdrs +[ +i +]. +p_·ddr + & +PADDR_MASK +); + +216 ià( + `fÝs_£ek +( +fd +, +phdrs +[ +i +]. +p_off£t +) < 0) + +217  +out_k”Ãl +; + +220 +bss_sz + = +phdrs +[ +i +]. +p_memsz + - +fžesz +; + +222 + `VERB_PRT +(4, { + +223 + `Pršt +( +L +"\nH—d” #%d\n", +i +); + +224 + `Pršt +( +L +"Off£ˆš fž0x%x\n", +phdrs +[ +i +]. +p_off£t +); + +225 + `Pršt +( +L +"PhysiÿÈadd¸0x%x\n", +low_addr +); + +226 + `Pršt +( +L +"BSS siz0x%x by‹s\n", +bss_sz +); + +232 +»t + = + `fÝs_»ad +( +fd +, +low_addr +, & +fžesz +); + +233 ià( +»t + =ð +ELILO_LOAD_ABORTED +è +lßd_abÜt +; + +234 ià( +»t + =ð +ELILO_LOAD_ERROR +è +out +; + +239 ià( +bss_sz +) + +240 + `Mem£t +(( +VOID + *) +low_addr ++ +fžesz +, 0, +bss_sz +); + +243 + `ä“ +( +phdrs +); + +245 + `Pršt +( +L +"..Done\n"); + +246  +ELILO_LOAD_SUCCESS +; + +248 +lßd_abÜt +: + +249 + `Pršt +( +L +"..Aborted\n"); + +250 +»t + = +ELILO_LOAD_ABORTED +; + +251 +out_k”Ãl +: + +253 + `ä“_kmem +(); + +254 +out +: + +255 + `ä“ +( +phdrs +); + +256  +»t +; + +257 + } +} + +259  +INTN + + +260 + $¶aš_lßd_k”Ãl +( +CHAR16 + * +kÇme +, +kdesc_t + * +kd +) + +262 +INTN + +»t +; + +263 +fÝs_fd_t + +fd +; + +264 +EFI_STATUS + +¡©us +; + +269 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +270 ià( + `EFI_ERROR +( +¡©us +)è +ELILO_LOAD_ERROR +; + +272 + `Pršt +( +L +"Lßdšg %s...", +kÇme +); + +274 +»t + = + `lßd_–f +( +fd +, +kd +); + +276 + `fÝs_þo£ +( +fd +); + +277  +»t +; + +278 + } +} + +280 +lßd”_Ýs_t + + g¶aš_lßd” +={ + +281 +NULL +, + +282 +LD_NAME +, + +283 +¶aš_´obe +, + +284 +¶aš_lßd_k”Ãl + + + @ia32/private.h + +26 #iâdeà +__ELILO_PRIVATE_IA32_H__ + + +27  + #__ELILO_PRIVATE_IA32_H__ + + + ) + + @ia32/sysdeps.h + +32 #iâdeà +__ELILO_SYSDEPS_IA32_H__ + + +33  + #__ELILO_SYSDEPS_IA32_H__ + + + ) + +35  + #ELILO_ARCH + "IA-32" + + ) + +36  + #PADDR_MASK + 0xfffffff + + ) + +39  + #Mem£t +( +a +, +v +, +n +è + `S‘Mem +(×),Ò),(v)) + + ) + +40  + #Memýy +( +a +, +b +, +n +è + `CÝyMem +(×),(b),Ò)) + + ) + +61 #´agm¨ +·ck +(1) + +62  + uŸ32_boÙ_·¿ms + { + +63 +UINT8 + + m¿w +[0x2000]; + +66 +UINT8 + + mÜig_cursÜ_cÞ +; + +67 +UINT8 + + mÜig_cursÜ_row +; + +70 +UINT16 + + mext_mem_k +; + +73 +UINT16 + + mÜig_video_·ge +; + +74 +UINT8 + + mÜig_video_mode +; + +75 +UINT8 + + mÜig_video_cÞs +; + +77 +UINT16 + + munu£d_1 +; + +80 +UINT16 + + mÜig_ega_bx +; + +82 +UINT16 + + munu£d_2 +; + +85 +UINT8 + + mÜig_video_rows +; + +88 +UINT8 + + mis_vga +; + +89 +UINT16 + + mÜig_video_pošts +; + +92 +UINT16 + + mlfb_width +; + +93 +UINT16 + + mlfb_height +; + +94 +UINT16 + + mlfb_d•th +; + +95 +UINT32 + + mlfb_ba£ +; + +96 +UINT32 + + mlfb_size +; + +101 +UINT16 + + mcmdlše_magik +; + +102  + #CMDLINE_MAGIK + 0xA33F + + ) + +103 +UINT16 + + mcmdlše_off£t +; + +106 +UINT16 + + mlfb_lše_Ën +; + +109 +UINT8 + + mlfb_»d_size +; + +110 +UINT8 + + mlfb_»d_pos +; + +111 +UINT8 + + mlfb_g»’_size +; + +112 +UINT8 + + mlfb_g»’_pos +; + +113 +UINT8 + + mlfb_blue_size +; + +114 +UINT8 + + mlfb_blue_pos +; + +115 +UINT8 + + mlfb_rsvd_size +; + +116 +UINT8 + + mlfb_rsvd_pos +; + +119 +UINT16 + + mve§_£g +; + +120 +UINT16 + + mve§_off +; + +123 +UINT16 + + mlfb_·ges +; + +124 +UINT8 + + mlfb_»£rved +[0x0C]; + +127 +UINT16 + + m­m_bios_v” +; + +128  + #NO_APM_BIOS + 0x0000 + + ) + +131 +UINT16 + + mbios_code_£g +; + +132 +UINT32 + + mbios_’Œy_pošt +; + +133 +UINT16 + + mbios_code_£g16 +; + +134 +UINT16 + + mbios_d©a_£g +; + +137 +UINT16 + + m­m_bios_æags +; + +138  + #NO_32BIT_APM_MASK + 0xFFFD + + ) + +141 +UINT32 + + mbios_code_Ën +; + +142 +UINT16 + + mbios_d©a_Ën +; + +144 +UINT8 + + munu£d_3 +[0x2C]; + +147 +UINT8 + + mhd0_šfo +[0x10]; + +148 +UINT8 + + mhd1_šfo +[0x10]; + +151 +UINT16 + + mmÿ_šfo_Ën +; + +152 +UINT8 + + mmÿ_šfo_buf +[0x10]; + +154 +UINT8 + + munu£d_4 +[0x10E]; + +157 +UINT8 + + mefi_lßd”_sig +[4]; + +158  + #EFI_LOADER_SIG + "EFIL" + + ) + +161 +UINT32 + + mefi_sys_tbl +; + +164 +UINT32 + + mefi_mem_desc_size +; + +167 +UINT32 + + mefi_mem_desc_v” +; + +170 +UINT32 + + mefi_mem_m­ +; + +171 +UINT32 + + mefi_mem_m­_size +; + +174 +UINT32 + + mlßd”_¡¬t +; + +175 +UINT32 + + mlßd”_size +; + +178 +UINT32 + + m®t_mem_k +; + +180 +UINT8 + + munu£d_5 +[0x0D]; + +183 +UINT8 + + m£tup_£ùÜs +; + +186 +UINT16 + + mmouÁ_roÙ_rdÚly +; + +189 +UINT16 + + msys_size +; + +192 +UINT16 + + msw­_dev +; + +195 +UINT16 + + m¿mdisk_æags +; + +196  + #RAMDISK_PROMPT + 0x8000 + + ) + +197  + #RAMDISK_LOAD + 0x4000 + + ) + +200 +UINT16 + + mvideo_mode_æag +; + +203 +UINT16 + + mÜig_roÙ_dev +; + +205 +UINT8 + + munu£d_6 +; + +208 +UINT8 + + maux_dev_šfo +; + +209  + #NO_MOUSE + 0x00 + + ) + +210  + #FOUND_MOUSE + 0xAA + + ) + +213 +UINT16 + + mjump +; + +216 +UINT8 + + m£tup_sig +[4]; + +217  + #SETUP_SIG + "HdrS" + + ) + +220 +UINT8 + + mhdr_mšÜ +; + +221 +UINT8 + + mhdr_majÜ +; + +224 +UINT32 + + mrm_sw™ch +; + +227 +UINT16 + + m¡¬t_sys_£g +; + +230 +UINT16 + + mk”Ãl_v”¡r_off£t +; + +233 +UINT8 + + mlßd”_ty³ +; + +234  + #LDRTYPE_ELILO + 0x50 + + ) + +237 +UINT8 + + mlßd”_æags +; + +238  + #LDRFLAG_CAN_USE_HEAP + 0x80 + + ) + +239  + #LDRFLAG_BOOT_PARAM_RELOC + 0x40 + + ) + +242 +UINT16 + + m£tup_move_size +; + +245 +UINT32 + + mk”Ãl_¡¬t +; + +248 +UINT32 + + mš™rd_¡¬t +; + +249 +UINT32 + + mš™rd_size +; + +252 +UINT32 + + mboÙ£ù_h–³r +; + +255 +UINT16 + + mh—p_’d_±r +; + +258 +UINT16 + + munu£d_7 +; + +260 +UINT32 + + mcmdlše_addr +; + +261 } + ms +; + +262 } + tboÙ_·¿ms_t +; + +263 #´agm¨ +·ck +() + +274  + #MEMCPY +( +to +, +äom +, +út +) { \ + +275 +UINT8 + * +t + = (UINT8 *)( +to +); \ + +276 +UINT8 + * +f + = (UINT8 *)( +äom +); \ + +277 +UINTN + +n + = +út +; \ + +278 ià( +t + && +f + && +n +) { \ + +279  +n +--) { \ + +280 * +t +++ = * +f +++; \ + +283 } + + ) + +285  + #MEMSET +( +±r +, +size +, +v® +) { \ + +286 +UINT8 + * +p + = (UINT8 *)( +±r +); \ + +287 +UINTN + +n + = (UINTN)( +size +); \ + +288 +UINT8 + +v + = (UINT8)( +v® +); \ + +289 ià( +p + && +n +) { \ + +290  +n +--) { \ + +291 * +p +++ = +v +; \ + +294 } + + ) + +299 #´agm¨ +·ck +(1) + +301 +UINT16 + + mlim™ +; + +302 +UINT32 + + mba£ +; + +303 } + tdt_addr_t +; + +304 #´agm¨ +·ck +() + +306 +UINTN + +high_ba£_mem +; + +307 +UINTN + +high_ext_mem +; + +309 +boÙ_·¿ms_t + * +·¿m_¡¬t +; + +310 +UINTN + +·¿m_size +; + +312 +VOID + * +k”Ãl_¡¬t +; + +313 +UINTN + +k”Ãl_size +; + +315 +VOID + * +š™rd_¡¬t +; + +316 +UINTN + +š™rd_size +; + +318 +dt_addr_t + +gdt_addr +; + +319 +dt_addr_t + +idt_addr +; + +321 +UINT16 + +š™_gdt +[]; + +322 +UINTN + +sizeof_š™_gdt +; + +324 +UINT8 + +rmsw™ch_image +[]; + +325 +UINTN + +rmsw™ch_size +; + +327 +INTN + +Ÿ32_u£_Ëgacy_ä“_boÙ +(); + +333  +šlše +  + +334 + $¡¬t_k”Ãl +( +VOID + * +k’Œy +, +boÙ_·¿ms_t + * +bp +) + +339 +asm + volatile ( "cli" : : ); + +345 ià( +bp +-> +s +. +š™rd_¡¬t +) { + +346 + `MEMCPY +(15 * 1024 * 1024, +bp +-> +s +. +š™rd_¡¬t +, bp->s. +š™rd_size +); + +347 +bp +-> +s +. +š™rd_¡¬t + = 15 * 1024 * 1024; + +355 + `MEMCPY +( +high_ba£_mem +, +bp +, 0x4000); + +361 + `MEMSET +( +gdt_addr +. +ba£ +, gdt_addr. +lim™ +, 0); + +362 + `MEMCPY +( +gdt_addr +. +ba£ +, +š™_gdt +, +sizeof_š™_gdt +); + +364 ià(! + `Ÿ32_u£_Ëgacy_ä“_boÙ +()) { + +370 + `MEMCPY +(0x7C00, +rmsw™ch_image +, +rmsw™ch_size +); + +372 +asm + volatile ( "movl $0x7C00, %%ebx" : : ); + +373 +asm + volatile ( "jmp *%%ebx" : : ); + +380 +asm + vÞ©žÐ"lidˆ%0" : : "m" ( +idt_addr +) ); + +381 +asm + vÞ©žÐ"lgdˆ%0" : : "m" ( +gdt_addr +) ); + +389 +asm + vÞ©žÐ"movÈ%0, %%esi" : : "m" ( +high_ba£_mem +) ); + +390 +asm + vÞ©žÐ"movÈ%0, %%ecx" : : "m" ( +k’Œy +) ); + +391 +asm + volatile ( "xorl %%ebx, %%ebx" : : ); + +397 +asm + volatile ( "jmp *%%ecx" : : ); + +398 + } +} + +400  + ssys_img_ÝtiÚs + { + +401 +UINT8 + + mnÙhšg_y‘ +; + +402 } + tsys_img_ÝtiÚs_t +; + + @ia32/system.c + +31  + ~ + +32  + ~ + +34  + ~"–žo.h +" + +35  + ~"lßd”.h +" + +36  + ~"rmsw™ch.h +" + +38 +lßd”_Ýs_t + +bzimage_lßd” +, +¶aš_lßd” +, +gz_lßd” +; + +44 +dt_addr_t + + ggdt_addr + = { 0x800, 0x94000 }; + +45 +dt_addr_t + + gidt_addr + = { 0, 0 }; + +51 +UINT16 + + gš™_gdt +[] = { + +71 +UINTN + + gsizeof_š™_gdt + =  +š™_gdt +; + +86 +UINTN + + ghigh_ba£_mem + = 0x90000; + +97 +UINTN + + ghigh_ext_mem + = 32 * 1024 * 1024; + +100 +VOID + * + gk”Ãl_¡¬t + = (VOID *)0x100000; + +102 +VOID + * + gš™rd_¡¬t + = +NULL +; + +103 +UINTN + + gš™rd_size + = 0; + +105 +INTN + + +106 + $sysd•s_š™ +( +EFI_HANDLE + +dev +) + +108 + `DBG_PRT +(( +L +"sysdeps_init()\n")); + +114 + `lßd”_»gi¡” +(& +bzimage_lßd” +); + +115 + `lßd”_»gi¡” +(& +¶aš_lßd” +); + +116 + `lßd”_»gi¡” +(& +gz_lßd” +); + +118 + } +} + +128 +INTN + + +129 + $sysd•s_š™rd_g‘_addr +( +kdesc_t + * +kd +, +memdesc_t + * +imem +) + +131 + `DBG_PRT +(( +L +"initrd_get_addr()\n")); + +133 ià(! +kd + || ! +imem +) { + +134 + `ERR_PRT +(( +L +"kd=0x%x imem=0x%x", +kd +, +imem +)); + +138 + `VERB_PRT +(3, + `Pršt +( +L +"kstart=0x%x kentry=0x%x kend=0x%x\n", + +139 +kd +-> +k¡¬t +, kd-> +k’Œy +, kd-> +k’d +)); + +141 +imem +-> +¡¬t_addr + = +kd +-> +k’d +; + +143 + `VERB_PRT +(3, + `Pršt +( +L +"initrd start_addr=0x%x…gcnt=%d\n", + +144 +imem +-> +¡¬t_addr +, imem-> +pgút +)); + +147 + } +} + +149 +VOID + + +150 + $sysd•s_ä“_boÙ_·¿ms +( +boÙ_·¿ms_t + * +bp +) + +152 +mm­_desc_t + +md +; + +154 + `Z”oMem +(& +md +,  md); + +155 +md +.md = ( +VOID + *) +bp +-> +s +. +efi_mem_m­ +; + +156 + `ä“_memm­ +(& +md +); + +157 + } +} + +162 +INTN + + +163 + $sysd•s_ü—‹_boÙ_·¿ms +( + +164 +boÙ_·¿ms_t + * +bp +, + +165 +CHAR8 + * +cmdlše +, + +166 +memdesc_t + * +š™rd +, + +167 +memdesc_t + * +vmcode +, + +168 +UINTN + * +cook› +) + +170 +mm­_desc_t + +mdesc +; + +171 +EFI_STATUS + +efi_¡©us +; + +172 +UINTN + +rows +, +cÞs +; + +173 +UINT8 + +row +, +cÞ +; + +174 +UINT8 + +mode +; + +175 +UINT16 + +hdr_v”siÚ +; + +177 + `DBG_PRT +(( +L +"fill_boot_params()\n")); + +179 ià(! +bp + || ! +cmdlše + || ! +š™rd + || ! +cook› +) { + +180 + `ERR_PRT +(( +L +"bp=0x%x cmdline=0x%x initrd=0x%x cookie=0x%x", + +181 +bp +, +cmdlše +, +š™rd +, +cook› +)); + +183 ià( +·¿m_¡¬t + !ð +NULL +) { + +184 + `ä“ +( +·¿m_¡¬t +); + +185 +·¿m_¡¬t + = +NULL +; + +186 +·¿m_size + = 0; + +188 + `ä“_kmem +(); + +198 ià( +·¿m_¡¬t + !ð +NULL +) { + +199 + `CÝyMem +( +bp +, +·¿m_¡¬t +, 0x2000); + +200 + `ä“ +( +·¿m_¡¬t +); + +201 +·¿m_¡¬t + = +NULL +; + +202 +·¿m_size + = 0; + +207 +hdr_v”siÚ + = ( +bp +-> +s +. +hdr_majÜ + << 8è| bp->s. +hdr_mšÜ +; + +212 +bp +-> +s +. +unu£d_1 + = 0; + +213 +bp +-> +s +. +unu£d_2 + = 0; + +214 + `Z”oMem +( +bp +-> +s +. +unu£d_3 +,  bp->s.unused_3); + +215 + `Z”oMem +( +bp +-> +s +. +unu£d_4 +,  bp->s.unused_4); + +216 + `Z”oMem +( +bp +-> +s +. +unu£d_5 +,  bp->s.unused_5); + +217 +bp +-> +s +. +unu£d_6 + = 0; + +218 +bp +-> +s +. +unu£d_7 + = 0; + +226 +bp +-> +s +. +lßd”_ty³ + = +LDRTYPE_ELILO +; + +232 +bp +-> +s +. +cmdlše_magik + = +CMDLINE_MAGIK +; + +233 +bp +-> +s +. +cmdlše_off£t + = ( +UINT8 + *) +cmdlše + - (UINT8 *)bp; + +239 +bp +-> +s +. +cmdlše_addr + = 0x0; + +247 + `Z”oMem +( +bp +-> +s +. +hd0_šfo +,  bp->s.hd0_info); + +248 + `Z”oMem +( +bp +-> +s +. +hd1_šfo +,  bp->s.hd1_info); + +254 +bp +-> +s +. +®t_mem_k + = +high_ext_mem + / 1024; + +256 ià( +bp +-> +s +. +®t_mem_k + <= 65535) + +257 +bp +-> +s +. +ext_mem_k + = ( +UINT16 +)bp->s. +®t_mem_k +; + +259 +bp +-> +s +. +ext_mem_k + = 65535; + +265 + `DBG_PRT +(( +L +"initrd->start_addr=0x%x initrd->pgcnt=%d\n", + +266 +š™rd +-> +¡¬t_addr +, in™rd-> +pgút +)); + +269 +bp +-> +s +. +¿mdisk_æags + = 0; + +271 ià( +š™rd +-> +¡¬t_addr + && in™rd-> +pgút +) { + +273 +bp +-> +s +. +š™rd_¡¬t + = ( +UINT32 +) +š™rd +-> +¡¬t_addr +; + +274 +bp +-> +s +. +š™rd_size + = ( +UINT32 +)( +š™rd +-> +size +); + +281 +bp +-> +s +. +Üig_roÙ_dev + = 0x0100; + +283 +bp +-> +s +. +š™rd_¡¬t + = 0; + +284 +bp +-> +s +. +š™rd_size + = 0; + +290 +bp +-> +s +. +­m_bios_v” + = +NO_APM_BIOS +; + +291 +bp +-> +s +. +bios_code_£g + = 0; + +292 +bp +-> +s +. +bios_’Œy_pošt + = 0; + +293 +bp +-> +s +. +bios_code_£g16 + = 0; + +294 +bp +-> +s +. +bios_d©a_£g + = 0; + +295 +bp +-> +s +. +­m_bios_æags + = 0; + +296 +bp +-> +s +. +bios_code_Ën + = 0; + +297 +bp +-> +s +. +bios_d©a_Ën + = 0; + +302 +bp +-> +s +. +mÿ_šfo_Ën + = 0; + +303 + `Z”oMem +( +bp +-> +s +. +mÿ_šfo_buf +,  bp->s.mca_info_buf); + +308 +bp +-> +s +. +aux_dev_šfo + = +NO_MOUSE +; + +313 + `CÝyMem +( +bp +-> +s +. +efi_lßd”_sig +, +EFI_LOADER_SIG +, 4); + +318 +bp +-> +s +. +k”Ãl_¡¬t + = ( +UINT32 +)kernel_start; + +330  + #CHECK_OFFSET +( +n +, +o +, +f +) \ + +332 +UINTN + +p + = ( +UINT8 + *)& +bp +-> +s +. +n + - (UINT8 *)bp; \ + +333 +UINTN + +q + = (UINTN)( +o +); \ + +334 ià( +p + !ð +q +) { \ + +335 +‹¡ + |= 1; \ + +336 + `Pršt +( +L +"%20a: %3xh %3xh ", #n, +p +, +q +); \ + +337 ià(* +f +) { \ + +338 + `Pršt +( +f +, +bp +-> +s +. +n +); \ + +340 + `Pršt +( +L +"\n"); \ + +342 } + + ) + +344  + #WAIT_FOR_KEY +() \ + +346 +EFI_INPUT_KEY + +key +; \ + +347  +ST +-> +CÚIn +-> + `R—dKeySŒoke +(ST->CÚIn, & +key +è!ð +EFI_SUCCESS +) { \ + +350 } + + ) + +352 +UINTN + +‹¡ + = 0; + +354 + `CHECK_OFFSET +( +Üig_cursÜ_cÞ +, 0x00, +L +"%xh"); + +355 + `CHECK_OFFSET +( +Üig_cursÜ_row +, 0x01, +L +"%xh"); + +356 + `CHECK_OFFSET +( +ext_mem_k +, 0x02, +L +"%xh"); + +357 + `CHECK_OFFSET +( +Üig_video_·ge +, 0x04, +L +"%xh"); + +358 + `CHECK_OFFSET +( +Üig_video_mode +, 0x06, +L +"%xh"); + +359 + `CHECK_OFFSET +( +Üig_video_cÞs +, 0x07, +L +"%xh"); + +360 + `CHECK_OFFSET +( +Üig_ega_bx +, 0x0A, +L +"%xh"); + +361 + `CHECK_OFFSET +( +Üig_video_rows +, 0x0E, +L +"%xh"); + +362 + `CHECK_OFFSET +( +is_vga +, 0x0F, +L +"%xh"); + +363 + `CHECK_OFFSET +( +Üig_video_pošts +, 0x10, +L +"%xh"); + +364 + `CHECK_OFFSET +( +lfb_width +, 0x12, +L +"%xh"); + +365 + `CHECK_OFFSET +( +lfb_height +, 0x14, +L +"%xh"); + +366 + `CHECK_OFFSET +( +lfb_d•th +, 0x16, +L +"%xh"); + +367 + `CHECK_OFFSET +( +lfb_ba£ +, 0x18, +L +"%xh"); + +368 + `CHECK_OFFSET +( +lfb_size +, 0x1C, +L +"%xh"); + +369 + `CHECK_OFFSET +( +cmdlše_magik +, 0x20, +L +"%xh"); + +370 + `CHECK_OFFSET +( +cmdlše_off£t +, 0x22, +L +"%xh"); + +371 + `CHECK_OFFSET +( +lfb_lše_Ën +, 0x24, +L +"%xh"); + +372 + `CHECK_OFFSET +( +lfb_»d_size +, 0x26, +L +"%xh"); + +373 + `CHECK_OFFSET +( +lfb_»d_pos +, 0x27, +L +"%xh"); + +374 + `CHECK_OFFSET +( +lfb_g»’_size +, 0x28, +L +"%xh"); + +375 + `CHECK_OFFSET +( +lfb_g»’_pos +, 0x29, +L +"%xh"); + +376 + `CHECK_OFFSET +( +lfb_blue_size +, 0x2A, +L +"%xh"); + +377 + `CHECK_OFFSET +( +lfb_blue_pos +, 0x2B, +L +"%xh"); + +378 + `CHECK_OFFSET +( +lfb_rsvd_size +, 0x2C, +L +"%xh"); + +379 + `CHECK_OFFSET +( +lfb_rsvd_pos +, 0x2D, +L +"%xh"); + +380 + `CHECK_OFFSET +( +ve§_£g +, 0x2E, +L +"%xh"); + +381 + `CHECK_OFFSET +( +ve§_off +, 0x30, +L +"%xh"); + +382 + `CHECK_OFFSET +( +lfb_·ges +, 0x32, +L +"%xh"); + +383 + `CHECK_OFFSET +( +lfb_»£rved +, 0x34, +L +""); + +384 + `CHECK_OFFSET +( +­m_bios_v” +, 0x40, +L +"%xh"); + +385 + `CHECK_OFFSET +( +bios_code_£g +, 0x42, +L +"%xh"); + +386 + `CHECK_OFFSET +( +bios_’Œy_pošt +, 0x44, +L +"%xh"); + +387 + `CHECK_OFFSET +( +bios_code_£g16 +, 0x48, +L +"%xh"); + +388 + `CHECK_OFFSET +( +bios_d©a_£g +, 0x4A, +L +"%xh"); + +389 + `CHECK_OFFSET +( +­m_bios_æags +, 0x4C, +L +"%xh"); + +390 + `CHECK_OFFSET +( +bios_code_Ën +, 0x4E, +L +"%xh"); + +391 + `CHECK_OFFSET +( +bios_d©a_Ën +, 0x52, +L +"%xh"); + +392 + `CHECK_OFFSET +( +hd0_šfo +, 0x80, +L +""); + +393 + `CHECK_OFFSET +( +hd1_šfo +, 0x90, +L +""); + +394 + `CHECK_OFFSET +( +mÿ_šfo_Ën +, 0xA0, +L +"%xh"); + +395 + `CHECK_OFFSET +( +mÿ_šfo_buf +, 0xA2, +L +""); + +396 + `CHECK_OFFSET +( +efi_lßd”_sig +, 0x1C0, +L +"'%-4.4a'"); + +397 + `CHECK_OFFSET +( +efi_sys_tbl +, 0x1C4, +L +"%xh"); + +398 + `CHECK_OFFSET +( +efi_mem_desc_size +, 0x1C8, +L +"%xh"); + +399 + `CHECK_OFFSET +( +efi_mem_desc_v” +, 0x1CC, +L +"%xh"); + +400 + `CHECK_OFFSET +( +efi_mem_m­ +, 0x1D0, +L +"%xh"); + +401 + `CHECK_OFFSET +( +efi_mem_m­_size +, 0x1D4, +L +"%xh"); + +402 + `CHECK_OFFSET +( +lßd”_¡¬t +, 0x1D8, +L +"%xh"); + +403 + `CHECK_OFFSET +( +lßd”_size +, 0x1DC, +L +"%xh"); + +404 + `CHECK_OFFSET +( +®t_mem_k +, 0x1E0, +L +"%xh"); + +405 + `CHECK_OFFSET +( +£tup_£ùÜs +, 0x1F1, +L +"%xh"); + +406 + `CHECK_OFFSET +( +mouÁ_roÙ_rdÚly +, 0x1F2, +L +"%xh"); + +407 + `CHECK_OFFSET +( +sys_size +, 0x1F4, +L +"%xh"); + +408 + `CHECK_OFFSET +( +sw­_dev +, 0x1F6, +L +"%xh"); + +409 + `CHECK_OFFSET +( +¿mdisk_æags +, 0x1F8, +L +"%xh"); + +410 + `CHECK_OFFSET +( +video_mode_æag +, 0x1FA, +L +"%xh"); + +411 + `CHECK_OFFSET +( +Üig_roÙ_dev +, 0x1FC, +L +"%xh"); + +412 + `CHECK_OFFSET +( +aux_dev_šfo +, 0x1FF, +L +"%xh"); + +413 + `CHECK_OFFSET +( +jump +, 0x200, +L +"%xh"); + +414 + `CHECK_OFFSET +( +£tup_sig +, 0x202, +L +"'%-4.4a'"); + +415 + `CHECK_OFFSET +( +hdr_mšÜ +, 0x206, +L +"%xh"); + +416 + `CHECK_OFFSET +( +hdr_majÜ +, 0x207, +L +"%xh"); + +417 + `CHECK_OFFSET +( +rm_sw™ch +, 0x208, +L +"%xh"); + +418 + `CHECK_OFFSET +( +¡¬t_sys_£g +, 0x20C, +L +"%xh"); + +419 + `CHECK_OFFSET +( +k”Ãl_v”¡r_off£t +, 0x20E, +L +"%xh"); + +420 + `CHECK_OFFSET +( +lßd”_ty³ +, 0x210, +L +"%xh"); + +421 + `CHECK_OFFSET +( +lßd”_æags +, 0x211, +L +"%xh"); + +422 + `CHECK_OFFSET +( +£tup_move_size +, 0x212, +L +"%xh"); + +423 + `CHECK_OFFSET +( +k”Ãl_¡¬t +, 0x214, +L +"%xh"); + +424 + `CHECK_OFFSET +( +š™rd_¡¬t +, 0x218, +L +"%xh"); + +425 + `CHECK_OFFSET +( +š™rd_size +, 0x21C, +L +"%xh"); + +426 + `CHECK_OFFSET +( +boÙ£ù_h–³r +, 0x220, +L +"%xh"); + +427 + `CHECK_OFFSET +( +h—p_’d_±r +, 0x224, +L +"%xh"); + +428 + `CHECK_OFFSET +( +cmdlše_addr +, 0x228, +L +"%xh"); + +430 ià( +‹¡ +) { + +431 + `ERR_PRT +(( +L +"Boot sector‡nd/or setup…arameter‡lignmentƒrror.")); + +432 + `ä“_kmem +(); + +443 +efi_¡©us + = +ST +-> +CÚOut +-> + `Qu”yMode +( + +444 +ST +-> +CÚOut +, + +445 +ST +-> +CÚOut +-> +Mode +->Mode, + +446 & +cÞs +, + +447 & +rows +); + +449 ià( + `EFI_ERROR +( +efi_¡©us +)) { + +450 + `ERR_PRT +(( +L +"QueryMode failed. Fake it.")); + +451 +mode + = 3; + +452 +rows + = 25; + +453 +cÞs + = 80; + +454 +row + = 24; + +455 +cÞ + = 0; + +457 +mode + = ( +UINT8 +) +ST +-> +CÚOut +-> +Mode +->Mode; + +458 +cÞ + = ( +UINT8 +) +ST +-> +CÚOut +-> +Mode +-> +CursÜCÞumn +; + +459 +row + = ( +UINT8 +) +ST +-> +CÚOut +-> +Mode +-> +CursÜRow +; + +462 +bp +-> +s +. +Üig_cursÜ_cÞ + = +cÞ +; + +463 +bp +-> +s +. +Üig_cursÜ_row + = +row +; + +464 +bp +-> +s +. +Üig_video_·ge + = 0; + +465 +bp +-> +s +. +Üig_video_mode + = +mode +; + +466 +bp +-> +s +. +Üig_video_cÞs + = ( +UINT8 +) +cÞs +; + +467 +bp +-> +s +. +Üig_video_rows + = ( +UINT8 +) +rows +; + +469 +bp +-> +s +. +Üig_ega_bx + = 0; + +470 +bp +-> +s +. +is_vga + = 0; + +471 +bp +-> +s +. +Üig_video_pošts + = 16; + +473 +bp +-> +s +. +lfb_width + = 0; + +474 +bp +-> +s +. +lfb_height + = 0; + +475 +bp +-> +s +. +lfb_d•th + = 0; + +476 +bp +-> +s +. +lfb_ba£ + = 0; + +477 +bp +-> +s +. +lfb_size + = 0; + +478 +bp +-> +s +. +lfb_lše_Ën + = 0; + +479 +bp +-> +s +. +lfb_»d_size + = 0; + +480 +bp +-> +s +. +lfb_»d_pos + = 0; + +481 +bp +-> +s +. +lfb_g»’_size + = 0; + +482 +bp +-> +s +. +lfb_g»’_pos + = 0; + +483 +bp +-> +s +. +lfb_blue_size + = 0; + +484 +bp +-> +s +. +lfb_blue_pos + = 0; + +485 +bp +-> +s +. +lfb_rsvd_size + = 0; + +486 +bp +-> +s +. +lfb_rsvd_pos + = 0; + +487 +bp +-> +s +. +lfb_·ges + = 0; + +488 +bp +-> +s +. +ve§_£g + = 0; + +489 +bp +-> +s +. +ve§_off + = 0; + +495 ià( + `g‘_memm­ +(& +mdesc +)) { + +496 + `ERR_PRT +(( +L +"Could‚ot get memory map.")); + +497 + `ä“_kmem +(); + +500 * +cook› + = +mdesc +.cookie; + +501 +bp +-> +s +. +efi_mem_m­ + = ( +UINTN +) +mdesc +. +md +; + +502 +bp +-> +s +. +efi_mem_m­_size + = +mdesc +. +m­_size +; + +503 +bp +-> +s +. +efi_mem_desc_size + = +mdesc +. +desc_size +; + +504 +bp +-> +s +. +efi_mem_desc_v” + = +mdesc +. +desc_v”siÚ +; + +505 +bp +-> +s +. +efi_sys_tbl + = ( +UINTN +) +sy¡ab +; + +508 + } +} + + @ia64/config.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"cÚfig.h +" + +31  + ~"´iv©e.h +" + +32  + ~"sysd•s.h +" + +33  + ~"g‘Ýt.h +" + +36 +CHAR16 + + måswa +[ +FILENAME_MAXLEN +]; + +37 +CHAR16 + + mcmd_åswa +[ +FILENAME_MAXLEN +]; + +38 +UINTN + + m®low_»loÿtiÚ +; + +39 } + tŸ64_glob®_cÚfig_t +; + +41  + #Ÿ64_Ýt_off£tof +( +ÝtiÚ +è(&(( +sys_img_ÝtiÚs_t + *)(0x0))->ÝtiÚ) + + ) + +43  +Ÿ64_glob®_cÚfig_t + + gŸ64_gcÚf +; + +50 +cÚfig_ÝtiÚ_t + + gsysd•s_glob®_ÝtiÚs +[]={ + +51 { +OPT_FILE +, +OPT_GLOBAL +, +L +"åswa", +NULL +, NULL, +Ÿ64_gcÚf +. +åswa +}, + +52 { +OPT_BOOL +, +OPT_GLOBAL +, +L +"»loÿbË", +NULL +, NULL, & +Ÿ64_gcÚf +. +®low_»loÿtiÚ +}, + +55 +cÚfig_ÝtiÚ_t + + gsysd•s_image_ÝtiÚs +[]={ + +56 { +OPT_BOOL +, +OPT_IMAGE_SYS +, +L +"»loÿbË", +NULL +, NULL, +Ÿ64_Ýt_off£tof +( +®low_»loÿtiÚ +)}, + +67 +INTN + + +68 + $sysd•s_´–oÝ_aùiÚs +( +EFI_HANDLE + +dev +, +CHAR16 + ** +¬gv +, +INTN + +¬gc +, INTN +šdex +, EFI_HANDLE +image +) + +74 ià( +Ÿ64_gcÚf +. +cmd_åswa +[0] !ð +CHAR_NULL +) { + +75 + `check_åswa +( +image +, +dev +, +Ÿ64_gcÚf +. +cmd_åswa +); + +76 } ià( +Ÿ64_gcÚf +. +åswa +[0] !ð +CHAR_NULL +) + +77 + `check_åswa +( +image +, +dev +, +Ÿ64_gcÚf +. +åswa +); + +79 + `check_åswa +( +image +, +dev +, +NULL +); + +82 + } +} + +92 +INTN + + +93 + $Ÿ64_ÿn_»loÿ‹ +( +VOID +) + +95  +Ÿ64_gcÚf +. +®low_»loÿtiÚ + =ð +TRUE + + +96 || ( +–žo_Ýt +. +sys_img_Ýts + &&ƒlžo_Ýt.sys_img_Ýts-> +®low_»loÿtiÚ + == +TRUE +) ? 1 : 0; + +97 + } +} + +99  + #IA64_CMDLINE_OPTIONS + +L +"rF:" + + ) + +101 +CHAR16 + * + +102 + $sysd•s_g‘_cmdlše_Ýts +( +VOID +) + +104  +IA64_CMDLINE_OPTIONS +; + +105 + } +} + +107 +INTN + + +108 + $sysd•s_g‘Ýt +( +INTN + +c +, INTN +Ýtšd +, +CHAR16 + * +ݏrg +) + +110 +INTN + +»t + = 0; + +115  +c +) { + +116  +L +'r': + +117 +Ÿ64_gcÚf +. +®low_»loÿtiÚ + = 1; + +119  +L +'F': + +120 ià( + `SŒL’ +( +O±¬g +è>ð +FILENAME_MAXLEN +) { + +121 + `Pršt +( +L +"FPSWA fž’ami lim™edØ%d ch¬aù”s\n", +FILENAME_MAXLEN +); + +124 + `SŒCpy +( +Ÿ64_gcÚf +. +cmd_åswa +, +O±¬g +); + +127 +»t + = -1; + +129  +»t +; + +130 + } +} + +132 +VOID + + +133 + $sysd•s_´št_cmdlše_Ýts +( +VOID +) + +135 + `Pršt +( +L +"-r kernel image can be„elocated if†oad‡ddress inexistent\n"); + +136 + `Pršt +( +L +"-F file‚ame of‡ specific FPSWA EFI drivero†oad\n"); + +137 + } +} + +139 +INTN + + +140 + $sysd•s_»gi¡”_ÝtiÚs +( +VOID +) + +142 +INTN + +»t +; + +144 +»t + = + `»gi¡”_cÚfig_ÝtiÚs +( +sysd•s_glob®_ÝtiÚs +, + +145 ( +sysd•s_glob®_ÝtiÚs +)/( +cÚfig_ÝtiÚ_t +), + +146 +OPTIONS_GROUP_GLOBAL +); + +147 ià( +»t + == -1 ) „et; + +149 +»t + = + `»gi¡”_cÚfig_ÝtiÚs +( +sysd•s_image_ÝtiÚs +, + +150 ( +sysd•s_image_ÝtiÚs +)/( +cÚfig_ÝtiÚ_t +), + +151 +OPTIONS_GROUP_IMAGE +); + +153  +»t +; + +154 + } +} + + @ia64/fpswa.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"fžeÝs.h +" + +33 +UINT32 + + m»visiÚ +; + +34 +UINT32 + + m»£rved +; + +35 +VOID + * + måswa +; + +36 } + tåswa_š‹rçû_t +; + +38 +INTN + + +39 + $qu”y_åswa +( +VOID + ** +åswa +) + +41 +EFI_HANDLE + +åswa_image +; + +42 +UINTN + +size +; + +43 +EFI_STATUS + +¡©us +; + +44 +EFI_GUID + +FpswaPrÙocÞ + = +FPSWA_PROTOCOL +; + +46 + `DBG_PRT +(( +L +"Querying FpswaProtocol")); + +48 +size + = ( +EFI_HANDLE +); + +50 +¡©us + = +BS +-> + `Loÿ‹HªdË +( +ByPrÙocÞ +, & +FpswaPrÙocÞ +, +NULL +, & +size +, & +åswa_image +); + +51 ià( + `EFI_ERROR +( +¡©us +)) { + +52 + `ERR_PRT +(( +L +"boÙ_·¿m could‚Ù†oÿ‹ FPSWA driv”", +¡©us +)); + +55 +¡©us + = +BS +-> + `HªdËPrÙocÞ +( +åswa_image +, & +FpswaPrÙocÞ +, +åswa +); + +56 ià( + `EFI_ERROR +( +¡©us +)) { + +57 + `ERR_PRT +(( +L +"boot_params FpswaProtocol‚ot‡ble findhe interface")); + +60 + `VERB_PRT +(3, + `Pršt +( +L +"FpswaPrÙocÞ = 0x%lx„evisiÚ=%x\n", * +åswa +, + +61 (( +åswa_š‹rçû_t + *)* +åswa +)-> +»visiÚ +)); + +63 + } +} + +66  +INTN + + +67 + $do_check_åswa +( +EFI_HANDLE + +image +, EFI_HANDLE +dev +, +CHAR16 + * +åswa_fže +) + +69 +EFI_STATUS + +¡©us +; + +70 +EFI_HANDLE + +hªdË +; + +71 +EFI_DEVICE_PATH + * +dp +; + +74 +dp + = + `FžeDeviûP©h +( +dev +, +åswa_fže +); + +75 ià( +dp + =ð +NULL +) { + +76 + `ERR_PRT +(( +L +"CªnÙ c»©FžeP©h fÜ %s", +åswa_fže +)); + +79 +¡©us + = +BS +-> + `LßdImage +(0, +image +, +dp +, +NULL +, 0, & +hªdË +); + +80 ià( + `EFI_ERROR +( +¡©us +)) { + +81 + `VERB_PRT +(3, + `Pršt +( +L +"..not found\n")); + +82 + `F»ePoÞ +( +dp +); + +85 + `VERB_PRT +(3, + `Pršt +( +L +"..starting..")); + +87 +¡©us + = +BS +-> + `S¹Image +( +hªdË +, 0, 0); + +88 ià( + `EFI_ERROR +( +¡©us +)) { + +89 + `VERB_PRT +(3, + `Pršt +( +L +"çžed (%r)\n", +¡©us +)); + +96 + `VERB_PRT +(3, + `Pršt +( +L +"..ok\n")); + +98 + `F»ePoÞ +( +dp +); + +101 + } +} + +111 +INTN + + +112 + $check_åswa +( +EFI_HANDLE + +image +, EFI_HANDLE +dev +, +CHAR16 + * +åswa_fže +) + +123  +CHAR16 + * +åswa_fž’ames +[] ={ + +124 +L +"\\efi\\intel firmware\\fpswa.efi", + +126 +L +"\\fpswa.efi", + +127 +L +"\\fw\\fpswa.efi", + +128 +L +"\\efi\\fpswa.efi", + +129 +L +"\\efi\\tools\\fpswa.efi", + +130 +L +"\\fpswa.efi", + +131 +L +"fpswa.efi", + +134 +UINTN + +j +, +couÁ + = ( +åswa_fž’ames +)/( +CHAR16 + *); + +135 +INTN + +cook› +; + +136 +CHAR16 + +devÇme +[ +FILENAME_MAXLEN +]; + +138 ià( +åswa_fže +) { + +139 +INTN + +r +; + +140 +devÇme +[0] = +CHAR_NULL +; + +141 +r + = + `fÝs_¥l™_·th +( +åswa_fže +, +devÇme +); + +142 ià( +r + == -1) { + +143 + `ERR_PRT +(( +L +"FPSWA driv” fž’amtoØlÚg %s", +åswa_fže +)); + +146 ià( +devÇme +[0] !ð +CHAR_NULL +) { + +147 ià( + `fÝs_g‘_deviû_hªdË +( +devÇme +, & +dev +è!ð +EFI_SUCCESS +) { + +148 + `ERR_PRT +(( +L +"ÿÂÙ fšd deviû % fÜ FPSWA driv”", +devÇme +)); + +152  + `do_check_åswa +( +image +, +dev +, +åswa_fže +); + +155 +cook› + = 0; + +156  + `fÝs_g‘_Ãxt_deviû +( +cook› +, +L +"vçt", +FILENAME_MAXLEN +, &cook›, +devÇme +, & +dev +è=ð +EFI_SUCCESS +) { + +157  +j + = 0; j < +couÁ +; j++) { + +158 + `VERB_PRT +(3, + `Pršt +( +L +"Tryšg FPSWA driv” %s:%s..", +devÇme +, +åswa_fž’ames +[ +j +])); + +163 + `do_check_åswa +( +image +, +dev +, +åswa_fž’ames +[ +j +]); + +167 + } +} + + @ia64/gzip.c + +29  + ~ + +30  + ~ + +32  + ~"–f.h +" + +33  + ~"–žo.h +" + +35  + ~"gz.h +" + +37  + ~"´iv©e.h +" + +38  + ~"£tjmp.h +" + +40  + #LD_NAME + +L +"gz_Ÿ64" + + ) + +42  + #memz”o +( +s +, +n +è + `Mem£t +(( +VOID + *)(s), 0, (n)) + + ) + +43  + #memýy +( +a +, +b +, +n +è + `Memýy +(( +VOID + *)×),(b),Ò)) + + ) + +46  + #WSIZE + 0x8000 + + ) + +49  + #INBUFSIZE + 0x8000 + + ) + +55  + #OF +( +¬gs +è + ) +args + +56  + #FUNC_STATIC +  + + ) + +58  + tuch +; + +59  + tush +; + +60  + tulg +; + +63  + s£gm’t + { + +64  + maddr +; + +65  + moff£t +; + +66  + msize +; + +67  + mbss_sz +; + +68 +UINT8 + + mæags +; + +69 } + t£gm’t_t +; + +71  + #CHUNK_FL_VALID + 0x1 + + ) + +72  + #CHUNK_FL_LOAD + 0x2 + + ) + +73  + #CHUNK_FL_X + 0x4 + + ) + +75  + #CHUNK_CAN_LOAD +( +n +è +chunks +[Ò)]. +æags + |ð +CHUNK_FL_LOAD + + + ) + +76  + #CHUNK_NO_LOAD +( +n +è +chunks +[Ò)]. +æags + &ð~ +CHUNK_FL_LOAD + + + ) + +77  + #CHUNK_IS_LOAD +( +n +è( +chunks +[Ò)]. +æags + & +CHUNK_FL_LOAD +) + + ) + +79  + #CHUNK_VALIDATE +( +n +è +chunks +[Ò)]. +æags + |ð +CHUNK_FL_VALID + + + ) + +80  + #CHUNK_INVALIDATE +( +n +è +chunks +[Ò)]. +æags + = 0 + + ) + +81  + #CHUNK_IS_VALID +( +n +è( +chunks +[Ò)]. +æags + & +CHUNK_FL_VALID +) + + ) + +88  +£gm’t_t + * + gchunks +; + +89  +£gm’t_t + * + gcur_chunk +; + +90  +UINTN + + gnchunks +; + +91  +UINTN + + gchunk +; + +92  +UINTN + + gšput_fd +; + +93  +VOID + * + gk”Ãl_’Œy +, * + gk”Ãl_ba£ +, * + gk”Ãl_’d +; + +95  +uch + * + gšbuf +; + +96  +uch + * + gwšdow +; + +97  + gfže_off£t +; + +99  + gšsize + = 0; + +100  + gš±r + = 0; + +101  + goutút + = 0; + +104  + #ASCII_FLAG + 0x01 + + ) + +105  + #CONTINUATION + 0x02 + + ) + +106  + #EXTRA_FIELD + 0x04 + + ) + +107  + #ORIG_NAME + 0x08 + + ) + +108  + #COMMENT + 0x10 + + ) + +109  + #ENCRYPTED + 0x20 + + ) + +110  + #RESERVED + 0xC0 + + ) + +112  + #g‘_by‹ +(è( +š±r + < +šsize + ? +šbuf +[š±r++] : + `fžl_šbuf +()) + + ) + +115 #ifdeà +INFLATE_DEBUG + + +116  + #As£¹ +( +cÚd +, +msg +è{if(!(cÚd)è + `”rÜ +(msg);} + + ) + +117  + g¡d”r +; + +118  + #T¿û +( +x +è + `Pršt +( +L +"lš%d:\n", +__LINE__ +); + + ) + +119  + #T¿ûv +( +x +è{ià( +v”bo£ +è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +120  + #T¿ûvv +( +x +è{ià( +v”bo£ +>1è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +121  + #T¿ûc +( +c +, +x +è{ià( +v”bo£ + && (c)è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +122  + #T¿ûcv +( +c +, +x +è{ià( +v”bo£ +>1 && (c)è + `Pršt +( +L +"lš%d:\n", +__LINE__ +è;} + + ) + +124  + #As£¹ +( +cÚd +, +msg +) + + ) + +125  + #T¿û +( +x +) + + ) + +126  + #T¿ûv +( +x +) + + ) + +127  + #T¿ûvv +( +x +) + + ) + +128  + #T¿ûc +( +c +, +x +) + + ) + +129  + #T¿ûcv +( +c +, +x +) + + ) + +132  +fžl_šbuf +(); + +133  +æush_wšdow +(); + +134  +”rÜ +(* +m +); + +135  + gby‹s_out +; + +137  +”rÜ +(* +m +); + +139  +jmp_buf + + gjbuf +; + +140  + g”rÜ_»tuº +; + +141  +UINTN + + g–f_is_big_’dŸn +; + +144 + $gz_m®loc +( +size +) + +146  (*) + `®loc +( +size +, 0); + +147 + } +} + +150 + $gz_ä“ +(* +wh”e +) + +152  + `ä“ +( +wh”e +); + +153 + } +} + +155  + ~"šæ©e.c +" + +162 + $fžl_šbuf +() + +164 +INTN + +ex³ùed +, +ėd +; + +165 +EFI_STATUS + +¡©us +; + +167 +ex³ùed + = +ėd + = +INBUFSIZE +; + +169 +¡©us + = + `fÝs_»ad +( +šput_fd +, +šbuf +, & +ėd +); + +170 ià( + `EFI_ERROR +( +¡©us +)) { + +171 + `”rÜ +("elilo: Read failed"); + +173 + `DBG_PRT +(( +L +"% :„—d %d by‹ oà%d by‹s\n", +LD_NAME +, +ėd +, +ex³ùed +)); + +175 +šsize + = +ėd +; + +176 +š±r + = 1; + +178  +šbuf +[0]; + +179 + } +} + +196 + $updüc +(* +s +,  +n +) + +198  +c +; + +201 ià(! +s +) { + +202 +c + = 0xffffffffL; + +204 +c + = +üc +; + +205  +n +--) { + +206 +c + = +üc_32_b +[(()ø^ (* +s +++)) & 0xff] ^ (c >> 8); + +209 +üc + = +c +; + +210  +c + ^ 0xffffffffUL; + +211 + } +} + +218 + $þ—r_bufs +() + +220 +outút + = 0; + +221 +š±r + = 0; + +222 +chunk + = 0; + +223 +cur_chunk + = +NULL +; + +224 +fže_off£t + = 0; + +225 + } +} + +228  +šlše + +UINT64 + + +229 + $bsw­64 +( +UINT64 + +v +) + +231 if( +–f_is_big_’dŸn +è +v + = + `__Ÿ64_swab64 +(v); + +232  +v +; + +233 + } +} + +235  +šlše + +UINT32 + + +236 + $bsw­32 +( +UINT32 + +v +) + +238 if( +–f_is_big_’dŸn +è +v + = + `__Ÿ64_swab32 +(v); + +239  +v +; + +240 + } +} + +242  +šlše + +UINT16 + + +243 + $bsw­16 +( +UINT16 + +v +) + +245 if( +–f_is_big_’dŸn +è +v + = + `__Ÿ64_swab16 +(v); + +246  +v +; + +247 + } +} + +249  +INTN + + +250 + $is_v®id_h—d” +( +Elf64_Ehdr + * +ehdr +) + +252 +UINT16 + +ty³ +, +machše +; + +254 ià( +ehdr +-> +e_id’t +[ +EI_DATA +] =ð +ELFDATA2MSB +) { + +255 +ty³ + = + `__Ÿ64_swab16 +( +ehdr +-> +e_ty³ +); + +256 +machše + = + `__Ÿ64_swab16 +( +ehdr +-> +e_machše +); + +258 +ty³ + = +ehdr +-> +e_ty³ +; + +259 +machše + = +ehdr +-> +e_machše +; + +261 + `VERB_PRT +(3, + `Pršt +( +L +"class=%dype=%d data=%d machine=%d\n", + +262 +ehdr +-> +e_id’t +[ +EI_CLASS +], + +263 +ty³ +, + +264 +ehdr +-> +e_id’t +[ +EI_DATA +], + +265 +machše +)); + +267  +ehdr +-> +e_id’t +[ +EI_MAG0 +] == 0x7f + +268 && +ehdr +-> +e_id’t +[ +EI_MAG1 +] == 'E' + +269 && +ehdr +-> +e_id’t +[ +EI_MAG2 +] == 'L' + +270 && +ehdr +-> +e_id’t +[ +EI_MAG3 +] == 'F' + +271 && +ehdr +-> +e_id’t +[ +EI_CLASS +] =ð +ELFCLASS64 + + +272 && +ty³ + =ð +ET_EXEC + + +273 && +machše + =ð +EM_IA_64 + ? 0 : -1; + +274 + } +} + +280 + $check_ov”Ïp +( +i +) + +282  +j +; + +283  +›nd + = +chunks +[ +i +]. +addr + + chunks[i]. +size +; + +285  +j +=0; j < +nchunks +; j++) { + +286 ià( +j + == +i +) ; + +287 ià( +chunks +[ +i +]. +addr + >ðchunks[ +j +].add¸&& +›nd + < (chunks[j].add¸+ chunks[j]. +size +)) { + +288 + `DBG_PRT +(( +L +"% : segm’ˆ%d fuÎy inþuded iÀ£gm’ˆ%d\n", +LD_NAME +, +i +, +j +)); + +289 + `CHUNK_INVALIDATE +( +i +); + +293 + } +} + +296 + $ª®yze_chunks +() + +298 +INTN + +i +; + +300  +i +=0; i < +nchunks +; i++) { + +301 ià( + `CHUNK_IS_VALID +( +i +è&& ! + `CHUNK_IS_LOAD +(i)è + `check_ov”Ïp +(i); + +303 + } +} + +312 + $fœ¡_block + (cÚ¡ * +buf +,  +blocksize +) + +314 +Elf64_Ehdr + * +–f +; + +315 +Elf64_Phdr + * +phdrs +; + +316 +UINTN + +tÙ®_size +, +·ges +; + +317 +UINTN + +low_addr +, +max_addr +; + +318 +UINTN + +lßd_off£t + = 0; + +319 +UINTN + +offs + = 0; + +320 +UINT16 + +phnum +; + +321 +UINTN + +·ddr +, +memsz +; + +322 +INTN + +i +; + +324 +–f + = ( +Elf64_Ehdr + *) +buf +; + +326 ià( + `is_v®id_h—d” +( +–f +) == -1)  -1; + +329 +–f_is_big_’dŸn + = +–f +-> +e_id’t +[ +EI_DATA +] =ð +ELFDATA2MSB + ? 1 : 0; + +332 +offs + = + `bsw­64 +( +–f +-> +e_phoff +); + +333 +phnum + = + `bsw­16 +( +–f +-> +e_phnum +); + +335 + `VERB_PRT +(3, { + +336 + `Pršt +( +L +"ELF fži %s\n", +–f_is_big_’dŸn + ? L"bigƒndian" : L"littleƒndian"); + +337 + `Pršt +( +L +"EÁry…ošˆ0x%lx\n", + `bsw­64 +( +–f +-> +e_’Œy +)); + +338 + `Pršt +( +L +"%d…rog¿m h—d”s\n", +phnum +); + +339 + `Pršt +( +L +"%d segm’ˆh—d”s\n", + `bsw­16 +( +–f +-> +e_shnum +)); + +344 ià( +offs + + +phnum + * (* +phdrs +è> (è +blocksize +) { + +345 + `ERR_PRT +(( +L +"% : ELF…rog¿m h—d” nÙ iÀfœ¡ block (%ld)\n", +LD_NAME +, +offs +)); + +349 +k”Ãl_’Œy + = (*) + `bsw­64 +( +–f +-> +e_’Œy +); + +351 ià((( +UINTN +) +k”Ãl_’Œy + >> 61) != 0) { + +352 + `ERR_PRT +(( +L +"%s: <>ƒÁry…ošˆi ¨vœtu®‡dd»s 0x%lx :‚Ù suµÜ‹d‡nymÜe\n", +LD_NAME +, +k”Ãl_’Œy +)); + +355 +phdrs + = ( +Elf64_Phdr + *è( +buf + + +offs +); + +357 +low_addr + = ~0; + +358 +max_addr + = 0; + +365 +chunks + = (*) + `®loc +(( +£gm’t +)* +phnum +, 0); + +366 ià( +chunks + =ð +NULL +) { + +367 + `ERR_PRT +(( +L +"% : fažed‡Îoøchunk %r\n", +LD_NAME +)); + +370 +nchunks + = +phnum +; + +375  +i + = 0; i < +phnum +; ++i) { + +381 +·ddr + = + `bsw­64 +( +phdrs +[ +i +]. +p_·ddr +); + +382 +memsz + = + `bsw­64 +( +phdrs +[ +i +]. +p_memsz +), + +384 +chunks +[ +i +]. +addr + = +·ddr +; + +385 +chunks +[ +i +]. +off£t + = + `bsw­64 +( +phdrs +[i]. +p_off£t +); + +386 +chunks +[ +i +]. +size + = + `bsw­64 +( +phdrs +[i]. +p_fžesz +); + +387 +chunks +[ +i +]. +bss_sz + = + `bsw­64 +( +phdrs +[i]. +p_memsz +è- bsw­64Õhdrs[i]. +p_fžesz +); + +389 + `CHUNK_VALIDATE +( +i +); + +391 ià( + `bsw­32 +( +phdrs +[ +i +]. +p_ty³ +è!ð +PT_LOAD +) { + +392 + `CHUNK_NO_LOAD +( +i +); + +393 + `DBG_PRT +(( +L +"% : skpšg segm’ˆ%ld\n", +LD_NAME +, +i +)); + +397 ià( + `bsw­32 +( +phdrs +[ +i +]. +p_æags +è& +PF_X +) + +398 +chunks +[ +i +]. +æags + |ð +CHUNK_FL_X +; + +400 + `CHUNK_CAN_LOAD +( +i +); + +402 + `VERB_PRT +(3, + +403 + `Pršt +( +L +"\n%s : segment %ld vaddr [0x%lx-0x%lx] offset %ld filesz %ld memsz=%ld bss_sz=%ld\n", + +404 +LD_NAME +, + +405 1+ +i +, + +406 +chunks +[ +i +]. +addr +, + +407 +chunks +[ +i +]. +addr ++ + `bsw­64 +( +phdrs +[i]. +p_fžesz +), + +408 +chunks +[ +i +]. +off£t +, + +409 +chunks +[ +i +]. +size +, + +410 +memsz +, + +411 +chunks +[ +i +]. +bss_sz +)); + +413 ià( +·ddr + < +low_addr +)†ow_addr =…addr; + +415 ià( +·ddr + + +memsz + > +max_addr +) max_addr =…addr + memsz; + +418 ià( +low_addr + & ( +EFI_PAGE_SIZE + - 1)) { + +419 + `ERR_PRT +(( +L +"% :†ow_add¸nمag®igÃd 0x%lx\n", +LD_NAME +, +low_addr +)); + +420  +”rÜ +; + +423 + `ª®yze_chunks +(); + +425 + `DBG_PRT +(( +L +"%s : %d…rogram headersƒntry=0x%lx\nlowest_addr=0x%lx highest_addr=0x%lx\n", + +426 +LD_NAME +, + +427 +phnum +, +k”Ãl_’Œy +, +low_addr +, +max_addr +)); + +429 +tÙ®_size + = ( +UINTN +) +max_addr + - (UINTN) +low_addr +; + +430 +·ges + = + `EFI_SIZE_TO_PAGES +( +tÙ®_size +); + +435 +k”Ãl_ba£ + = (*) +low_addr +; + +436 +k”Ãl_’d + = (*)( +low_addr + + ( +·ges + << +EFI_PAGE_SHIFT +)); + +439 ià( + `®loc_kmem +((*) +low_addr +, +·ges +) == -1) { + +440 +VOID + * +Ãw_addr +; + +442 + `VERB_PRT +(1, ( +L +"% : AÎoÿ‹Pages(%d, 0x%lxèfÜ k”ÃÈçžed\n", +LD_NAME +, +·ges +, +low_addr +)); + +444 ià( + `Ÿ64_ÿn_»loÿ‹ +() == 0) { + +445 + `ERR_PRT +(( +L +"relocation is disabled, cannot†oad kernel")); + +446  +”rÜ +; + +458 + `VERB_PRT +(1, + `Pršt +( +L +"Attemptingo„elocate kernel.\n")); + +460 ià( + `fšd_k”Ãl_memÜy +(( +VOID +*è +low_addr +, (VOID*è +max_addr +, 256* +MB +, & +Ãw_addr +) == -1) { + +461 + `ERR_PRT +(( +L +"% : fšd_k”Ãl_memÜy(0x%lx, 0x%lx, 0x%lx, 0x%lxèçžed\n", +LD_NAME +, +low_addr +, +max_addr +, 256* +MB +, & +lßd_off£t +)); + +462  +”rÜ +; + +465 +lßd_off£t + = ( +UINTN +è( +Ãw_addr + - + `ROUNDDOWN +((UINTNè +low_addr +,256* +MB +)); + +467 + `VERB_PRT +(1, ( +L +"low_addr=0x%lx‚ew_addr=0x%lx off£t=0x%lx", +low_addr +, +Ãw_addr +, +lßd_off£t +)); + +472 +k”Ãl_ba£ + = (*è(( +UINTN +èk”Ãl_ba£ + +lßd_off£t +); + +473 +k”Ãl_’d + = (*è(( +UINTN +èk”Ãl_’d + +lßd_off£t +); + +474 +k”Ãl_’Œy + = (*è(( +UINTN +èk”Ãl_’Œy + +lßd_off£t +); + +476  +i + = 0; i < +phnum +; ++i) { + +477 +chunks +[ +i +]. +addr + +ð +lßd_off£t +; + +478 +phdrs +[ +i +]. +p_·ddr + = ( +Elf64_Addr +è(( +UINT64 +èphdrs[i].p_·dd¸+ +lßd_off£t +); + +484 ià( + `®loc_kmem +((*) +low_addr ++ +lßd_off£t +, +·ges +) == -1) { + +485 + `ERR_PRT +(( +L +"% : AÎoÿ‹Pages(%d, 0x%lxèfÜ k”ÃÈçžed\n", +LD_NAME +, +·ges +, +low_addr ++ +lßd_off£t +)); + +486 + `ERR_PRT +(( +L +"R–oÿtiÚ by 0x%lx by‹ çžed.\n", +lßd_off£t +)); + +487  +”rÜ +; + +491 +”rÜ +: + +492 ià( +chunks +è + `ä“ +(chunks); + +494 + } +} + +501 + $Ãxtchunk +() + +503  +i +; + +504 +£gm’t_t + * +ý +; + +506 +ý + = +NULL +; + +507  +i +=0; i < +nchunks +; i++) { + +509 ià(! + `CHUNK_IS_VALID +( +i +è|| ! + `CHUNK_IS_LOAD +(i)) ; + +511 ià( +fže_off£t + > +chunks +[ +i +]. +off£t +) ; + +513 ià( +ý + =ð +NULL + || +chunks +[ +i +]. +off£t + < cp->offset) cp = &chunks[i]; + +515 +cur_chunk + = +ý +; + +516 + } +} + +524 + $æush_wšdow +() + +526 cÚ¡ +CHAR8 + +h–ic݋r +[4] = { '|' , '/' , '-' , '\\' }; + +527  +UINTN + +h–i_couÁ +; + +528  +£gm’t + * +ý +; + +529 * +¤c +, * +d¡ +; + +530  +út +; + +532 ià(! +outút +) ; + +534 + `DBG_PRT +(( +L +"% : flush_wšdow ouŠù=%d fže_off£t=%ld\n", +LD_NAME +, +outút +, +fže_off£t +)); + +536 + `Pršt +( +L +"%c\b", +h–ic݋r +[ +h–i_couÁ +++%4]); + +538 + `updüc +( +wšdow +, +outút +); + +543 ià(! +by‹s_out +) { + +544 ià( + `fœ¡_block +( +wšdow +, +outút +è< 0è + `”rÜ +("invalidƒxec header"); + +545 + `Ãxtchunk +(); + +548 +by‹s_out + +ð +outút +; + +549 +¤c + = +wšdow +; + +550 +ž +: + +552 ià( + `check_abÜt +(è=ð +EFI_SUCCESS +è +lßd_abÜt +; + +554 +ý + = +cur_chunk +; + +555 ià( +ý + =ð +NULL + || +fže_off£t + + +outút + <ðý-> +off£t +) { + +556 +fže_off£t + +ð +outút +; + +561 ià( +fže_off£t + < +ý +-> +off£t +) { + +562  +sk + = +ý +-> +off£t + - +fže_off£t +; + +564 +¤c + +ð +sk +; + +565 +fže_off£t + +ð +sk +; + +566 +outút + -ð +sk +; + +568 +d¡ + = (*) +ý +-> +addr + + ( +fže_off£t + - cp-> +off£t +); + +570 +út + = +ý +-> +off£t + + cp-> +size + - +fže_off£t +; + +572 ià( +út + > +outút +) cnt = outcnt; + +574 + `Memýy +( +d¡ +, +¤c +, +út +); + +575 ià( +ý +-> +æags + & +CHUNK_FL_X +) + +576 + `æush_dÿche + ( +d¡ +, +út +); + +578 +fže_off£t + +ð +út +; + +579 +outút + -ð +út +; + +580 +¤c + +ð +út +; + +583 ià( +fže_off£t + =ð +ý +-> +off£t + + cp-> +size +) { + +584 ià( +ý +-> +bss_sz +) { + +585 +d¡ + = (*) +ý +-> +addr + + cp-> +size +; + +586 + `Mem£t +( +d¡ +, 0, +ý +-> +bss_sz +); + +588 + `Ãxtchunk +(); + +590 ià( +outút +è +ž +; + +593 +lßd_abÜt +: + +594 + `ä“_kmem +(); + +595 +”rÜ_»tuº + = +ELILO_LOAD_ABORTED +; + +596 + `lÚgjmp +( +jbuf +, 1); + +597 + } +} + +600 + $”rÜ +(* +x +) + +602 + `ERR_PRT +(( +L +"% : %a", +LD_NAME +, +x +)); + +604 + `lÚgjmp +( +jbuf +,1); + +605 + } +} + +607 +INT32 + + +608 + $decom´ess_k”Ãl +( +VOID +) + +610 +INT32 + +»t +; + +612 + `þ—r_bufs +(); + +613 + `makeüc +(); + +614 + `Pršt +( +L +"Uncompressing Linux... "); + +615 +»t + = + `gunz +(); + +616 ià( +»t + =ð0è + `Pršt +( +L +"done\n"); + +617  +»t + == 0 ? 0 : -1; + +618 + } +} + +621 + $gunz_k”Ãl +( +fÝs_fd_t + +fd +, +kdesc_t + * +kd +) + +623  +»t + = -1; + +625 +”rÜ_»tuº + = +ELILO_LOAD_ERROR +; + +627 +wšdow + = (*) + `®loc +( +WSIZE +, 0); + +628 ià( +wšdow + =ð +NULL +) { + +629 + `ERR_PRT +(( +L +"% :‡Îoÿ‹ ouuˆwšdow fažed\n", +LD_NAME +)); + +633 +šbuf + = (*) + `®loc +( +INBUFSIZE +, 0); + +634 ià( +šbuf + =ð +NULL +) { + +635 + `ERR_PRT +(( +L +"% :‡Îoÿ‹ iÅuˆwšdow fažedr\n", +LD_NAME +)); + +636  +”rÜ +; + +639 +šput_fd + = +fd +; + +640 +šsize + = 0; + +641 +by‹s_out + = 0; + +643 ià( + `£tjmp +( +jbuf +è=ð1è +”rÜ +; + +646 +»t + = + `decom´ess_k”Ãl +(); + +648 +”rÜ +: + +649 ià( +wšdow +è + `ä“ +(window); + +650 ià( +šbuf +è + `ä“ +(inbuf); + +652 ià( +»t + == 0) { + +653 +kd +-> +k’Œy + = +k”Ãl_’Œy +; + +654 +kd +-> +k’d + = +k”Ãl_’d +; + +655 +kd +-> +k¡¬t + = +k”Ãl_ba£ +; + +656 +”rÜ_»tuº + = +ELILO_LOAD_SUCCESS +; + +658  +”rÜ_»tuº +; + +659 + } +} + + @ia64/gzip_loader.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"lßd”.h +" + +31  + ~"gz.h +" + +33  + #LD_NAME + +L +"gz_Ÿ64" + + ) + +35  +INTN + + +36 + $gz_´obe_fÜm© +( +CHAR16 + * +kÇme +) + +38 +UINT8 + +buf +[4]; + +39 +EFI_STATUS + +¡©us +; + +40 +INTN + +»t + = -1; + +41 +UINTN + +size +; + +42 +fÝs_fd_t + +fd +; + +44 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +45 ià( + `EFI_ERROR +( +¡©us +))  -1; + +47 +size + = ( +buf +); + +48 +¡©us + = + `fÝs_»ad +( +fd +, +buf +, & +size +); + +50 ià( + `EFI_ERROR +( +¡©us +è|| +size + !ð( +buf +)è +”rÜ +; + +52 +»t + = + `gz_´obe +( +buf +, (buf)); + +53 +”rÜ +: + +54 + `fÝs_þo£ +( +fd +); + +55  +»t +; + +56 + } +} + +59  +INTN + + +60 + $gz_lßd_k”Ãl +( +CHAR16 + * +kÇme +, +kdesc_t + * +kd +) + +62 +EFI_STATUS + +¡©us +; + +63 +INT32 + +»t +; + +64 +fÝs_fd_t + +fd +; + +66 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +67 ià( + `EFI_ERROR +( +¡©us +)è +ELILO_LOAD_ERROR +; + +69 +»t + = + `gunz_k”Ãl +( +fd +, +kd +); + +71 + `fÝs_þo£ +( +fd +); + +73  +»t +; + +74 + } +} + +76 +lßd”_Ýs_t + + ggz_lßd” +={ + +77 +NULL +, + +78 +LD_NAME +, + +79 +gz_´obe_fÜm© +, + +80 +gz_lßd_k”Ãl + + + @ia64/plain_loader.c + +29  + ~ + +30  + ~ + +32  + ~"–žo.h +" + +33  + ~"lßd”.h +" + +34  + ~"–f.h +" + +35  + ~"´iv©e.h +" + +37  + #LD_NAME + +L +"¶aš_–f64" + + ) + +39  + #PLAIN_MIN_BLOCK_SIZE + ( +Elf64_Ehdr +è + + ) + +41  + #SKIPBUFSIZE + 2048 + + ) + +42  +CHAR8 + * + gsk_bufãr +; + +43  +UINTN + + gsk_bufsize +; + +44  +UINTN + + g–f_is_big_’dŸn +; + +46  +šlše + +UINT64 + + +47 + $bsw­64 +( +UINT64 + +v +) + +49 if( +–f_is_big_’dŸn +è +v + = + `__Ÿ64_swab64 +(v); + +50  +v +; + +51 + } +} + +53  +šlše + +UINT32 + + +54 + $bsw­32 +( +UINT32 + +v +) + +56 if( +–f_is_big_’dŸn +è +v + = + `__Ÿ64_swab32 +(v); + +57  +v +; + +58 + } +} + +60  +šlše + +UINT16 + + +61 + $bsw­16 +( +UINT16 + +v +) + +63 if( +–f_is_big_’dŸn +è +v + = + `__Ÿ64_swab16 +(v); + +64  +v +; + +65 + } +} + +67  +INTN + + +68 + $is_v®id_h—d” +( +Elf64_Ehdr + * +ehdr +) + +70 +UINT16 + +ty³ +, +machše +; + +72 ià( +ehdr +-> +e_id’t +[ +EI_DATA +] =ð +ELFDATA2MSB +) { + +73 +ty³ + = + `__Ÿ64_swab16 +( +ehdr +-> +e_ty³ +); + +74 +machše + = + `__Ÿ64_swab16 +( +ehdr +-> +e_machše +); + +76 +ty³ + = +ehdr +-> +e_ty³ +; + +77 +machše + = +ehdr +-> +e_machše +; + +79 + `DBG_PRT +(( +L +"class=%dype=%d data=%d machine=%d\n", + +80 +ehdr +-> +e_id’t +[ +EI_CLASS +], + +81 +ty³ +, + +82 +ehdr +-> +e_id’t +[ +EI_DATA +], + +83 +machše +)); + +85  +ehdr +-> +e_id’t +[ +EI_MAG0 +] == 0x7f + +86 && +ehdr +-> +e_id’t +[ +EI_MAG1 +] == 'E' + +87 && +ehdr +-> +e_id’t +[ +EI_MAG2 +] == 'L' + +88 && +ehdr +-> +e_id’t +[ +EI_MAG3 +] == 'F' + +89 && +ehdr +-> +e_id’t +[ +EI_CLASS +] =ð +ELFCLASS64 + + +90 && +ty³ + =ð +ET_EXEC + + +91 && +machše + =ð +EM_IA_64 + ? 0 : -1; + +92 + } +} + +94  +INTN + + +95 + $¶aš_´obe +( +CHAR16 + * +kÇme +) + +97 +Elf64_Ehdr + +ehdr +; + +98 +EFI_STATUS + +¡©us +; + +99 +INTN + +»t + = -1; + +100 +fÝs_fd_t + +fd +; + +101 +UINTN + +size + = ( +ehdr +); + +103 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +104 ià( + `EFI_ERROR +( +¡©us +))  -1; + +106 +¡©us + = + `fÝs_»ad +( +fd +, & +ehdr +, & +size +); + +108 ià( + `EFI_ERROR +( +¡©us +è|| +size + !ð( +ehdr +)è +”rÜ +; + +110 +»t + = + `is_v®id_h—d” +(& +ehdr +); + +111 +”rÜ +: + +112 + `fÝs_þo£ +( +fd +); + +113  +»t +; + +114 + } +} + +121  +INTN + + +122 + $sk_by‹s +( +fÝs_fd_t + +fd +, +UINTN + +cu½os +, UINTN +Ãwpos +) + +124 +EFI_STATUS + +¡©us +; + +125 +UINTN + +n +, +sk +; + +127 +sk + = +Ãwpos + - +cu½os +; + +130 +¡©us + = + `fÝs_£ek +( +fd +, +Ãwpos +); + +131 ià( +¡©us + =ð +EFI_SUCCESS +)  0; + +133 ià( +¡©us + !ð +EFI_UNSUPPORTED +è +”rÜ +; + +137 ià( +sk_bufãr + =ð +NULL +) { + +138 +sk_bufsize + = + `MAX +( +sk +, +SKIPBUFSIZE +); + +139 +sk_bufãr +ð( +CHAR8 + *) + `®loc +( +sk_bufsize +, +EfiLßd”D©a +); + +140 ià( +sk_bufãr + =ð +NULL +)  -1; + +142  +sk +) { + +143 +n + = +sk + > +sk_bufsize +? skip_bufsize : skip; + +145 +¡©us + = + `fÝs_»ad +( +fd +, +sk_bufãr +, & +n +); + +146 ià( + `EFI_ERROR +( +¡©us +)è +”rÜ +; + +148 +sk + -= +n +; + +152 +”rÜ +: + +153 + `ERR_PRT +(( +L +"% : cªnÙ sk %d by‹s\n", +LD_NAME +, +n +)); + +155 + } +} + +157  +INTN + + +158 + $lßd_–f +( +fÝs_fd_t + +fd +, +kdesc_t + * +kd +) + +160 +Elf64_Ehdr + +ehdr +; + +161 +Elf64_Phdr + * +phdrs +; + +162 +EFI_STATUS + +¡©us +; + +163 +INTN + +»t + = +ELILO_LOAD_ERROR +; + +164 +UINTN + +i +, +tÙ®_size + = 0; + +165 +UINTN + +·ges +, +size +, +bss_sz +, +osize +; + +166 +UINTN + +offs + = 0; + +167 +VOID + * +low_addr + = (VOID *)~0; + +168 +VOID + * +max_addr + = (VOID *)0; + +169 +UINTN + +lßd_off£t + = 0; + +170 +UINTN + +·ddr +, +memsz +, +fžesz +, +poffs +; + +171 +UINT16 + +phnum +; + +173 + `Pršt +( +L +"Loading Linux... "); + +175 +size + = ( +ehdr +); + +177 +¡©us + = + `fÝs_»ad +( +fd +, & +ehdr +, & +size +); + +178 ià( + `EFI_ERROR +( +¡©us +è|| +size + < ( +ehdr +)è +ELILO_LOAD_ERROR +; + +180 +offs + +ð +size +; + +185 ià( + `is_v®id_h—d” +(& +ehdr +) == -1) { + +186 + `ERR_PRT +(( +L +"% :‚Ù‡À–à64-b™ fže\n", +LD_NAME +)); + +187  +ELILO_LOAD_ERROR +; + +191 +–f_is_big_’dŸn + = +ehdr +. +e_id’t +[ +EI_DATA +] =ð +ELFDATA2MSB + ? 1 : 0; + +193 + `VERB_PRT +(3, { + +194 + `Pršt +( +L +"ELF fži %s\n", +–f_is_big_’dŸn + ? L"bigƒndian" : L"littleƒndian"); + +195 + `Pršt +( +L +"EÁry…ošˆ0x%lx\n", + `bsw­64 +( +ehdr +. +e_’Œy +)); + +196 + `Pršt +( +L +"%d…rog¿m h—d”s\n", + `bsw­16 +( +ehdr +. +e_phnum +)); + +197 + `Pršt +( +L +"%d segm’ˆh—d”s\n", + `bsw­16 +( +ehdr +. +e_shnum +)); + +200 +phnum + = + `bsw­16 +( +ehdr +. +e_phnum +); + +202 ià( + `sk_by‹s +( +fd +, +offs +, + `bsw­64 +( +ehdr +. +e_phoff +)) != 0) { + +203 + `ERR_PRT +(( +L +"% : sk°%ld f܅hdr çžed", +LD_NAME +, +offs +)); + +204  +ELILO_LOAD_ERROR +; + +206 +offs + = + `bsw­64 +( +ehdr +. +e_phoff +); + +208 +size + = +osize + = +phnum +*( +Elf64_Phdr +); + +210 + `DBG_PRT +(( +L +"% :…hdr ®loÿ‹ %d by‹ sizeof=%dƒÁsize=%d\n", +LD_NAME +, +size +,( +Elf64_Phdr +), + `bsw­16 +( +ehdr +. +e_ph’tsize +))); + +212 +phdrs + = ( +Elf64_Phdr + *) + `®loc +( +size +, 0); + +213 ià( +phdrs + =ð +NULL +) { + +214 + `ERR_PRT +(( +L +"% :‡Îoÿ‹…hdr çžed", +LD_NAME +)); + +215  +ELILO_LOAD_ERROR +; + +218 +¡©us + = + `fÝs_»ad +( +fd +, +phdrs +, & +size +); + +219 ià( + `EFI_ERROR +( +¡©us +è|| +size + !ð +osize +) { + +220 + `ERR_PRT +(( +L +"% :†ßd…hdr çžed", +LD_NAME +, +¡©us +)); + +221  +out +; + +223 +offs + +ð +size +; + +229  +i + = 0; i < +phnum +; i++) { + +231 +·ddr + = + `bsw­64 +( +phdrs +[ +i +]. +p_·ddr +); + +232 +memsz + = + `bsw­64 +( +phdrs +[ +i +]. +p_memsz +); + +234 + `DBG_PRT +(( +L +"Phdr %d…addr [0x%lx-0x%lx] offset %ld" + +236 1+ +i +, + +237 +·ddr +, + +238 +·ddr ++ + `bsw­64 +( +phdrs +[ +i +]. +p_fžesz +), + +239 + `bsw­64 +( +phdrs +[ +i +]. +p_off£t +), + +240 + `bsw­64 +( +phdrs +[ +i +]. +p_fžesz +), + +241 +memsz +, + +242 +memsz + - + `bsw­64 +( +phdrs +[ +i +]. +p_fžesz +), + `bsw­32 +Õhdrs[i]. +p_ty³ +))); + +244 ià( + `bsw­32 +( +phdrs +[ +i +]. +p_ty³ +è!ð +PT_LOAD +) ; + +247 ià( +·ddr + < ( +UINTN +) +low_addr +èlow_add¸ð( +VOID + *)paddr; + +249 ià( +·ddr + + +memsz + > ( +UINTN +) +max_addr +) + +250 +max_addr + = ( +VOID + *) +·ddr + + +memsz +; + +253 ià(( +UINTN +) +low_addr + & ( +EFI_PAGE_SIZE + - 1)) { + +254 + `ERR_PRT +(( +L +"% : k”ÃÈlow‡dd»s 0x%lx‚Ù…ag®igÃd\n", +LD_NAME +, +low_addr +)); + +255  +out +; + +259 +tÙ®_size + = ( +UINTN +) +max_addr + - (UINTN) +low_addr +; + +262 +·ges + = + `EFI_SIZE_TO_PAGES +( +tÙ®_size +); + +267 +kd +-> +k¡¬t + = +low_addr +; + +268 +kd +-> +k’d + = +low_addr ++ ( +·ges + << +EFI_PAGE_SHIFT +); + +273 +kd +-> +k’Œy + = ( +VOID + *) + `bsw­64 +( +ehdr +. +e_’Œy +); + +275 ià((( +UINTN +) +kd +-> +k’Œy + >> 61) != 0) { + +276 + `ERR_PRT +(( +L +"%s: <>ƒÁry…ošˆi ¨vœtu®‡dd»s 0x%lx :‚Ù suµÜ‹d‡nymÜe\n", +LD_NAME +, +kd +-> +k’Œy +)); + +279 + `VERB_PRT +(3, { + +280 + `Pršt +( +L +"Lowest PhysAddr: 0x%lx\nTotalMemSize:%d bytes (%d…ages)\n", + +281 +low_addr +, +tÙ®_size +, +·ges +); + +282 + `Pršt +( +L +"K”ÃȒŒy @ 0x%lx\n", +kd +-> +k’Œy +); + +288 ià( + `®loc_kmem +( +low_addr +, +·ges +) == -1) { + +289 +VOID + * +Ãw_addr +; + +291 + `VERB_PRT +(1, ( +L +"% : AÎoÿ‹Pages(%d, 0x%lxèfÜ k”ÃÈçžed\n", +LD_NAME +, +·ges +, +low_addr +)); + +293 ià( + `Ÿ64_ÿn_»loÿ‹ +() == 0) { + +294 + `ERR_PRT +(( +L +"relocation is disabled, cannot†oad kernel")); + +295  +out +; + +307 + `Pršt +( +L +"Attemptingo„elocate kernel.\n"); + +308 ià( + `fšd_k”Ãl_memÜy +( +low_addr +, +max_addr +, 256* +MB +, & +Ãw_addr +) == -1) { + +309 + `ERR_PRT +(( +L +"% : fšd_k”Ãl_memÜy(0x%lx, 0x%lx, 0x%lx, 0x%lxèçžed\n", +LD_NAME +, +low_addr +, +max_addr +, 256* +MB +, & +lßd_off£t +)); + +310  +out +; + +313 +lßd_off£t + = ( +UINTN +è( +Ãw_addr + - + `ROUNDDOWN +((UINTNè +low_addr +,256* +MB +)); + +315 + `VERB_PRT +(3, + `Pršt +( +L +"low_addr=0x%lx‚ew_addr=0x%lx off£t=0x%lx", +low_addr +, +Ãw_addr +, +lßd_off£t +)); + +320 +low_addr + = ( +VOID +*è(( +UINTN +èlow_add¸+ +lßd_off£t +); + +321 +max_addr + = ( +VOID +*è(( +UINTN +èmax_add¸+ +lßd_off£t +); + +322 +kd +-> +k¡¬t + = ( +VOID + *è(( +UINTN +èkd->k¡¬ˆ+ +lßd_off£t +); + +323 +kd +-> +k’d + = ( +VOID + *è(( +UINTN +èkd->k’d + +lßd_off£t +); + +324 +kd +-> +k’Œy + = ( +VOID + *è(( +UINTN +èkd->k’Œy + +lßd_off£t +); + +329 ià( + `®loc_kmem +( +low_addr +, +·ges +) == -1) { + +330 + `ERR_PRT +(( +L +"% : AÎoÿ‹Pages(%d, 0x%lxèfÜ k”ÃÈçžed\n", +LD_NAME +, +·ges +, +low_addr +)); + +331 + `ERR_PRT +(( +L +"R–oÿtiÚ by 0x%lx by‹ çžed.\n", +lßd_off£t +)); + +332  +out +; + +336 + `VERB_PRT +(1, + `Pršt +( +L +"Press‡ny keyo interrupt\n")); + +342  +i + = 0; i < +phnum +; i++) { + +347 ià( + `bsw­32 +( +phdrs +[ +i +]. +p_ty³ +è!ð +PT_LOAD +) ; + +349 +poffs + = + `bsw­64 +( +phdrs +[ +i +]. +p_off£t +); + +351 +size + = +poffs + - +offs +; + +353 + `VERB_PRT +(3, + `Pršt +( +L +"\noff=%ld…offs=%ld size=%ld\n", +offs +, +poffs +, +size +)); + +355 +fžesz + = + `bsw­64 +( +phdrs +[ +i +]. +p_fžesz +); + +359 +phdrs +[ +i +]. +p_·ddr + = ( +Elf64_Addr +è(( +UINTN +è + `bsw­64 +Õhdrs[i].p_·ddrè+ +lßd_off£t +); + +364 ià( +size + && + `sk_by‹s +( +fd +, +offs +, +poffs +è!ð0è +out_k”Ãl +; + +369 +offs + +ð +size +; + +374 +bss_sz + = + `bsw­64 +( +phdrs +[ +i +]. +p_memsz +è- +fžesz +; + +376 + `VERB_PRT +(4, { + +377 + `Pršt +( +L +"\nH—d” #%d\n", +i +); + +378 + `Pršt +( +L +"off£ˆ%ld\n", +poffs +); + +379 + `Pršt +( +L +"Phy add¸0x%lx\n", +phdrs +[ +i +]. +p_·ddr +); + +380 + `Pršt +( +L +"BSS siz%ld by‹s\n", +bss_sz +); + +381 + `Pršt +( +L +"sk=%ld offs=%ld\n", +size +, +offs +); + +387 +»t + = + `»ad_fže +( +fd +, +fžesz +, ( +CHAR8 + *) +phdrs +[ +i +]. +p_·ddr +); + +388 ià( +»t + =ð +ELILO_LOAD_ABORTED +è +lßd_abÜt +; + +389 ià( +»t + =ð +ELILO_LOAD_ERROR +è +out +; + +390 ià( + `bsw­32 +( +phdrs +[ +i +]. +p_æags +è& +PF_X +) + +391 + `æush_dÿche + (( +CHAR8 + *) +phdrs +[ +i +]. +p_·ddr +, +fžesz +); + +396 +offs + +ð +fžesz +; + +401 ià( +bss_sz +è + `Mem£t +(( +VOID + *è +phdrs +[ +i +]. +p_·ddr ++ +fžesz +, 0, bss_sz); + +404 + `ä“ +( +phdrs +); + +406 + `Pršt +( +L +"..done\n"); + +407  +ELILO_LOAD_SUCCESS +; + +409 +lßd_abÜt +: + +410 + `Pršt +( +L +"..Aborted\n"); + +411 +»t + = +ELILO_LOAD_ABORTED +; + +412 +out_k”Ãl +: + +414 + `ä“_kmem +(); + +415 +out +: + +416 + `ä“ +( +phdrs +); + +417  +»t +; + +418 + } +} + +420  +INTN + + +421 + $¶aš_lßd_k”Ãl +( +CHAR16 + * +kÇme +, +kdesc_t + * +kd +) + +423 +INTN + +»t +; + +424 +fÝs_fd_t + +fd +; + +425 +EFI_STATUS + +¡©us +; + +430 +¡©us + = + `fÝs_ݒ +( +kÇme +, & +fd +); + +431 ià( + `EFI_ERROR +( +¡©us +)è +ELILO_LOAD_ERROR +; + +433 + `Pršt +( +L +"Lßdšg %s...", +kÇme +); + +435 +»t + = + `lßd_–f +( +fd +, +kd +); + +437 + `fÝs_þo£ +( +fd +); + +442 ià( +sk_bufãr +) { + +443 + `ä“ +( +sk_bufãr +); + +445 +sk_bufãr + = +NULL +; + +447  +»t +; + +448 + } +} + +450 +lßd”_Ýs_t + + g¶aš_lßd” +={ + +451 +NULL +, + +452 +LD_NAME +, + +453 +¶aš_´obe +, + +454 +¶aš_lßd_k”Ãl + + + @ia64/private.h + +26 #iâdeà +__ELILO_PRIVATE_IA64_H__ + + +27  + #__ELILO_PRIVATE_IA64_H__ + + + ) + +29 +INTN + +check_åswa +( +EFI_HANDLE +, EFI_HANDLE, +CHAR16 + *); + +30 +INTN + +qu”y_åswa +( +VOID + **); + +32 +INTN + +Ÿ64_ÿn_»loÿ‹ +(); + +34  +æush_dÿche + ( +CHAR8 + * +addr +, +UINT64 + +Ën +); + + @ia64/setjmp.h + +22  + #_JBLEN + 70 + + ) + +25  + tjmp_buf +[ +_JBLEN +] + t__©Œibu‹__ + (( + t®igÃd + (16))); + +27  +£tjmp + ( +jmp_buf + +__’v +); + +28  +lÚgjmp + ( +jmp_buf + +__’v +,  +__v® +); + + @ia64/sysdeps.h + +32 #iâdeà +__ELILO_SYSDEPS_IA64_H__ + + +33  + #__ELILO_SYSDEPS_IA64_H__ + + + ) + +35  + #ELILO_ARCH + "IA-64" + + ) + +38 +VOID + +Mem£t +(VOID *, +INTN +, +UINTN +); + +39 +VOID + +Memýy +(VOID *, VOID *, +UINTN +); + +41 +VOID + +sysd•_»gi¡”_ÝtiÚs +(VOID); + +46  + sŸ64_boÙ_·¿ms + { + +52 +UINTN + + mcommªd_lše +; + +53 +UINTN + + mefi_sy¡ab +; + +54 +UINTN + + mefi_memm­ +; + +55 +UINTN + + mefi_memm­_size +; + +56 +UINTN + + mefi_memdesc_size +; + +57 +UINT32 + + mefi_memdesc_v”siÚ +; + +59 +UINT16 + + mnum_cÞs +; + +60 +UINT16 + + mnum_rows +; + +61 +UINT16 + + mÜig_x +; + +62 +UINT16 + + mÜig_y +; + +63 } + mcÚsÞe_šfo +; + +64 +UINTN + + måswa +; + +65 +UINTN + + mš™rd_¡¬t +; + +66 +UINTN + + mš™rd_size +; + +68 +UINTN + + mvmcode_¡¬t +; + +69 +UINTN + + mvmcode_size +; + +70 +UINTN + + mlßd”_addr +; + +71 +UINTN + + mlßd”_size +; + +73 } + tboÙ_·¿ms_t +; + +75  + ssys_img_ÝtiÚs + { + +76 +UINT8 + + mdummy +; + +77 +UINT8 + + m®low_»loÿtiÚ +; + +78 } + tsys_img_ÝtiÚs_t +; + +83  +šlše +  + +84 + $¡¬t_k”Ãl +( +VOID + * +k’Œy +, VOID * +bp +) + +86 +asm + vÞ©ž("mov„28=%1; br.¥tk.ãw %0" :: "b"( +k’Œy +),"r"( +bp +)); + +87 + } +} + +89  +šlše + cÚ¡ +UINT64 + + +90 + $__Ÿ64_swab64 + ( +UINT64 + +x +) + +92 +UINT64 + +»suÉ +; + +94 +asm + vÞ©ž("mux1 %0=%1,@»v" : "ô" ( +»suÉ +è: "r" ( +x +)); + +95  +»suÉ +; + +96 + } +} + +98  +šlše + cÚ¡ +UINT32 + + +99 + $__Ÿ64_swab32 + ( +UINT32 + +x +) + +101  + `__Ÿ64_swab64 +( +x +) >> 32; + +102 + } +} + +104  +šlše + cÚ¡ +UINT16 + + +105 + $__Ÿ64_swab16 +( +UINT16 + +x +) + +107  + `__Ÿ64_swab64 +( +x +) >> 48; + +108 + } +} + + @ia64/system.c + +29  + ~ + +30  + ~ + +32  + ~"–žo.h +" + +33  + ~"lßd”.h +" + +34  + ~"´iv©e.h +" + +36 +lßd”_Ýs_t + +¶aš_lßd” +, +gz_lßd” +; + +41 +INTN + + +42 + $sysd•s_ü—‹_boÙ_·¿ms +( +boÙ_·¿ms_t + * +bp +, +CHAR8 + * +cmdlše +, +memdesc_t + * +š™rd +, memdesc_ˆ* +vmcode +, +UINTN + * +cook› +) + +44 +UINTN + +cÞs +, +rows +; + +45 +SIMPLE_TEXT_OUTPUT_INTERFACE + * +cÚout +; + +46 +EFI_STATUS + +¡©us +; + +47 +mm­_desc_t + +mdesc +; + +54 + `qu”y_åswa +(( +VOID + **)& +bp +-> +åswa +); + +56 ià( + `g‘_memm­ +(& +mdesc +) == -1)  -1; + +58 + `DBG_PRT +(( +L +"GÙ memÜy m­ @ 0x%lx (%d by‹s)", +mdesc +. +md +, mdesc. +m­_size +)); + +60 +bp +-> +efi_sy¡ab + = ( +UINTN +) +sy¡ab +; + +61 +bp +-> +efi_memm­ + = ( +UINTN +) +mdesc +. +md +; + +62 +bp +-> +efi_memm­_size + = +mdesc +. +m­_size +; + +63 +bp +-> +efi_memdesc_size + = +mdesc +. +desc_size +; + +64 +bp +-> +efi_memdesc_v”siÚ + = +mdesc +. +desc_v”siÚ +; + +65 +bp +-> +commªd_lše + = ( +UINTN +) +cmdlše +; + +66 +bp +-> +š™rd_¡¬t + = ( +UINTN +è +š™rd +-> +¡¬t_addr +; + +67 +bp +-> +š™rd_size + = +š™rd +-> +size +; + +68 + `DBG_PRT +(( +L +"GÙ in™rd @ 0x%lx (%d by‹s)", +š™rd +-> +¡¬t_addr +, in™rd-> +size +)); + +70 +bp +-> +vmcode_¡¬t + = ( +UINTN +è +vmcode +-> +¡¬t_addr +; + +71 +bp +-> +vmcode_size + = +vmcode +-> +size +; + +72 + `DBG_PRT +(( +L +"GÙ vmcod@ 0x%lx (%d by‹s)", +vmcode +-> +¡¬t_addr +, vmcode-> +size +)); + +75 +cÚout + = +sy¡ab +-> +CÚOut +; + +76 +¡©us + = +cÚout +-> + `Qu”yMode +(cÚout, cÚout-> +Mode +->Mode, & +cÞs +, & +rows +); + +77 ià( + `EFI_ERROR +( +¡©us +)) { + +78 + `ERR_PRT +(( +L +"boÙ_·¿m Qu”yModçžed %r", +¡©us +)); + +79  +”rÜ +; + +81 + `DBG_PRT +(( +L +"Got console info: cols=%d„ows=%d x=%d y=%d", + +82 +cÞs +, +rows +, +cÚout +-> +Mode +-> +CursÜCÞumn +, cÚout->Mode-> +CursÜRow +)); + +84 +bp +-> +cÚsÞe_šfo +. +num_cÞs + = +cÞs +; + +85 +bp +-> +cÚsÞe_šfo +. +num_rows + = +rows +; + +86 +bp +-> +cÚsÞe_šfo +. +Üig_x + = +cÚout +-> +Mode +-> +CursÜCÞumn +; + +87 +bp +-> +cÚsÞe_šfo +. +Üig_y + = +cÚout +-> +Mode +-> +CursÜRow +; + +89 * +cook› + = +mdesc +.cookie; + +92 +”rÜ +: + +94 + `ä“_memm­ +(& +mdesc +); + +97 + } +} + +99 +VOID + + +100 + $sysd•s_ä“_boÙ_·¿ms +( +boÙ_·¿ms_t + * +bp +) + +102 +mm­_desc_t + +md +; + +104 + `Mem£t +(& +md +, 0, (md)); + +106 +md +.md = ( +VOID + *) +bp +-> +efi_memm­ +; + +108 + `ä“_memm­ +(& +md +); + +109 + } +} + +111 +INTN + + +112 + $sysd•s_š™ +( +EFI_HANDLE + +dev +) + +114 + `lßd”_»gi¡” +(& +¶aš_lßd” +); + +115 + `lßd”_»gi¡” +(& +gz_lßd” +); + +118 + } +} + +120 +INTN + + +121 + $sysd•s_š™rd_g‘_addr +( +kdesc_t + * +kd +, +memdesc_t + * +imem +) + +135 +imem +-> +¡¬t_addr + = ( +VOID + *) + `ROUNDUP +(( +UINTN +) +kd +-> +k’d +, +EFI_PAGE_SIZE +); + +137 +imem +-> +¡¬t_addr + = 0; + +141 + } +} + +145 + $æush_dÿche + ( +CHAR8 + * +addr +, +UINT64 + +Ën +) + +148 +UINT64 + +a + = (UINT64) +addr + & ~0x1f; + +150 + `VERB_PRT +(3, + `Pršt +( +L +"Flush 0x%lx-", +a +)); + +153  +Ën + = (ËÀ+ 31è& ~0x1f;†’ > 0;†’ -ð0x20, +a + += 0x20) + +154 +asm + vÞ©ž("fø%0" : : "r" ( +a +)); + +156 +asm + volatile (";; sync.i;; srlz.i;;"); + +158 + `VERB_PRT +(3, + `Pršt +( +L +"0x%lx\n", +a +)); + +159 + } +} + + @inflate.c + +1  + #DEBG +( +x +) + + ) + +2  + #DEBG1 +( +x +) + + ) + +106 #ifdeà +RCSID + + +107  + grcsid +[] = "#Id: inflate.c,v 0.14 1993/06/10 13:27:04 jloup Exp #"; + +110 #iâdeà +FUNC_STATIC + + +112 #ià +defšed +( +STDC_HEADERS +è|| defšed( +HAVE_STDLIB_H +) + +113  + ~ + +114  + ~<¡dlib.h +> + +117  + ~"gz.h +" + +118  + #FUNC_STATIC + + + ) + +121  + #¦ide + +wšdow + + + ) + +130  + shuá + { + +131 +uch + + me +; + +132 +uch + + mb +; + +134 +ush + + mn +; + +135  +huá + * + mt +; + +136 } + mv +; + +141 +FUNC_STATIC +  +huá_bužd + +OF +((*, , , + +142 cÚ¡ +ush + *, cÚ¡ ush *,  +huá + **, *)); + +143 +FUNC_STATIC +  +huá_ä“ + +OF +(( +huá + *)); + +144 +FUNC_STATIC +  +šæ©e_codes + +OF +(( +huá + *, huft *, , )); + +145 +FUNC_STATIC +  +šæ©e_¡Üed + +OF +(()); + +146 +FUNC_STATIC +  +šæ©e_fixed + +OF +(()); + +147 +FUNC_STATIC +  +šæ©e_dyÇmic + +OF +(()); + +148 +FUNC_STATIC +  +šæ©e_block + +OF +((*)); + +149 +FUNC_STATIC +  +šæ©e + +OF +(()); + +161  + #wp + +outút + + + ) + +162  + #æush_ouut +( +w +è( +wp +=(w), + `æush_wšdow +()) + + ) + +165 cÚ¡  + gbÜd” +[] = { + +167 cÚ¡ +ush + + gýËns +[] = { + +171 cÚ¡ +ush + + gýËxt +[] = { + +174 cÚ¡ +ush + + gýdi¡ +[] = { + +178 cÚ¡ +ush + + gýdext +[] = { + +215 +FUNC_STATIC + +ulg + + gbb +; + +216 +FUNC_STATIC +  + gbk +; + +218 +FUNC_STATIC + cÚ¡ +ush + + gmask_b™s +[] = { + +224  + #NEXTBYTE +(è( +uch +) + `g‘_by‹ +() + + ) + +225  + #NEEDBITS +( +n +è{ +k +<Ò)){ +b +|=(( +ulg +) + `NEXTBYTE +())<>=Ò); +k +-=Ò);} + + ) + +262 +FUNC_STATIC + cÚ¡  + glb™s + = 9; + +263 +FUNC_STATIC + cÚ¡  + gdb™s + = 6; + +267  + #BMAX + 16 + + ) + +268  + #N_MAX + 288 + + ) + +271 +FUNC_STATIC +  + ghuás +; + +274 +FUNC_STATIC +  + $huá_bužd +( +b +, +n +, +s +, +d +, +e +, +t +, +m +) + +275 * +b +; + +276  +n +; + +277  +s +; + +278 cÚ¡ +ush + * +d +; + +279 cÚ¡ +ush + * +e +; + +280  +huá + ** +t +; + +281 * +m +; + +288  +a +; + +289  +c +[ +BMAX ++1]; + +290  +f +; + +291  +g +; + +292  +h +; + +293  +i +; + +294  +j +; + +295  +k +; + +296  +l +; + +297 * +p +; + +298  +huá + * +q +; + +299  +huá + +r +; + +300  +huá + * +u +[ +BMAX +]; + +301  +v +[ +N_MAX +]; + +302  +w +; + +303  +x +[ +BMAX ++1]; + +304 * +xp +; + +305  +y +; + +306  +z +; + +308 + `DEBG +("huft1 "); + +311 + `memz”o +( +c +, (c)); + +313 +p + = +b +; +i + = +n +; + +315 + `T¿ûcv +(* +p +, ( +¡d”r +, ( +n +- +i + >= ' ' &&‚-i <= '~' ? "%c %d\n" : "0x%x %d\n"), + +316 +n +- +i +, * +p +)); + +317 +c +[* +p +]++; + +318 +p +++; + +319 } -- +i +); + +320 ià( +c +[0] =ð +n +) + +322 * +t + = ( +huá + *) +NULL +; + +323 * +m + = 0; + +327 + `DEBG +("huft2 "); + +330 +l + = * +m +; + +331  +j + = 1; j <ð +BMAX +; j++) + +332 ià( +c +[ +j +]) + +334 +k + = +j +; + +335 ià(() +l + < +j +) + +336 +l + = +j +; + +337  +i + = +BMAX +; i; i--) + +338 ià( +c +[ +i +]) + +340 +g + = +i +; + +341 ià(() +l + > +i +) + +342 +l + = +i +; + +343 * +m + = +l +; + +345 + `DEBG +("huft3 "); + +348  +y + = 1 << +j +; j < +i +; j++, y <<= 1) + +349 ià(( +y + -ð +c +[ +j +]) < 0) + +351 ià(( +y + -ð +c +[ +i +]) < 0) + +353 +c +[ +i +] +ð +y +; + +355 + `DEBG +("huft4 "); + +358 +x +[1] = +j + = 0; + +359 +p + = +c + + 1; +xp + = +x + + 2; + +360 -- +i +) { + +361 * +xp +++ = ( +j + +ð* +p +++); + +364 + `DEBG +("huft5 "); + +367 +p + = +b +; +i + = 0; + +369 ià(( +j + = * +p +++) != 0) + +370 +v +[ +x +[ +j +]++] = +i +; + +371 } ++ +i + < +n +); + +373 + `DEBG +("h6 "); + +376 +x +[0] = +i + = 0; + +377 +p + = +v +; + +378 +h + = -1; + +379 +w + = - +l +; + +380 +u +[0] = ( +huá + *) +NULL +; + +381 +q + = ( +huá + *) +NULL +; + +382 +z + = 0; + +383 + `DEBG +("h6a "); + +386 ; +k + <ð +g +; k++) + +388 + `DEBG +("h6b "); + +389 +a + = +c +[ +k +]; + +390  +a +--) + +392 + `DEBG +("h6b1 "); + +395  +k + > +w + + +l +) + +397 + `DEBG1 +("1 "); + +398 +h +++; + +399 +w + +ð +l +; + +402 +z + = (z = +g + - +w +è> () +l + ?† : z; + +403 ià(( +f + = 1 << ( +j + = +k + - +w +)è> +a + + 1) + +405 + `DEBG1 +("2 "); + +406 +f + -ð +a + + 1; + +407 +xp + = +c + + +k +; + +408 ++ +j + < +z +) + +410 ià(( +f + <<ð1è<ð*++ +xp +) + +412 +f + -ð* +xp +; + +415 + `DEBG1 +("3 "); + +416 +z + = 1 << +j +; + +419 ià(( +q + = ( +huá + *) + `gz_m®loc +(( +z + + 1)*(huft))) == + +420 ( +huá + *) +NULL +) + +422 ià( +h +) + +423 + `huá_ä“ +( +u +[0]); + +426 + `DEBG1 +("4 "); + +427 +huás + +ð +z + + 1; + +428 * +t + = +q + + 1; + +429 *( +t + = &( +q +-> +v +.t)èð( +huá + *) +NULL +; + +430 +u +[ +h +] = ++ +q +; + +432 + `DEBG1 +("5 "); + +434 ià( +h +) + +436 +x +[ +h +] = +i +; + +437 +r +. +b + = ( +uch +) +l +; + +438 +r +. +e + = ( +uch +)(16 + +j +); + +439 +r +. +v +. +t + = +q +; + +440 +j + = +i + >> ( +w + - +l +); + +441 +u +[ +h +-1][ +j +] = +r +; + +443 + `DEBG1 +("6 "); + +445 + `DEBG +("h6c "); + +448 +r +. +b + = ( +uch +)( +k + - +w +); + +449 ià( +p + >ð +v + + +n +) + +450 +r +. +e + = 99; + +451 ià(* +p + < +s +) + +453 +r +. +e + = ( +uch +)(* +p + < 256 ? 16 : 15); + +454 +r +. +v +. +n + = ( +ush +)(* +p +); + +455 +p +++; + +459 +r +. +e + = ( +uch +ë[* +p + - +s +]; + +460 +r +. +v +. +n + = +d +[* +p +++ - +s +]; + +462 + `DEBG +("h6d "); + +465 +f + = 1 << ( +k + - +w +); + +466  +j + = +i + >> +w +; j < +z +; j +ð +f +) + +467 +q +[ +j +] = +r +; + +470  +j + = 1 << ( +k + - 1); +i + & j; j >>= 1) + +471 +i + ^ð +j +; + +472 +i + ^ð +j +; + +475 ( +i + & ((1 << +w +è- 1)è!ð +x +[ +h +]) + +477 +h +--; + +478 +w + -ð +l +; + +480 + `DEBG +("h6e "); + +482 + `DEBG +("h6f "); + +485 + `DEBG +("huft7 "); + +488  +y + !ð0 && +g + != 1; + +489 + } +} + +493 +FUNC_STATIC +  + $huá_ä“ +( +t +) + +494  +huá + * +t +; + +499  +huá + * +p +, * +q +; + +503 +p + = +t +; + +504  +p + !ð( +huá + *) +NULL +) + +506 +q + = (-- +p +)-> +v +. +t +; + +507 + `gz_ä“ +((*) +p +); + +508 +p + = +q +; + +511 + } +} + +514 +FUNC_STATIC +  + $šæ©e_codes +( +Ž +, +td +, +bl +, +bd +) + +515  +huá + * +Ž +, * +td +; + +516  +bl +, +bd +; + +520  +e +; + +521  +n +, +d +; + +522  +w +; + +523  +huá + * +t +; + +524  +ml +, +md +; + +525  +ulg + +b +; + +526  +k +; + +530 +b + = +bb +; + +531 +k + = +bk +; + +532 +w + = +wp +; + +535 +ml + = +mask_b™s +[ +bl +]; + +536 +md + = +mask_b™s +[ +bd +]; + +539 + `NEEDBITS +(() +bl +) + +540 ià(( +e + = ( +t + = +Ž + + (() +b + & +ml +))->e) > 16) + +542 ià( +e + == 99) + +544 + `DUMPBITS +( +t +-> +b +) + +545 +e + -= 16; + +546 + `NEEDBITS +( +e +) + +547 } ( +e + = ( +t + =-> +v +.ˆ+ (() +b + & +mask_b™s +[e]))->e) > 16); + +548 + `DUMPBITS +( +t +-> +b +) + +549 ià( +e + == 16) + +551 +¦ide +[ +w +++] = ( +uch +) +t +-> +v +. +n +; + +552 + `T¿ûvv +(( +¡d”r +, "%c", +¦ide +[ +w +-1])); + +553 ià( +w + =ð +WSIZE +) + +555 + `æush_ouut +( +w +); + +556 +w + = 0; + +562 ià( +e + == 15) + +566 + `NEEDBITS +( +e +) + +567 +n + = +t +-> +v +.À+ (() +b + & +mask_b™s +[ +e +]); + +568 + `DUMPBITS +( +e +); + +571 + `NEEDBITS +(() +bd +) + +572 ià(( +e + = ( +t + = +td + + (() +b + & +md +))->e) > 16) + +574 ià( +e + == 99) + +576 + `DUMPBITS +( +t +-> +b +) + +577 +e + -= 16; + +578 + `NEEDBITS +( +e +) + +579 } ( +e + = ( +t + =-> +v +.ˆ+ (() +b + & +mask_b™s +[e]))->e) > 16); + +580 + `DUMPBITS +( +t +-> +b +) + +581 + `NEEDBITS +( +e +) + +582 +d + = +w + - +t +-> +v +. +n + - (() +b + & +mask_b™s +[ +e +]); + +583 + `DUMPBITS +( +e +) + +584 + `T¿ûvv +(( +¡d”r +,"\\[%d,%d]", +w +- +d +, +n +)); + +588 +n + -ð( +e + = (ð +WSIZE + - (( +d + &ðWSIZE-1è> +w + ? d : w)) >‚ ?‚ :ƒ); + +589 #ià! + `defšed +( +NOMEMCPY +è&& !defšed( +INFLATE_DEBUG +) + +590 ià( +w + - +d + >ð +e +) + +592 + `memýy +( +¦ide + + +w +, slid+ +d +, +e +); + +593 +w + +ð +e +; + +594 +d + +ð +e +; + +599 +¦ide +[ +w +++] = slide[ +d +++]; + +600 + `T¿ûvv +(( +¡d”r +, "%c", +¦ide +[ +w +-1])); + +601 } -- +e +); + +602 ià( +w + =ð +WSIZE +) + +604 + `æush_ouut +( +w +); + +605 +w + = 0; + +607 }  +n +); + +613 +wp + = +w +; + +614 +bb + = +b +; + +615 +bk + = +k +; + +619 + } +} + +623 +FUNC_STATIC +  + $šæ©e_¡Üed +() + +626  +n +; + +627  +w +; + +628  +ulg + +b +; + +629  +k +; + +631 + `DEBG +(""); + +675 + } +} + +679 +FUNC_STATIC +  + $šæ©e_fixed +() + +684  +i +; + +685  +huá + * +Ž +; + +686  +huá + * +td +; + +687  +bl +; + +688  +bd +; + +689  +l +[288]; + +691 + `DEBG +(" 1) + +713 + `huá_ä“ +( +Ž +); + +715 + `DEBG +(">"); + +716  +i +; + +721 ià( + `šæ©e_codes +( +Ž +, +td +, +bl +, +bd +)) + +726 + `huá_ä“ +( +Ž +); + +727 + `huá_ä“ +( +td +); + +729 + } +} + +733 +FUNC_STATIC +  + $šæ©e_dyÇmic +() + +736  +i +; + +737  +j +; + +738  +l +; + +739  +m +; + +740  +n +; + +741  +huá + * +Ž +; + +742  +huá + * +td +; + +743  +bl +; + +744  +bd +; + +745  +nb +; + +746  +Æ +; + +747  +nd +; + +748 #ifdeà +PKZIP_BUG_WORKAROUND + + +749  +Î +[288+32]; + +751  +Î +[286+30]; + +753  +ulg + +b +; + +754  +k +; + +756 + `DEBG +(" 288 || +nd + > 32) + +776 ià( +Æ + > 286 || +nd + > 30) + +780 + `DEBG +("dyn1 "); + +783  +j + = 0; j < +nb +; j++) + +785 + `NEEDBITS +(3) + +786 +Î +[ +bÜd” +[ +j +]] = () +b + & 7; + +787 + `DUMPBITS +(3) + +789 ; +j + < 19; j++) + +790 +Î +[ +bÜd” +[ +j +]] = 0; + +792 + `DEBG +("dyn2 "); + +795 +bl + = 7; + +796 ià(( +i + = + `huá_bužd +( +Î +, 19, 19, +NULL +, NULL, & +Ž +, & +bl +)) != 0) + +798 ià( +i + == 1) + +799 + `huá_ä“ +( +Ž +); + +800  +i +; + +803 + `DEBG +("dyn3 "); + +806 +n + = +Æ + + +nd +; + +807 +m + = +mask_b™s +[ +bl +]; + +808 +i + = +l + = 0; + +809 () +i + < +n +) + +811 + `NEEDBITS +(() +bl +) + +812 +j + = ( +td + = +Ž + + (() +b + & +m +))->b; + +813 + `DUMPBITS +( +j +) + +814 +j + = +td +-> +v +. +n +; + +815 ià( +j + < 16) + +816 +Î +[ +i +++] = +l + = +j +; + +817 ià( +j + == 16) + +819 + `NEEDBITS +(2) + +820 +j + = 3 + (() +b + & 3); + +821 + `DUMPBITS +(2) + +822 ià(() +i + + +j + > +n +) + +824  +j +--) + +825 +Î +[ +i +++] = +l +; + +827 ià( +j + == 17) + +829 + `NEEDBITS +(3) + +830 +j + = 3 + (() +b + & 7); + +831 + `DUMPBITS +(3) + +832 ià(() +i + + +j + > +n +) + +834  +j +--) + +835 +Î +[ +i +++] = 0; + +836 +l + = 0; + +840 + `NEEDBITS +(7) + +841 +j + = 11 + (() +b + & 0x7f); + +842 + `DUMPBITS +(7) + +843 ià(() +i + + +j + > +n +) + +845  +j +--) + +846 +Î +[ +i +++] = 0; + +847 +l + = 0; + +851 + `DEBG +("dyn4 "); + +854 + `huá_ä“ +( +Ž +); + +856 + `DEBG +("dyn5 "); + +859 +bb + = +b +; + +860 +bk + = +k +; + +862 + `DEBG +("dyn5a "); + +865 +bl + = +lb™s +; + +866 ià(( +i + = + `huá_bužd +( +Î +, +Æ +, 257, +ýËns +, +ýËxt +, & +Ž +, & +bl +)) != 0) + +868 + `DEBG +("dyn5b "); + +869 ià( +i + == 1) { + +870 + `”rÜ +(" incomplete†iteralree\n"); + +871 + `huá_ä“ +( +Ž +); + +873  +i +; + +875 + `DEBG +("dyn5c "); + +876 +bd + = +db™s +; + +877 ià(( +i + = + `huá_bužd +( +Î + + +Æ +, +nd +, 0, +ýdi¡ +, +ýdext +, & +td +, & +bd +)) != 0) + +879 + `DEBG +("dyn5d "); + +880 ià( +i + == 1) { + +881 + `”rÜ +(" incomplete distanceree\n"); + +882 #ifdeà +PKZIP_BUG_WORKAROUND + + +883 +i + = 0; + +886 + `huá_ä“ +( +td +); + +888 + `huá_ä“ +( +Ž +); + +889  +i +; + +893 + `DEBG +("dyn6 "); + +896 ià( + `šæ©e_codes +( +Ž +, +td +, +bl +, +bd +)) + +899 + `DEBG +("dyn7 "); + +902 + `huá_ä“ +( +Ž +); + +903 + `huá_ä“ +( +td +); + +905 + `DEBG +(">"); + +907 + } +} + +911 +FUNC_STATIC +  + $šæ©e_block +( +e +) + +912 * +e +; + +915  +t +; + +916  +ulg + +b +; + +917  +k +; + +919 + `DEBG +(""); + +954 + } +} + +958 +FUNC_STATIC +  + $šæ©e +() + +961  +e +; + +962  +r +; + +963  +h +; + +966 +wp + = 0; + +967 +bk + = 0; + +968 +bb + = 0; + +972 +h + = 0; + +974 +huás + = 0; + +975 ià(( +r + = + `šæ©e_block +(& +e +)) != 0) { + +976  +r +; + +978 ià( +huás + > +h +) + +979 +h + = +huás +; + +980 } ! +e +); + +985  +bk + >= 8) { + +986 +bk + -= 8; + +987 +š±r +--; + +991 + `æush_ouut +( +wp +); + +995 #ifdeà +INFLATE_DEBUG + + +996 #ifdeà +EFI_COMPILE + + +997 + `Pršt +( +L +"<%d> ", +h +); + +999 + `´štf +("<%d> ", +h +); + +1003 + } +} + +1011  +ulg + + güc_32_b +[256]; + +1012  +ulg + + güc +; + +1013  + #CRC_VALUE + ( +üc + ^ 0xffffffffUL) + + ) + +1021 + $makeüc +() + +1025  +c +; + +1026  +e +; + +1027  +i +; + +1028  +k +; + +1031 cÚ¡  +p +[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + +1034 +e + = 0; + +1035  +i + = 0; i < ( +p +)/(); i++) + +1036 +e + |ð1L << (31 - +p +[ +i +]); + +1038 +üc_32_b +[0] = 0; + +1040  +i + = 1; i < 256; i++) + +1042 +c + = 0; + +1043  +k + = +i + | 256; k != 1; k >>= 1) + +1045 +c + = c & 1 ? (ø>> 1è^ +e + : c >> 1; + +1046 ià( +k + & 1) + +1047 +c + ^ð +e +; + +1049 +üc_32_b +[ +i +] = +c +; + +1053 +üc + = ( +ulg +)0xffffffffUL; + +1054 + } +} + +1059  + $gunz +() + +1061 +uch + +æags +; + +1062  +magic +[2]; + +1063  +m‘hod +; + +1064 +ulg + +Üig_üc + = 0; + +1065 +ulg + +Üig_Ën + = 0; + +1066  +»s +; + +1068 +magic +[0] = () + `g‘_by‹ +(); + +1069 +magic +[1] = () + `g‘_by‹ +(); + +1070 +m‘hod + = () + `g‘_by‹ +(); + +1072 ià( +magic +[0] != 037 || + +1073 (( +magic +[1] != 0213) && (magic[1] != 0236))) { + +1074 + `”rÜ +("bad gzip magic‚umbers"); + +1079 ià( +m‘hod + != 8) { + +1080 + `”rÜ +("internalƒrror, invalid method"); + +1084 +æags + = ( +uch +) + `g‘_by‹ +(); + +1085 ià(( +æags + & +ENCRYPTED +) != 0) { + +1086 + `”rÜ +("Input isƒncrypted\n"); + +1089 ià(( +æags + & +CONTINUATION +) != 0) { + +1090 + `”rÜ +("Multi…art input\n"); + +1093 ià(( +æags + & +RESERVED +) != 0) { + +1094 + `”rÜ +("Input has invalid flags\n"); + +1097 ( +ulg +) + `g‘_by‹ +(); + +1098 (( +ulg +) + `g‘_by‹ +()) << 8; + +1099 (( +ulg +) + `g‘_by‹ +()) << 16; + +1100 (( +ulg +) + `g‘_by‹ +()) << 24; + +1102 () + `g‘_by‹ +(); + +1103 () + `g‘_by‹ +(); + +1105 ià(( +æags + & +EXTRA_FIELD +) != 0) { + +1106  +Ën + = () + `g‘_by‹ +(); + +1107 +Ën + |ð(() + `g‘_by‹ +())<<8; + +1108  +Ën +--è() + `g‘_by‹ +(); + +1112 ià(( +æags + & +ORIG_NAME +) != 0) { + +1114  + `g‘_by‹ +() != 0) ; + +1118 ià(( +æags + & +COMMENT +) != 0) { + +1119  + `g‘_by‹ +() != 0) ; + +1123 ià(( +»s + = + `šæ©e +())) { + +1124  +»s +) { + +1128 + `”rÜ +("invalid compressed format (err=1)"); + +1131 + `”rÜ +("invalid compressed format (err=2)"); + +1134 + `”rÜ +("out of memory"); + +1137 + `”rÜ +("invalid compressed format (other)"); + +1146 +Üig_üc + = ( +ulg +è + `g‘_by‹ +(); + +1147 +Üig_üc + |ð( +ulg +è + `g‘_by‹ +() << 8; + +1148 +Üig_üc + |ð( +ulg +è + `g‘_by‹ +() << 16; + +1149 +Üig_üc + |ð( +ulg +è + `g‘_by‹ +() << 24; + +1151 +Üig_Ën + = ( +ulg +è + `g‘_by‹ +(); + +1152 +Üig_Ën + |ð( +ulg +è + `g‘_by‹ +() << 8; + +1153 +Üig_Ën + |ð( +ulg +è + `g‘_by‹ +() << 16; + +1154 +Üig_Ën + |ð( +ulg +è + `g‘_by‹ +() << 24; + +1157 ià( +Üig_üc + !ð +CRC_VALUE +) { + +1158 + `”rÜ +("crcƒrror"); + +1161 ià( +Üig_Ën + !ð +by‹s_out +) { + +1162 + `”rÜ +("lengthƒrror"); + +1166 + } +} + + @initrd.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +40 +INTN + + +41 + $lßd_fže +( +CHAR16 + * +fž’ame +, +memdesc_t + * +image +) + +43 +EFI_STATUS + +¡©us +; + +44 +VOID + * +¡¬t_addr + = +image +->start_addr; + +45 +UINTN + +pgút +; + +46 +UINT64 + +size + = 0; + +47 +fÝs_fd_t + +fd +; + +48 +INTN + +»t + = +ELILO_LOAD_ERROR +; + +51 ià( +fž’ame + =ð +NULL + || filename[0] == 0)  -1; + +54 +¡©us + = + `fÝs_ݒ +( +fž’ame +, & +fd +); + +55 ià( + `EFI_ERROR +( +¡©us +)) { + +56 + `ERR_PRT +(( +L +"O³Àfž% çžed: %r", +fž’ame +, +¡©us +)); + +60 + `DBG_PRT +(( +L +"ݒ % wÜked", +fž’ame +)); + +63 +¡©us + = + `fÝs_šfosize +( +fd +, & +size +); + +64 ià( + `EFI_ERROR +( +¡©us +)) { + +65 + `ERR_PRT +(( +L +"Couldn'ˆ»ad fž% šfØ%r", +fž’ame +, +¡©us +)); + +66  +”rÜ +; + +69 +image +-> +size + = size; + +72 +image +-> +pgút + =…gúˆð + `EFI_SIZE_TO_PAGES +(image-> +size +); + +74 +¡¬t_addr + = + `®loc_·ges +( +pgút +, +EfiLßd”D©a +, s¹_add¸? +AÎoÿ‹Add»ss + : +AÎoÿ‹AnyPages +, start_addr); + +75 ià( +¡¬t_addr + =ð +NULL +) { + +76 + `ERR_PRT +(( +L +"FažedØ®loÿ‹ %d…age fÜ % image", +pgút +, + +77 +fž’ame +)); + +78  +”rÜ +; + +80 + `VERB_PRT +(2, + `Pršt +( +L +"%s image:otal_size: %ld bytes base: 0x%lx " + +81 "·ge %d\n", +fž’ame +, +image +-> +size +, + +82 ( +UINTN +) +¡¬t_addr +, +pgút +)); + +84 + `Pršt +( +L +"Lßdšg fž%s...", +fž’ame +); + +86 +»t + = + `»ad_fže +( +fd +, +image +-> +size +, +¡¬t_addr +); + +88 + `fÝs_þo£ +( +fd +); + +90 ià( +»t + !ð +ELILO_LOAD_SUCCESS +) { + +91 + `ERR_PRT +(( +L +"»ad image(%sèçžed: %d", +fž’ame +, +»t +)); + +92  +”rÜ +; + +95 + `Pršt +( +L +"done\n"); + +97 +image +-> +¡¬t_addr + = start_addr; + +99  +ELILO_LOAD_SUCCESS +; + +101 +”rÜ +: + +102 ià( +¡¬t_addr +è + `ä“ +(start_addr); + +108 +image +-> +¡¬t_addr + = 0; + +109 +image +-> +pgút + = 0; + +110 +image +-> +size + = 0; + +112  +»t +; + +113 + } +} + + @loader.c + +26  + ~ + +27  + ~ + +29  + ~"–žo.h +" + +30  + ~"lßd”.h +" + +32 +lßd”_Ýs_t + +¶aš_lßd” +; + +33 +lßd”_Ýs_t + +gz_lßd” +; + +35  +lßd”_Ýs_t + * + gldÝs_li¡ +; + +37 +lßd”_Ýs_t + * + +38 + $lßd”_´obe +( +CHAR16 + * +kÇme +) + +40 +lßd”_Ýs_t + * +Ýs +; + +42  +Ýs +ð +ldÝs_li¡ +; ops; op ðÝs-> +Ãxt +) { + +43 ià( +Ýs +-> + `ld_´obe +( +kÇme +) == 0) { + +44  +Ýs +; + +47  +NULL +; + +48 + } +} + +50 +INTN + + +51 + $lßd”_»gi¡” +( +lßd”_Ýs_t + * +ldÝs +) + +53 ià( +ldÝs + =ð +NULL +)  -1; + +56 ià( +ldÝs +-> +Ãxt +) { + +57 + `ERR_PRT +(( +L +"lßd” % i ®»ady„egi¡”ed", +ldÝs +-> +ld_Çme +)); + +61 +ldÝs +-> +Ãxt + = +ldÝs_li¡ +; + +62 +ldÝs_li¡ + = +ldÝs +; + +64 + `VERB_PRT +(3, + `Pršt +( +L +"New†ßd”„egi¡”ed: %s\n", +ldÝs +-> +ld_Çme +)); + +67 + } +} + + @loader.h + +26 #iâdeà +__LOADER_H__ + + +27  + #__LOADER_H__ + + + ) + +29  + ~"fžeÝs.h +" + +31  + s__lßd”_Ýs_t + { + +32  +__lßd”_Ýs_t + * + mÃxt +; + +33 +CHAR16 + * + mld_Çme +; + +34 +INTN + (* +ld_´obe +)( +CHAR16 + * + mkÇme +); + +35 +INTN + (* +ld_lßd_k”Ãl +)( +CHAR16 + * + mkÇme +, +kdesc_t + * + mkd +); + +36 } + tlßd”_Ýs_t +; + +38 +lßd”_Ýs_t + * +lßd”_´obe +( +CHAR16 + * +kÇme +); + +39 +INTN + +lßd”_»gi¡” +( +lßd”_Ýs_t + * +ldÝs +); + + @strops.c + +26  + ~ + +27  + ~ + +31 +CHAR16 + * + +32 + $SŒChr +( +IN + cÚ¡ +CHAR16 + * +s +, IN cÚ¡ CHAR16 +c +) + +34 ; * +s + !ð +c +; ++sèià(* =ð +CHAR_NULL +è +NULL +; + +36  ( +CHAR16 + *) +s +; + +37 + } +} + +39 +CHAR16 + * + +40 + $SŒnCpy +( +OUT + +CHAR16 + * +d¡ +, +IN + cÚ¡ CHAR16 * +¤c +, IN +UINTN + +size +) + +42 +CHAR16 + * +»s + = +d¡ +; + +44  +size +-- && (* +d¡ +++ = * +¤c +++è!ð +CHAR_NULL +); + +48  +size +-- > 0è* +d¡ +++ = +CHAR_NULL +; + +50  +»s +; + +51 + } +} + +53 +CHAR8 + * + +54 + $SŒnXCpy +( +OUT + +CHAR8 + * +d¡ +, +IN + cÚ¡ +CHAR16 + * +¤c +, IN +UINTN + +size +) + +56 +CHAR8 + * +»s + = +d¡ +; + +58  +size +-- && (* +d¡ +++ = ( +CHAR8 +)* +¤c +++) != '\0'); + +62  +size +-- > 0è* +d¡ +++ = '\0'; + +64  +»s +; + +65 + } +} + +67 +VOID + + +68 + $U2ascii +( +CHAR16 + * +š +, +CHAR8 + * +out +, +UINTN + +maxËn +) + +70  +maxËn +-- > 1 && (* +out +++ = * +š +++)); + +71 * +out + = '\0'; + +72 + } +} + +74 +CHAR8 + * + +75 + $¡ºýya +( +OUT + +CHAR8 + * +d¡ +, +IN + cÚ¡ CHAR8 * +¤c +, IN +UINTN + +size +) + +77 +CHAR8 + * +»s + = +d¡ +; + +79  +size +-- && (* +d¡ +++ = * +¤c +++) != '\0'); + +83  +size +-- > 0è* +d¡ +++ = '\0'; + +85  +»s +; + +86 + } +} + +88 +CHAR8 + * + +89 + $¡rýya +( +CHAR8 + * +d¡ +, cÚ¡ CHAR8 * +¤c +) + +91 +CHAR8 + * +tmp + = +d¡ +; + +93 * +¤c +) { + +94 *( +d¡ +++èð*( +¤c +++); + +96 * +d¡ + = 0; + +98  +tmp +; + +100 + } +} + +102 +CHAR8 + * + +103 + $¡rch¿ +( +IN + cÚ¡ +CHAR8 + * +s +, IN cÚ¡ CHAR8 +c +) + +105 ; * +s + !ð +c +; ++s) + +106 ià(* +s + =ð0è +NULL +; + +107  ( +CHAR8 + *) +s +; + +108 + } +} + +110 +CHAR8 + * + +111 + $¡rÿ +( +IN + +CHAR8 + * +d¡ +,IN CHAR8 * +¤c +) + +113  + `¡rýya +( +d¡ ++ + `¡¾’a +(d¡), +¤c +); + +114 + } +} + +116 +CHAR8 + * + +117 + $¡¼ch¿ +( +IN + cÚ¡ +CHAR8 + * +s +, cÚ¡ +INTN + +c +) + +119 +CHAR8 + * +found +, * +p +, +ch + = (CHAR8) +c +; + +123 ià( +ch + =ð'\0'è + `¡rch¿ +( +s +, '\0'); + +125 +found + = +NULL +; + +126 ( +p + = + `¡rch¿ +( +s +, +ch +)è!ð +NULL +) + +128 +found + = +p +; + +129 +s + = +p + + 1; + +132  ( +CHAR8 + *è +found +; + +133 + } +} + +135 +CHAR8 + * + +136 + $¡¹ok_sim¶e +( +CHAR8 + * +š +, CHAR8 +c +) + +138  +CHAR8 + * +Ï¡ +; + +139 +CHAR8 + * +tmp +; + +141 ià( +š + =ð +NULL +èš = +Ï¡ +; + +143 ià( +š + =ð +NULL +)  NULL; + +145 ià(* +š + =ð +c +) in++; + +147 +tmp + = + `¡rch¿ +( +š +, +c +); + +148 ià( +tmp +) { + +149 * +tmp + = '\0'; + +150 +Ï¡ + = +tmp ++1; + +152 +Ï¡ + = +NULL +; + +154  +š +; + +155 + } +} + +157 +VOID + + +158 + $ascii2U +( +CHAR8 + * +š +, +CHAR16 + * +out +, +UINTN + +maxËn +) + +160  +maxËn +-- > 1 && (* +out +++ = * +š +++)); + +162 * +out + = ( +CHAR16 +)0; + +163 + } +} + + @strops.h + +26 #iâdeà +__STROPS_H__ + + +27  + #__STROPS_H__ + + + ) + +29 +CHAR16 + * +SŒChr +( +IN + cÚ¡ CHAR16 * +s +, cÚ¡ CHAR16 +c +); + +30 +CHAR16 + * +SŒnCpy +( +OUT + CHAR16 * +d¡ +, +IN + cÚ¡ CHAR16 * +¤c +, +UINTN + +couÁ +); + +31 +CHAR8 + * +SŒnXCpy +( +OUT + CHAR8 * +d¡ +, +IN + cÚ¡ +CHAR16 + * +¤c +, +UINTN + +couÁ +); + +33 +CHAR8 + * +¡¹ok_sim¶e +(CHAR8 * +š +, CHAR8 +c +); + +34 +CHAR8 + * +¡¼ch¿ +( +IN + cÚ¡ CHAR8 * +s +, cÚ¡ +INTN + +c +); + +35 +CHAR8 + * +¡rÿ +( +IN + CHAR8 * +d¡ +,IN CHAR8 * +¤c +); + +36 +CHAR8 + * +¡rch¿ +( +IN + cÚ¡ CHAR8 * +s +, IN cÚ¡ CHAR8 +c +); + +37 +CHAR8 + * +¡rýya +(CHAR8 * +d¡ +, cÚ¡ CHAR8 * +¤c +); + +38 +CHAR8 + * +¡ºýya +( +OUT + CHAR8 * +d¡ +, +IN + cÚ¡ CHAR8 * +¤c +, IN +UINTN + +size +); + +39 +VOID + +U2ascii +( +CHAR16 + * +š +, +CHAR8 + * +out +, +UINTN + +maxËn +); + + @sysdeps.h + +26 #iâdeà +__ELILO_SYSDEPS_H__ + + +27  + #__ELILO_SYSDEPS_H__ + + + ) + +29 #ifdeà +CONFIG_Ÿ64 + + +30  + ~"Ÿ64/sysd•s.h +" + +31 #–ià +defšed + +CONFIG_Ÿ32 + + +32  + ~"Ÿ32/sysd•s.h +" + + @tools/eliloalt.c + +34  + ~ + +35  + ~<¡dio.h +> + +36  + ~<¡dlib.h +> + +37  + ~<¡d¬g.h +> + +38  + ~ + +39  + ~ + +40  + ~ + +41  + ~<”ºo.h +> + +42  + ~<¡dšt.h +> + +43  + ~<¡ršg.h +> + +44  + ~ + +47  + #ELILOALT_VERSION + "0.02" + + ) + +49  + #ELILO_ALT_NAME + "ElžoAÉ" + + ) + +50  + #EFIVAR_DIR + "/´oc/efi/v¬s" + + ) + +51  + #ELILO_ALTVAR + +EFIVAR_DIR +"/" +ELILO_ALT_NAME +"-00000000-0000-0000-0000-000000000000" + + ) + +53  + #EFI_VARIABLE_NON_VOLATILE + 0x0000000000000001 + + ) + +54  + #EFI_VARIABLE_BOOTSERVICE_ACCESS + 0x0000000000000002 + + ) + +55  + #EFI_VARIABLE_RUNTIME_ACCESS + 0x0000000000000004 + + ) + +57  + tefi_¡©us_t +; + +58  +ušt8_t + + tefi_boÞ_t +; + +59  +ušt16_t + + tefi_ch¬16_t +; + +65 +ušt32_t + + md©a1 +; + +66 +ušt16_t + + md©a2 +; + +67 +ušt16_t + + md©a3 +; + +68 +ušt8_t + + md©a4 +[8]; + +69 } + tefi_guid_t +; + +74  + s_efi_v¬ŸbË_t + { + +75 +efi_ch¬16_t + + mv¬ŸbËÇme +[1024/(efi_char16_t)]; + +76 +efi_guid_t + + mv’dÜguid +; + +77 +ušt64_t + + md©asize +; + +78 +ušt8_t + + md©a +[1024]; + +79 +efi_¡©us_t + + m¡©us +; + +80 +ušt32_t + + m©Œibu‹s +; + +81 } + t__©Œibu‹__ +(( + t·cked +)è + tefi_v¬ŸbË_t +; + +83 * + g–žo_®t_Çme + = +ELILO_ALT_NAME +; + +85  +ÝtiÚ + + gcmd_ÝtiÚs +[]={ + +94  + $çl_”rÜ +(* +fmt +,...è + `__©Œibu‹__ +(( +nܑuº +)); + +97 + $çl_”rÜ +(* +fmt +, ...) + +99 +va_li¡ + +­ +; + +101 + `va_¡¬t +( +­ +, +fmt +); + +102 + `vårštf +( +¡d”r +, +fmt +, +­ +); + +103 + `va_’d +( +­ +); + +105 + `ex™ +(1); + +106 + } +} + +110 + $u§ge +(** +¬gv +) + +112 + `´štf +("U§ge: % [OPTIONS] cmdlše\n", +¬gv +[0]); + +114 + `´štf +( "-h, --help\t\tdisplayhis help‡ndƒxit\n" + +120 + } +} + +123 + $check_´oc_efi +( +fšd_’Œy +) + +125 +DIR + * +efi_v¬s +; + +126  +dœ’t + * +’Œy +; + +127  +Çme +[1024]; + +129 ià( + `g‘uid +() != 0) { + +130 + `çl_”rÜ +("This…rogram must be„un‡s„oot\n"); + +132 +efi_v¬s + = + `ݒdœ +( +EFIVAR_DIR +); + +133 ià( +efi_v¬s + =ð +NULL +) { + +134 + `çl_”rÜ +("Cªnهcûs %s\n", +EFIVAR_DIR +); + +136 ià(! +fšd_’Œy +) { + +137 + `þo£dœ +( +efi_v¬s +); + +138  +NULL +; + +141 ( +’Œy + = + `»addœ +( +efi_v¬s +)è!ð +NULL +) { + +142 ià( + `¡rcmp +( +’Œy +-> +d_Çme +, ".") && strcmp(entry->d_name, "..")) + +145 ià( +’Œy + =ð +NULL +) { + +146 + `çl_”rÜ +("CªnÙ fšdƒÁry iÀ%s\n", +EFIVAR_DIR +); + +148 + `¥rštf +( +Çme +, "%s/%s", +EFIVAR_DIR +, +’Œy +-> +d_Çme +); + +149 + `þo£dœ +( +efi_v¬s +); + +150  +Çme +; + +151 + } +} + +154 + $d–‘e_v¬ +() + +156 +efi_v¬ŸbË_t + +v¬ +; + +157  +fd +, +r +, +i +; + +159 + `check_´oc_efi +(0); + +161 +fd + = + `ݒ +( +ELILO_ALTVAR +, +O_WRONLY +); + +162 ià( +fd + == -1) { + +163 + `çl_”rÜ +("variable‚ot defined\n"); + +166 + `mem£t +(& +v¬ +, 0, (var)); + +168  +i +=0; i < ( +–žo_®t_Çme +); i++) { + +169 +v¬ +. +v¬ŸbËÇme +[ +i +] = ( +efi_ch¬16_t +) +–žo_®t_Çme +[i]; + +177 +r + = + `wr™e +( +fd +, & +v¬ +, (var)); + +178 ià( +r + !ð( +v¬ +)) { + +179 + `çl_”rÜ +("V¬ŸbË % defšed buˆšv®id cڋÁ\n", +ELILO_ALTVAR +); + +181 + `þo£ +( +fd +); + +182 + } +} + +186 + $´št_v¬ +() + +188 +efi_v¬ŸbË_t + +v¬ +; + +189  +fd +, +r +, +i +; + +192 + `check_´oc_efi +(0); + +194 +fd + = + `ݒ +( +ELILO_ALTVAR +, +O_RDONLY +); + +195 ià( +fd + == -1) { + +196 + `çl_”rÜ +("variable‚ot defined\n"); + +199 + `mem£t +(& +v¬ +, 0, (var)); + +201 +r + = + `»ad +( +fd +, & +v¬ +, (var)); + +202 ià( +r + !ð( +v¬ +)) { + +203 + `çl_”rÜ +("V¬ŸbË % defšed buˆšv®id cڋÁ\n", +ELILO_ALTVAR +); + +205 + `´štf +("EliloAlt=\""); + +206  +i +=0; i < +v¬ +. +d©asize +; i+=1){ + +207 + `´štf +("%c", +v¬ +. +d©a +[ +i +]); + +209 + `´štf +("\"\n"); + +210 + `þo£ +( +fd +); + +211 + } +} + +214 + $£t_v¬ +(* +cmdlše +) + +216 +efi_v¬ŸbË_t + +v¬ +; + +217  +fd +, +r +, +i +, +j +, +l +; + +218 * +Çme +; + +220 +Çme + = + `check_´oc_efi +(1); + +222 ià( +cmdlše + =ð +NULL +) { + +223 + `çl_”rÜ +("invalid cmdline‡rgument\n"); + +226 +l + = + `¡¾’ +( +cmdlše +); + +228 ià( +l + >= 1024) { + +229 + `çl_”rÜ +("Variable content isoo†ong, must be <= 512 characters\n"); + +232 +fd + = + `ݒ +( +Çme +, +O_WRONLY +); + +233 ià( +fd + == -1) { + +234 + `çl_”rÜ +("ÿn'ˆÝ’ %s: %s\n", +ELILO_ALTVAR +, + `¡»¼Ü +( +”ºo +)); + +237 + `mem£t +(& +v¬ +, 0, (var)); + +239  +i +=0; i < ( +–žo_®t_Çme +); i++) { + +240 +v¬ +. +v¬ŸbËÇme +[ +i +] = ( +efi_ch¬16_t +) +–žo_®t_Çme +[i]; + +243  +i +=0, +j +=0; i < +l +; i++, j+=2) { + +244 +v¬ +. +d©a +[ +j +] = ( +efi_ch¬16_t +) +cmdlše +[ +i +]; + +247 +v¬ +. +d©asize + = +j ++2; + +249 +v¬ +. +©Œibu‹s + = +EFI_VARIABLE_NON_VOLATILE + + +250 | +EFI_VARIABLE_BOOTSERVICE_ACCESS + | +EFI_VARIABLE_RUNTIME_ACCESS +; + +257 +r + = + `wr™e +( +fd +, & +v¬ +, (var)); + +258 ià( +r + !ð( +v¬ +)) { + +259 + `çl_”rÜ +("V¬ŸbË % defšed buˆšv®id cڋÁ %d\n", +ELILO_ALTVAR +, +r +); + +261 + `þo£ +( +fd +); + +263 + } +} + +266 + $maš +( +¬gc +, ** +¬gv +) + +268  +c +; + +270 ( +c += + `g‘Ýt_lÚg +( +¬gc +, +¬gv +,"hdps:", +cmd_ÝtiÚs +, 0)) != -1) { + +271  +c +) { + +274 + `´štf +("V”siÚ % D©e: %s\n", +ELILOALT_VERSION +, +__DATE__ +); + +275 + `ex™ +(0); + +278 + `u§ge +( +¬gv +); + +279 + `ex™ +(0); + +282 + `d–‘e_v¬ +(); + +283 + `ex™ +(0); + +286 + `´št_v¬ +(); + +287 + `ex™ +(0); + +290 + `£t_v¬ +( +ݏrg +); + +291 + `ex™ +(0); + +293 + `çl_”rÜ +("Unknown option\n"); + +296 + `´št_v¬ +(); + +298 + } +} + + @util.c + +29  + ~ + +30  + ~ + +32  + ~"–žo.h +" + +34  + #TENTH_SEC + 1000000 + + ) + +35  + #READ_BLOCK_SIZE + (4* +EFI_PAGE_SIZE +è + + ) + +37  + #is_ü +( +k +è(((k)== +CHAR_LINEFEED +)||((k)== +CHAR_CARRIAGE_RETURN +)) + + ) + +38  + #CHAR_SPACE + +L +' ' + + ) + +40  +INTN + + +41 + $»ad_key´ess +( +EFI_INPUT_KEY + * +key +) + +43  +sy¡ab +-> +CÚIn +-> + `R—dKeySŒoke +(sy¡ab->CÚIn, +key +); + +44 + } +} + +47 +EFI_STATUS + + +48 + $check_abÜt +( +VOID +) + +50 +EFI_INPUT_KEY + +key +; + +52  + `»ad_key´ess +(& +key +); + +53 + } +} + +55 +šlše + +VOID + + +56 + $»£t_šput +( +VOID +) + +58 +sy¡ab +-> +CÚIn +-> + `Re£t +(systab->ConIn, 1); + +59 + } +} + +62 +INTN + + +63 + $wa™_key´ess_abÜt +( +VOID +) + +65 +SIMPLE_INPUT_INTERFACE + * +cښ + = +sy¡ab +-> +CÚIn +; + +66 +EFI_INPUT_KEY + +key +; + +67 +EFI_STATUS + +¡©us +; + +69 + `»£t_šput +(); + +71 + `Pršt +( +L +"Hit ENTERo continue or ANY other keyo cancel"); + +74  +cښ +-> + `R—dKeySŒoke +(cښ, & +key +è=ð +EFI_SUCCESS +); + +76 ( +¡©us += +cښ +-> + `R—dKeySŒoke +(cښ, & +key +)è=ð +EFI_NOT_READY + ); + +78 ià( + `EFI_ERROR +( +¡©us +)è +ELILO_LOAD_ERROR +; + +80 + `Pršt +( +L +"\n"); + +82  + `is_ü +( +key +. +UnicodeCh¬ +è? +ELILO_LOAD_SUCCESS +: +ELILO_BOOT_ABORTED +; + +83 + } +} + +93 +INTN + + +94 + $wa™_timeout +( +UINTN + +timeout +) + +96 +EFI_STATUS + +¡©us +; + +97 +EFI_EVENT + +tim” +; + +98 +EFI_EVENT + +li¡ +[2]; + +99 +UINTN + +idx +; + +102 ià( +timeout + == 0)  0; + +105 +¡©us + = +BS +-> + `C»©eEv’t +( +EVT_TIMER +, 0, +NULL +, NULL, & +tim” +); + +106 ià( + `EFI_ERROR +( +¡©us +)) { + +107 + `ERR_PRT +(( +L +" wa™key C»©eEv’ˆçžed %r", +¡©us +)); + +111 +¡©us + = +BS +-> + `S‘Tim” +( +tim” +, +Tim”P”iodic +, +TENTH_SEC +); + +112 ià( + `EFI_ERROR +( +¡©us +)) { + +113 + `ERR_PRT +(( +L +"wa™key S‘Tim” fažed %r", +¡©us +)); + +117 +li¡ +[0] = +tim” +; + +118 +li¡ +[1] = +sy¡ab +-> +CÚIn +-> +Wa™FÜKey +; + +121 +¡©us + = +BS +-> + `Wa™FÜEv’t +(2, +li¡ +, & +idx +); + +122 ià( + `EFI_ERROR +( +¡©us +)) { + +123 + `ERR_PRT +(( +L +"wa™key Wa™FÜEv’ˆçžed %r", +¡©us +)); + +127 }  +timeout +-- && +idx + == 0); + +133 +¡©us + = +BS +-> + `S‘Tim” +( +tim” +, +Tim”Cªûl +, 0); + +134 ià( + `EFI_ERROR +( +¡©us +)) { + +135 + `ERR_PRT +(( +L +"wa™key S‘Tim”(Tim”Cªûlèçžed %r", +¡©us +)); + +139 +BS +-> + `Clo£Ev’t +( +tim” +); + +141  +idx + ? 1 : 0; + +142 + } +} + +144 +INTN + + +145 + $¬gify +( +CHAR16 + * +buf +, +UINTN + +Ën +, CHAR16 ** +¬gv +) + +148 +UINTN + +i +=0, +j +=0; + +149 +CHAR16 + * +p + = +buf +; + +151 ià( +buf + == 0) { + +152 +¬gv +[0] = +NULL +; + +156 +Ën + =†en >> 1; + +165  +buf +[ +i +] =ð +CHAR_SPACE + && buf[i] !ð +CHAR_NULL + && i < +Ën +) i++; + +167 ià( +buf +[ +i +] =ð +CHAR_NULL + || i =ð +Ën +è +’d +; + +169 +p + = +buf ++ +i +; + +170 +i +++; + +172  +buf +[ +i +] !ð +CHAR_SPACE + && buf[i] !ð +CHAR_NULL + && i < +Ën +) i++; + +174 +¬gv +[ +j +++] = +p +; + +176 ià( +buf +[ +i +] =ð +CHAR_NULL +è +’d +; + +178 +buf +[ +i +] = +CHAR_NULL +; + +180 ià( +i + =ð +Ën +è +’d +; + +182 +i +++; + +184 ià( +j + =ð +MAX_ARGS +-1) { + +185 + `ERR_PRT +(( +L +"toØmªy‡rgum’t (%dèŒunÿtšg", +j +)); + +186  +’d +; + +189 +’d +: + +191 ià( +i + !ð +Ën +) { + +192 + `ERR_PRT +(( +L +"ignܚg¿žšg %d ch¬aù” Ú commªd†še", +Ën +- +i +)); + +195 +¬gv +[ +j +] = +NULL +; + +196  +j +; + +197 + } +} + +199 +VOID + + +200 + $uÇrgify +( +CHAR16 + ** +¬gv +, CHAR16 ** +¬gs +) + +202 iàÐ* +¬gv + == 0 ) { + +203 * +¬gs + = +L +""; + +206 * +¬gs + = * +¬gv +; + +207  +¬gv +[1] ) { + +208 (* +¬gv +)[ + `SŒL’ +(*¬gv)] = +CHAR_SPACE +; + +209 +¬gv +++; + +211 + } +} + +213 +VOID + + +214 + $¥l™_¬gs +( +CHAR16 + * +bufãr +, CHAR16 * +kÇme +, CHAR16 * +¬gs +) + +216 +CHAR16 + * +tmp +; + +219 * +bufãr + && *bufã¸=ð +CHAR_SPACE +) buffer++; + +221 +tmp + = +bufãr +; + +224 * +bufãr + && *bufã¸!ð +CHAR_SPACE +) buffer++; + +226 ià(* +bufãr +) { + +227 * +bufãr +++ = +CHAR_NULL +; + +228 + `SŒCpy +( +kÇme +, +tmp +); + +232 * +bufãr + && *bufã¸=ð +CHAR_SPACE +) buffer++; + +234 + `SŒCpy +( +¬gs +, +bufãr +); + +235 + } +} + +237 +INTN + + +238 + $»ad_fže +( +UINTN + +fd +, UINTN +tÙ®_size +, +CHAR8 + * +bufãr +) + +240 +INTN + +size +, +j +=0; + +241 +EFI_STATUS + +¡©us +; + +242 +CHAR16 + +h–ic݋r +[4] = { +L +'|' , L'/' , L'-' , L'\\' }; + +243 +INTN + +»t + = +ELILO_LOAD_SUCCESS +; + +244 +UINTN + +sum + = 0; + +255  +tÙ®_size + > 0) { + +256 +size + = +tÙ®_size + < +READ_BLOCK_SIZE +?otal_size : READ_BLOCK_SIZE; + +258 +¡©us + = + `fÝs_»ad +( +fd +, +bufãr +, & +size +); + +259 ià( + `EFI_ERROR +( +¡©us +)) { + +260 + `ERR_PRT +(( +L +"»ad_fžçžed %r", +¡©us +)); + +261  +ELILO_LOAD_ERROR +; + +263 +sum + +ð +size +; + +265 + `Pršt +( +L +"%c\b", +h–ic݋r +[ +j +++%4]); + +267 +bufãr + +ð +size +; + +268 +tÙ®_size + -ð +size +; + +270 ià( + `check_abÜt +(è=ð +EFI_SUCCESS +) { + +271 +»t + = +ELILO_LOAD_ABORTED +; + +275  +»t +; + +276 + } +} + +278 +INTN + + +279 + $g‘_memm­ +( +mm­_desc_t + * +desc +) + +281  + #ELILO_MEMMAP_SIZE_DEFAULT + +EFI_PAGE_SIZE + + + ) + +282  + #ELILO_MEMMAP_INC + (( +EFI_MEMORY_DESCRIPTOR +)<<1) + + ) + +284 +EFI_STATUS + +¡©us +; + +286 +desc +-> +m­_size + = +ELILO_MEMMAP_SIZE_DEFAULT +; + +289 +desc +-> +md + = ( +EFI_MEMORY_DESCRIPTOR + *) + `®loc +(desc-> +m­_size +, +EfiLßd”D©a +); + +291 ià( +desc +-> +md + =ð +NULL +) { + +292 + `ERR_PRT +(( +L +"failedo‡llocate memory map buffer")); + +295 +¡©us + = (* +BS +-> +G‘MemÜyM­ +)(& +desc +-> +m­_size +, desc-> +md +, &desc-> +cook› +, &desc-> +desc_size +, &desc-> +desc_v”siÚ +); + +296 ià( +¡©us + =ð +EFI_SUCCESS +) ; + +298 + `ä“ +( +desc +-> +md +); + +300 ià( +¡©us + !ð +EFI_BUFFER_TOO_SMALL +) { + +301 + `ERR_PRT +(( +L +"failedo obtain memory map %r")); + +304 +desc +-> +m­_size + +ð +ELILO_MEMMAP_INC +; + +306 + `DBG_PRT +(( +L +"fš® g‘_memm­ m­_size=%ld", +desc +-> +m­_size +)); + +309 + } +} + +312 +INTN + + +313 + $g‘_memm­ +( +mm­_desc_t + * +desc +) + +315 +EFI_STATUS + +¡©us +; + +318 +desc +-> +m­_size + = 0; + +320 +¡©us + = +BS +-> + `G‘MemÜyM­ +(& +desc +-> +m­_size +, desc-> +md +, &desc-> +cook› +, &desc-> +desc_size +, &desc-> +desc_v”siÚ +); + +321 ià( +¡©us + !ð +EFI_BUFFER_TOO_SMALL +)  -1; + +323 +desc +-> +md + = ( +EFI_MEMORY_DESCRIPTOR + *) + `®loc +(desc-> +m­_size +, +EfiLßd”D©a +); + +324 ià( +desc +-> +md + =ð +NULL +) { + +325 + `ERR_PRT +(( +L +"failedo‡llocate memory map buffer")); + +330 +¡©us + = +BS +-> + `G‘MemÜyM­ +(& +desc +-> +m­_size +, desc-> +md +, &desc-> +cook› +, &desc-> +desc_size +, &desc-> +desc_v”siÚ +); + +331 ià( + `EFI_ERROR +( +¡©us +)) { + +332 + `ERR_PRT +(( +L +"çžedØobš memÜy m­ %d: %r", +desc +-> +m­_size +, +¡©us +)); + +333 + `ä“ +( +desc +-> +md +); + +336 + `DBG_PRT +(( +L +"fš® g‘_memm­ m­_size=%d", +desc +-> +m­_size +)); + +339 + } +} + +343 +VOID + + +344 + $ä“_memm­ +( +mm­_desc_t + * +desc +) + +346 ià( +desc +-> +md +) { + +347 + `ä“ +( +desc +-> +md +); + +348 +desc +-> +md + = +NULL +; + +350 + } +} + +352 +VOID + + +353 + $´št_memm­ +( +mm­_desc_t + * +desc +) + +355 +EFI_MEMORY_DESCRIPTOR + * +md +; + +356 +UINTN + +desc_size +; + +357 +VOID + * +p +; + +358 +VOID + * +md_’d +; + +359 +INT8 + +´š‹d +; + +360 +UINTN + +Áy³s +; + +361 +CHAR16 +* +¡r +; + +363  +CHAR16 + * +memty³s +[]={ + +364 +L +"ReservedMemoryType", + +365 +L +"LoaderCode", + +366 +L +"LoaderData", + +367 +L +"BootServicesCode", + +368 +L +"BootServicesData", + +369 +L +"RuntimeServicesCode", + +370 +L +"RuntimeServicesData", + +371 +L +"ConventionalMemory", + +372 +L +"UnusableMemory", + +373 +L +"ACPIReclaimMemory", + +374 +L +"ACPIMemoryNVS", + +375 +L +"MemoryMappedIO", + +376 +L +"MemoryMappedIOPortSpace", + +377 +L +"PalCode" + +381 +md_’d + = (( +VOID + *) +desc +-> +md +)+desc-> +m­_size +; + +382 +desc_size + = +desc +->desc_size; + +384 +Áy³s + = ( +memty³s +)/( +CHAR16 + *); + +386  +p + = +desc +-> +md +;… < +md_’d +;… +ð +desc_size +) { + +387 +md + = +p +; + +389 +¡r + = +md +-> +Ty³ + < +Áy³s + ? +memty³s +[md->Ty³] : +L +"Unknown"; + +391 + `Pršt +( +L +"%24 %lx-%lx %8lx", +¡r +, +md +-> +PhysiÿlS¹ +, + +392 +md +-> +PhysiÿlS¹ ++(md-> +Numb”OfPages +<< +EFI_PAGE_SHIFT +), + +393 +md +-> +Numb”OfPages +); + +395 +´š‹d +=0; + +396  + #P_FLG +( +f +) { \ + +397 + `Pršt +( +L +" % %s", +´š‹d + ? L"|":L"", +f +); \ + +398 +´š‹d +=1; \ + +399 } + + ) + +401 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_UC +) { + +402 + `P_FLG +( +L +"UC"); + +404 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_WC +) { + +405 + `P_FLG +( +L +"WC"); + +407 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_WT +) { + +408 + `P_FLG +( +L +"WT"); + +410 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_WB +) { + +411 + `P_FLG +( +L +"WB"); + +413 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_UCE +) { + +414 + `P_FLG +( +L +"UCE"); + +416 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_WP +) { + +417 + `P_FLG +( +L +"WP"); + +419 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_RP +) { + +420 + `P_FLG +( +L +"RP"); + +422 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_XP +) { + +423 + `P_FLG +( +L +"XP"); + +425 ià( +md +-> +A‰ribu‹ + & +EFI_MEMORY_RUNTIME +) { + +426 + `P_FLG +( +L +"RT"); + +428 + `Pršt +( +L +"\n"); + +430 + } +} + +432 +INTN + + +433 + $fšd_k”Ãl_memÜy +( +VOID +* +low_addr +, VOID* +max_addr +, +UINTN + +®ignm’t +, VOID** +¡¬t +) + +435  + #HIGHEST_ADDR + ( +VOID +*)(~0) + + ) + +436 +mm­_desc_t + +mdesc +; + +437 +EFI_MEMORY_DESCRIPTOR + * +md +; + +438 +UINT64 + +size +; + +439 +VOID + * +p +, * +addr +; + +440 +VOID + * +desc_’d +, * +md_’d +, * +be¡_addr + = +HIGHEST_ADDR +; + +449 ià( + `g‘_memm­ +(& +mdesc +) == -1) { + +450 + `ERR_PRT +(( +L +"find_kernel_memory :GetMemoryMap() failed")); + +454 +desc_’d + = (( +VOID + *) +mdesc +. +md +è+ mdesc. +m­_size +; + +455 +size + = +max_addr + - +low_addr +; + +459  +p + = +mdesc +. +md +;… < +desc_’d +;… +ðmdesc. +desc_size +) { + +460 +md + = +p +; + +473 ià( +md +-> +Ty³ + !ð +EfiCÚv’tiÚ®MemÜy +) ; + +478 +md_’d + = ( +VOID +*)( +md +-> +PhysiÿlS¹ + + md-> +Numb”OfPages + * +EFI_PAGE_SIZE +); + +479 +addr + = ( +VOID +*) + `ROUNDUP +( +md +-> +PhysiÿlS¹ +, +®ignm’t +); + +489 ià( +addr + < +be¡_addr + &&‡dd¸< +md_’d + &&‡ddr+ +size + <= md_end) best_addr =‡ddr; + +491 ià( +be¡_addr + =ð +HIGHEST_ADDR +) { + +492 + `ä“_memm­ +(& +mdesc +); + +493 + `ERR_PRT +(( +L +"Could‚ot find memory suitable for†oading image")); + +497 * +¡¬t + = +be¡_addr +; + +499 + `ä“_memm­ +(& +mdesc +); + +502 + } +} + + @vars.c + +28  + ~ + +29  + ~ + +35  + #MAX_VARIABLES + (26<<1) + + ) + +36  + #MAX_VARIABLE_LENGTH + 128 + + ) + +37  + #VAR_IDX +( +a +è((×è>ð'a' && (aè<ð'z'è? 26-'a'+×è: (a)-'A') + + ) + +38  + #IDX_VAR +( +i +è((iè< 26 ? 'A'+(iè: 'a'+ ((i)-26)) + + ) + +41 +CHAR16 + + mv®ue +[ +MAX_VARIABLE_LENGTH +]; + +42 } + t–žo_v¬_t +; + +44  +–žo_v¬_t + + gv¬s +[ +MAX_VARIABLES +]; + +46 +INTN + + +47 + $£t_v¬ +( +CHAR16 + +v +, CHAR16 * +v®ue +) + +50 ià( +v + < 'A' || (v > 'Z' && v < 'a') || v > 'z')  -1; + +52 + `SŒCpy +( +v¬s +[ + `VAR_IDX +( +v +)]. +v®ue +, value); + +54 + } +} + +56 +CHAR16 + * + +57 + $g‘_v¬ +( +CHAR16 + +v +) + +60 ià( +v + < +L +'A' || (v > L'Z' && v < L'a'è|| v > L'z'è +NULL +; + +62  +v¬s +[ + `VAR_IDX +( +v +)]. +v®ue +; + +63 + } +} + +66 +VOID + + +67 + $´št_v¬s +( +VOID +) + +69 +INTN + +i +; + +70 +UINTN + +út + = 0; + +72  +i +=0; i < +MAX_VARIABLES +; i++) { + +73 ià( +v¬s +[ +i +]. +v®ue +[0]) { + +74 +út +++; + +75 + `Pršt +( +L +"%øð\"%s\"\n", + `IDX_VAR +( +i +), +v¬s +[i]. +v®ue +); + +78 ià( +út + =ð0è + `Pršt +( +L +"no variable defined\n"); + +79 + } +} + +82 +INTN + + +83 + $sub¡_v¬s +( +CHAR16 + * +š +, CHAR16 * +out +, +INTN + +maxËn +) + +89  + #DSPEC_CHAR + +L +'&' + + ) + +90 +INTN + +i +, +l +, +j +, +út +; + +91 +INTN + +m + = 0, +d + = 0; + +92 +CHAR16 + * +v® +; + +94 ià( +š + =ð +NULL + || +out + =ðNULL || +maxËn + <= 1)  -1; + +96 +l + = + `SŒL’ +( +š +); + +98 +maxËn +--; + +100  +i +=0, +j +=0;˜< +l +; i++) { + +101 +út + = 1; + +102 +v® + = +š ++ +i +; + +104 ià(* +v® + =ð +DSPEC_CHAR + && +d + == 0) { + +105 +d + = 1; + +108 if( +m + == 1) { + +109 +m + = 0; + +110 +v® + = + `g‘_v¬ +(*val); + +112 ià( +v® + =ð +NULL +) ; + +114 +út + = + `SŒL’ +( +v® +); + +116 } ià(* +v® + =ð +L +'%' && +d + == 0) { + +117 +m + = 1; + +120 +d + = 0; + +121  +j + < +maxËn + && +út +) { + +122 +out +[ +j +++] = * +v® +++; + +123 +út +--; + +125 ià( +j + =ð +maxËn +) ; + +127 +out +[ +j +] = +CHAR_NULL +; + +130 + } +} + + @vars.h + +29 #iâdeà +__ELILO_VARS_H__ + + +30  + #__ELILO_VARS_H__ + + + ) + +43  + #VAR_NETFS_IPADDR + +L +'I' + + ) + +44  + #VAR_NETFS_NETMASK + +L +'M' + + ) + +45  + #VAR_NETFS_GATEWAY + +L +'G' + + ) + +46  + #VAR_NETFS_HOSTNAME + +L +'H' + + ) + +47  + #VAR_NETFS_DOMAINAME + +L +'D' + + ) + +49 +INTN + +£t_v¬ +( +CHAR16 + +v +, CHAR16 * +v®ue +); + +50 +CHAR16 + * +g‘_v¬ +(CHAR16 +v +); + +51 +VOID + +´št_v¬s +(VOID); + +52 +INTN + +sub¡_v¬s +( +CHAR16 + * +š +, CHAR16 * +out +, INTN +maxËn +); + + @/usr/include/asm/atomic.h + +5 #iâdeà +__i386STUB__ATOMIC_H__ + + +6  + #__i386STUB__ATOMIC_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/bitops.h + +5 #iâdeà +__i386STUB__BITOPS_H__ + + +6  + #__i386STUB__BITOPS_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/byteorder.h + +5 #iâdeà +__i386STUB__BYTEORDER_H__ + + +6  + #__i386STUB__BYTEORDER_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/semaphore.h + +5 #iâdeà +__i386STUB__SEMAPHORE_H__ + + +6  + #__i386STUB__SEMAPHORE_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/dirent.h + +23 #iâdef +_DIRENT_H + + +24  + #_DIRENT_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +28 + g__BEGIN_DECLS + + +30  + ~ + +32 #ifdeà +__USE_XOPEN + + +33 #iâdeà +__šo_t_defšed + + +34 #iâdeà +__USE_FILE_OFFSET64 + + +35  +__šo_t + + tšo_t +; + +37  +__šo64_t + + tšo_t +; + +39  + #__šo_t_defšed + + + ) + +41 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__šo64_t_defšed + + +42  +__šo64_t + + tšo64_t +; + +43  + #__šo64_t_defšed + + + ) + +62  + ~ + +64 #ià( +defšed + +__USE_BSD + || defšed +__USE_MISC +è&& !defšed +d_fž’o + + +65  + #d_šo + +d_fž’o + + + ) + +82 #ifdeà +_DIRENT_HAVE_D_NAMLEN + + +83  + #_D_EXACT_NAMLEN +( +d +è((d)-> +d_ÇmËn +) + + ) + +84  + #_D_ALLOC_NAMLEN +( +d +è( + `_D_EXACT_NAMLEN + (dè+ 1) + + ) + +86  + #_D_EXACT_NAMLEN +( +d +è( + `¡¾’ + ((d)-> +d_Çme +)) + + ) + +87 #ifdeà +_DIRENT_HAVE_D_RECLEN + + +88  + #_D_ALLOC_NAMLEN +( +d +è(((*è(dè+ (d)-> +d_»þ’ +è- &(d)-> +d_Çme +[0]) + + ) + +90  + #_D_ALLOC_NAMLEN +( +d +è( (d)-> +d_Çme + > 1 ?  (d)->d_name : \ + +91 + `_D_EXACT_NAMLEN + ( +d +è+ 1) + + ) + +96 #ifdeà +__USE_BSD + + +100 + mDT_UNKNOWN + = 0, + +101  + #DT_UNKNOWN + +DT_UNKNOWN + + + ) + +102 + mDT_FIFO + = 1, + +103  + #DT_FIFO + +DT_FIFO + + + ) + +104 + mDT_CHR + = 2, + +105  + #DT_CHR + +DT_CHR + + + ) + +106 + mDT_DIR + = 4, + +107  + #DT_DIR + +DT_DIR + + + ) + +108 + mDT_BLK + = 6, + +109  + #DT_BLK + +DT_BLK + + + ) + +110 + mDT_REG + = 8, + +111  + #DT_REG + +DT_REG + + + ) + +112 + mDT_LNK + = 10, + +113  + #DT_LNK + +DT_LNK + + + ) + +114 + mDT_SOCK + = 12, + +115  + #DT_SOCK + +DT_SOCK + + + ) + +116 + mDT_WHT + = 14 + +117  + #DT_WHT + +DT_WHT + + + ) + +121  + #IFTODT +( +mode +è(((modeè& 0170000è>> 12) + + ) + +122  + #DTTOIF +( +dœty³ +è((dœty³è<< 12) + + ) + +128  +__dœ¡»am + + tDIR +; + +135 +DIR + * + $ݒdœ + ( +__cÚ¡ + * +__Çme +è + `__nÚnuÎ + ((1)); + +142  + $þo£dœ + ( +DIR + * +__dœp +è + `__nÚnuÎ + ((1)); + +154 #iâdeà +__USE_FILE_OFFSET64 + + +155  +dœ’t + * + $»addœ + ( +DIR + * +__dœp +è + `__nÚnuÎ + ((1)); + +157 #ifdeà +__REDIRECT + + +158  +dœ’t + * + `__REDIRECT + ( +»addœ +, ( +DIR + * +__dœp +), +»addœ64 +) + +159 + `__nÚnuÎ + ((1)); + +161  + #»addœ + +»addœ64 + + + ) + +165 #ifdeà +__USE_LARGEFILE64 + + +166  +dœ’t64 + * + $»addœ64 + ( +DIR + * +__dœp +è + `__nÚnuÎ + ((1)); + +169 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +175 #iâdeà +__USE_FILE_OFFSET64 + + +176  + $»addœ_r + ( +DIR + * +__»¡riù + +__dœp +, + +177  +dœ’t + * +__»¡riù + +__’Œy +, + +178  +dœ’t + ** +__»¡riù + +__»suÉ +) + +179 + `__nÚnuÎ + ((1, 2, 3)); + +181 #ifdeà +__REDIRECT + + +182  + `__REDIRECT + ( +»addœ_r +, + +183 ( +DIR + * +__»¡riù + +__dœp +, + +184  +dœ’t + * +__»¡riù + +__’Œy +, + +185  +dœ’t + ** +__»¡riù + +__»suÉ +), + +186 +»addœ64_r +è + `__nÚnuÎ + ((1, 2, 3)); + +188  + #»addœ_r + +»addœ64_r + + + ) + +192 #ifdeà +__USE_LARGEFILE64 + + +193  + $»addœ64_r + ( +DIR + * +__»¡riù + +__dœp +, + +194  +dœ’t64 + * +__»¡riù + +__’Œy +, + +195  +dœ’t64 + ** +__»¡riù + +__»suÉ +) + +196 + `__nÚnuÎ + ((1, 2, 3)); + +201  + $»wšddœ + ( +DIR + * +__dœp +è +__THROW + + `__nÚnuÎ + ((1)); + +203 #ià +defšed + +__USE_BSD + || defšed +__USE_MISC + || defšed +__USE_XOPEN + + +204  + ~ + +207  + $£ekdœ + ( +DIR + * +__dœp +,  +__pos +è +__THROW + + `__nÚnuÎ + ((1)); + +210  + $‹Îdœ + ( +DIR + * +__dœp +è +__THROW + + `__nÚnuÎ + ((1)); + +213 #ià +defšed + +__USE_BSD + || defšed +__USE_MISC + + +216  + $dœfd + ( +DIR + * +__dœp +è +__THROW + + `__nÚnuÎ + ((1)); + +218 #ià +defšed + +__OPTIMIZE__ + && defšed +_DIR_dœfd + + +219  + #dœfd +( +dœp +è + `_DIR_dœfd + (dœp) + + ) + +222 #iâdeà +MAXNAMLEN + + +224  + ~ + +227 #ifdeà +NAME_MAX + + +228  + #MAXNAMLEN + +NAME_MAX + + + ) + +230  + #MAXNAMLEN + 255 + + ) + +234  + #__Ãed_size_t + + + ) + +235  + ~<¡ddef.h +> + +241 #iâdeà +__USE_FILE_OFFSET64 + + +242  + `sÿndœ + ( +__cÚ¡ + * +__»¡riù + +__dœ +, + +243  +dœ’t + *** +__»¡riù + +__Çm–i¡ +, + +244 (* +__£ËùÜ +è( +__cÚ¡ +  +dœ’t + *), + +245 (* +__cmp +è( +__cÚ¡ + *, __const *)) + +246 + `__nÚnuÎ + ((1, 2)); + +248 #ifdeà +__REDIRECT + + +249  + `__REDIRECT + ( +sÿndœ +, + +250 ( +__cÚ¡ + * +__»¡riù + +__dœ +, + +251  +dœ’t + *** +__»¡riù + +__Çm–i¡ +, + +252 (* +__£ËùÜ +è( +__cÚ¡ +  +dœ’t + *), + +253 (* +__cmp +è( +__cÚ¡ + *, __const *)), + +254 +sÿndœ64 +è + `__nÚnuÎ + ((1, 2)); + +256  + #sÿndœ + +sÿndœ64 + + + ) + +260 #ià +defšed + +__USE_GNU + && defšed +__USE_LARGEFILE64 + + +263  + `sÿndœ64 + ( +__cÚ¡ + * +__»¡riù + +__dœ +, + +264  +dœ’t64 + *** +__»¡riù + +__Çm–i¡ +, + +265 (* +__£ËùÜ +è( +__cÚ¡ +  +dœ’t64 + *), + +266 (* +__cmp +è( +__cÚ¡ + *, __const *)) + +267 + `__nÚnuÎ + ((1, 2)); + +271 #iâdeà +__USE_FILE_OFFSET64 + + +272  + $®phasÜt + ( +__cÚ¡ + * +__e1 +, __cÚ¡ * +__e2 +) + +273 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +275 #ifdeà +__REDIRECT + + +276  + `__REDIRECT_NTH + ( +®phasÜt +, + +277 ( +__cÚ¡ + * +__e1 +, __cÚ¡ * +__e2 +), + +278 +®phasÜt64 +è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +280  + #®phasÜt + +®phasÜt64 + + + ) + +284 #ià +defšed + +__USE_GNU + && defšed +__USE_LARGEFILE64 + + +285  + $®phasÜt64 + ( +__cÚ¡ + * +__e1 +, __cÚ¡ * +__e2 +) + +286 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +289 #ifdeà +__USE_GNU + + +291 #iâdeà +__USE_FILE_OFFSET64 + + +292  + $v”siÚsÜt + ( +__cÚ¡ + * +__e1 +, __cÚ¡ * +__e2 +) + +293 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +295 #ifdeà +__REDIRECT + + +296  + `__REDIRECT_NTH + ( +v”siÚsÜt +, + +297 ( +__cÚ¡ + * +__e1 +, __cÚ¡ * +__e2 +), + +298 +v”siÚsÜt64 +) + +299 +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +301  + #v”siÚsÜt + +v”siÚsÜt64 + + + ) + +305 #ifdeà +__USE_LARGEFILE64 + + +306  + $v”siÚsÜt64 + ( +__cÚ¡ + * +__e1 +, __cÚ¡ * +__e2 +) + +307 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +315 #iâdeà +__USE_FILE_OFFSET64 + + +316 +__ssize_t + + $g‘dœ’Œ›s + ( +__fd +, * +__»¡riù + +__buf +, + +317 +size_t + +__nby‹s +, + +318 +__off_t + * +__»¡riù + +__ba£p +) + +319 +__THROW + + `__nÚnuÎ + ((2, 4)); + +321 #ifdeà +__REDIRECT + + +322 +__ssize_t + + `__REDIRECT_NTH + ( +g‘dœ’Œ›s +, + +323 ( +__fd +, * +__»¡riù + +__buf +, + +324 +size_t + +__nby‹s +, + +325 +__off64_t + * +__»¡riù + +__ba£p +), + +326 +g‘dœ’Œ›s64 +è + `__nÚnuÎ + ((2, 4)); + +328  + #g‘dœ’Œ›s + +g‘dœ’Œ›s64 + + + ) + +332 #ifdeà +__USE_LARGEFILE64 + + +333 +__ssize_t + + $g‘dœ’Œ›s64 + ( +__fd +, * +__»¡riù + +__buf +, + +334 +size_t + +__nby‹s +, + +335 +__off64_t + * +__»¡riù + +__ba£p +) + +336 +__THROW + + `__nÚnuÎ + ((2, 4)); + +341 +__END_DECLS + + + @/usr/include/errno.h + +23 #iâdef +_ERRNO_H + + +27 #iâdef +__Ãed_Em©h + + +28  + #_ERRNO_H + 1 + + ) + +29  + ~<ã©u»s.h +> + +32 + g__BEGIN_DECLS + + +36  + ~ + +37 #undeà +__Ãed_Em©h + + +39 #ifdef +_ERRNO_H + + +46 #iâdef +”ºo + + +47  +”ºo +; + +50 #ifdeà +__USE_GNU + + +55 * +´og¿m_švoÿtiÚ_Çme +, * +´og¿m_švoÿtiÚ_shÜt_Çme +; + +59 + g__END_DECLS + + +67 #ià +defšed + +__USE_GNU + || defšed +__Ãed_”rÜ_t + + +68 #iâdeà +__”rÜ_t_defšed + + +69  + t”rÜ_t +; + +70  + #__”rÜ_t_defšed + 1 + + ) + +72 #undeà +__Ãed_”rÜ_t + + + @/usr/include/fcntl.h + +23 #iâdef +_FCNTL_H + + +24  + #_FCNTL_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +29 + g__BEGIN_DECLS + + +33  + ~ + +36 #ifdeà +__USE_XOPEN + + +37  + ~ + +40 #ifdef +__USE_MISC + + +41 #iâdeà +R_OK + + +44  + #R_OK + 4 + + ) + +45  + #W_OK + 2 + + ) + +46  + #X_OK + 1 + + ) + +47  + #F_OK + 0 + + ) + +52 #ifdeà +__USE_XOPEN + + +53  + #SEEK_SET + 0 + + ) + +54  + #SEEK_CUR + 1 + + ) + +55  + #SEEK_END + 2 + + ) + +63  +fúŽ + ( +__fd +,  +__cmd +, ...); + +71 #iâdeà +__USE_FILE_OFFSET64 + + +72  + $ݒ + ( +__cÚ¡ + * +__fže +,  +__oæag +, ...è + `__nÚnuÎ + ((1)); + +74 #ifdeà +__REDIRECT + + +75  + `__REDIRECT + ( +ݒ +, ( +__cÚ¡ + * +__fže +,  +__oæag +, ...), +ݒ64 +) + +76 + `__nÚnuÎ + ((1)); + +78  + #ݒ + +ݒ64 + + + ) + +81 #ifdeà +__USE_LARGEFILE64 + + +82  + $ݒ64 + ( +__cÚ¡ + * +__fže +,  +__oæag +, ...è + `__nÚnuÎ + ((1)); + +90 #iâdeà +__USE_FILE_OFFSET64 + + +91  + $ü—t + ( +__cÚ¡ + * +__fže +, +__mode_t + +__mode +è + `__nÚnuÎ + ((1)); + +93 #ifdeà +__REDIRECT + + +94  + `__REDIRECT + ( +ü—t +, ( +__cÚ¡ + * +__fže +, +__mode_t + +__mode +), + +95 +ü—t64 +è + `__nÚnuÎ + ((1)); + +97  + #ü—t + +ü—t64 + + + ) + +100 #ifdeà +__USE_LARGEFILE64 + + +101  + $ü—t64 + ( +__cÚ¡ + * +__fže +, +__mode_t + +__mode +è + `__nÚnuÎ + ((1)); + +104 #ià! +defšed + +F_LOCK + && (defšed +__USE_MISC + || (defšed +__USE_XOPEN_EXTENDED + \ + +105 && ! +defšed + +__USE_POSIX +)) + +114  + #F_ULOCK + 0 + + ) + +115  + #F_LOCK + 1 + + ) + +116  + #F_TLOCK + 2 + + ) + +117  + #F_TEST + 3 + + ) + +119 #iâdeà +__USE_FILE_OFFSET64 + + +120  + `lockf + ( +__fd +,  +__cmd +, +__off_t + +__Ën +); + +122 #ifdeà +__REDIRECT + + +123  + `__REDIRECT + ( +lockf +, ( +__fd +,  +__cmd +, +__off64_t + +__Ën +), +lockf64 +); + +125  + #lockf + +lockf64 + + + ) + +128 #ifdeà +__USE_LARGEFILE64 + + +129  + `lockf64 + ( +__fd +,  +__cmd +, +__off64_t + +__Ën +); + +133 #ifdeà +__USE_XOPEN2K + + +136 #iâdeà +__USE_FILE_OFFSET64 + + +137  + $posix_çdvi£ + ( +__fd +, +__off_t + +__off£t +, __off_ˆ +__Ën +, + +138  +__advi£ +è +__THROW +; + +140 #ifdeà +__REDIRECT_NTH + + +141  + `__REDIRECT_NTH + ( +posix_çdvi£ +, ( +__fd +, +__off64_t + +__off£t +, + +142 +__off64_t + +__Ën +,  +__advi£ +), + +143 +posix_çdvi£64 +); + +145  + #posix_çdvi£ + +posix_çdvi£64 + + + ) + +148 #ifdeà +__USE_LARGEFILE64 + + +149  + $posix_çdvi£64 + ( +__fd +, +__off64_t + +__off£t +, __off64_ˆ +__Ën +, + +150  +__advi£ +è +__THROW +; + +158 #iâdeà +__USE_FILE_OFFSET64 + + +159  + `posix_çÎoÿ‹ + ( +__fd +, +__off_t + +__off£t +, __off_ˆ +__Ën +); + +161 #ifdeà +__REDIRECT + + +162  + `__REDIRECT + ( +posix_çÎoÿ‹ +, ( +__fd +, +__off64_t + +__off£t +, + +163 +__off64_t + +__Ën +), + +164 +posix_çÎoÿ‹64 +); + +166  + #posix_çÎoÿ‹ + +posix_çÎoÿ‹64 + + + ) + +169 #ifdeà +__USE_LARGEFILE64 + + +170  + `posix_çÎoÿ‹64 + ( +__fd +, +__off64_t + +__off£t +, __off64_ˆ +__Ën +); + +174 +__END_DECLS + + + @/usr/include/linux/adfs_fs_sb.h + +7 #iâdeà +_ADFS_FS_SB + + +8  + #_ADFS_FS_SB + + + ) + +10  + ~ + +15  + gadfs_discm­ +; + +16  + gadfs_dœ_Ýs +; + +21  + sadfs_sb_šfo + { + +22  +adfs_discm­ + * + ms_m­ +; + +23  +adfs_dœ_Ýs + * + ms_dœ +; + +25 +uid_t + + ms_uid +; + +26 +gid_t + + ms_gid +; + +27 +umode_t + + ms_owÃr_mask +; + +28 +umode_t + + ms_Ùh”_mask +; + +30 +__u32 + + ms_ids_³r_zÚe +; + +31 +__u32 + + ms_idËn +; + +32 +__u32 + + ms_m­_size +; + +33  + ms_size +; + +34 sigÃd  + ms_m­2blk +; + +35  + ms_log2sh¬esize +; + +36 +__Ë32 + + ms_v”siÚ +; + +37  + ms_Çm–’ +; + + @/usr/include/linux/cache.h + +1 #iâdeà +__LINUX_CACHE_H + + +2  + #__LINUX_CACHE_H + + + ) + +4  + ~ + +5  + ~ + +7 #iâdeà +L1_CACHE_ALIGN + + +8  + #L1_CACHE_ALIGN +( +x +è + `ALIGN +(x, +L1_CACHE_BYTES +) + + ) + +11 #iâdeà +SMP_CACHE_BYTES + + +12  + #SMP_CACHE_BYTES + +L1_CACHE_BYTES + + + ) + +15 #iâdeà +____ÿch–še_®igÃd + + +16  + #____ÿch–še_®igÃd + + `__©Œibu‹__ +(( + `__®igÃd__ +( +SMP_CACHE_BYTES +))) + + ) + +19 #iâdeà +____ÿch–še_®igÃd_š_smp + + +20 #ifdeà +CONFIG_SMP + + +21  + #____ÿch–še_®igÃd_š_smp + +____ÿch–še_®igÃd + + + ) + +23  + #____ÿch–še_®igÃd_š_smp + + + ) + +27 #iâdeà +__ÿch–še_®igÃd + + +28  + #__ÿch–še_®igÃd + \ + +29 + `__©Œibu‹__ +(( + `__®igÃd__ +( +SMP_CACHE_BYTES +), \ + +30 + `__£ùiÚ__ +(".d©a.ÿch–še_®igÃd"))) + + ) + +33 #iâdeà +__ÿch–še_®igÃd_š_smp + + +34 #ifdeà +CONFIG_SMP + + +35  + #__ÿch–še_®igÃd_š_smp + +__ÿch–še_®igÃd + + + ) + +37  + #__ÿch–še_®igÃd_š_smp + + + ) + +41 #ià! +defšed +( +____ÿch–še_max®igÃd_š_smp +) + +42 #ià +defšed +( +CONFIG_SMP +) + +43  + #____ÿch–še_max®igÃd_š_smp + \ + +44 + `__©Œibu‹__ +(( + `__®igÃd__ +(1 << ( +L1_CACHE_SHIFT_MAX +)))) + + ) + +46  + #____ÿch–še_max®igÃd_š_smp + + + ) + + @/usr/include/linux/config.h + + @/usr/include/linux/efs_fs_i.h + +9 #iâdef +__EFS_FS_I_H__ + + +10  + #__EFS_FS_I_H__ + + + ) + +12  +št32_t + + tefs_block_t +; + +13  +ušt32_t + + tefs_šo_t +; + +15  + #EFS_DIRECTEXTENTS + 12 + + ) + +20  + uex‹Á_u + { + +21  + m¿w +[8]; + +22  + sex‹Á_s + { + +23  + mex_magic +:8; + +24  + mex_bn +:24; + +25  + mex_Ëngth +:8; + +26  + mex_off£t +:24; + +27 } + mcooked +; + +28 } + tefs_ex‹Á +; + +30  + sedevs + { + +31 +__be16 + + modev +; + +32 +__be32 + + mndev +; + +33 } + tefs_devs +; + +39  + sefs_dšode + { + +40 +__be16 + + mdi_mode +; + +41 +__be16 + + mdi_ƚk +; + +42 +__be16 + + mdi_uid +; + +43 +__be16 + + mdi_gid +; + +44 +__be32 + + mdi_size +; + +45 +__be32 + + mdi_©ime +; + +46 +__be32 + + mdi_mtime +; + +47 +__be32 + + mdi_ùime +; + +48 +__be32 + + mdi_g’ +; + +49 +__be16 + + mdi_numex‹Ás +; + +50 +u_ch¬ + + mdi_v”siÚ +; + +51 +u_ch¬ + + mdi_¥¬e +; + +52  + udi_addr + { + +53 +efs_ex‹Á + + mdi_ex‹Ás +[ +EFS_DIRECTEXTENTS +]; + +54 +efs_devs + + mdi_dev +; + +55 } + mdi_u +; + + @/usr/include/linux/efs_fs_sb.h + +9 #iâdeà +__EFS_FS_SB_H__ + + +10  + #__EFS_FS_SB_H__ + + + ) + +12  + ~ + +15  + #EFS_SUPER_MAGIC + 0x414A53 + + ) + +18  + #EFS_MAGIC + 0x072959 + + ) + +19  + #EFS_NEWMAGIC + 0x07295a + + ) + +21  + #IS_EFS_MAGIC +( +x +è((x =ð +EFS_MAGIC +è|| (x =ð +EFS_NEWMAGIC +)) + + ) + +23  + #EFS_SUPER + 1 + + ) + +24  + #EFS_ROOTINODE + 2 + + ) + +27  + sefs_su³r + { + +28 +__be32 + + mfs_size +; + +29 +__be32 + + mfs_fœ¡cg +; + +30 +__be32 + + mfs_cgfsize +; + +31 +__be16 + + mfs_cgisize +; + +32 +__be16 + + mfs_£ùÜs +; + +33 +__be16 + + mfs_h—ds +; + +34 +__be16 + + mfs_ncg +; + +35 +__be16 + + mfs_dœty +; + +36 +__be32 + + mfs_time +; + +37 +__be32 + + mfs_magic +; + +38  + mfs_âame +[6]; + +39  + mfs_åack +[6]; + +40 +__be32 + + mfs_bmsize +; + +41 +__be32 + + mfs_tä“ +; + +42 +__be32 + + mfs_tšode +; + +43 +__be32 + + mfs_bmblock +; + +44 +__be32 + + mfs_»¶sb +; + +45 +__be32 + + mfs_Ï¡ŸÎoc +; + +46  + mfs_¥¬e +[20]; + +47 +__be32 + + mfs_checksum +; + +51  + sefs_sb_šfo + { + +52 +__u32 + + mfs_magic +; + +53 +__u32 + + mfs_¡¬t +; + +54 +__u32 + + mfœ¡_block +; + +55 +__u32 + + mtÙ®_blocks +; + +56 +__u32 + + mgroup_size +; + +57 +__u32 + + md©a_ä“ +; + +58 +__u32 + + mšode_ä“ +; + +59 +__u16 + + mšode_blocks +; + +60 +__u16 + + mtÙ®_groups +; + + @/usr/include/linux/fcntl.h + +1 #iâdeà +_LINUX_FCNTL_H + + +2  + #_LINUX_FCNTL_H + + + ) + +4  + ~ + +6  + #F_SETLEASE + ( +F_LINUX_SPECIFIC_BASE ++0) + + ) + +7  + #F_GETLEASE + ( +F_LINUX_SPECIFIC_BASE ++1) + + ) + +13  + #F_NOTIFY + ( +F_LINUX_SPECIFIC_BASE ++2) + + ) + +18  + #DN_ACCESS + 0x00000001 + + ) + +19  + #DN_MODIFY + 0x00000002 + + ) + +20  + #DN_CREATE + 0x00000004 + + ) + +21  + #DN_DELETE + 0x00000008 + + ) + +22  + #DN_RENAME + 0x00000010 + + ) + +23  + #DN_ATTRIB + 0x00000020 + + ) + +24  + #DN_MULTISHOT + 0x80000000 + + ) + + @/usr/include/linux/ioctl.h + +1 #iâdeà +_LINUX_IOCTL_H + + +2  + #_LINUX_IOCTL_H + + + ) + +4  + ~ + + @/usr/include/linux/iso_fs_i.h + +1 #iâdeà +_ISO_FS_I + + +2  + #_ISO_FS_I + + + ) + +4  + ~ + +6 + eisofs_fže_fÜm© + { + +7 + misofs_fže_nÜm® + = 0, + +8 + misofs_fže_¥¬£ + = 1, + +9 + misofs_fže_com´es£d + = 2 + + @/usr/include/linux/iso_fs_sb.h + +1 #iâdeà +_ISOFS_FS_SB + + +2  + #_ISOFS_FS_SB + + + ) + +7  + sisofs_sb_šfo + { + +8  + ms_nšodes +; + +9  + ms_nzÚes +; + +10  + ms_fœ¡d©azÚe +; + +11  + ms_log_zÚe_size +; + +12  + ms_max_size +; + +14  + ms_high_s›¼a +; + +15  + ms_m­pšg +; + +16  + ms_rock_off£t +; + +17  + ms_rock +; + +18  + ms_jޛt_Ëv– +; + +19  + ms_utf8 +; + +20  + ms_üuá +; + +23  + ms_unhide +; + +24  + ms_nosuid +; + +25  + ms_nodev +; + +26  + ms_nocom´ess +; + +28 +mode_t + + ms_mode +; + +29 +gid_t + + ms_gid +; + +30 +uid_t + + ms_uid +; + +31  +Æs_bË + * + ms_Æs_ioch¬£t +; + + @/usr/include/linux/kdev_t.h + +1 #iâdeà +_LINUX_KDEV_T_H + + +2  + #_LINUX_KDEV_T_H + + + ) + +8  + #MAJOR +( +dev +è((dev)>>8) + + ) + +9  + #MINOR +( +dev +è((devè& 0xff) + + ) + +10  + #MKDEV +( +ma +, +mi +è((ma)<<8 | (mi)) + + ) + + @/usr/include/linux/limits.h + +1 #iâdeà +_LINUX_LIMITS_H + + +2  + #_LINUX_LIMITS_H + + + ) + +4  + #NR_OPEN + 1024 + + ) + +6  + #NGROUPS_MAX + 65536 + + ) + +7  + #ARG_MAX + 131072 + + ) + +8  + #CHILD_MAX + 999 + + ) + +9  + #OPEN_MAX + 256 + + ) + +10  + #LINK_MAX + 127 + + ) + +11  + #MAX_CANON + 255 + + ) + +12  + #MAX_INPUT + 255 + + ) + +13  + #NAME_MAX + 255 + + ) + +14  + #PATH_MAX + 4096 + + ) + +15  + #PIPE_BUF + 4096 + + ) + +16  + #XATTR_NAME_MAX + 255 + + ) + +17  + #XATTR_SIZE_MAX + 65536 + + ) + +18  + #XATTR_LIST_MAX + 65536 + + ) + +20  + #RTSIG_MAX + 32 + + ) + + @/usr/include/linux/linkage.h + +1 #iâdeà +_LINUX_LINKAGE_H + + +2  + #_LINUX_LINKAGE_H + + + ) + +4  + ~ + +6 #ifdeà +__ýlu¥lus + + +7  + #CPP_ASMLINKAGE + "C" + + ) + +9  + #CPP_ASMLINKAGE + + + ) + +12 #iâdeà +asmlškage + + +13  + #asmlškage + +CPP_ASMLINKAGE + + + ) + +16 #iâdeà +´ev’t_ž_ÿÎ + + +17  + #´ev’t_ž_ÿÎ +( +»t +èdØ{ } 0) + + ) + +20 #iâdeà +__ALIGN + + +21  + #__ALIGN + . +®ign + 4,0x90 + + ) + +22  + #__ALIGN_STR + ".®igÀ4,0x90" + + ) + +25 #ifdeà +__ASSEMBLY__ + + +27  + #ALIGN + +__ALIGN + + + ) + +28  + #ALIGN_STR + +__ALIGN_STR + + + ) + +30  + #ENTRY +( +Çme +) \ + +31 . +globl + +Çme +; \ + +32 +ALIGN +; \ + +33 +Çme +: + + ) + +37  + #NORET_TYPE + + + ) + +38  + #ATTRIB_NORET + + `__©Œibu‹__ +(( +nܑuº +)) + + ) + +39  + #NORET_AND + +nܑuº +, + + ) + +41 #iâdeà +FASTCALL + + +42  + #FASTCALL +( +x +è + ) +x + +43  + #ç¡ÿÎ + + + ) + + @/usr/include/linux/list.h + +1  + ~ + + @/usr/include/linux/mount.h + +1  + ~ + + @/usr/include/linux/net.h + +18 #iâdeà +_LINUX_NET_H + + +19  + #_LINUX_NET_H + + + ) + +21  + #NPROTO + 32 + + ) + +23  + #SYS_SOCKET + 1 + + ) + +24  + #SYS_BIND + 2 + + ) + +25  + #SYS_CONNECT + 3 + + ) + +26  + #SYS_LISTEN + 4 + + ) + +27  + #SYS_ACCEPT + 5 + + ) + +28  + #SYS_GETSOCKNAME + 6 + + ) + +29  + #SYS_GETPEERNAME + 7 + + ) + +30  + #SYS_SOCKETPAIR + 8 + + ) + +31  + #SYS_SEND + 9 + + ) + +32  + #SYS_RECV + 10 + + ) + +33  + #SYS_SENDTO + 11 + + ) + +34  + #SYS_RECVFROM + 12 + + ) + +35  + #SYS_SHUTDOWN + 13 + + ) + +36  + #SYS_SETSOCKOPT + 14 + + ) + +37  + #SYS_GETSOCKOPT + 15 + + ) + +38  + #SYS_SENDMSG + 16 + + ) + +39  + #SYS_RECVMSG + 17 + + ) + +42 + mSS_FREE + = 0, + +43 + mSS_UNCONNECTED +, + +44 + mSS_CONNECTING +, + +45 + mSS_CONNECTED +, + +46 + mSS_DISCONNECTING + + +47 } + tsock‘_¡©e +; + +49  + #__SO_ACCEPTCON + (1 << 16è + + ) + + @/usr/include/linux/nfs_fs_i.h + +1 #iâdeà +_NFS_FS_I + + +2  + #_NFS_FS_I + + + ) + +4  + ~ + +5  + ~ + +7  + gÆm_lockowÃr +; + +12  + snfs_lock_šfo + { + +13 +__u32 + + m¡©e +; + +14 +__u32 + + mæags +; + +15  +Æm_lockowÃr + * + mowÃr +; + +21  + #NFS_LCK_GRANTED + 0x0001 + + ) + +22  + #NFS_LCK_RECLAIM + 0x0002 + + ) + + @/usr/include/linux/nfs_fs_sb.h + +1 #iâdeà +_NFS_FS_SB + + +2  + #_NFS_FS_SB + + + ) + +4  + ~ + +6  + ~ + +11  + snfs_£rv” + { + +12  +½c_þÁ + * + mþ›Á +; + +13  +½c_þÁ + * + mþ›Á_sys +; + +14  +nfs_½c_Ýs + * + m½c_Ýs +; + +15  +backšg_dev_šfo + + mbackšg_dev_šfo +; + +16  + mæags +; + +17  + mÿps +; + +18  + mrsize +; + +19  + m½ages +; + +20  + mwsize +; + +21  + mw·ges +; + +22  + mwtmuÉ +; + +23  + mdtsize +; + +24  + mbsize +; + +25  + maüegmš +; + +26  + maüegmax +; + +27  + macdœmš +; + +28  + macdœmax +; + +29  + mÇm–’ +; + +30 * + mho¡Çme +; + +31  +nfs_fh + + mfh +; + +32  +sockaddr_š + + maddr +; + +33 #ifdeà +CONFIG_NFS_V4 + + +37  + m_addr +[16]; + +38 * + mmÁ_·th +; + +39  +nfs4_þ›Á + * + mnfs4_¡©e +; + +40  +li¡_h—d + + mnfs4_siblšgs +; + +43 +__u32 + + m©Œ_b™mask +[2]; + +46 +__u32 + + maþ_b™mask +; + +53  + #NFS_CAP_READDIRPLUS + (1U << 0) + + ) + +54  + #NFS_CAP_HARDLINKS + (1U << 1) + + ) + +55  + #NFS_CAP_SYMLINKS + (1U << 2) + + ) + +56  + #NFS_CAP_ACLS + (1U << 3) + + ) + + @/usr/include/linux/pipe_fs_i.h + +1 #iâdeà +_LINUX_PIPE_FS_I_H + + +2  + #_LINUX_PIPE_FS_I_H + + + ) + +4  + #PIPEFS_MAGIC + 0x50495045 + + ) + +6  + #PIPE_BUFFERS + (16) + + ) + +8  + spe_bufãr + { + +9  +·ge + * + m·ge +; + +10  + moff£t +, + mËn +; + +11  +pe_buf_ݔ©iÚs + * + mÝs +; + +14  + spe_buf_ݔ©iÚs + { + +15  + mÿn_m”ge +; + +16 * (* + mm­ +)( + mfže + *,  + mpe_šode_šfo + *,  + mpe_bufãr + *); + +17 (* + munm­ +)( + mpe_šode_šfo + *,  + mpe_bufãr + *); + +18 (* + m»Ëa£ +)( + mpe_šode_šfo + *,  + mpe_bufãr + *); + +21  + spe_šode_šfo + { + +22 +wa™_queue_h—d_t + + mwa™ +; + +23  + mÄbufs +, + mcurbuf +; + +24  +pe_bufãr + + mbufs +[ +PIPE_BUFFERS +]; + +25  +·ge + * + mtmp_·ge +; + +26  + m¡¬t +; + +27  + m»ad”s +; + +28  + mwr™”s +; + +29  + mwa™šg_wr™”s +; + +30  + mr_couÁ” +; + +31  + mw_couÁ” +; + +32  +çsync_¡ruù + * + mçsync_»ad”s +; + +33  +çsync_¡ruù + * + mçsync_wr™”s +; + +38  + #PIPE_SIZE + +PAGE_SIZE + + + ) + +40  + #PIPE_SEM +( +šode +è(&(šode). +i_£m +) + + ) + +41  + #PIPE_WAIT +( +šode +è(&(šode). +i_pe +-> +wa™ +) + + ) + +42  + #PIPE_BASE +( +šode +è((šode). +i_pe +-> +ba£ +) + + ) + +43  + #PIPE_START +( +šode +è((šode). +i_pe +-> +¡¬t +) + + ) + +44  + #PIPE_LEN +( +šode +è((šode). +i_pe +-> +Ën +) + + ) + +45  + #PIPE_READERS +( +šode +è((šode). +i_pe +-> +»ad”s +) + + ) + +46  + #PIPE_WRITERS +( +šode +è((šode). +i_pe +-> +wr™”s +) + + ) + +47  + #PIPE_WAITING_WRITERS +( +šode +è((šode). +i_pe +-> +wa™šg_wr™”s +) + + ) + +48  + #PIPE_RCOUNTER +( +šode +è((šode). +i_pe +-> +r_couÁ” +) + + ) + +49  + #PIPE_WCOUNTER +( +šode +è((šode). +i_pe +-> +w_couÁ” +) + + ) + +50  + #PIPE_FASYNC_READERS +( +šode +è(&((šode). +i_pe +-> +çsync_»ad”s +)) + + ) + +51  + #PIPE_FASYNC_WRITERS +( +šode +è(&((šode). +i_pe +-> +çsync_wr™”s +)) + + ) + + @/usr/include/linux/quota.h + +34 #iâdeà +_LINUX_QUOTA_ + + +35  + #_LINUX_QUOTA_ + + + ) + +37  + ~ + +38  + ~ + +40  + #__DQUOT_VERSION__ + "dquÙ_6.5.1" + + ) + +41  + #__DQUOT_NUM_VERSION__ + 6*10000+5*100+1 + + ) + +43  +__k”Ãl_uid32_t + + tqid_t +; + +44  +__u64 + + tqsize_t +; + +47  + #QUOTABLOCK_BITS + 10 + + ) + +48  + #QUOTABLOCK_SIZE + (1 << +QUOTABLOCK_BITS +) + + ) + +51  + #qb2kb +( +x +è((xè<< ( +QUOTABLOCK_BITS +-10)) + + ) + +52  + #kb2qb +( +x +è((xè>> ( +QUOTABLOCK_BITS +-10)) + + ) + +53  + #toqb +( +x +è(((xè+ +QUOTABLOCK_SIZE + - 1è>> +QUOTABLOCK_BITS +) + + ) + +55  + #MAXQUOTAS + 2 + + ) + +56  + #USRQUOTA + 0 + + ) + +57  + #GRPQUOTA + 1 + + ) + +62  + #INITQFNAMES + { \ + +66 }; + + ) + +74  + #SUBCMDMASK + 0x00ff + + ) + +75  + #SUBCMDSHIFT + 8 + + ) + +76  + #QCMD +( +cmd +, +ty³ +è(((cmdè<< +SUBCMDSHIFT +è| (Ñy³è& +SUBCMDMASK +)) + + ) + +78  + #Q_SYNC + 0x800001 + + ) + +79  + #Q_QUOTAON + 0x800002 + + ) + +80  + #Q_QUOTAOFF + 0x800003 + + ) + +81  + #Q_GETFMT + 0x800004 + + ) + +82  + #Q_GETINFO + 0x800005 + + ) + +83  + #Q_SETINFO + 0x800006 + + ) + +84  + #Q_GETQUOTA + 0x800007 + + ) + +85  + #Q_SETQUOTA + 0x800008 + + ) + +91  + #QIF_BLIMITS + 1 + + ) + +92  + #QIF_SPACE + 2 + + ) + +93  + #QIF_ILIMITS + 4 + + ) + +94  + #QIF_INODES + 8 + + ) + +95  + #QIF_BTIME + 16 + + ) + +96  + #QIF_ITIME + 32 + + ) + +97  + #QIF_LIMITS + ( +QIF_BLIMITS + | +QIF_ILIMITS +) + + ) + +98  + #QIF_USAGE + ( +QIF_SPACE + | +QIF_INODES +) + + ) + +99  + #QIF_TIMES + ( +QIF_BTIME + | +QIF_ITIME +) + + ) + +100  + #QIF_ALL + ( +QIF_LIMITS + | +QIF_USAGE + | +QIF_TIMES +) + + ) + +102  + sif_dqblk + { + +103 +__u64 + + mdqb_bh¬dlim™ +; + +104 +__u64 + + mdqb_bsoálim™ +; + +105 +__u64 + + mdqb_cur¥aû +; + +106 +__u64 + + mdqb_ih¬dlim™ +; + +107 +__u64 + + mdqb_isoálim™ +; + +108 +__u64 + + mdqb_curšodes +; + +109 +__u64 + + mdqb_btime +; + +110 +__u64 + + mdqb_™ime +; + +111 +__u32 + + mdqb_v®id +; + +118  + #IIF_BGRACE + 1 + + ) + +119  + #IIF_IGRACE + 2 + + ) + +120  + #IIF_FLAGS + 4 + + ) + +121  + #IIF_ALL + ( +IIF_BGRACE + | +IIF_IGRACE + | +IIF_FLAGS +) + + ) + +123  + sif_dqšfo + { + +124 +__u64 + + mdqi_bg¿û +; + +125 +__u64 + + mdqi_ig¿û +; + +126 +__u32 + + mdqi_æags +; + +127 +__u32 + + mdqi_v®id +; + + @/usr/include/linux/stat.h + +1 #iâdeà +_LINUX_STAT_H + + +2  + #_LINUX_STAT_H + + + ) + +4 #ià! +defšed +( +__GLIBC__ +) + +6  + #S_IFMT + 00170000 + + ) + +7  + #S_IFSOCK + 0140000 + + ) + +8  + #S_IFLNK + 0120000 + + ) + +9  + #S_IFREG + 0100000 + + ) + +10  + #S_IFBLK + 0060000 + + ) + +11  + #S_IFDIR + 0040000 + + ) + +12  + #S_IFCHR + 0020000 + + ) + +13  + #S_IFIFO + 0010000 + + ) + +14  + #S_ISUID + 0004000 + + ) + +15  + #S_ISGID + 0002000 + + ) + +16  + #S_ISVTX + 0001000 + + ) + +18  + #S_ISLNK +( +m +è(((mè& +S_IFMT +è=ð +S_IFLNK +) + + ) + +19  + #S_ISREG +( +m +è(((mè& +S_IFMT +è=ð +S_IFREG +) + + ) + +20  + #S_ISDIR +( +m +è(((mè& +S_IFMT +è=ð +S_IFDIR +) + + ) + +21  + #S_ISCHR +( +m +è(((mè& +S_IFMT +è=ð +S_IFCHR +) + + ) + +22  + #S_ISBLK +( +m +è(((mè& +S_IFMT +è=ð +S_IFBLK +) + + ) + +23  + #S_ISFIFO +( +m +è(((mè& +S_IFMT +è=ð +S_IFIFO +) + + ) + +24  + #S_ISSOCK +( +m +è(((mè& +S_IFMT +è=ð +S_IFSOCK +) + + ) + +26  + #S_IRWXU + 00700 + + ) + +27  + #S_IRUSR + 00400 + + ) + +28  + #S_IWUSR + 00200 + + ) + +29  + #S_IXUSR + 00100 + + ) + +31  + #S_IRWXG + 00070 + + ) + +32  + #S_IRGRP + 00040 + + ) + +33  + #S_IWGRP + 00020 + + ) + +34  + #S_IXGRP + 00010 + + ) + +36  + #S_IRWXO + 00007 + + ) + +37  + #S_IROTH + 00004 + + ) + +38  + #S_IWOTH + 00002 + + ) + +39  + #S_IXOTH + 00001 + + ) + + @/usr/include/linux/stddef.h + +1 #iâdeà +_LINUX_STDDEF_H + + +2  + #_LINUX_STDDEF_H + + + ) + +4 #undeà +NULL + + +5 #ià +defšed +( +__ýlu¥lus +) + +6  + #NULL + 0 + + ) + +8  + #NULL + ((*)0) + + ) + +11 #undeà +off£tof + + +12 #ifdeà +__compž”_off£tof + + +13  + #off£tof +( +TYPE +, +MEMBER +è + `__compž”_off£tof +(TYPE,MEMBER) + + ) + +15  + #off£tof +( +TYPE +, +MEMBER +è(( +size_t +è&((TYPE *)0)->MEMBER) + + ) + + @/usr/include/linux/types.h + +1 #iâdeà +_LINUX_TYPES_H + + +2  + #_LINUX_TYPES_H + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +8 #iâdeà +__KERNEL_STRICT_NAMES + + +10  +__u32 + + t__k”Ãl_dev_t +; + +12 #ià +defšed + +WANT_KERNEL_TYPES + || !defšed( +__GLIBC__ +) + +13  +__k”Ãl_fd_£t + + tfd_£t +; + +14  +__k”Ãl_dev_t + + tdev_t +; + +15  +__k”Ãl_šo_t + + tšo_t +; + +16  +__k”Ãl_mode_t + + tmode_t +; + +17  +__k”Ãl_ƚk_t + + tƚk_t +; + +18  +__k”Ãl_off_t + + toff_t +; + +19  +__k”Ãl_pid_t + + tpid_t +; + +20  +__k”Ãl_daddr_t + + tdaddr_t +; + +21  +__k”Ãl_key_t + + tkey_t +; + +22  +__k”Ãl_su£cÚds_t + + tsu£cÚds_t +; + +23  +__k”Ãl_tim”_t + + ttim”_t +; + +24  +__k”Ãl_þockid_t + + tþockid_t +; + +25  +__k”Ãl_mqd_t + + tmqd_t +; + +27  +__k”Ãl_uid_t + + tuid_t +; + +28  +__k”Ãl_gid_t + + tgid_t +; + +30 #ià( +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +)è|| ( +__STDC_VERSION__ + >= 199901L) + +31  +__k”Ãl_loff_t + + tloff_t +; + +38 #iâdeà +_SIZE_T + + +39  + #_SIZE_T + + + ) + +40  +__k”Ãl_size_t + + tsize_t +; + +43 #iâdeà +_SSIZE_T + + +44  + #_SSIZE_T + + + ) + +45  +__k”Ãl_ssize_t + + tssize_t +; + +48 #iâdeà +_PTRDIFF_T + + +49  + #_PTRDIFF_T + + + ) + +50  +__k”Ãl_±rdiff_t + + t±rdiff_t +; + +53 #iâdeà +_TIME_T + + +54  + #_TIME_T + + + ) + +55  +__k”Ãl_time_t + + ttime_t +; + +58 #iâdeà +_CLOCK_T + + +59  + #_CLOCK_T + + + ) + +60  +__k”Ãl_þock_t + + tþock_t +; + +63 #iâdeà +_CADDR_T + + +64  + #_CADDR_T + + + ) + +65  +__k”Ãl_ÿddr_t + + tÿddr_t +; + +69  + tu_ch¬ +; + +70  + tu_shÜt +; + +71  + tu_št +; + +72  + tu_lÚg +; + +75  + tunch¬ +; + +76  + tushÜt +; + +77  + tušt +; + +78  + tulÚg +; + +80 #iâdeà +__BIT_TYPES_DEFINED__ + + +81  + #__BIT_TYPES_DEFINED__ + + + ) + +83  +__u8 + + tu_št8_t +; + +84  +__s8 + + tšt8_t +; + +85  +__u16 + + tu_št16_t +; + +86  +__s16 + + tšt16_t +; + +87  +__u32 + + tu_št32_t +; + +88  +__s32 + + tšt32_t +; + +92  +__u8 + + tušt8_t +; + +93  +__u16 + + tušt16_t +; + +94  +__u32 + + tušt32_t +; + +96 #ià( +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +)è|| ( +__STDC_VERSION__ + >= 199901L) + +97  +__u64 + + tušt64_t +; + +98  +__u64 + + tu_št64_t +; + +99  +__s64 + + tšt64_t +; + +107 #iâdeà +HAVE_SECTOR_T + + +108  + t£ùÜ_t +; + +115 #iâdeà +pgoff_t + + +116  + #pgoff_t +  + + ) + +121  + tunch¬ +; + +122 #iâdeà +HAVE_SECTOR_T + + +123  + t£ùÜ_t +; + +125 #iâdeà +pgoff_t + + +126  + #pgoff_t +  + + ) + +133  +__u16 + + t__Ë16 +; + +134  +__u16 + + t__be16 +; + +135  +__u32 + + t__Ë32 +; + +136  +__u32 + + t__be32 +; + +138 #ià +defšed +( +__GNUC__ +) + +139 #ià! +defšed +( +__STRICT_ANSI__ +è|| ( +__STDC_VERSION__ + >ð199901Lè|| defšed( +__LLH_TYPE_LONG_IS_64BIT__ +) + +140  +__u64 + + t__Ë64 +; + +141  +__u64 + + t__be64 +; + +153  + su¡© + { + +154 +__k”Ãl_daddr_t + + mf_tä“ +; + +155 +__k”Ãl_šo_t + + mf_tšode +; + +156  + mf_âame +[6]; + +157  + mf_åack +[6]; + + @/usr/include/linux/udf_fs_i.h + +18 #iâdeà +_UDF_FS_I_H + + +19  + #_UDF_FS_I_H + 1 + + ) + +24  + #UDF_GETEASIZE + + `_IOR +('l', 0x40, ) + + ) + +25  + #UDF_GETEABLOCK + + `_IOR +('l', 0x41, *) + + ) + +26  + #UDF_GETVOLIDENT + + `_IOR +('l', 0x42, *) + + ) + +27  + #UDF_RELOCATE_BLOCKS + + `_IOWR +('l', 0x43, ) + + ) + + @/usr/include/linux/udf_fs_sb.h + +18 #iâdeà +_UDF_FS_SB_H + + +19  + #_UDF_FS_SB_H + 1 + + ) + +21  + ~ + +23  + ~ + +25 #´agm¨ +·ck +(1) + +27  + #UDF_MAX_BLOCK_LOADED + 8 + + ) + +29  + #UDF_TYPE1_MAP15 + 0x1511U + + ) + +30  + #UDF_VIRTUAL_MAP15 + 0x1512U + + ) + +31  + #UDF_VIRTUAL_MAP20 + 0x2012U + + ) + +32  + #UDF_SPARABLE_MAP15 + 0x1522U + + ) + +35  + sudf_vœtu®_d©a + + +37 +__u32 + + ms_num_’Œ›s +; + +38 +__u16 + + ms_¡¬t_off£t +; + +43 #´agm¨ +·ck +() + + @/usr/include/linux/wait.h + +1 #iâdeà +_LINUX_WAIT_H + + +2  + #_LINUX_WAIT_H + + + ) + +4 #ià +defšed +( +__GLIBC__ +) + +6 #ià +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +) + +9  + ~ + +13  + #WNOHANG + 0x00000001 + + ) + +14  + #WUNTRACED + 0x00000002 + + ) + +15  + #WSTOPPED + +WUNTRACED + + + ) + +16  + #WEXITED + 0x00000004 + + ) + +17  + #WCONTINUED + 0x00000008 + + ) + +18  + #WNOWAIT + 0x01000000 + + ) + +20  + #__WNOTHREAD + 0x20000000 + + ) + +21  + #__WALL + 0x40000000 + + ) + +22  + #__WCLONE + 0x80000000 + + ) + +25  + #P_ALL + 0 + + ) + +26  + #P_PID + 1 + + ) + +27  + #P_PGID + 2 + + ) + + @/usr/include/setjmp.h + +23 #iâdef +_SETJMP_H + + +24  + #_SETJMP_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +28 + g__BEGIN_DECLS + + +30  + ~ + +31  + ~ + +33 +__BEGIN_NAMESPACE_STD + + +36  + s__jmp_buf_g + + +42 +__jmp_buf + + m__jmpbuf +; + +43  + m__mask_was_§ved +; + +44 +__sig£t_t + + m__§ved_mask +; + +45 } + tjmp_buf +[1]; + +50  + $£tjmp + ( +jmp_buf + +__’v +è +__THROW +; + +52 +__END_NAMESPACE_STD + + +53 + $__USING_NAMESPACE_STD +( +__jmp_buf_g +) + +58  + `__sig£tjmp + ( +__jmp_buf_g + +__’v +[1],  +__§vemask +è +__THROW +; + +60 #iâdef +__FAVOR_BSD + + +63  + `_£tjmp + ( +__jmp_buf_g + +__’v +[1]è +__THROW +; + +67  + #£tjmp +( +’v +è + `_£tjmp + (’v) + + ) + +72  + #£tjmp +( +’v +è + `£tjmp + (’v) + + ) + +76 +__BEGIN_NAMESPACE_STD + + +80  + `lÚgjmp + ( +__jmp_buf_g + +__’v +[1],  +__v® +) + +81 +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +83 +__END_NAMESPACE_STD + + +85 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN + + +89  + `_lÚgjmp + ( +__jmp_buf_g + +__’v +[1],  +__v® +) + +90 +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +94 #ifdef +__USE_POSIX + + +98  +__jmp_buf_g + + tsigjmp_buf +[1]; + +102  + #sig£tjmp +( +’v +, +§vemask +è + `__sig£tjmp + (’v, savemask) + + ) + +108  + $siglÚgjmp + ( +sigjmp_buf + +__’v +,  +__v® +) + +109 +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +112 +__END_DECLS + + + @/usr/include/stdint.h + +23 #iâdeà +_STDINT_H + + +24  + #_STDINT_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +27  + ~ + +28  + ~ + +35 #iâdeà +__št8_t_defšed + + +36  + #__št8_t_defšed + + + ) + +37 sigÃd  + tšt8_t +; + +38  + tšt16_t +; + +39  + tšt32_t +; + +40 #ià +__WORDSIZE + == 64 + +41  + tšt64_t +; + +43 +__ex‹nsiÚ__ + + +44  + tšt64_t +; + +49  + tušt8_t +; + +50  + tušt16_t +; + +51 #iâdeà +__ušt32_t_defšed + + +52  + tušt32_t +; + +53  + #__ušt32_t_defšed + + + ) + +55 #ià +__WORDSIZE + == 64 + +56  + tušt64_t +; + +58 +__ex‹nsiÚ__ + + +59  + tušt64_t +; + +66 sigÃd  + tšt_Ëa¡8_t +; + +67  + tšt_Ëa¡16_t +; + +68  + tšt_Ëa¡32_t +; + +69 #ià +__WORDSIZE + == 64 + +70  + tšt_Ëa¡64_t +; + +72 +__ex‹nsiÚ__ + + +73  + tšt_Ëa¡64_t +; + +77  + tušt_Ëa¡8_t +; + +78  + tušt_Ëa¡16_t +; + +79  + tušt_Ëa¡32_t +; + +80 #ià +__WORDSIZE + == 64 + +81  + tušt_Ëa¡64_t +; + +83 +__ex‹nsiÚ__ + + +84  + tušt_Ëa¡64_t +; + +91 sigÃd  + tšt_ç¡8_t +; + +92 #ià +__WORDSIZE + == 64 + +93  + tšt_ç¡16_t +; + +94  + tšt_ç¡32_t +; + +95  + tšt_ç¡64_t +; + +97  + tšt_ç¡16_t +; + +98  + tšt_ç¡32_t +; + +99 +__ex‹nsiÚ__ + + +100  + tšt_ç¡64_t +; + +104  + tušt_ç¡8_t +; + +105 #ià +__WORDSIZE + == 64 + +106  + tušt_ç¡16_t +; + +107  + tušt_ç¡32_t +; + +108  + tušt_ç¡64_t +; + +110  + tušt_ç¡16_t +; + +111  + tušt_ç¡32_t +; + +112 +__ex‹nsiÚ__ + + +113  + tušt_ç¡64_t +; + +118 #ià +__WORDSIZE + == 64 + +119 #iâdeà +__šŒ_t_defšed + + +120  + tšŒ_t +; + +121  + #__šŒ_t_defšed + + + ) + +123  + tušŒ_t +; + +125 #iâdeà +__šŒ_t_defšed + + +126  + tšŒ_t +; + +127  + #__šŒ_t_defšed + + + ) + +129  + tušŒ_t +; + +134 #ià +__WORDSIZE + == 64 + +135  + tštmax_t +; + +136  + tuštmax_t +; + +138 +__ex‹nsiÚ__ + + +139  + tštmax_t +; + +140 +__ex‹nsiÚ__ + + +141  + tuštmax_t +; + +147 #ià! +defšed + +__ýlu¥lus + || defšed +__STDC_LIMIT_MACROS + + +149 #ià +__WORDSIZE + == 64 + +150  + #__INT64_C +( +c +èø## +L + + + ) + +151  + #__UINT64_C +( +c +èø## +UL + + + ) + +153  + #__INT64_C +( +c +èø## +LL + + + ) + +154  + #__UINT64_C +( +c +èø## +ULL + + + ) + +160  + #INT8_MIN + (-128) + + ) + +161  + #INT16_MIN + (-32767-1) + + ) + +162  + #INT32_MIN + (-2147483647-1) + + ) + +163  + #INT64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +165  + #INT8_MAX + (127) + + ) + +166  + #INT16_MAX + (32767) + + ) + +167  + #INT32_MAX + (2147483647) + + ) + +168  + #INT64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +171  + #UINT8_MAX + (255) + + ) + +172  + #UINT16_MAX + (65535) + + ) + +173  + #UINT32_MAX + (4294967295U) + + ) + +174  + #UINT64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +178  + #INT_LEAST8_MIN + (-128) + + ) + +179  + #INT_LEAST16_MIN + (-32767-1) + + ) + +180  + #INT_LEAST32_MIN + (-2147483647-1) + + ) + +181  + #INT_LEAST64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +183  + #INT_LEAST8_MAX + (127) + + ) + +184  + #INT_LEAST16_MAX + (32767) + + ) + +185  + #INT_LEAST32_MAX + (2147483647) + + ) + +186  + #INT_LEAST64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +189  + #UINT_LEAST8_MAX + (255) + + ) + +190  + #UINT_LEAST16_MAX + (65535) + + ) + +191  + #UINT_LEAST32_MAX + (4294967295U) + + ) + +192  + #UINT_LEAST64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +196  + #INT_FAST8_MIN + (-128) + + ) + +197 #ià +__WORDSIZE + == 64 + +198  + #INT_FAST16_MIN + (-9223372036854775807L-1) + + ) + +199  + #INT_FAST32_MIN + (-9223372036854775807L-1) + + ) + +201  + #INT_FAST16_MIN + (-2147483647-1) + + ) + +202  + #INT_FAST32_MIN + (-2147483647-1) + + ) + +204  + #INT_FAST64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +206  + #INT_FAST8_MAX + (127) + + ) + +207 #ià +__WORDSIZE + == 64 + +208  + #INT_FAST16_MAX + (9223372036854775807L) + + ) + +209  + #INT_FAST32_MAX + (9223372036854775807L) + + ) + +211  + #INT_FAST16_MAX + (2147483647) + + ) + +212  + #INT_FAST32_MAX + (2147483647) + + ) + +214  + #INT_FAST64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +217  + #UINT_FAST8_MAX + (255) + + ) + +218 #ià +__WORDSIZE + == 64 + +219  + #UINT_FAST16_MAX + (18446744073709551615UL) + + ) + +220  + #UINT_FAST32_MAX + (18446744073709551615UL) + + ) + +222  + #UINT_FAST16_MAX + (4294967295U) + + ) + +223  + #UINT_FAST32_MAX + (4294967295U) + + ) + +225  + #UINT_FAST64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +229 #ià +__WORDSIZE + == 64 + +230  + #INTPTR_MIN + (-9223372036854775807L-1) + + ) + +231  + #INTPTR_MAX + (9223372036854775807L) + + ) + +232  + #UINTPTR_MAX + (18446744073709551615UL) + + ) + +234  + #INTPTR_MIN + (-2147483647-1) + + ) + +235  + #INTPTR_MAX + (2147483647) + + ) + +236  + #UINTPTR_MAX + (4294967295U) + + ) + +241  + #INTMAX_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +243  + #INTMAX_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +246  + #UINTMAX_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +252 #ià +__WORDSIZE + == 64 + +253  + #PTRDIFF_MIN + (-9223372036854775807L-1) + + ) + +254  + #PTRDIFF_MAX + (9223372036854775807L) + + ) + +256  + #PTRDIFF_MIN + (-2147483647-1) + + ) + +257  + #PTRDIFF_MAX + (2147483647) + + ) + +261  + #SIG_ATOMIC_MIN + (-2147483647-1) + + ) + +262  + #SIG_ATOMIC_MAX + (2147483647) + + ) + +265 #ià +__WORDSIZE + == 64 + +266  + #SIZE_MAX + (18446744073709551615UL) + + ) + +268  + #SIZE_MAX + (4294967295U) + + ) + +272 #iâdeà +WCHAR_MIN + + +274  + #WCHAR_MIN + +__WCHAR_MIN + + + ) + +275  + #WCHAR_MAX + +__WCHAR_MAX + + + ) + +279  + #WINT_MIN + (0u) + + ) + +280  + #WINT_MAX + (4294967295u) + + ) + +287 #ià! +defšed + +__ýlu¥lus + || defšed +__STDC_CONSTANT_MACROS + + +290  + #INT8_C +( +c +è + ) +c + +291  + #INT16_C +( +c +è + ) +c + +292  + #INT32_C +( +c +è + ) +c + +293 #ià +__WORDSIZE + == 64 + +294  + #INT64_C +( +c +èø## +L + + + ) + +296  + #INT64_C +( +c +èø## +LL + + + ) + +300  + #UINT8_C +( +c +èø## +U + + + ) + +301  + #UINT16_C +( +c +èø## +U + + + ) + +302  + #UINT32_C +( +c +èø## +U + + + ) + +303 #ià +__WORDSIZE + == 64 + +304  + #UINT64_C +( +c +èø## +UL + + + ) + +306  + #UINT64_C +( +c +èø## +ULL + + + ) + +310 #ià +__WORDSIZE + == 64 + +311  + #INTMAX_C +( +c +èø## +L + + + ) + +312  + #UINTMAX_C +( +c +èø## +UL + + + ) + +314  + #INTMAX_C +( +c +èø## +LL + + + ) + +315  + #UINTMAX_C +( +c +èø## +ULL + + + ) + + @/usr/include/stdio.h + +24 #iâdeà +_STDIO_H + + +26 #ià! +defšed + +__Ãed_FILE + && !defšed +__Ãed___FILE + + +27  + #_STDIO_H + 1 + + ) + +28  + ~<ã©u»s.h +> + +30 + g__BEGIN_DECLS + + +32  + #__Ãed_size_t + + + ) + +33  + #__Ãed_NULL + + + ) + +34  + ~<¡ddef.h +> + +36  + ~ + +37  + #__Ãed_FILE + + + ) + +38  + #__Ãed___FILE + + + ) + +42 #ià! +defšed + +__FILE_defšed + && defšed +__Ãed_FILE + + +44 +__BEGIN_NAMESPACE_STD + + +46  +_IO_FILE + + tFILE +; + +47 + g__END_NAMESPACE_STD + + +48 #ià +defšed + +__USE_LARGEFILE64 + || defšed +__USE_SVID + || defšed +__USE_POSIX + \ + +49 || +defšed + + g__USE_BSD + || defšed + g__USE_ISOC99 + || defšed + g__USE_XOPEN + \ + +50 || +defšed + +__USE_POSIX2 + + +51 + $__USING_NAMESPACE_STD +( +FILE +) + +54  + #__FILE_defšed + 1 + + ) + +56 #undeà +__Ãed_FILE + + +59 #ià! +defšed + +____FILE_defšed + && defšed +__Ãed___FILE + + +62  +_IO_FILE + + t__FILE +; + +64  + #____FILE_defšed + 1 + + ) + +66 #undeà +__Ãed___FILE + + +69 #ifdef +_STDIO_H + + +70  + #_STDIO_USES_IOSTREAM + + + ) + +72  + ~ + +74 #ifdeà +__USE_XOPEN + + +75 #ifdeà +__GNUC__ + + +76 #iâdeà +_VA_LIST_DEFINED + + +77  +_G_va_li¡ + + tva_li¡ +; + +78  + #_VA_LIST_DEFINED + + + ) + +81  + ~<¡d¬g.h +> + +86 +__BEGIN_NAMESPACE_STD + + +87 #iâdeà +__USE_FILE_OFFSET64 + + +88  +_G_åos_t + + tåos_t +; + +90  +_G_åos64_t + + tåos_t +; + +92 +__END_NAMESPACE_STD + + +93 #ifdeà +__USE_LARGEFILE64 + + +94  +_G_åos64_t + + tåos64_t +; + +98  + #_IOFBF + 0 + + ) + +99  + #_IOLBF + 1 + + ) + +100  + #_IONBF + 2 + + ) + +104 #iâdeà +BUFSIZ + + +105  + #BUFSIZ + +_IO_BUFSIZ + + + ) + +111 #iâdeà +EOF + + +112  + #EOF + (-1) + + ) + +118  + #SEEK_SET + 0 + + ) + +119  + #SEEK_CUR + 1 + + ) + +120  + #SEEK_END + 2 + + ) + +123 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN + + +125  + #P_tmpdœ + "/tmp" + + ) + +138  + ~ + +142  +_IO_FILE + * +¡dš +; + +143  +_IO_FILE + * +¡dout +; + +144  +_IO_FILE + * +¡d”r +; + +146  + #¡dš + +¡dš + + + ) + +147  + #¡dout + +¡dout + + + ) + +148  + #¡d”r + +¡d”r + + + ) + +150 +__BEGIN_NAMESPACE_STD + + +152  + $»move + ( +__cÚ¡ + * +__fž’ame +è +__THROW +; + +154  + $»Çme + ( +__cÚ¡ + * +__Þd +, __cÚ¡ * +__Ãw +è +__THROW +; + +155 +__END_NAMESPACE_STD + + +158 +__BEGIN_NAMESPACE_STD + + +163 #iâdeà +__USE_FILE_OFFSET64 + + +164 +FILE + * + `tmpfže + (); + +166 #ifdeà +__REDIRECT + + +167 +FILE + * + `__REDIRECT + ( +tmpfže +, (), +tmpfže64 +); + +169  + #tmpfže + +tmpfže64 + + + ) + +173 #ifdeà +__USE_LARGEFILE64 + + +174 +FILE + * + `tmpfže64 + (); + +178 * + $tm²am + (* +__s +è +__THROW +; + +179 +__END_NAMESPACE_STD + + +181 #ifdeà +__USE_MISC + + +184 * + $tm²am_r + (* +__s +è +__THROW +; + +188 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN + + +196 * + $‹m²am + ( +__cÚ¡ + * +__dœ +, __cÚ¡ * +__pfx +) + +197 +__THROW + +__©Œibu‹_m®loc__ +; + +201 +__BEGIN_NAMESPACE_STD + + +206  + `fþo£ + ( +FILE + * +__¡»am +); + +211  + `fæush + ( +FILE + * +__¡»am +); + +212 +__END_NAMESPACE_STD + + +214 #ifdeà +__USE_MISC + + +221  + `fæush_uÆocked + ( +FILE + * +__¡»am +); + +224 #ifdeà +__USE_GNU + + +231  + `fþo£®l + (); + +235 +__BEGIN_NAMESPACE_STD + + +236 #iâdeà +__USE_FILE_OFFSET64 + + +241 +FILE + * + `fݒ + ( +__cÚ¡ + * +__»¡riù + +__fž’ame +, + +242 +__cÚ¡ + * +__»¡riù + +__modes +); + +247 +FILE + * + `äeݒ + ( +__cÚ¡ + * +__»¡riù + +__fž’ame +, + +248 +__cÚ¡ + * +__»¡riù + +__modes +, + +249 +FILE + * +__»¡riù + +__¡»am +); + +251 #ifdeà +__REDIRECT + + +252 +FILE + * + `__REDIRECT + ( +fݒ +, ( +__cÚ¡ + * +__»¡riù + +__fž’ame +, + +253 +__cÚ¡ + * +__»¡riù + +__modes +), +fݒ64 +); + +254 +FILE + * + `__REDIRECT + ( +äeݒ +, ( +__cÚ¡ + * +__»¡riù + +__fž’ame +, + +255 +__cÚ¡ + * +__»¡riù + +__modes +, + +256 +FILE + * +__»¡riù + +__¡»am +), +äeݒ64 +); + +258  + #fݒ + +fݒ64 + + + ) + +259  + #äeݒ + +äeݒ64 + + + ) + +262 +__END_NAMESPACE_STD + + +263 #ifdeà +__USE_LARGEFILE64 + + +264 +FILE + * + `fݒ64 + ( +__cÚ¡ + * +__»¡riù + +__fž’ame +, + +265 +__cÚ¡ + * +__»¡riù + +__modes +); + +266 +FILE + * + `äeݒ64 + ( +__cÚ¡ + * +__»¡riù + +__fž’ame +, + +267 +__cÚ¡ + * +__»¡riù + +__modes +, + +268 +FILE + * +__»¡riù + +__¡»am +); + +271 #ifdef +__USE_POSIX + + +273 +FILE + * + $fdݒ + ( +__fd +, +__cÚ¡ + * +__modes +è +__THROW +; + +276 #ifdef +__USE_GNU + + +279 +FILE + * + $fݒcook› + (* +__»¡riù + +__magic_cook› +, + +280 +__cÚ¡ + * +__»¡riù + +__modes +, + +281 +_IO_cook›_io_funùiÚs_t + +__io_funcs +è +__THROW +; + +284 +FILE + * + $fmemݒ + (* +__s +, +size_t + +__Ën +, +__cÚ¡ + * +__modes +è +__THROW +; + +289 +FILE + * + $ݒ_mem¡»am + (** +__»¡riù + +__buæoc +, + +290 +size_t + * +__»¡riù + +__siz–oc +è +__THROW +; + +294 +__BEGIN_NAMESPACE_STD + + +297  + $£tbuf + ( +FILE + * +__»¡riù + +__¡»am +, *__»¡riù +__buf +è +__THROW +; + +301  + $£tvbuf + ( +FILE + * +__»¡riù + +__¡»am +, *__»¡riù +__buf +, + +302  +__modes +, +size_t + +__n +è +__THROW +; + +303 +__END_NAMESPACE_STD + + +305 #ifdef +__USE_BSD + + +308  + $£tbufãr + ( +FILE + * +__»¡riù + +__¡»am +, *__»¡riù +__buf +, + +309 +size_t + +__size +è +__THROW +; + +312  + $£Žšebuf + ( +FILE + * +__¡»am +è +__THROW +; + +316 +__BEGIN_NAMESPACE_STD + + +321  + `årštf + ( +FILE + * +__»¡riù + +__¡»am +, + +322 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...); + +327  + `´štf + ( +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...); + +329  + $¥rštf + (* +__»¡riù + +__s +, + +330 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...è +__THROW +; + +336  + `vårštf + ( +FILE + * +__»¡riù + +__s +, +__cÚ¡ + *__»¡riù +__fÜm© +, + +337 +_G_va_li¡ + +__¬g +); + +342  + `v´štf + ( +__cÚ¡ + * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +); + +344  + $v¥rštf + (* +__»¡riù + +__s +, +__cÚ¡ + *__»¡riù +__fÜm© +, + +345 +_G_va_li¡ + +__¬g +è +__THROW +; + +346 +__END_NAMESPACE_STD + + +348 #ià +defšed + +__USE_BSD + || defšed +__USE_ISOC99 + || defšed +__USE_UNIX98 + + +349 +__BEGIN_NAMESPACE_C99 + + +351  + $¢´štf + (* +__»¡riù + +__s +, +size_t + +__maxËn +, + +352 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...) + +353 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 4))); + +355  + $v¢´štf + (* +__»¡riù + +__s +, +size_t + +__maxËn +, + +356 +__cÚ¡ + * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +) + +357 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 0))); + +358 +__END_NAMESPACE_C99 + + +361 #ifdeà +__USE_GNU + + +364  + $va¥rštf + (** +__»¡riù + +__±r +, +__cÚ¡ + *__»¡riù +__f +, + +365 +_G_va_li¡ + +__¬g +) + +366 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 0))); + +367  + $__a¥rštf + (** +__»¡riù + +__±r +, + +368 +__cÚ¡ + * +__»¡riù + +__fmt +, ...) + +369 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 3))); + +370  + $a¥rštf + (** +__»¡riù + +__±r +, + +371 +__cÚ¡ + * +__»¡riù + +__fmt +, ...) + +372 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 3))); + +380  + $vd´štf + ( +__fd +, +__cÚ¡ + * +__»¡riù + +__fmt +, + +381 +_G_va_li¡ + +__¬g +) + +382 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 0))); + +383  + $d´štf + ( +__fd +, +__cÚ¡ + * +__»¡riù + +__fmt +, ...) + +384 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 3))); + +388 +__BEGIN_NAMESPACE_STD + + +393  + `fsÿnf + ( +FILE + * +__»¡riù + +__¡»am +, + +394 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...); + +399  + `sÿnf + ( +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...); + +401  + $ssÿnf + ( +__cÚ¡ + * +__»¡riù + +__s +, + +402 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...è +__THROW +; + +403 +__END_NAMESPACE_STD + + +405 #ifdef +__USE_ISOC99 + + +406 +__BEGIN_NAMESPACE_C99 + + +411  + $vfsÿnf + ( +FILE + * +__»¡riù + +__s +, +__cÚ¡ + *__»¡riù +__fÜm© +, + +412 +_G_va_li¡ + +__¬g +) + +413 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__sÿnf__ +, 2, 0))); + +419  + $vsÿnf + ( +__cÚ¡ + * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +) + +420 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__sÿnf__ +, 1, 0))); + +423  + $vssÿnf + ( +__cÚ¡ + * +__»¡riù + +__s +, + +424 +__cÚ¡ + * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +) + +425 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__sÿnf__ +, 2, 0))); + +426 +__END_NAMESPACE_C99 + + +430 +__BEGIN_NAMESPACE_STD + + +435  + `fg‘c + ( +FILE + * +__¡»am +); + +436  + `g‘c + ( +FILE + * +__¡»am +); + +442  + `g‘ch¬ + (); + +443 +__END_NAMESPACE_STD + + +447  + #g‘c +( +_å +è + `_IO_g‘c + (_å) + + ) + +449 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +454  + `g‘c_uÆocked + ( +FILE + * +__¡»am +); + +455  + `g‘ch¬_uÆocked + (); + +458 #ifdeà +__USE_MISC + + +465  + `fg‘c_uÆocked + ( +FILE + * +__¡»am +); + +469 +__BEGIN_NAMESPACE_STD + + +477  + `åutc + ( +__c +, +FILE + * +__¡»am +); + +478  + `putc + ( +__c +, +FILE + * +__¡»am +); + +484  + `putch¬ + ( +__c +); + +485 +__END_NAMESPACE_STD + + +489  + #putc +( +_ch +, +_å +è + `_IO_putc + (_ch, _å) + + ) + +491 #ifdeà +__USE_MISC + + +498  + `åutc_uÆocked + ( +__c +, +FILE + * +__¡»am +); + +501 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +506  + `putc_uÆocked + ( +__c +, +FILE + * +__¡»am +); + +507  + `putch¬_uÆocked + ( +__c +); + +511 #ià +defšed + +__USE_SVID + || defšed +__USE_MISC + \ + +512 || ( +defšed + +__USE_XOPEN + && !defšed +__USE_XOPEN2K +) + +514  + `g‘w + ( +FILE + * +__¡»am +); + +517  + `putw + ( +__w +, +FILE + * +__¡»am +); + +521 +__BEGIN_NAMESPACE_STD + + +526 * + `fg‘s + (* +__»¡riù + +__s +,  +__n +, +FILE + *__»¡riù +__¡»am +); + +533 * + `g‘s + (* +__s +); + +534 +__END_NAMESPACE_STD + + +536 #ifdeà +__USE_GNU + + +543 * + `fg‘s_uÆocked + (* +__»¡riù + +__s +,  +__n +, + +544 +FILE + * +__»¡riù + +__¡»am +); + +548 #ifdef +__USE_GNU + + +559 +_IO_ssize_t + + `__g‘d–im + (** +__»¡riù + +__lš•Œ +, + +560 +size_t + * +__»¡riù + +__n +,  +__d–im™” +, + +561 +FILE + * +__»¡riù + +__¡»am +); + +562 +_IO_ssize_t + + `g‘d–im + (** +__»¡riù + +__lš•Œ +, + +563 +size_t + * +__»¡riù + +__n +,  +__d–im™” +, + +564 +FILE + * +__»¡riù + +__¡»am +); + +572 +_IO_ssize_t + + `g‘lše + (** +__»¡riù + +__lš•Œ +, + +573 +size_t + * +__»¡riù + +__n +, + +574 +FILE + * +__»¡riù + +__¡»am +); + +578 +__BEGIN_NAMESPACE_STD + + +583  + `åuts + ( +__cÚ¡ + * +__»¡riù + +__s +, +FILE + *__»¡riù +__¡»am +); + +589  + `puts + ( +__cÚ¡ + * +__s +); + +596  + `ung‘c + ( +__c +, +FILE + * +__¡»am +); + +603 +size_t + + `ä—d + (* +__»¡riù + +__±r +, size_ˆ +__size +, + +604 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +); + +609 +size_t + + `fwr™e + ( +__cÚ¡ + * +__»¡riù + +__±r +, size_ˆ +__size +, + +610 +size_t + +__n +, +FILE + * +__»¡riù + +__s +); + +611 +__END_NAMESPACE_STD + + +613 #ifdeà +__USE_GNU + + +620  + `åuts_uÆocked + ( +__cÚ¡ + * +__»¡riù + +__s +, + +621 +FILE + * +__»¡riù + +__¡»am +); + +624 #ifdeà +__USE_MISC + + +631 +size_t + + `ä—d_uÆocked + (* +__»¡riù + +__±r +, size_ˆ +__size +, + +632 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +); + +633 +size_t + + `fwr™e_uÆocked + ( +__cÚ¡ + * +__»¡riù + +__±r +, size_ˆ +__size +, + +634 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +); + +638 +__BEGIN_NAMESPACE_STD + + +643  + `f£ek + ( +FILE + * +__¡»am +,  +__off +,  +__wh’û +); + +648  + `á–l + ( +FILE + * +__¡»am +); + +653  + `»wšd + ( +FILE + * +__¡»am +); + +654 +__END_NAMESPACE_STD + + +661 #ià +defšed + +__USE_LARGEFILE + || defšed +__USE_XOPEN2K + + +662 #iâdeà +__USE_FILE_OFFSET64 + + +667  + `f£eko + ( +FILE + * +__¡»am +, +__off_t + +__off +,  +__wh’û +); + +672 +__off_t + + `á–lo + ( +FILE + * +__¡»am +); + +674 #ifdeà +__REDIRECT + + +675  + `__REDIRECT + ( +f£eko +, + +676 ( +FILE + * +__¡»am +, +__off64_t + +__off +,  +__wh’û +), + +677 +f£eko64 +); + +678 +__off64_t + + `__REDIRECT + ( +á–lo +, ( +FILE + * +__¡»am +), +á–lo64 +); + +680  + #f£eko + +f£eko64 + + + ) + +681  + #á–lo + +á–lo64 + + + ) + +686 +__BEGIN_NAMESPACE_STD + + +687 #iâdeà +__USE_FILE_OFFSET64 + + +692  + `fg‘pos + ( +FILE + * +__»¡riù + +__¡»am +, +åos_t + *__»¡riù +__pos +); + +697  + `f£os + ( +FILE + * +__¡»am +, +__cÚ¡ + +åos_t + * +__pos +); + +699 #ifdeà +__REDIRECT + + +700  + `__REDIRECT + ( +fg‘pos +, ( +FILE + * +__»¡riù + +__¡»am +, + +701 +åos_t + * +__»¡riù + +__pos +), +fg‘pos64 +); + +702  + `__REDIRECT + ( +f£os +, + +703 ( +FILE + * +__¡»am +, +__cÚ¡ + +åos_t + * +__pos +), +f£os64 +); + +705  + #fg‘pos + +fg‘pos64 + + + ) + +706  + #f£os + +f£os64 + + + ) + +709 +__END_NAMESPACE_STD + + +711 #ifdeà +__USE_LARGEFILE64 + + +712  + `f£eko64 + ( +FILE + * +__¡»am +, +__off64_t + +__off +,  +__wh’û +); + +713 +__off64_t + + `á–lo64 + ( +FILE + * +__¡»am +); + +714  + `fg‘pos64 + ( +FILE + * +__»¡riù + +__¡»am +, +åos64_t + *__»¡riù +__pos +); + +715  + `f£os64 + ( +FILE + * +__¡»am +, +__cÚ¡ + +åos64_t + * +__pos +); + +718 +__BEGIN_NAMESPACE_STD + + +720  + $þ—»¼ + ( +FILE + * +__¡»am +è +__THROW +; + +722  + $ãof + ( +FILE + * +__¡»am +è +__THROW +; + +724  + $ã¼Ü + ( +FILE + * +__¡»am +è +__THROW +; + +725 +__END_NAMESPACE_STD + + +727 #ifdeà +__USE_MISC + + +729  + $þ—»¼_uÆocked + ( +FILE + * +__¡»am +è +__THROW +; + +730  + $ãof_uÆocked + ( +FILE + * +__¡»am +è +__THROW +; + +731  + $ã¼Ü_uÆocked + ( +FILE + * +__¡»am +è +__THROW +; + +735 +__BEGIN_NAMESPACE_STD + + +740  + `³¼Ü + ( +__cÚ¡ + * +__s +); + +741 +__END_NAMESPACE_STD + + +747  + ~ + +750 #ifdef +__USE_POSIX + + +752  + $fž’o + ( +FILE + * +__¡»am +è +__THROW +; + +755 #ifdeà +__USE_MISC + + +757  + $fž’o_uÆocked + ( +FILE + * +__¡»am +è +__THROW +; + +761 #ià( +defšed + +__USE_POSIX2 + || defšed +__USE_SVID + || defšed +__USE_BSD + || \ + +762 +defšed + +__USE_MISC +) + +767 +FILE + * + `pݒ + ( +__cÚ¡ + * +__commªd +, __cÚ¡ * +__modes +); + +773  + `pþo£ + ( +FILE + * +__¡»am +); + +777 #ifdef +__USE_POSIX + + +779 * + $ù”mid + (* +__s +è +__THROW +; + +783 #ifdeà +__USE_XOPEN + + +785 * + `cu£rid + (* +__s +); + +789 #ifdef +__USE_GNU + + +790  +ob¡ack +; + +793  + $ob¡ack_´štf + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +794 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...) + +795 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 3))); + +796  + $ob¡ack_v´štf + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +797 +__cÚ¡ + * +__»¡riù + +__fÜm© +, + +798 +_G_va_li¡ + +__¬gs +) + +799 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 0))); + +803 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +807  + $æockfže + ( +FILE + * +__¡»am +è +__THROW +; + +811  + $árylockfže + ( +FILE + * +__¡»am +è +__THROW +; + +814  + $fuÆockfže + ( +FILE + * +__¡»am +è +__THROW +; + +817 #ià +defšed + +__USE_XOPEN + && !defšed +__USE_XOPEN2K + && !defšed +__USE_GNU + + +821  + #__Ãed_g‘Ýt + + + ) + +822  + ~ + +827 #ifdeà +__USE_EXTERN_INLINES + + +828  + ~ + +830 #ià +__USE_FORTIFY_LEVEL + > 0 && ! +defšed + +__ýlu¥lus + + +831  + ~ + +834 +__END_DECLS + + + @/usr/include/stdlib.h + +23 #iâdef +_STDLIB_H + + +25  + ~<ã©u»s.h +> + +28  + #__Ãed_size_t + + + ) + +29 #iâdeà +__Ãed_m®loc_ªd_ÿÎoc + + +30  + #__Ãed_wch¬_t + + + ) + +31  + #__Ãed_NULL + + + ) + +33  + ~<¡ddef.h +> + +35 + g__BEGIN_DECLS + + +37 #iâdeà +__Ãed_m®loc_ªd_ÿÎoc + + +38  + #_STDLIB_H + 1 + + ) + +40 #ià +defšed + +__USE_XOPEN + && !defšed +_SYS_WAIT_H + + +42  + ~ + +43  + ~ + +45 #ifdeà +__USE_BSD + + +50 #ià +defšed + +__GNUC__ + && !defšed +__ýlu¥lus + + +51  + #__WAIT_INT +( +¡©us +) \ + +52 ( + `__ex‹nsiÚ__ + ({ uniÚ { + `__ty³of +( +¡©us +è +__š +;  +__i +; } +__u +; \ + +53 +__u +. +__š + = ( +¡©us +); __u. +__i +; })) + + ) + +55  + #__WAIT_INT +( +¡©us +è(*(*è&(¡©us)) + + ) + +63 #ià! +defšed + +__GNUC__ + || __GNUC__ < 2 || defšed +__ýlu¥lus + + +64  + #__WAIT_STATUS + * + + ) + +65  + #__WAIT_STATUS_DEFN + * + + ) + +70  +wa™ + * + m__u±r +; + +71 * + m__Œ +; + +72 } + t__WAIT_STATUS + + t__©Œibu‹__ + (( + t__Œª¥¬’t_uniÚ__ +)); + +73  + #__WAIT_STATUS_DEFN + * + + ) + +78  + #__WAIT_INT +( +¡©us +è(¡©us) + + ) + +79  + #__WAIT_STATUS + * + + ) + +80  + #__WAIT_STATUS_DEFN + * + + ) + +85  + #WEXITSTATUS +( +¡©us +è + `__WEXITSTATUS +( + `__WAIT_INT +(¡©us)) + + ) + +86  + #WTERMSIG +( +¡©us +è + `__WTERMSIG +( + `__WAIT_INT +(¡©us)) + + ) + +87  + #WSTOPSIG +( +¡©us +è + `__WSTOPSIG +( + `__WAIT_INT +(¡©us)) + + ) + +88  + #WIFEXITED +( +¡©us +è + `__WIFEXITED +( + `__WAIT_INT +(¡©us)) + + ) + +89  + #WIFSIGNALED +( +¡©us +è + `__WIFSIGNALED +( + `__WAIT_INT +(¡©us)) + + ) + +90  + #WIFSTOPPED +( +¡©us +è + `__WIFSTOPPED +( + `__WAIT_INT +(¡©us)) + + ) + +91 #ifdeà +__WIFCONTINUED + + +92  + #WIFCONTINUED +( +¡©us +è + `__WIFCONTINUED +( + `__WAIT_INT +(¡©us)) + + ) + +96 +__BEGIN_NAMESPACE_STD + + +100  + mquÙ +; + +101  + m»m +; + +102 } + tdiv_t +; + +105 #iâdeà +__ldiv_t_defšed + + +108  + mquÙ +; + +109  + m»m +; + +110 } + tldiv_t +; + +111  + #__ldiv_t_defšed + 1 + + ) + +113 + g__END_NAMESPACE_STD + + +115 #ià +defšed + +__USE_ISOC99 + && !defšed +__Îdiv_t_defšed + + +116 +__BEGIN_NAMESPACE_C99 + + +118 +__ex‹nsiÚ__ + struct + +120  + mquÙ +; + +121  + m»m +; + +122 } + tÎdiv_t +; + +123  + #__Îdiv_t_defšed + 1 + + ) + +124 + g__END_NAMESPACE_C99 + + +129  + #RAND_MAX + 2147483647 + + ) + +134  + #EXIT_FAILURE + 1 + + ) + +135  + #EXIT_SUCCESS + 0 + + ) + +139  + #MB_CUR_MAX + ( + `__ùy³_g‘_mb_cur_max + ()) + + ) + +140 +size_t + + $__ùy³_g‘_mb_cur_max + (è +__THROW +; + +143 +__BEGIN_NAMESPACE_STD + + +145  + $©of + ( +__cÚ¡ + * +__Ō +) + +146 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +148  + $©oi + ( +__cÚ¡ + * +__Ō +) + +149 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +151  + $©Þ + ( +__cÚ¡ + * +__Ō +) + +152 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +153 +__END_NAMESPACE_STD + + +155 #ià +defšed + +__USE_ISOC99 + || (defšed +__GLIBC_HAVE_LONG_LONG + && defšed +__USE_MISC +) + +156 +__BEGIN_NAMESPACE_C99 + + +158 +__ex‹nsiÚ__ +  + $©Þl + ( +__cÚ¡ + * +__Ō +) + +159 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +160 +__END_NAMESPACE_C99 + + +163 +__BEGIN_NAMESPACE_STD + + +165  + $¡¹od + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +166 ** +__»¡riù + +__’d±r +è +__THROW + + `__nÚnuÎ + ((1)); + +167 +__END_NAMESPACE_STD + + +169 #ifdef +__USE_ISOC99 + + +170 +__BEGIN_NAMESPACE_C99 + + +172  + $¡¹of + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +173 ** +__»¡riù + +__’d±r +è +__THROW + + `__nÚnuÎ + ((1)); + +175  + $¡¹Þd + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +176 ** +__»¡riù + +__’d±r +) + +177 +__THROW + + `__nÚnuÎ + ((1)); + +178 +__END_NAMESPACE_C99 + + +181 +__BEGIN_NAMESPACE_STD + + +183  + $¡¹Þ + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +184 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +185 +__THROW + + `__nÚnuÎ + ((1)); + +187  + $¡¹oul + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +188 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +189 +__THROW + + `__nÚnuÎ + ((1)); + +190 +__END_NAMESPACE_C99 + + +192 #ià +defšed + +__GLIBC_HAVE_LONG_LONG + && defšed +__USE_BSD + + +194 +__ex‹nsiÚ__ + + +195  + $¡¹oq + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +196 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +197 +__THROW + + `__nÚnuÎ + ((1)); + +199 +__ex‹nsiÚ__ + + +200  + $¡¹ouq + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +201 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +202 +__THROW + + `__nÚnuÎ + ((1)); + +205 #ià +defšed + +__USE_ISOC99 + || (defšed +__GLIBC_HAVE_LONG_LONG + && defšed +__USE_MISC +) + +206 +__BEGIN_NAMESPACE_C99 + + +208 +__ex‹nsiÚ__ + + +209  + $¡¹Þl + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +210 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +211 +__THROW + + `__nÚnuÎ + ((1)); + +213 +__ex‹nsiÚ__ + + +214  + $¡¹ouÎ + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +215 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +216 +__THROW + + `__nÚnuÎ + ((1)); + +217 +__END_NAMESPACE_C99 + + +221 #ifdeà +__USE_GNU + + +235  + ~ + +239  + $¡¹Þ_l + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +240 ** +__»¡riù + +__’d±r +,  +__ba£ +, + +241 +__loÿË_t + +__loc +è +__THROW + + `__nÚnuÎ + ((1, 4)); + +243  + $¡¹oul_l + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +244 ** +__»¡riù + +__’d±r +, + +245  +__ba£ +, +__loÿË_t + +__loc +) + +246 +__THROW + + `__nÚnuÎ + ((1, 4)); + +248 +__ex‹nsiÚ__ + + +249  + $¡¹Þl_l + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +250 ** +__»¡riù + +__’d±r +,  +__ba£ +, + +251 +__loÿË_t + +__loc +) + +252 +__THROW + + `__nÚnuÎ + ((1, 4)); + +254 +__ex‹nsiÚ__ + + +255  + $¡¹ouÎ_l + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +256 ** +__»¡riù + +__’d±r +, + +257  +__ba£ +, +__loÿË_t + +__loc +) + +258 +__THROW + + `__nÚnuÎ + ((1, 4)); + +260  + $¡¹od_l + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +261 ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +262 +__THROW + + `__nÚnuÎ + ((1, 3)); + +264  + $¡¹of_l + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +265 ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +266 +__THROW + + `__nÚnuÎ + ((1, 3)); + +268  + $¡¹Þd_l + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +269 ** +__»¡riù + +__’d±r +, + +270 +__loÿË_t + +__loc +è +__THROW + + `__nÚnuÎ + ((1, 3)); + +277  + $__¡¹od_š‹º® + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +278 ** +__»¡riù + +__’d±r +,  +__group +) + +279 +__THROW + + `__nÚnuÎ + ((1)); + +280  + $__¡¹of_š‹º® + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +281 ** +__»¡riù + +__’d±r +,  +__group +) + +282 +__THROW + + `__nÚnuÎ + ((1)); + +283  + $__¡¹Þd_š‹º® + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +284 ** +__»¡riù + +__’d±r +, + +285  +__group +è +__THROW + + `__nÚnuÎ + ((1)); + +286 #iâdeà +__¡¹Þ_š‹º®_defšed + + +287  + $__¡¹Þ_š‹º® + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +288 ** +__»¡riù + +__’d±r +, + +289  +__ba£ +,  +__group +) + +290 +__THROW + + `__nÚnuÎ + ((1)); + +291  + #__¡¹Þ_š‹º®_defšed + 1 + + ) + +293 #iâdeà +__¡¹oul_š‹º®_defšed + + +294  + $__¡¹oul_š‹º® + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +295 ** +__»¡riù + +__’d±r +, + +296  +__ba£ +,  +__group +) + +297 +__THROW + + `__nÚnuÎ + ((1)); + +298  + #__¡¹oul_š‹º®_defšed + 1 + + ) + +300 #ià +defšed + +__GNUC__ + || defšed +__USE_ISOC99 + + +301 #iâdeà +__¡¹Þl_š‹º®_defšed + + +302 +__ex‹nsiÚ__ + + +303  + $__¡¹Þl_š‹º® + ( +__cÚ¡ + * +__»¡riù + +__Ō +, + +304 ** +__»¡riù + +__’d±r +, + +305  +__ba£ +,  +__group +) + +306 +__THROW + + `__nÚnuÎ + ((1)); + +307  + #__¡¹Þl_š‹º®_defšed + 1 + + ) + +309 #iâdeà +__¡¹ouÎ_š‹º®_defšed + + +310 +__ex‹nsiÚ__ + + +311  + $__¡¹ouÎ_š‹º® + ( +__cÚ¡ + * + +312 +__»¡riù + +__Ō +, + +313 ** +__»¡riù + +__’d±r +, + +314  +__ba£ +,  +__group +) + +315 +__THROW + + `__nÚnuÎ + ((1)); + +316  + #__¡¹ouÎ_š‹º®_defšed + 1 + + ) + +320 #ifdeà +__USE_EXTERN_INLINES + + +323 +__BEGIN_NAMESPACE_STD + + +324 +__šlše +  + +325 + `__NTH + ( + $¡¹od + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +)) + +327  + `__¡¹od_š‹º® + ( +__Ō +, +__’d±r +, 0); + +328 + } +} + +329 +__šlše +  + +330 +__NTH + ( + $¡¹Þ + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +, + +331  +__ba£ +)) + +333  + `__¡¹Þ_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + +334 + } +} + +335 +__šlše +  + +336 +__NTH + ( + $¡¹oul + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +, + +337  +__ba£ +)) + +339  + `__¡¹oul_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + +340 + } +} + +341 +__END_NAMESPACE_STD + + +343 #ifdeà +__USE_ISOC99 + + +344 +__BEGIN_NAMESPACE_C99 + + +345 +__šlše +  + +346 +__NTH + ( + $¡¹of + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +)) + +348  + `__¡¹of_š‹º® + ( +__Ō +, +__’d±r +, 0); + +349 + } +} + +350 +__šlše +  + +351 +__NTH + ( + $¡¹Þd + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +)) + +353  + `__¡¹Þd_š‹º® + ( +__Ō +, +__’d±r +, 0); + +354 + } +} + +355 +__END_NAMESPACE_C99 + + +358 #ifdeà +__USE_BSD + + +359 +__ex‹nsiÚ__ + +__šlše +  + +360 +__NTH + ( + $¡¹oq + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +, + +361  +__ba£ +)) + +363  + `__¡¹Þl_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + +364 + } +} + +365 +__ex‹nsiÚ__ + +__šlše +  + +366 +__NTH + ( + $¡¹ouq + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +, + +367  +__ba£ +)) + +369  + `__¡¹ouÎ_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + +370 + } +} + +373 #ià +defšed + +__USE_MISC + || defšed +__USE_ISOC99 + + +374 +__BEGIN_NAMESPACE_C99 + + +375 +__ex‹nsiÚ__ + +__šlše +  + +376 +__NTH + ( + $¡¹Þl + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +, + +377  +__ba£ +)) + +379  + `__¡¹Þl_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + +380 + } +} + +381 +__ex‹nsiÚ__ + +__šlše +  + +382 +__NTH + ( + $¡¹ouÎ + ( +__cÚ¡ + * +__»¡riù + +__Ō +, **__»¡riù +__’d±r +, + +383  +__ba£ +)) + +385  + `__¡¹ouÎ_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + +386 + } +} + +387 +__END_NAMESPACE_C99 + + +390 +__BEGIN_NAMESPACE_STD + + +391 +__šlše +  + +392 +__NTH + ( + $©of + ( +__cÚ¡ + * +__Ō +)) + +394  + `¡¹od + ( +__Ō +, (**è +NULL +); + +395 + } +} + +396 +__šlše +  + +397 +__NTH + ( + $©oi + ( +__cÚ¡ + * +__Ō +)) + +399  (è + `¡¹Þ + ( +__Ō +, (**è +NULL +, 10); + +400 + } +} + +401 +__šlše +  + +402 +__NTH + ( + $©Þ + ( +__cÚ¡ + * +__Ō +)) + +404  + `¡¹Þ + ( +__Ō +, (**è +NULL +, 10); + +405 + } +} + +406 +__END_NAMESPACE_STD + + +408 #ià +defšed + +__USE_MISC + || defšed +__USE_ISOC99 + + +409 +__BEGIN_NAMESPACE_C99 + + +410 +__ex‹nsiÚ__ + +__šlše +  + +411 +__NTH + ( + $©Þl + ( +__cÚ¡ + * +__Ō +)) + +413  + `¡¹Þl + ( +__Ō +, (**è +NULL +, 10); + +414 + } +} + +415 +__END_NAMESPACE_C99 + + +420 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN_EXTENDED + + +424 * + $l64a + ( +__n +è +__THROW +; + +427  + $a64l + ( +__cÚ¡ + * +__s +) + +428 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +432 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN_EXTENDED + || defšed +__USE_BSD + + +433  + ~ + +440  + $¿ndom + (è +__THROW +; + +443  + $¤ªdom + ( +__£ed +è +__THROW +; + +449 * + $š™¡©e + ( +__£ed +, * +__¡©ebuf +, + +450 +size_t + +__¡©–’ +è +__THROW + + `__nÚnuÎ + ((2)); + +454 * + $£t¡©e + (* +__¡©ebuf +è +__THROW + + `__nÚnuÎ + ((1)); + +457 #ifdeà +__USE_MISC + + +462  + s¿ndom_d©a + + +464 +št32_t + * +åŒ +; + +465 +št32_t + * +½Œ +; + +466 +št32_t + * +¡©e +; + +467  +¿nd_ty³ +; + +468  +¿nd_deg +; + +469  +¿nd_£p +; + +470 +št32_t + * +’d_±r +; + +473  + $¿ndom_r + ( +¿ndom_d©a + * +__»¡riù + +__buf +, + +474 +št32_t + * +__»¡riù + +__»suÉ +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +476  + $¤ªdom_r + ( +__£ed +,  +¿ndom_d©a + * +__buf +) + +477 +__THROW + + `__nÚnuÎ + ((2)); + +479  + $š™¡©e_r + ( +__£ed +, * +__»¡riù + +__¡©ebuf +, + +480 +size_t + +__¡©–’ +, + +481  +¿ndom_d©a + * +__»¡riù + +__buf +) + +482 +__THROW + + `__nÚnuÎ + ((2, 4)); + +484  + $£t¡©e_r + (* +__»¡riù + +__¡©ebuf +, + +485  +¿ndom_d©a + * +__»¡riù + +__buf +) + +486 +__THROW + + `__nÚnuÎ + ((1, 2)); + +491 +__BEGIN_NAMESPACE_STD + + +493  + $¿nd + (è +__THROW +; + +495  + $¤ªd + ( +__£ed +è +__THROW +; + +496 +__END_NAMESPACE_STD + + +498 #ifdeà +__USE_POSIX + + +500  + $¿nd_r + (* +__£ed +è +__THROW +; + +504 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN + + +508  + $d¿nd48 + (è +__THROW +; + +509  + `”ªd48 + ( +__xsubi +[3]è +__THROW + + `__nÚnuÎ + ((1)); + +512  + $̪d48 + (è +__THROW +; + +513  + `Īd48 + ( +__xsubi +[3]) + +514 +__THROW + + `__nÚnuÎ + ((1)); + +517  + $m¿nd48 + (è +__THROW +; + +518  + `j¿nd48 + ( +__xsubi +[3]) + +519 +__THROW + + `__nÚnuÎ + ((1)); + +522  + $¤ªd48 + ( +__£edv® +è +__THROW +; + +523 * + `£ed48 + ( +__£ed16v +[3]) + +524 +__THROW + + `__nÚnuÎ + ((1)); + +525  + `lcÚg48 + ( +__·¿m +[7]è +__THROW + + `__nÚnuÎ + ((1)); + +527 #ifdeà +__USE_MISC + + +531  + sd¿nd48_d©a + + +533  +__x +[3]; + +534  +__Þd_x +[3]; + +535  +__c +; + +536  +__š™ +; + +537  +__a +; + +541  + $d¿nd48_r + ( +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +542 * +__»¡riù + +__»suÉ +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +543  + `”ªd48_r + ( +__xsubi +[3], + +544  +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +545 * +__»¡riù + +__»suÉ +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +548  + $̪d48_r + ( +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +549 * +__»¡riù + +__»suÉ +) + +550 +__THROW + + `__nÚnuÎ + ((1, 2)); + +551  + `Īd48_r + ( +__xsubi +[3], + +552  +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +553 * +__»¡riù + +__»suÉ +) + +554 +__THROW + + `__nÚnuÎ + ((1, 2)); + +557  + $m¿nd48_r + ( +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +558 * +__»¡riù + +__»suÉ +) + +559 +__THROW + + `__nÚnuÎ + ((1, 2)); + +560  + `j¿nd48_r + ( +__xsubi +[3], + +561  +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +562 * +__»¡riù + +__»suÉ +) + +563 +__THROW + + `__nÚnuÎ + ((1, 2)); + +566  + $¤ªd48_r + ( +__£edv® +,  +d¿nd48_d©a + * +__bufãr +) + +567 +__THROW + + `__nÚnuÎ + ((2)); + +569  + `£ed48_r + ( +__£ed16v +[3], + +570  +d¿nd48_d©a + * +__bufãr +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +572  + `lcÚg48_r + ( +__·¿m +[7], + +573  +d¿nd48_d©a + * +__bufãr +) + +574 +__THROW + + `__nÚnuÎ + ((1, 2)); + +580 #iâdeà +__m®loc_ªd_ÿÎoc_defšed + + +581  + #__m®loc_ªd_ÿÎoc_defšed + + + ) + +582 +__BEGIN_NAMESPACE_STD + + +584 * + $m®loc + ( +size_t + +__size +è +__THROW + +__©Œibu‹_m®loc__ +; + +586 * + $ÿÎoc + ( +size_t + +__nmemb +, size_ˆ +__size +) + +587 +__THROW + +__©Œibu‹_m®loc__ +; + +588 +__END_NAMESPACE_STD + + +591 #iâdeà +__Ãed_m®loc_ªd_ÿÎoc + + +592 +__BEGIN_NAMESPACE_STD + + +595 * + $»®loc + (* +__±r +, +size_t + +__size +è +__THROW + +__©Œibu‹_m®loc__ +; + +597  + $ä“ + (* +__±r +è +__THROW +; + +598 +__END_NAMESPACE_STD + + +600 #ifdef +__USE_MISC + + +602  + $cä“ + (* +__±r +è +__THROW +; + +605 #ià +defšed + +__USE_GNU + || defšed +__USE_BSD + || defšed +__USE_MISC + + +606  + ~<®loÿ.h +> + +609 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +611 * + $v®loc + ( +size_t + +__size +è +__THROW + +__©Œibu‹_m®loc__ +; + +614 #ifdeà +__USE_XOPEN2K + + +616  + $posix_mem®ign + (** +__mem±r +, +size_t + +__®ignm’t +, size_ˆ +__size +) + +617 +__THROW + + `__nÚnuÎ + ((1)); + +620 +__BEGIN_NAMESPACE_STD + + +622  + $abÜt + (è +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +626  + `©ex™ + ((* +__func +è()è +__THROW + + `__nÚnuÎ + ((1)); + +627 +__END_NAMESPACE_STD + + +629 #ifdef +__USE_MISC + + +632  + `Ú_ex™ + ((* +__func +è( +__¡©us +, * +__¬g +), *__arg) + +633 +__THROW + + `__nÚnuÎ + ((1)); + +636 +__BEGIN_NAMESPACE_STD + + +640  + $ex™ + ( +__¡©us +è +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +641 +__END_NAMESPACE_STD + + +643 #ifdeà +__USE_ISOC99 + + +644 +__BEGIN_NAMESPACE_C99 + + +647  + $_Ex™ + ( +__¡©us +è +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +648 +__END_NAMESPACE_C99 + + +652 +__BEGIN_NAMESPACE_STD + + +654 * + $g‘’v + ( +__cÚ¡ + * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)); + +655 +__END_NAMESPACE_STD + + +659 * + $__£cu»_g‘’v + ( +__cÚ¡ + * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)); + +661 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN + + +665  + $pu‹nv + (* +__¡ršg +è +__THROW + + `__nÚnuÎ + ((1)); + +668 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN2K + + +671  + $£‹nv + ( +__cÚ¡ + * +__Çme +, __cÚ¡ * +__v®ue +,  +__»¶aû +) + +672 +__THROW + + `__nÚnuÎ + ((2)); + +675  + $un£‹nv + ( +__cÚ¡ + * +__Çme +è +__THROW +; + +678 #ifdef +__USE_MISC + + +682  + $þ—»nv + (è +__THROW +; + +686 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +691 * + $mk‹mp + (* +__‹m¶©e +è +__THROW + + `__nÚnuÎ + ((1)); + +701 #iâdeà +__USE_FILE_OFFSET64 + + +702  + $mk¡emp + (* +__‹m¶©e +è + `__nÚnuÎ + ((1)); + +704 #ifdeà +__REDIRECT + + +705  + `__REDIRECT + ( +mk¡emp +, (* +__‹m¶©e +), +mk¡emp64 +è + `__nÚnuÎ + ((1)); + +707  + #mk¡emp + +mk¡emp64 + + + ) + +710 #ifdeà +__USE_LARGEFILE64 + + +711  + $mk¡emp64 + (* +__‹m¶©e +è + `__nÚnuÎ + ((1)); + +715 #ifdeà +__USE_BSD + + +721 * + $mkd‹mp + (* +__‹m¶©e +è +__THROW + + `__nÚnuÎ + ((1)); + +725 +__BEGIN_NAMESPACE_STD + + +730  + `sy¡em + ( +__cÚ¡ + * +__commªd +); + +731 +__END_NAMESPACE_STD + + +734 #ifdef +__USE_GNU + + +738 * + $ÿnÚiÿlize_fže_Çme + ( +__cÚ¡ + * +__Çme +) + +739 +__THROW + + `__nÚnuÎ + ((1)); + +742 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +749 * + $»®·th + ( +__cÚ¡ + * +__»¡riù + +__Çme +, + +750 * +__»¡riù + +__»sÞved +è +__THROW +; + +755 #iâdeà +__COMPAR_FN_T + + +756  + #__COMPAR_FN_T + + + ) + +757 (* + t__com·r_â_t +è( + t__cÚ¡ + *, __const *); + +759 #ifdef +__USE_GNU + + +760  +__com·r_â_t + + tcom·risÚ_â_t +; + +764 +__BEGIN_NAMESPACE_STD + + +767 * + $b£¬ch + ( +__cÚ¡ + * +__key +, __cÚ¡ * +__ba£ +, + +768 +size_t + +__nmemb +, size_ˆ +__size +, +__com·r_â_t + +__com·r +) + +769 + `__nÚnuÎ + ((1, 2, 5)); + +773  + $qsÜt + (* +__ba£ +, +size_t + +__nmemb +, size_ˆ +__size +, + +774 +__com·r_â_t + +__com·r +è + `__nÚnuÎ + ((1, 4)); + +778  + $abs + ( +__x +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +779  + $Ïbs + ( +__x +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +780 +__END_NAMESPACE_STD + + +782 #ifdeà +__USE_ISOC99 + + +783 +__ex‹nsiÚ__ +  + $Îabs + ( +__x +) + +784 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +788 +__BEGIN_NAMESPACE_STD + + +792 +div_t + + $div + ( +__num” +,  +__d’om +) + +793 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +794 +ldiv_t + + $ldiv + ( +__num” +,  +__d’om +) + +795 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +796 +__END_NAMESPACE_STD + + +798 #ifdeà +__USE_ISOC99 + + +799 +__BEGIN_NAMESPACE_C99 + + +800 +__ex‹nsiÚ__ + +Îdiv_t + + $Îdiv + ( +__num” +, + +801  +__d’om +) + +802 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +803 +__END_NAMESPACE_C99 + + +807 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN_EXTENDED + + +814 * + $ecvt + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +815 * +__»¡riù + +__sign +è +__THROW + + `__nÚnuÎ + ((3, 4)); + +820 * + $fcvt + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +821 * +__»¡riù + +__sign +è +__THROW + + `__nÚnuÎ + ((3, 4)); + +826 * + $gcvt + ( +__v®ue +,  +__ndig™ +, * +__buf +) + +827 +__THROW + + `__nÚnuÎ + ((3)); + +830 #ifdeà +__USE_MISC + + +832 * + $qecvt + ( +__v®ue +,  +__ndig™ +, + +833 * +__»¡riù + +__deýt +, *__»¡riù +__sign +) + +834 +__THROW + + `__nÚnuÎ + ((3, 4)); + +835 * + $qfcvt + ( +__v®ue +,  +__ndig™ +, + +836 * +__»¡riù + +__deýt +, *__»¡riù +__sign +) + +837 +__THROW + + `__nÚnuÎ + ((3, 4)); + +838 * + $qgcvt + ( +__v®ue +,  +__ndig™ +, * +__buf +) + +839 +__THROW + + `__nÚnuÎ + ((3)); + +844  + $ecvt_r + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +845 * +__»¡riù + +__sign +, *__»¡riù +__buf +, + +846 +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +847  + $fcvt_r + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +848 * +__»¡riù + +__sign +, *__»¡riù +__buf +, + +849 +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +851  + $qecvt_r + ( +__v®ue +,  +__ndig™ +, + +852 * +__»¡riù + +__deýt +, *__»¡riù +__sign +, + +853 * +__»¡riù + +__buf +, +size_t + +__Ën +) + +854 +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +855  + $qfcvt_r + ( +__v®ue +,  +__ndig™ +, + +856 * +__»¡riù + +__deýt +, *__»¡riù +__sign +, + +857 * +__»¡riù + +__buf +, +size_t + +__Ën +) + +858 +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +863 +__BEGIN_NAMESPACE_STD + + +866  + $mbËn + ( +__cÚ¡ + * +__s +, +size_t + +__n +è +__THROW +; + +869  + $mbtowc + ( +wch¬_t + * +__»¡riù + +__pwc +, + +870 +__cÚ¡ + * +__»¡riù + +__s +, +size_t + +__n +è +__THROW +; + +873  + $wùomb + (* +__s +, +wch¬_t + +__wch¬ +è +__THROW +; + +877 +size_t + + $mb¡owcs + ( +wch¬_t + * +__»¡riù + +__pwcs +, + +878 +__cÚ¡ + * +__»¡riù + +__s +, +size_t + +__n +è +__THROW +; + +880 +size_t + + $wc¡ombs + (* +__»¡riù + +__s +, + +881 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__pwcs +, +size_t + +__n +) + +882 +__THROW +; + +883 +__END_NAMESPACE_STD + + +886 #ifdeà +__USE_SVID + + +891  + $½m©ch + ( +__cÚ¡ + * +__»¥Ú£ +è +__THROW + + `__nÚnuÎ + ((1)); + +895 #ifdeà +__USE_XOPEN_EXTENDED + + +902  + $g‘subÝt + (** +__»¡riù + +__ÝtiÚp +, + +903 * +__cÚ¡ + * +__»¡riù + +__tok’s +, + +904 ** +__»¡riù + +__v®u• +) + +905 +__THROW + + `__nÚnuÎ + ((1, 2, 3)); + +909 #ifdeà +__USE_XOPEN + + +911  + $£tkey + ( +__cÚ¡ + * +__key +è +__THROW + + `__nÚnuÎ + ((1)); + +917 #ifdeà +__USE_XOPEN2K + + +919  + `posix_ݒ± + ( +__oæag +); + +922 #ifdeà +__USE_XOPEN + + +927  + $g¿Á± + ( +__fd +è +__THROW +; + +931  + $uÆock± + ( +__fd +è +__THROW +; + +936 * + $±¢ame + ( +__fd +è +__THROW +; + +939 #ifdeà +__USE_GNU + + +943  + $±¢ame_r + ( +__fd +, * +__buf +, +size_t + +__buæ’ +) + +944 +__THROW + + `__nÚnuÎ + ((2)); + +947  + `g‘± + (); + +950 #ifdeà +__USE_BSD + + +954  + $g‘lßdavg + ( +__lßdavg +[],  +__ÃËm +) + +955 +__THROW + + `__nÚnuÎ + ((1)); + +959 #undeà +__Ãed_m®loc_ªd_ÿÎoc + + +961 +__END_DECLS + + + @/usr/include/string.h + +23 #iâdef +_STRING_H + + +24  + #_STRING_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +28 + g__BEGIN_DECLS + + +31  + #__Ãed_size_t + + + ) + +32  + #__Ãed_NULL + + + ) + +33  + ~<¡ddef.h +> + +36 +__BEGIN_NAMESPACE_STD + + +38 * + $memýy + (* +__»¡riù + +__de¡ +, + +39 +__cÚ¡ + * +__»¡riù + +__¤c +, +size_t + +__n +) + +40 +__THROW + + `__nÚnuÎ + ((1, 2)); + +43 * + $memmove + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__n +) + +44 +__THROW + + `__nÚnuÎ + ((1, 2)); + +45 +__END_NAMESPACE_STD + + +50 #ià +defšed + +__USE_SVID + || defšed +__USE_BSD + || defšed +__USE_XOPEN + + +51 * + $memcýy + (* +__»¡riù + +__de¡ +, +__cÚ¡ + *__»¡riù +__¤c +, + +52  +__c +, +size_t + +__n +) + +53 +__THROW + + `__nÚnuÎ + ((1, 2)); + +57 +__BEGIN_NAMESPACE_STD + + +59 * + $mem£t + (* +__s +,  +__c +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +62  + $memcmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, +size_t + +__n +) + +63 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +66 * + $memchr + ( +__cÚ¡ + * +__s +,  +__c +, +size_t + +__n +) + +67 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +68 +__END_NAMESPACE_STD + + +70 #ifdeà +__USE_GNU + + +73 * + $¿wmemchr + ( +__cÚ¡ + * +__s +,  +__c +) + +74 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +77 * + $memrchr + ( +__cÚ¡ + * +__s +,  +__c +, +size_t + +__n +) + +78 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +82 +__BEGIN_NAMESPACE_STD + + +84 * + $¡rýy + (* +__»¡riù + +__de¡ +, +__cÚ¡ + *__»¡riù +__¤c +) + +85 +__THROW + + `__nÚnuÎ + ((1, 2)); + +87 * + $¡ºýy + (* +__»¡riù + +__de¡ +, + +88 +__cÚ¡ + * +__»¡riù + +__¤c +, +size_t + +__n +) + +89 +__THROW + + `__nÚnuÎ + ((1, 2)); + +92 * + $¡rÿt + (* +__»¡riù + +__de¡ +, +__cÚ¡ + *__»¡riù +__¤c +) + +93 +__THROW + + `__nÚnuÎ + ((1, 2)); + +95 * + $¡ºÿt + (* +__»¡riù + +__de¡ +, +__cÚ¡ + *__»¡riù +__¤c +, + +96 +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +99  + $¡rcmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +) + +100 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +102  + $¡ºcmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, +size_t + +__n +) + +103 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +106  + $¡rcÞl + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +) + +107 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +109 +size_t + + $¡rxäm + (* +__»¡riù + +__de¡ +, + +110 +__cÚ¡ + * +__»¡riù + +__¤c +, +size_t + +__n +) + +111 +__THROW + + `__nÚnuÎ + ((2)); + +112 +__END_NAMESPACE_STD + + +114 #ifdeà +__USE_GNU + + +118  + ~ + +121  + $¡rcÞl_l + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, +__loÿË_t + +__l +) + +122 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2, 3)); + +124 +size_t + + $¡rxäm_l + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__n +, + +125 +__loÿË_t + +__l +è +__THROW + + `__nÚnuÎ + ((2, 4)); + +128 #ià +defšed + +__USE_SVID + || defšed +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +130 * + $¡rdup + ( +__cÚ¡ + * +__s +) + +131 +__THROW + +__©Œibu‹_m®loc__ + + `__nÚnuÎ + ((1)); + +137 #ià +defšed + +__USE_GNU + + +138 * + $¡ºdup + ( +__cÚ¡ + * +__¡ršg +, +size_t + +__n +) + +139 +__THROW + +__©Œibu‹_m®loc__ + + `__nÚnuÎ + ((1)); + +142 #ià +defšed + +__USE_GNU + && defšed +__GNUC__ + + +144  + #¡rdu· +( +s +) \ + +145 ( +__ex‹nsiÚ__ + \ + +147 +__cÚ¡ + * +__Þd + = ( +s +); \ + +148 +size_t + +__Ën + = + `¡¾’ + ( +__Þd +) + 1; \ + +149 * +__Ãw + = (*è + `__bužtš_®loÿ + ( +__Ën +); \ + +150 (*è + `memýy + ( +__Ãw +, +__Þd +, +__Ën +); \ + +151 + } +})) + + ) + +154  + #¡ºdu· +( +s +, +n +) \ + +155 ( +__ex‹nsiÚ__ + \ + +157 +__cÚ¡ + * +__Þd + = ( +s +); \ + +158 +size_t + +__Ën + = + `¡ºËn + ( +__Þd +, ( +n +)); \ + +159 * +__Ãw + = (*è + `__bužtš_®loÿ + ( +__Ën + + 1); \ + +160 +__Ãw +[ +__Ën +] = '\0'; \ + +161 (*è + `memýy + ( +__Ãw +, +__Þd +, +__Ën +); \ + +162 })) + + ) + +165 +__BEGIN_NAMESPACE_STD + + +167 * + $¡rchr + ( +__cÚ¡ + * +__s +,  +__c +) + +168 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +170 * + $¡¼chr + ( +__cÚ¡ + * +__s +,  +__c +) + +171 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +172 +__END_NAMESPACE_STD + + +174 #ifdeà +__USE_GNU + + +177 * + $¡rchºul + ( +__cÚ¡ + * +__s +,  +__c +) + +178 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +181 +__BEGIN_NAMESPACE_STD + + +184 +size_t + + $¡rc¥n + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__»jeù +) + +185 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +188 +size_t + + $¡r¥n + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +) + +189 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +191 * + $¡½brk + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +) + +192 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +194 * + $¡r¡r + ( +__cÚ¡ + * +__hay¡ack +, __cÚ¡ * +__ÃedË +) + +195 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +199 * + $¡¹ok + (* +__»¡riù + +__s +, +__cÚ¡ + *__»¡riù +__d–im +) + +200 +__THROW + + `__nÚnuÎ + ((2)); + +201 +__END_NAMESPACE_STD + + +205 * + $__¡¹ok_r + (* +__»¡riù + +__s +, + +206 +__cÚ¡ + * +__»¡riù + +__d–im +, + +207 ** +__»¡riù + +__§ve_±r +) + +208 +__THROW + + `__nÚnuÎ + ((2, 3)); + +209 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +210 * + $¡¹ok_r + (* +__»¡riù + +__s +, +__cÚ¡ + *__»¡riù +__d–im +, + +211 ** +__»¡riù + +__§ve_±r +) + +212 +__THROW + + `__nÚnuÎ + ((2, 3)); + +215 #ifdeà +__USE_GNU + + +217 * + $¡rÿ£¡r + ( +__cÚ¡ + * +__hay¡ack +, __cÚ¡ * +__ÃedË +) + +218 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +221 #ifdeà +__USE_GNU + + +225 * + $memmem + ( +__cÚ¡ + * +__hay¡ack +, +size_t + +__hay¡ackËn +, + +226 +__cÚ¡ + * +__ÃedË +, +size_t + +__ÃedËËn +) + +227 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 3)); + +231 * + $__mempýy + (* +__»¡riù + +__de¡ +, + +232 +__cÚ¡ + * +__»¡riù + +__¤c +, +size_t + +__n +) + +233 +__THROW + + `__nÚnuÎ + ((1, 2)); + +234 * + $mempýy + (* +__»¡riù + +__de¡ +, + +235 +__cÚ¡ + * +__»¡riù + +__¤c +, +size_t + +__n +) + +236 +__THROW + + `__nÚnuÎ + ((1, 2)); + +240 +__BEGIN_NAMESPACE_STD + + +242 +size_t + + $¡¾’ + ( +__cÚ¡ + * +__s +) + +243 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +244 +__END_NAMESPACE_STD + + +246 #ifdef +__USE_GNU + + +249 +size_t + + $¡ºËn + ( +__cÚ¡ + * +__¡ršg +, +size_t + +__maxËn +) + +250 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +254 +__BEGIN_NAMESPACE_STD + + +256 * + $¡»¼Ü + ( +__”ºum +è +__THROW +; + +257 +__END_NAMESPACE_STD + + +258 #ià +defšed + +__USE_XOPEN2K + || defšed +__USE_MISC + + +266 #ià +defšed + +__USE_XOPEN2K + && !defšed +__USE_GNU + + +269 #ifdeà +__REDIRECT_NTH + + +270  + `__REDIRECT_NTH + ( +¡»¼Ü_r +, + +271 ( +__”ºum +, * +__buf +, +size_t + +__buæ’ +), + +272 +__xpg_¡»¼Ü_r +è + `__nÚnuÎ + ((2)); + +274  + $__xpg_¡»¼Ü_r + ( +__”ºum +, * +__buf +, +size_t + +__buæ’ +) + +275 +__THROW + + `__nÚnuÎ + ((2)); + +276  + #¡»¼Ü_r + +__xpg_¡»¼Ü_r + + + ) + +281 * + $¡»¼Ü_r + ( +__”ºum +, * +__buf +, +size_t + +__buæ’ +) + +282 +__THROW + + `__nÚnuÎ + ((2)); + +288  + $__bz”o + (* +__s +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +290 #ifdeà +__USE_BSD + + +292  + $bcÝy + ( +__cÚ¡ + * +__¤c +, * +__de¡ +, +size_t + +__n +) + +293 +__THROW + + `__nÚnuÎ + ((1, 2)); + +296  + $bz”o + (* +__s +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +299  + $bcmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, +size_t + +__n +) + +300 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +303 * + $šdex + ( +__cÚ¡ + * +__s +,  +__c +) + +304 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +307 * + $ršdex + ( +__cÚ¡ + * +__s +,  +__c +) + +308 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +312  + $ffs + ( +__i +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +316 #ifdef +__USE_GNU + + +317  + $ff¦ + ( +__l +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +318 #ifdeà +__GNUC__ + + +319 +__ex‹nsiÚ__ +  + $ff¦l + ( +__Î +) + +320 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +325  + $¡rÿ£cmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +) + +326 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +329  + $¡ºÿ£cmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, +size_t + +__n +) + +330 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +333 #ifdef +__USE_GNU + + +336  + $¡rÿ£cmp_l + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, + +337 +__loÿË_t + +__loc +) + +338 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2, 3)); + +340  + $¡ºÿ£cmp_l + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, + +341 +size_t + +__n +, +__loÿË_t + +__loc +) + +342 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2, 4)); + +345 #ifdef +__USE_BSD + + +348 * + $¡r£p + (** +__»¡riù + +__¡ršgp +, + +349 +__cÚ¡ + * +__»¡riù + +__d–im +) + +350 +__THROW + + `__nÚnuÎ + ((1, 2)); + +353 #ifdef +__USE_GNU + + +355  + $¡rv”scmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +) + +356 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +359 * + $¡rsigÇl + ( +__sig +è +__THROW +; + +362 * + $__¡pýy + (* +__»¡riù + +__de¡ +, +__cÚ¡ + *__»¡riù +__¤c +) + +363 +__THROW + + `__nÚnuÎ + ((1, 2)); + +364 * + $¡pýy + (* +__»¡riù + +__de¡ +, +__cÚ¡ + *__»¡riù +__¤c +) + +365 +__THROW + + `__nÚnuÎ + ((1, 2)); + +369 * + $__¡²ýy + (* +__»¡riù + +__de¡ +, + +370 +__cÚ¡ + * +__»¡riù + +__¤c +, +size_t + +__n +) + +371 +__THROW + + `__nÚnuÎ + ((1, 2)); + +372 * + $¡²ýy + (* +__»¡riù + +__de¡ +, + +373 +__cÚ¡ + * +__»¡riù + +__¤c +, +size_t + +__n +) + +374 +__THROW + + `__nÚnuÎ + ((1, 2)); + +377 * + $¡räy + (* +__¡ršg +è +__THROW + + `__nÚnuÎ + ((1)); + +380 * + $memäob + (* +__s +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +382 #iâdeà +ba£Çme + + +387 * + $ba£Çme + ( +__cÚ¡ + * +__fž’ame +è +__THROW + + `__nÚnuÎ + ((1)); + +392 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +393 #ià +defšed + +__OPTIMIZE__ + && !defšed +__OPTIMIZE_SIZE__ + \ + +394 && ! +defšed + +__NO_INLINE__ + && !defšed +__ýlu¥lus + + +414  + ~ + +417  + ~ + +420 #ià +__USE_FORTIFY_LEVEL + > 0 && ! +defšed + +__ýlu¥lus + + +422  + ~ + +426 +__END_DECLS + + + @/usr/include/sys/types.h + +24 #iâdef +_SYS_TYPES_H + + +25  + #_SYS_TYPES_H + 1 + + ) + +27  + ~<ã©u»s.h +> + +29 + g__BEGIN_DECLS + + +31  + ~ + +33 #ifdef +__USE_BSD + + +34 #iâdeà +__u_ch¬_defšed + + +35  +__u_ch¬ + + tu_ch¬ +; + +36  +__u_shÜt + + tu_shÜt +; + +37  +__u_št + + tu_št +; + +38  +__u_lÚg + + tu_lÚg +; + +39  +__quad_t + + tquad_t +; + +40  +__u_quad_t + + tu_quad_t +; + +41  +__fsid_t + + tfsid_t +; + +42  + #__u_ch¬_defšed + + + ) + +46  +__loff_t + + tloff_t +; + +48 #iâdeà +__šo_t_defšed + + +49 #iâdeà +__USE_FILE_OFFSET64 + + +50  +__šo_t + + tšo_t +; + +52  +__šo64_t + + tšo_t +; + +54  + #__šo_t_defšed + + + ) + +56 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__šo64_t_defšed + + +57  +__šo64_t + + tšo64_t +; + +58  + #__šo64_t_defšed + + + ) + +61 #iâdeà +__dev_t_defšed + + +62  +__dev_t + + tdev_t +; + +63  + #__dev_t_defšed + + + ) + +66 #iâdeà +__gid_t_defšed + + +67  +__gid_t + + tgid_t +; + +68  + #__gid_t_defšed + + + ) + +71 #iâdeà +__mode_t_defšed + + +72  +__mode_t + + tmode_t +; + +73  + #__mode_t_defšed + + + ) + +76 #iâdeà +__ƚk_t_defšed + + +77  +__ƚk_t + + tƚk_t +; + +78  + #__ƚk_t_defšed + + + ) + +81 #iâdeà +__uid_t_defšed + + +82  +__uid_t + + tuid_t +; + +83  + #__uid_t_defšed + + + ) + +86 #iâdeà +__off_t_defšed + + +87 #iâdeà +__USE_FILE_OFFSET64 + + +88  +__off_t + + toff_t +; + +90  +__off64_t + + toff_t +; + +92  + #__off_t_defšed + + + ) + +94 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__off64_t_defšed + + +95  +__off64_t + + toff64_t +; + +96  + #__off64_t_defšed + + + ) + +99 #iâdeà +__pid_t_defšed + + +100  +__pid_t + + tpid_t +; + +101  + #__pid_t_defšed + + + ) + +104 #ià( +defšed + +__USE_SVID + || defšed +__USE_XOPEN +è&& !defšed +__id_t_defšed + + +105  +__id_t + + tid_t +; + +106  + #__id_t_defšed + + + ) + +109 #iâdeà +__ssize_t_defšed + + +110  +__ssize_t + + tssize_t +; + +111  + #__ssize_t_defšed + + + ) + +114 #ifdef +__USE_BSD + + +115 #iâdeà +__daddr_t_defšed + + +116  +__daddr_t + + tdaddr_t +; + +117  +__ÿddr_t + + tÿddr_t +; + +118  + #__daddr_t_defšed + + + ) + +122 #ià( +defšed + +__USE_SVID + || defšed +__USE_XOPEN +è&& !defšed +__key_t_defšed + + +123  +__key_t + + tkey_t +; + +124  + #__key_t_defšed + + + ) + +127 #ifdeà +__USE_XOPEN + + +128  + #__Ãed_þock_t + + + ) + +130  + #__Ãed_time_t + + + ) + +131  + #__Ãed_tim”_t + + + ) + +132  + #__Ãed_þockid_t + + + ) + +133  + ~ + +135 #ifdeà +__USE_XOPEN + + +136 #iâdeà +__u£cÚds_t_defšed + + +137  +__u£cÚds_t + + tu£cÚds_t +; + +138  + #__u£cÚds_t_defšed + + + ) + +140 #iâdeà +__su£cÚds_t_defšed + + +141  +__su£cÚds_t + + tsu£cÚds_t +; + +142  + #__su£cÚds_t_defšed + + + ) + +146  + #__Ãed_size_t + + + ) + +147  + ~<¡ddef.h +> + +149 #ifdeà +__USE_MISC + + +151  + tulÚg +; + +152  + tushÜt +; + +153  + tušt +; + +158 #ià! +__GNUC_PREREQ + (2, 7) + +161 #iâdeà +__št8_t_defšed + + +162  + #__št8_t_defšed + + + ) + +163  + tšt8_t +; + +164  + tšt16_t +; + +165  + tšt32_t +; + +166 #ià +__GLIBC_HAVE_LONG_LONG + + +167 +__ex‹nsiÚ__ +  + tšt64_t +; + +172  + tu_št8_t +; + +173  + tu_št16_t +; + +174  + tu_št32_t +; + +175 #ià +__GLIBC_HAVE_LONG_LONG + + +176 +__ex‹nsiÚ__ +  + tu_št64_t +; + +179  + t»gi¡”_t +; + +184  + #__štN_t +( +N +, +MODE +) \ + +185 ## + tN +## + t_t + + t__©Œibu‹__ + (( + t__mode__ + ( + tMODE +))) + + ) + +186  + t__u_štN_t +( + tN +, + tMODE +) \ + +187  + tu_št +## + tN +## + t_t + + t__©Œibu‹__ + (( + t__mode__ + ( + tMODE +))) + + ) + +189 #iâdeà + t__št8_t_defšed + + +190  + t__št8_t_defšed + + + ) + +191 + t__štN_t + (8, + t__QI__ +); + +192 +__štN_t + (16, +__HI__ +); + +193 +__štN_t + (32, +__SI__ +); + +194 +__štN_t + (64, +__DI__ +); + +197 +__u_štN_t + (8, +__QI__ +); + +198 +__u_štN_t + (16, +__HI__ +); + +199 +__u_štN_t + (32, +__SI__ +); + +200 +__u_štN_t + (64, +__DI__ +); + +202  + t»gi¡”_t + + t__©Œibu‹__ + (( + t__mode__ + ( + t__wÜd__ +))); + +208  + #__BIT_TYPES_DEFINED__ + 1 + + ) + +211 #ifdef +__USE_BSD + + +213  + ~<’dŸn.h +> + +216  + ~ + +219  + ~ + +223 #ià +defšed + +__USE_UNIX98 + && !defšed +__blksize_t_defšed + + +224  +__blksize_t + + tblksize_t +; + +225  + #__blksize_t_defšed + + + ) + +229 #iâdeà +__USE_FILE_OFFSET64 + + +230 #iâdeà +__blkút_t_defšed + + +231  +__blkút_t + + tblkút_t +; + +232  + #__blkút_t_defšed + + + ) + +234 #iâdeà +__fsblkút_t_defšed + + +235  +__fsblkút_t + + tfsblkút_t +; + +236  + #__fsblkút_t_defšed + + + ) + +238 #iâdeà +__fsfžút_t_defšed + + +239  +__fsfžút_t + + tfsfžút_t +; + +240  + #__fsfžút_t_defšed + + + ) + +243 #iâdeà +__blkút_t_defšed + + +244  +__blkút64_t + + tblkút_t +; + +245  + #__blkút_t_defšed + + + ) + +247 #iâdeà +__fsblkút_t_defšed + + +248  +__fsblkút64_t + + tfsblkút_t +; + +249  + #__fsblkút_t_defšed + + + ) + +251 #iâdeà +__fsfžút_t_defšed + + +252  +__fsfžút64_t + + tfsfžút_t +; + +253  + #__fsfžút_t_defšed + + + ) + +257 #ifdeà +__USE_LARGEFILE64 + + +258  +__blkút64_t + + tblkút64_t +; + +259  +__fsblkút64_t + + tfsblkút64_t +; + +260  +__fsfžút64_t + + tfsfžút64_t +; + +265 #ià +defšed + +__USE_POSIX199506 + || defšed +__USE_UNIX98 + + +266  + ~ + +269 + g__END_DECLS + + + @/usr/include/unistd.h + +23 #iâdef +_UNISTD_H + + +24  + #_UNISTD_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +28 + g__BEGIN_DECLS + + +34  + #_POSIX_VERSION + 200112L + + ) + +40  + #_POSIX2_VERSION + 200112L + + ) + +44  + #_POSIX2_C_BIND + 200112L + + ) + +48  + #_POSIX2_C_DEV + 200112L + + ) + +52  + #_POSIX2_SW_DEV + 200112L + + ) + +56  + #_POSIX2_LOCALEDEF + 200112L + + ) + +59 #ifdeà +__USE_UNIX98 + + +60  + #_XOPEN_VERSION + 500 + + ) + +62  + #_XOPEN_VERSION + 4 + + ) + +66  + #_XOPEN_XCU_VERSION + 4 + + ) + +69  + #_XOPEN_XPG2 + 1 + + ) + +70  + #_XOPEN_XPG3 + 1 + + ) + +71  + #_XOPEN_XPG4 + 1 + + ) + +74  + #_XOPEN_UNIX + 1 + + ) + +77  + #_XOPEN_CRYPT + 1 + + ) + +81  + #_XOPEN_ENH_I18N + 1 + + ) + +84  + #_XOPEN_LEGACY + 1 + + ) + +171  + ~ + +174 #ifdeà +__USE_UNIX98 + + +175  + ~ + +179  + #STDIN_FILENO + 0 + + ) + +180  + #STDOUT_FILENO + 1 + + ) + +181  + #STDERR_FILENO + 2 + + ) + +186  + ~ + +188 #iâdef +__ssize_t_defšed + + +189  +__ssize_t + + tssize_t +; + +190  + #__ssize_t_defšed + + + ) + +193  + #__Ãed_size_t + + + ) + +194  + #__Ãed_NULL + + + ) + +195  + ~<¡ddef.h +> + +197 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K + + +200 #iâdeà +__gid_t_defšed + + +201  +__gid_t + + tgid_t +; + +202  + #__gid_t_defšed + + + ) + +205 #iâdeà +__uid_t_defšed + + +206  +__uid_t + + tuid_t +; + +207  + #__uid_t_defšed + + + ) + +210 #iâdeà +__off_t_defšed + + +211 #iâdeà +__USE_FILE_OFFSET64 + + +212  +__off_t + + toff_t +; + +214  +__off64_t + + toff_t +; + +216  + #__off_t_defšed + + + ) + +218 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__off64_t_defšed + + +219  +__off64_t + + toff64_t +; + +220  + #__off64_t_defšed + + + ) + +223 #iâdeà +__u£cÚds_t_defšed + + +224  +__u£cÚds_t + + tu£cÚds_t +; + +225  + #__u£cÚds_t_defšed + + + ) + +228 #iâdeà +__pid_t_defšed + + +229  +__pid_t + + tpid_t +; + +230  + #__pid_t_defšed + + + ) + +234 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +235 #iâdeà +__šŒ_t_defšed + + +236  +__šŒ_t + + tšŒ_t +; + +237  + #__šŒ_t_defšed + + + ) + +241 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN + + +242 #iâdeà +__sockËn_t_defšed + + +243  +__sockËn_t + + tsockËn_t +; + +244  + #__sockËn_t_defšed + + + ) + +250  + #R_OK + 4 + + ) + +251  + #W_OK + 2 + + ) + +252  + #X_OK + 1 + + ) + +253  + #F_OK + 0 + + ) + +256  + $acûss + ( +__cÚ¡ + * +__Çme +,  +__ty³ +è +__THROW + + `__nÚnuÎ + ((1)); + +258 #ifdeà +__USE_GNU + + +261  + $euidacûss + ( +__cÚ¡ + * +__Çme +,  +__ty³ +) + +262 +__THROW + + `__nÚnuÎ + ((1)); + +267 #iâdef +_STDIO_H + + +268  + #SEEK_SET + 0 + + ) + +269  + #SEEK_CUR + 1 + + ) + +270  + #SEEK_END + 2 + + ) + +273 #ià +defšed + +__USE_BSD + && !defšed +L_SET + + +275  + #L_SET + +SEEK_SET + + + ) + +276  + #L_INCR + +SEEK_CUR + + + ) + +277  + #L_XTND + +SEEK_END + + + ) + +286 #iâdeà +__USE_FILE_OFFSET64 + + +287 +__off_t + + $l£ek + ( +__fd +, +__off_t + +__off£t +,  +__wh’û +è +__THROW +; + +289 #ifdeà +__REDIRECT_NTH + + +290 +__off64_t + + `__REDIRECT_NTH + ( +l£ek +, + +291 ( +__fd +, +__off64_t + +__off£t +,  +__wh’û +), + +292 +l£ek64 +); + +294  + #l£ek + +l£ek64 + + + ) + +297 #ifdeà +__USE_LARGEFILE64 + + +298 +__off64_t + + $l£ek64 + ( +__fd +, +__off64_t + +__off£t +,  +__wh’û +è +__THROW +; + +305  + `þo£ + ( +__fd +); + +312 +ssize_t + + `»ad + ( +__fd +, * +__buf +, +size_t + +__nby‹s +); + +318 +ssize_t + + `wr™e + ( +__fd +, +__cÚ¡ + * +__buf +, +size_t + +__n +); + +320 #ifdeà +__USE_UNIX98 + + +321 #iâdeà +__USE_FILE_OFFSET64 + + +328 +ssize_t + + `´—d + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +329 +__off_t + +__off£t +); + +336 +ssize_t + + `pwr™e + ( +__fd +, +__cÚ¡ + * +__buf +, +size_t + +__n +, + +337 +__off_t + +__off£t +); + +339 #ifdeà +__REDIRECT + + +340 +ssize_t + + `__REDIRECT + ( +´—d +, ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +341 +__off64_t + +__off£t +), + +342 +´—d64 +); + +343 +ssize_t + + `__REDIRECT + ( +pwr™e +, ( +__fd +, +__cÚ¡ + * +__buf +, + +344 +size_t + +__nby‹s +, +__off64_t + +__off£t +), + +345 +pwr™e64 +); + +347  + #´—d + +´—d64 + + + ) + +348  + #pwr™e + +pwr™e64 + + + ) + +352 #ifdeà +__USE_LARGEFILE64 + + +356 +ssize_t + + `´—d64 + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +357 +__off64_t + +__off£t +); + +360 +ssize_t + + `pwr™e64 + ( +__fd +, +__cÚ¡ + * +__buf +, +size_t + +__n +, + +361 +__off64_t + +__off£t +); + +369  + `pe + ( +__pedes +[2]è +__THROW +; + +378  + $®¬m + ( +__£cÚds +è +__THROW +; + +390  + `¦“p + ( +__£cÚds +); + +392 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +397 +__u£cÚds_t + + $u®¬m + ( +__u£cÚds_t + +__v®ue +, __u£cÚds_ˆ +__š‹rv® +) + +398 +__THROW +; + +405  + `u¦“p + ( +__u£cÚds_t + +__u£cÚds +); + +414  + `·u£ + (); + +418  + $chown + ( +__cÚ¡ + * +__fže +, +__uid_t + +__owÃr +, +__gid_t + +__group +) + +419 +__THROW + + `__nÚnuÎ + ((1)); + +421 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +423  + $fchown + ( +__fd +, +__uid_t + +__owÃr +, +__gid_t + +__group +è +__THROW +; + +428  + $lchown + ( +__cÚ¡ + * +__fže +, +__uid_t + +__owÃr +, +__gid_t + +__group +) + +429 +__THROW + + `__nÚnuÎ + ((1)); + +434  + $chdœ + ( +__cÚ¡ + * +__·th +è +__THROW + + `__nÚnuÎ + ((1)); + +436 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +438  + $fchdœ + ( +__fd +è +__THROW +; + +448 * + $g‘cwd + (* +__buf +, +size_t + +__size +è +__THROW +; + +450 #ifdef +__USE_GNU + + +454 * + $g‘_cu¼’t_dœ_Çme + (è +__THROW +; + +457 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +461 * + $g‘wd + (* +__buf +è +__THROW + + `__nÚnuÎ + ((1)); + +466  + $dup + ( +__fd +è +__THROW +; + +469  + $dup2 + ( +__fd +,  +__fd2 +è +__THROW +; + +472 ** +__’vœÚ +; + +473 #ifdeà +__USE_GNU + + +474 ** +’vœÚ +; + +480  + $execve + ( +__cÚ¡ + * +__·th +, *__cÚ¡ +__¬gv +[], + +481 * +__cÚ¡ + +__’vp +[]è +__THROW + + `__nÚnuÎ + ((1)); + +483 #ifdeà +__USE_GNU + + +486  + $ãxecve + ( +__fd +, * +__cÚ¡ + +__¬gv +[], *__cÚ¡ +__’vp +[]) + +487 +__THROW +; + +492  + $execv + ( +__cÚ¡ + * +__·th +, *__cÚ¡ +__¬gv +[]) + +493 +__THROW + + `__nÚnuÎ + ((1)); + +497  + $exeþe + ( +__cÚ¡ + * +__·th +, __cÚ¡ * +__¬g +, ...) + +498 +__THROW + + `__nÚnuÎ + ((1)); + +502  + $exeþ + ( +__cÚ¡ + * +__·th +, __cÚ¡ * +__¬g +, ...) + +503 +__THROW + + `__nÚnuÎ + ((1)); + +507  + $execvp + ( +__cÚ¡ + * +__fže +, *__cÚ¡ +__¬gv +[]) + +508 +__THROW + + `__nÚnuÎ + ((1)); + +513  + $exeþp + ( +__cÚ¡ + * +__fže +, __cÚ¡ * +__¬g +, ...) + +514 +__THROW + + `__nÚnuÎ + ((1)); + +517 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +519  + $niû + ( +__šc +è +__THROW +; + +524  + $_ex™ + ( +__¡©us +è + `__©Œibu‹__ + (( +__nܑuº__ +)); + +530  + ~ + +533  + $·thcÚf + ( +__cÚ¡ + * +__·th +,  +__Çme +) + +534 +__THROW + + `__nÚnuÎ + ((1)); + +537  + $å©hcÚf + ( +__fd +,  +__Çme +è +__THROW +; + +540  + $syscÚf + ( +__Çme +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +542 #ifdef +__USE_POSIX2 + + +544 +size_t + + $cÚf¡r + ( +__Çme +, * +__buf +, +size_t + +__Ën +è +__THROW +; + +549 +__pid_t + + $g‘pid + (è +__THROW +; + +552 +__pid_t + + $g‘µid + (è +__THROW +; + +556 #iâdeà +__FAVOR_BSD + + +557 +__pid_t + + $g‘pg½ + (è +__THROW +; + +559 #ifdeà +__REDIRECT_NTH + + +560 +__pid_t + + `__REDIRECT_NTH + ( +g‘pg½ +, (__pid_ˆ +__pid +), +__g‘pgid +); + +562  + #g‘pg½ + +__g‘pgid + + + ) + +567 +__pid_t + + $__g‘pgid + ( +__pid_t + +__pid +è +__THROW +; + +568 #ifdeà +__USE_XOPEN_EXTENDED + + +569 +__pid_t + + $g‘pgid + ( +__pid_t + +__pid +è +__THROW +; + +576  + $£gid + ( +__pid_t + +__pid +, __pid_ˆ +__pgid +è +__THROW +; + +578 #ià +defšed + +__USE_SVID + || defšed +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +589 #iâdeà +__FAVOR_BSD + + +593  + $£g½ + (è +__THROW +; + +598 #ifdeà +__REDIRECT_NTH + + +599  + `__REDIRECT_NTH + ( +£g½ +, ( +__pid_t + +__pid +, __pid_ˆ +__pg½ +), +£gid +); + +601  + #£g½ + +£gid + + + ) + +610 +__pid_t + + $£tsid + (è +__THROW +; + +612 #ifdeà +__USE_XOPEN_EXTENDED + + +614 +__pid_t + + $g‘sid + ( +__pid_t + +__pid +è +__THROW +; + +618 +__uid_t + + $g‘uid + (è +__THROW +; + +621 +__uid_t + + $g‘euid + (è +__THROW +; + +624 +__gid_t + + $g‘gid + (è +__THROW +; + +627 +__gid_t + + $g‘egid + (è +__THROW +; + +632  + $g‘groups + ( +__size +, +__gid_t + +__li¡ +[]è +__THROW +; + +634 #ifdef +__USE_GNU + + +636  + $group_memb” + ( +__gid_t + +__gid +è +__THROW +; + +643  + $£tuid + ( +__uid_t + +__uid +è +__THROW +; + +645 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +648  + $£Œeuid + ( +__uid_t + +__ruid +, __uid_ˆ +__euid +è +__THROW +; + +651 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN2K + + +653  + $£‹uid + ( +__uid_t + +__uid +è +__THROW +; + +660  + $£tgid + ( +__gid_t + +__gid +è +__THROW +; + +662 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +665  + $£Œegid + ( +__gid_t + +__rgid +, __gid_ˆ +__egid +è +__THROW +; + +668 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN2K + + +670  + $£‹gid + ( +__gid_t + +__gid +è +__THROW +; + +673 #ifdeà +__USE_GNU + + +676  + `g‘»suid + ( +__uid_t + * +__euid +, __uid_ˆ* +__ruid +, __uid_ˆ* +__suid +); + +680  + `g‘»sgid + ( +__gid_t + * +__egid +, __gid_ˆ* +__rgid +, __gid_ˆ* +__sgid +); + +684  + `£Œesuid + ( +__uid_t + +__euid +, __uid_ˆ +__ruid +, __uid_ˆ +__suid +); + +688  + `£Œesgid + ( +__gid_t + +__egid +, __gid_ˆ +__rgid +, __gid_ˆ +__sgid +); + +695 +__pid_t + + $fÜk + (è +__THROW +; + +697 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +702 +__pid_t + + $vfÜk + (è +__THROW +; + +708 * + $‰yÇme + ( +__fd +è +__THROW +; + +712  + $‰yÇme_r + ( +__fd +, * +__buf +, +size_t + +__buæ’ +) + +713 +__THROW + + `__nÚnuÎ + ((2)); + +717  + $i§‰y + ( +__fd +è +__THROW +; + +719 #ià +defšed + +__USE_BSD + \ + +720 || ( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_UNIX98 +) + +723  + $‰y¦Ù + (è +__THROW +; + +728  + $lšk + ( +__cÚ¡ + * +__äom +, __cÚ¡ * +__to +) + +729 +__THROW + + `__nÚnuÎ + ((1, 2)); + +731 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K + + +733  + $symlšk + ( +__cÚ¡ + * +__äom +, __cÚ¡ * +__to +) + +734 +__THROW + + `__nÚnuÎ + ((1, 2)); + +739  + $»adlšk + ( +__cÚ¡ + * +__»¡riù + +__·th +, *__»¡riù +__buf +, + +740 +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +744  + $uƚk + ( +__cÚ¡ + * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)); + +747  + $rmdœ + ( +__cÚ¡ + * +__·th +è +__THROW + + `__nÚnuÎ + ((1)); + +751 +__pid_t + + $tcg‘pg½ + ( +__fd +è +__THROW +; + +754  + $tc£g½ + ( +__fd +, +__pid_t + +__pg½_id +è +__THROW +; + +761 * + `g‘logš + (); + +762 #ià +defšed + +__USE_REENTRANT + || defšed +__USE_UNIX98 + + +769  + $g‘logš_r + (* +__Çme +, +size_t + +__Çme_Ën +è + `__nÚnuÎ + ((1)); + +772 #ifdef +__USE_BSD + + +774  + $£Žogš + ( +__cÚ¡ + * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)); + +778 #ifdef +__USE_POSIX2 + + +782  + #__Ãed_g‘Ýt + + + ) + +783  + ~ + +787 #ià +defšed + +__USE_BSD + || defšed +__USE_UNIX98 + + +791  + $g‘ho¡Çme + (* +__Çme +, +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((1)); + +795 #ià +defšed + +__USE_BSD + || (defšed +__USE_XOPEN + && !defšed +__USE_UNIX98 +) + +798  + $£tho¡Çme + ( +__cÚ¡ + * +__Çme +, +size_t + +__Ën +) + +799 +__THROW + + `__nÚnuÎ + ((1)); + +803  + $£tho¡id + ( +__id +è +__THROW +; + +809  + $g‘domašÇme + (* +__Çme +, +size_t + +__Ën +) + +810 +__THROW + + `__nÚnuÎ + ((1)); + +811  + $£tdomašÇme + ( +__cÚ¡ + * +__Çme +, +size_t + +__Ën +) + +812 +__THROW + + `__nÚnuÎ + ((1)); + +818  + $vhªgup + (è +__THROW +; + +821  + $»voke + ( +__cÚ¡ + * +__fže +è +__THROW + + `__nÚnuÎ + ((1)); + +829  + $´ofž + (* +__§m¶e_bufãr +, +size_t + +__size +, + +830 +size_t + +__off£t +,  +__sÿË +) + +831 +__THROW + + `__nÚnuÎ + ((1)); + +837  + $acù + ( +__cÚ¡ + * +__Çme +è +__THROW +; + +841 * + $g‘u£rsh–l + (è +__THROW +; + +842  + $’du£rsh–l + (è +__THROW +; + +843  + $£tu£rsh–l + (è +__THROW +; + +849  + $d«mÚ + ( +__nochdœ +,  +__noþo£ +è +__THROW +; + +853 #ià +defšed + +__USE_BSD + || (defšed +__USE_XOPEN + && !defšed +__USE_XOPEN2K +) + +856  + $chroÙ + ( +__cÚ¡ + * +__·th +è +__THROW + + `__nÚnuÎ + ((1)); + +860 * + $g‘·ss + ( +__cÚ¡ + * +__´om± +è + `__nÚnuÎ + ((1)); + +864 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN + + +869  + `fsync + ( +__fd +); + +873 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +876  + `g‘ho¡id + (); + +879  + $sync + (è +__THROW +; + +884  + $g‘·gesize + (è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +889  + $g‘dbËsize + (è +__THROW +; + +893 #iâdeà +__USE_FILE_OFFSET64 + + +894  + $Œunÿ‹ + ( +__cÚ¡ + * +__fže +, +__off_t + +__Ëngth +) + +895 +__THROW + + `__nÚnuÎ + ((1)); + +897 #ifdeà +__REDIRECT_NTH + + +898  + `__REDIRECT_NTH + ( +Œunÿ‹ +, + +899 ( +__cÚ¡ + * +__fže +, +__off64_t + +__Ëngth +), + +900 +Œunÿ‹64 +è + `__nÚnuÎ + ((1)); + +902  + #Œunÿ‹ + +Œunÿ‹64 + + + ) + +905 #ifdeà +__USE_LARGEFILE64 + + +906  + $Œunÿ‹64 + ( +__cÚ¡ + * +__fže +, +__off64_t + +__Ëngth +) + +907 +__THROW + + `__nÚnuÎ + ((1)); + +912 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K + + +915 #iâdeà +__USE_FILE_OFFSET64 + + +916  + $árunÿ‹ + ( +__fd +, +__off_t + +__Ëngth +è +__THROW +; + +918 #ifdeà +__REDIRECT_NTH + + +919  + `__REDIRECT_NTH + ( +árunÿ‹ +, ( +__fd +, +__off64_t + +__Ëngth +), + +920 +árunÿ‹64 +); + +922  + #árunÿ‹ + +árunÿ‹64 + + + ) + +925 #ifdeà +__USE_LARGEFILE64 + + +926  + $árunÿ‹64 + ( +__fd +, +__off64_t + +__Ëngth +è +__THROW +; + +932 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +936  + $brk + (* +__addr +è +__THROW +; + +942 * + $sbrk + ( +šŒ_t + +__d– +è +__THROW +; + +946 #ifdeà +__USE_MISC + + +957  + $sysÿÎ + ( +__sy¢o +, ...è +__THROW +; + +962 #ià( +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED +è&& !defšed +F_LOCK + + +974  + #F_ULOCK + 0 + + ) + +975  + #F_LOCK + 1 + + ) + +976  + #F_TLOCK + 2 + + ) + +977  + #F_TEST + 3 + + ) + +979 #iâdeà +__USE_FILE_OFFSET64 + + +980  + `lockf + ( +__fd +,  +__cmd +, +__off_t + +__Ën +); + +982 #ifdeà +__REDIRECT + + +983  + `__REDIRECT + ( +lockf +, ( +__fd +,  +__cmd +, +__off64_t + +__Ën +), + +984 +lockf64 +); + +986  + #lockf + +lockf64 + + + ) + +989 #ifdeà +__USE_LARGEFILE64 + + +990  + `lockf64 + ( +__fd +,  +__cmd +, +__off64_t + +__Ën +); + +995 #ifdeà +__USE_GNU + + +1000  + #TEMP_FAILURE_RETRY +( +ex´essiÚ +) \ + +1001 ( +__ex‹nsiÚ__ + \ + +1002 ({  +__»suÉ +; \ + +1003 dØ +__»suÉ + = (è( +ex´essiÚ +); \ + +1004  +__»suÉ + =ð-1L && +”ºo + =ð +EINTR +); \ + +1005 +__»suÉ +; + } +})) + + ) + +1008 #ià +defšed + +__USE_POSIX199309 + || defšed +__USE_UNIX98 + + +1011  + $fd©async + ( +__fždes +è +__THROW +; + +1017 #ifdef +__USE_XOPEN + + +1019 * + $üy± + ( +__cÚ¡ + * +__key +, __cÚ¡ * +__§É +) + +1020 +__THROW + + `__nÚnuÎ + ((1, 2)); + +1024  + $’üy± + (* +__block +,  +__edæag +è +__THROW + + `__nÚnuÎ + ((1)); + +1031  + $swab + ( +__cÚ¡ + * +__»¡riù + +__äom +, *__»¡riù +__to +, + +1032 +ssize_t + +__n +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +1038 #ifdeà +__USE_XOPEN + + +1040 * + $ù”mid + (* +__s +è +__THROW + + `__nÚnuÎ + ((1)); + +1043 +__END_DECLS + + + @/usr/include/alloca.h + +19 #iâdef +_ALLOCA_H + + +20  + #_ALLOCA_H + 1 + + ) + +22  + ~<ã©u»s.h +> + +24  + #__Ãed_size_t + + + ) + +25  + ~<¡ddef.h +> + +27 + g__BEGIN_DECLS + + +30 #undeà +®loÿ + + +33 * + $®loÿ + ( +size_t + +__size +è +__THROW +; + +35 #ifdef +__GNUC__ + + +36  + #®loÿ +( +size +è + `__bužtš_®loÿ + (size) + + ) + +39 +__END_DECLS + + + @/usr/include/asm-i386/atomic.h + +1 #iâdeà +__ARCH_I386_ATOMIC__ + + +2  + #__ARCH_I386_ATOMIC__ + + + ) + +10 #ifdeà +CONFIG_SMP + + +11  + #LOCK + "lock ; " + + ) + +13  + #LOCK + "" + + ) + +21 ¡ruù { vÞ©ž + mcouÁ” +; } + t©omic_t +; + +23  + #ATOMIC_INIT +( +i +è{ (iè} + + ) + +31  + #©omic_»ad +( +v +è((v)-> +couÁ” +) + + ) + +40  + #©omic_£t +( +v +, +i +è(((v)-> +couÁ” +èð(i)) + + ) + +49  +__šlše__ +  + $©omic_add +( +i +, +©omic_t + * +v +) + +51 +__asm__ + + `__vÞ©že__ +( + +52 +LOCK + "addl %1,%0" + +53 :"=m" ( +v +-> +couÁ” +) + +54 :"œ" ( +i +), "m" ( +v +-> +couÁ” +)); + +55 + } +} + +64  +__šlše__ +  + $©omic_sub +( +i +, +©omic_t + * +v +) + +66 +__asm__ + + `__vÞ©že__ +( + +67 +LOCK + "subl %1,%0" + +68 :"=m" ( +v +-> +couÁ” +) + +69 :"œ" ( +i +), "m" ( +v +-> +couÁ” +)); + +70 + } +} + +81  +__šlše__ +  + $©omic_sub_ªd_‹¡ +( +i +, +©omic_t + * +v +) + +83  +c +; + +85 +__asm__ + + `__vÞ©že__ +( + +86 +LOCK + "subl %2,%0; sete %1" + +87 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +88 :"œ" ( +i +), "m" ( +v +-> +couÁ” +) : "memory"); + +89  +c +; + +90 + } +} + +98  +__šlše__ +  + $©omic_šc +( +©omic_t + * +v +) + +100 +__asm__ + + `__vÞ©že__ +( + +101 +LOCK + "incl %0" + +102 :"=m" ( +v +-> +couÁ” +) + +103 :"m" ( +v +-> +couÁ” +)); + +104 + } +} + +112  +__šlše__ +  + $©omic_dec +( +©omic_t + * +v +) + +114 +__asm__ + + `__vÞ©že__ +( + +115 +LOCK + "decl %0" + +116 :"=m" ( +v +-> +couÁ” +) + +117 :"m" ( +v +-> +couÁ” +)); + +118 + } +} + +128  +__šlše__ +  + $©omic_dec_ªd_‹¡ +( +©omic_t + * +v +) + +130  +c +; + +132 +__asm__ + + `__vÞ©že__ +( + +133 +LOCK + "decl %0; sete %1" + +134 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +135 :"m" ( +v +-> +couÁ” +) : "memory"); + +136  +c + != 0; + +137 + } +} + +147  +__šlše__ +  + $©omic_šc_ªd_‹¡ +( +©omic_t + * +v +) + +149  +c +; + +151 +__asm__ + + `__vÞ©že__ +( + +152 +LOCK + "incl %0; sete %1" + +153 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +154 :"m" ( +v +-> +couÁ” +) : "memory"); + +155  +c + != 0; + +156 + } +} + +167  +__šlše__ +  + $©omic_add_Ãg©ive +( +i +, +©omic_t + * +v +) + +169  +c +; + +171 +__asm__ + + `__vÞ©že__ +( + +172 +LOCK + "addl %2,%0; sets %1" + +173 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +174 :"œ" ( +i +), "m" ( +v +-> +couÁ” +) : "memory"); + +175  +c +; + +176 + } +} + +185  +__šlše__ +  + $©omic_add_»tuº +( +i +, +©omic_t + * +v +) + +187  +__i +; + +188 #ifdeà +CONFIG_M386 + + +189 if( + `uÆik–y +( +boÙ_ýu_d©a +. +x86 +==3)) + +190  +no_xadd +; + +193 +__i + = +i +; + +194 +__asm__ + + `__vÞ©že__ +( + +195 +LOCK + "xaddl %0, %1;" + +196 :"ô"( +i +) + +197 :"m"( +v +-> +couÁ” +), "0"( +i +)); + +198  +i + + +__i +; + +200 #ifdeà +CONFIG_M386 + + +201 +no_xadd +: + +202 + `loÿl_œq_di§bË +(); + +203 +__i + = + `©omic_»ad +( +v +); + +204 + `©omic_£t +( +v +, +i + + +__i +); + +205 + `loÿl_œq_’abË +(); + +206  +i + + +__i +; + +208 + } +} + +210  +__šlše__ +  + $©omic_sub_»tuº +( +i +, +©omic_t + * +v +) + +212  + `©omic_add_»tuº +(- +i +, +v +); + +213 + } +} + +215  + #©omic_šc_»tuº +( +v +è( + `©omic_add_»tuº +(1,v)) + + ) + +216  + #©omic_dec_»tuº +( +v +è( + `©omic_sub_»tuº +(1,v)) + + ) + +219  + #©omic_þ—r_mask +( +mask +, +addr +) \ + +220 +__asm__ + + `__vÞ©že__ +( +LOCK + "andl %0,%1" \ + +221 : : "r" (~( +mask +)),"m" (* +addr +è: "memÜy") + + ) + +223  + #©omic_£t_mask +( +mask +, +addr +) \ + +224 +__asm__ + + `__vÞ©že__ +( +LOCK + "orl %0,%1" \ + +225 : : "r" ( +mask +),"m" (*( +addr +)è: "memÜy") + + ) + +228  + #smp_mb__befÜe_©omic_dec +(è + `b¬r›r +() + + ) + +229  + #smp_mb__aá”_©omic_dec +(è + `b¬r›r +() + + ) + +230  + #smp_mb__befÜe_©omic_šc +(è + `b¬r›r +() + + ) + +231  + #smp_mb__aá”_©omic_šc +(è + `b¬r›r +() + + ) + + @/usr/include/asm-i386/bitops.h + +1 #iâdeà +_I386_BITOPS_H + + +2  + #_I386_BITOPS_H + + + ) + +18 #ià0 && +defšed +( +CONFIG_SMP +) + +19  + #LOCK_PREFIX + "lock ; " + + ) + +21  + #LOCK_PREFIX + "" + + ) + +24  + #ADDR + (*(vÞ©ž*è +addr +) + + ) + +41  +šlše +  + $£t_b™ +( +Ä +, vÞ©ž* +addr +) + +43 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +45 :"=m" ( +ADDR +) + +46 :"Ir" ( +Ä +)); + +47 + } +} + +58  +šlše +  + $__£t_b™ +( +Ä +, vÞ©ž* +addr +) + +60 + `__asm__ +( + +62 :"=m" ( +ADDR +) + +63 :"Ir" ( +Ä +)); + +64 + } +} + +76  +šlše +  + $þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +78 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +80 :"=m" ( +ADDR +) + +81 :"Ir" ( +Ä +)); + +82 + } +} + +84  +šlše +  + $__þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +86 +__asm__ + + `__vÞ©že__ +( + +88 :"=m" ( +ADDR +) + +89 :"Ir" ( +Ä +)); + +90 + } +} + +101  +šlše +  + $__chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +103 +__asm__ + + `__vÞ©že__ +( + +105 :"=m" ( +ADDR +) + +106 :"Ir" ( +Ä +)); + +107 + } +} + +119  +šlše +  + $chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +121 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +123 :"=m" ( +ADDR +) + +124 :"Ir" ( +Ä +)); + +125 + } +} + +136  +šlše +  + $‹¡_ªd_£t_b™ +( +Ä +, vÞ©ž* +addr +) + +138  +Þdb™ +; + +140 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +142 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +143 :"Ir" ( +Ä +) : "memory"); + +144  +Þdb™ +; + +145 + } +} + +156  +šlše +  + $__‹¡_ªd_£t_b™ +( +Ä +, vÞ©ž* +addr +) + +158  +Þdb™ +; + +160 + `__asm__ +( + +162 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +163 :"Ir" ( +Ä +)); + +164  +Þdb™ +; + +165 + } +} + +176  +šlše +  + $‹¡_ªd_þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +178  +Þdb™ +; + +180 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +182 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +183 :"Ir" ( +Ä +) : "memory"); + +184  +Þdb™ +; + +185 + } +} + +196  +šlše +  + $__‹¡_ªd_þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +198  +Þdb™ +; + +200 + `__asm__ +( + +202 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +203 :"Ir" ( +Ä +)); + +204  +Þdb™ +; + +205 + } +} + +208  +šlše +  + $__‹¡_ªd_chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +210  +Þdb™ +; + +212 +__asm__ + + `__vÞ©že__ +( + +214 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +215 :"Ir" ( +Ä +) : "memory"); + +216  +Þdb™ +; + +217 + } +} + +227  +šlše +  + $‹¡_ªd_chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +229  +Þdb™ +; + +231 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +233 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +234 :"Ir" ( +Ä +) : "memory"); + +235  +Þdb™ +; + +236 + } +} + +244  +‹¡_b™ +( +Ä +, cÚ¡ vÞ©ž* +addr +); + +247  +šlše +  + $cÚ¡ªt_‹¡_b™ +( +Ä +, cÚ¡ vÞ©ž* +addr +) + +249  ((1UL << ( +Ä + & 31)è& ( +addr +[nr >> 5])) != 0; + +250 + } +} + +252  +šlše +  + $v¬ŸbË_‹¡_b™ +( +Ä +, cÚ¡ vÞ©ž* +addr +) + +254  +Þdb™ +; + +256 +__asm__ + + `__vÞ©že__ +( + +258 :"ô" ( +Þdb™ +) + +259 :"m" ( +ADDR +),"Ir" ( +Ä +)); + +260  +Þdb™ +; + +261 + } +} + +263  + #‹¡_b™ +( +Ä +, +addr +) \ + +264 ( + `__bužtš_cÚ¡ªt_p +( +Ä +) ? \ + +265 + `cÚ¡ªt_‹¡_b™ +(( +Ä +),( +addr +)) : \ + +266 + `v¬ŸbË_‹¡_b™ +(( +Ä +),( +addr +))) + + ) + +268 #undeà +ADDR + + +278  +šlše +  + $fšd_fœ¡_z”o_b™ +(cÚ¡ * +addr +,  +size +) + +280  +d0 +, +d1 +, +d2 +; + +281  +»s +; + +283 ià(! +size +) + +286 +__asm__ + + `__vÞ©že__ +( + +297 :"=d" ( +»s +), "=&c" ( +d0 +), "=&D" ( +d1 +), "=&a" ( +d2 +) + +298 :"1" (( +size + + 31è>> 5), "2" ( +addr +), "b" (addr) : "memory"); + +299  +»s +; + +300 + } +} + +308  +fšd_Ãxt_z”o_b™ +(cÚ¡ * +addr +,  +size +,  +off£t +); + +318  +šlše +  + $fšd_fœ¡_b™ +(cÚ¡ * +addr +,  +size +) + +320  +d0 +, +d1 +; + +321  +»s +; + +324 +__asm__ + + `__vÞ©že__ +( + +333 :"÷" ( +»s +), "=&c" ( +d0 +), "=&D" ( +d1 +) + +334 :"1" (( +size + + 31è>> 5), "2" ( +addr +), "b" (addr) : "memory"); + +335  +»s +; + +336 + } +} + +344  +fšd_Ãxt_b™ +(cÚ¡ * +addr +,  +size +,  +off£t +); + +352  +šlše +  + $ffz +( +wÜd +) + +354 + `__asm__ +("bsfl %1,%0" + +355 :"ô" ( +wÜd +) + +356 :"r" (~ +wÜd +)); + +357  +wÜd +; + +358 + } +} + +366  +šlše +  + $__ffs +( +wÜd +) + +368 + `__asm__ +("bsfl %1,%0" + +369 :"ô" ( +wÜd +) + +370 :"rm" ( +wÜd +)); + +371  +wÜd +; + +372 + } +} + +378  + #æs +( +x +è + `g’”ic_æs +(x) + + ) + + @/usr/include/asm-i386/byteorder.h + +1 #iâdeà +_I386_BYTEORDER_H + + +2  + #_I386_BYTEORDER_H + + + ) + +4  + ~ + + @/usr/include/asm-i386/semaphore.h + +1 #iâdeà +_I386_SEMAPHORE_H + + +2  + #_I386_SEMAPHORE_H + + + ) + +4  + ~ + + @/usr/include/asm-x86_64/atomic.h + +1 #iâdeà +__ARCH_X86_64_ATOMIC__ + + +2  + #__ARCH_X86_64_ATOMIC__ + + + ) + +12 #ifdeà +CONFIG_SMP + + +13  + #LOCK + "lock ; " + + ) + +15  + #LOCK + "" + + ) + +23 ¡ruù { vÞ©ž + mcouÁ” +; } + t©omic_t +; + +25  + #ATOMIC_INIT +( +i +è{ (iè} + + ) + +33  + #©omic_»ad +( +v +è((v)-> +couÁ” +) + + ) + +42  + #©omic_£t +( +v +, +i +è(((v)-> +couÁ” +èð(i)) + + ) + +51  +__šlše__ +  + $©omic_add +( +i +, +©omic_t + * +v +) + +53 +__asm__ + + `__vÞ©že__ +( + +54 +LOCK + "addl %1,%0" + +55 :"=m" ( +v +-> +couÁ” +) + +56 :"œ" ( +i +), "m" ( +v +-> +couÁ” +)); + +57 + } +} + +66  +__šlše__ +  + $©omic_sub +( +i +, +©omic_t + * +v +) + +68 +__asm__ + + `__vÞ©že__ +( + +69 +LOCK + "subl %1,%0" + +70 :"=m" ( +v +-> +couÁ” +) + +71 :"œ" ( +i +), "m" ( +v +-> +couÁ” +)); + +72 + } +} + +83  +__šlše__ +  + $©omic_sub_ªd_‹¡ +( +i +, +©omic_t + * +v +) + +85  +c +; + +87 +__asm__ + + `__vÞ©že__ +( + +88 +LOCK + "subl %2,%0; sete %1" + +89 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +90 :"œ" ( +i +), "m" ( +v +-> +couÁ” +) : "memory"); + +91  +c +; + +92 + } +} + +100  +__šlše__ +  + $©omic_šc +( +©omic_t + * +v +) + +102 +__asm__ + + `__vÞ©že__ +( + +103 +LOCK + "incl %0" + +104 :"=m" ( +v +-> +couÁ” +) + +105 :"m" ( +v +-> +couÁ” +)); + +106 + } +} + +114  +__šlše__ +  + $©omic_dec +( +©omic_t + * +v +) + +116 +__asm__ + + `__vÞ©že__ +( + +117 +LOCK + "decl %0" + +118 :"=m" ( +v +-> +couÁ” +) + +119 :"m" ( +v +-> +couÁ” +)); + +120 + } +} + +130  +__šlše__ +  + $©omic_dec_ªd_‹¡ +( +©omic_t + * +v +) + +132  +c +; + +134 +__asm__ + + `__vÞ©že__ +( + +135 +LOCK + "decl %0; sete %1" + +136 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +137 :"m" ( +v +-> +couÁ” +) : "memory"); + +138  +c + != 0; + +139 + } +} + +149  +__šlše__ +  + $©omic_šc_ªd_‹¡ +( +©omic_t + * +v +) + +151  +c +; + +153 +__asm__ + + `__vÞ©že__ +( + +154 +LOCK + "incl %0; sete %1" + +155 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +156 :"m" ( +v +-> +couÁ” +) : "memory"); + +157  +c + != 0; + +158 + } +} + +169  +__šlše__ +  + $©omic_add_Ãg©ive +( +i +, +©omic_t + * +v +) + +171  +c +; + +173 +__asm__ + + `__vÞ©že__ +( + +174 +LOCK + "addl %2,%0; sets %1" + +175 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +176 :"œ" ( +i +), "m" ( +v +-> +couÁ” +) : "memory"); + +177  +c +; + +178 + } +} + +182 ¡ruù { vÞ©ž + mcouÁ” +; } + t©omic64_t +; + +184  + #ATOMIC64_INIT +( +i +è{ (iè} + + ) + +193  + #©omic64_»ad +( +v +è((v)-> +couÁ” +) + + ) + +202  + #©omic64_£t +( +v +, +i +è(((v)-> +couÁ” +èð(i)) + + ) + +211  +__šlše__ +  + $©omic64_add +( +i +, +©omic64_t + * +v +) + +213 +__asm__ + + `__vÞ©že__ +( + +214 +LOCK + "addq %1,%0" + +215 :"=m" ( +v +-> +couÁ” +) + +216 :"œ" ( +i +), "m" ( +v +-> +couÁ” +)); + +217 + } +} + +226  +__šlše__ +  + $©omic64_sub +( +i +, +©omic64_t + * +v +) + +228 +__asm__ + + `__vÞ©že__ +( + +229 +LOCK + "subq %1,%0" + +230 :"=m" ( +v +-> +couÁ” +) + +231 :"œ" ( +i +), "m" ( +v +-> +couÁ” +)); + +232 + } +} + +243  +__šlše__ +  + $©omic64_sub_ªd_‹¡ +( +i +, +©omic64_t + * +v +) + +245  +c +; + +247 +__asm__ + + `__vÞ©že__ +( + +248 +LOCK + "subq %2,%0; sete %1" + +249 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +250 :"œ" ( +i +), "m" ( +v +-> +couÁ” +) : "memory"); + +251  +c +; + +252 + } +} + +260  +__šlše__ +  + $©omic64_šc +( +©omic64_t + * +v +) + +262 +__asm__ + + `__vÞ©že__ +( + +263 +LOCK + "incq %0" + +264 :"=m" ( +v +-> +couÁ” +) + +265 :"m" ( +v +-> +couÁ” +)); + +266 + } +} + +274  +__šlše__ +  + $©omic64_dec +( +©omic64_t + * +v +) + +276 +__asm__ + + `__vÞ©že__ +( + +277 +LOCK + "decq %0" + +278 :"=m" ( +v +-> +couÁ” +) + +279 :"m" ( +v +-> +couÁ” +)); + +280 + } +} + +290  +__šlše__ +  + $©omic64_dec_ªd_‹¡ +( +©omic64_t + * +v +) + +292  +c +; + +294 +__asm__ + + `__vÞ©že__ +( + +295 +LOCK + "decq %0; sete %1" + +296 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +297 :"m" ( +v +-> +couÁ” +) : "memory"); + +298  +c + != 0; + +299 + } +} + +309  +__šlše__ +  + $©omic64_šc_ªd_‹¡ +( +©omic64_t + * +v +) + +311  +c +; + +313 +__asm__ + + `__vÞ©že__ +( + +314 +LOCK + "incq %0; sete %1" + +315 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +316 :"m" ( +v +-> +couÁ” +) : "memory"); + +317  +c + != 0; + +318 + } +} + +329  +__šlše__ +  + $©omic64_add_Ãg©ive +( +i +, +©omic64_t + * +v +) + +331  +c +; + +333 +__asm__ + + `__vÞ©že__ +( + +334 +LOCK + "addq %2,%0; sets %1" + +335 :"=m" ( +v +-> +couÁ” +), "=qm" ( +c +) + +336 :"œ" ( +i +), "m" ( +v +-> +couÁ” +) : "memory"); + +337  +c +; + +338 + } +} + +347  +__šlše__ +  + $©omic_add_»tuº +( +i +, +©omic_t + * +v +) + +349  +__i + = +i +; + +350 +__asm__ + + `__vÞ©že__ +( + +351 +LOCK + "xaddl %0, %1;" + +352 :"ô"( +i +) + +353 :"m"( +v +-> +couÁ” +), "0"( +i +)); + +354  +i + + +__i +; + +355 + } +} + +357  +__šlše__ +  + $©omic_sub_»tuº +( +i +, +©omic_t + * +v +) + +359  + `©omic_add_»tuº +(- +i +, +v +); + +360 + } +} + +362  + #©omic_šc_»tuº +( +v +è( + `©omic_add_»tuº +(1,v)) + + ) + +363  + #©omic_dec_»tuº +( +v +è( + `©omic_sub_»tuº +(1,v)) + + ) + +366  + #©omic_þ—r_mask +( +mask +, +addr +) \ + +367 +__asm__ + + `__vÞ©že__ +( +LOCK + "andl %0,%1" \ + +368 : : "r" (~( +mask +)),"m" (* +addr +è: "memÜy") + + ) + +370  + #©omic_£t_mask +( +mask +, +addr +) \ + +371 +__asm__ + + `__vÞ©že__ +( +LOCK + "orl %0,%1" \ + +372 : : "r" (() +mask +),"m" (*( +addr +)è: "memÜy") + + ) + +375  + #smp_mb__befÜe_©omic_dec +(è + `b¬r›r +() + + ) + +376  + #smp_mb__aá”_©omic_dec +(è + `b¬r›r +() + + ) + +377  + #smp_mb__befÜe_©omic_šc +(è + `b¬r›r +() + + ) + +378  + #smp_mb__aá”_©omic_šc +(è + `b¬r›r +() + + ) + + @/usr/include/asm-x86_64/bitops.h + +1 #iâdeà +_X86_64_BITOPS_H + + +2  + #_X86_64_BITOPS_H + + + ) + +11 #ià0 && +defšed +( +CONFIG_SMP +) + +12  + #LOCK_PREFIX + "lock ; " + + ) + +14  + #LOCK_PREFIX + "" + + ) + +17  + #ADDR + (*(vÞ©ž*è +addr +) + + ) + +29  +__šlše__ +  + $£t_b™ +( +Ä +, vÞ©ž* +addr +) + +31 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +33 :"=m" ( +ADDR +) + +34 :"dIr" ( +Ä +) : "memory"); + +35 + } +} + +46  +__šlše__ +  + $__£t_b™ +( +Ä +, vÞ©ž* +addr +) + +48 +__asm__ + volatile( + +50 :"=m" ( +ADDR +) + +51 :"dIr" ( +Ä +) : "memory"); + +52 + } +} + +64  +__šlše__ +  + $þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +66 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +68 :"=m" ( +ADDR +) + +69 :"dIr" ( +Ä +)); + +70 + } +} + +72  +__šlše__ +  + $__þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +74 +__asm__ + + `__vÞ©že__ +( + +76 :"=m" ( +ADDR +) + +77 :"dIr" ( +Ä +)); + +78 + } +} + +89  +__šlše__ +  + $__chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +91 +__asm__ + + `__vÞ©že__ +( + +93 :"=m" ( +ADDR +) + +94 :"dIr" ( +Ä +)); + +95 + } +} + +106  +__šlše__ +  + $chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +108 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +110 :"=m" ( +ADDR +) + +111 :"dIr" ( +Ä +)); + +112 + } +} + +122  +__šlše__ +  + $‹¡_ªd_£t_b™ +( +Ä +, vÞ©ž* +addr +) + +124  +Þdb™ +; + +126 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +128 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +129 :"dIr" ( +Ä +) : "memory"); + +130  +Þdb™ +; + +131 + } +} + +142  +__šlše__ +  + $__‹¡_ªd_£t_b™ +( +Ä +, vÞ©ž* +addr +) + +144  +Þdb™ +; + +146 + `__asm__ +( + +148 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +149 :"dIr" ( +Ä +)); + +150  +Þdb™ +; + +151 + } +} + +161  +__šlše__ +  + $‹¡_ªd_þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +163  +Þdb™ +; + +165 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +167 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +168 :"dIr" ( +Ä +) : "memory"); + +169  +Þdb™ +; + +170 + } +} + +181  +__šlše__ +  + $__‹¡_ªd_þ—r_b™ +( +Ä +, vÞ©ž* +addr +) + +183  +Þdb™ +; + +185 + `__asm__ +( + +187 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +188 :"dIr" ( +Ä +)); + +189  +Þdb™ +; + +190 + } +} + +193  +__šlše__ +  + $__‹¡_ªd_chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +195  +Þdb™ +; + +197 +__asm__ + + `__vÞ©že__ +( + +199 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +200 :"dIr" ( +Ä +) : "memory"); + +201  +Þdb™ +; + +202 + } +} + +212  +__šlše__ +  + $‹¡_ªd_chªge_b™ +( +Ä +, vÞ©ž* +addr +) + +214  +Þdb™ +; + +216 +__asm__ + + `__vÞ©že__ +Ð +LOCK_PREFIX + + +218 :"ô" ( +Þdb™ +),"=m" ( +ADDR +) + +219 :"dIr" ( +Ä +) : "memory"); + +220  +Þdb™ +; + +221 + } +} + +229  +‹¡_b™ +( +Ä +, cÚ¡ vÞ©ž* +addr +); + +232  +__šlše__ +  + $cÚ¡ªt_‹¡_b™ +( +Ä +, cÚ¡ vÞ©ž* +addr +) + +234  ((1UL << ( +Ä + & 31)è& (((cÚ¡ vÞ©ž*è +addr +)[nr >> 5])) != 0; + +235 + } +} + +237  +__šlše__ +  + $v¬ŸbË_‹¡_b™ +( +Ä +, vÞ©žcÚ¡ * +addr +) + +239  +Þdb™ +; + +241 +__asm__ + + `__vÞ©že__ +( + +243 :"ô" ( +Þdb™ +) + +244 :"m" ( +ADDR +),"dIr" ( +Ä +)); + +245  +Þdb™ +; + +246 + } +} + +248  + #‹¡_b™ +( +Ä +, +addr +) \ + +249 ( + `__bužtš_cÚ¡ªt_p +( +Ä +) ? \ + +250 + `cÚ¡ªt_‹¡_b™ +(( +Ä +),( +addr +)) : \ + +251 + `v¬ŸbË_‹¡_b™ +(( +Ä +),( +addr +))) + + ) + +253 #undeà +ADDR + + +255  +fšd_fœ¡_z”o_b™ +(cÚ¡ * +addr +,  +size +); + +256  +fšd_Ãxt_z”o_b™ + (cÚ¡ * +addr +,  +size +,  +off£t +); + +257  +fšd_fœ¡_b™ +(cÚ¡ * +addr +,  +size +); + +258  +fšd_Ãxt_b™ +(cÚ¡ * +addr +,  +size +,  +off£t +); + +261  +šlše +  + $__sÿnb™ +( +v® +,  +max +) + +263 + `asm +("bsfq %1,%0 ; cmovz %2,%0" : "=&r" ( +v® +è: "r" (v®), "r" ( +max +)); + +264  +v® +; + +265 + } +} + +267  + #fšd_fœ¡_b™ +( +addr +, +size +) \ + +268 (( + `__bužtš_cÚ¡ªt_p +( +size +è&& (sizeè<ð +BITS_PER_LONG + ? \ + +269 ( + `__sÿnb™ +(*(*) +addr +,( +size +))) : \ + +270 + `fšd_fœ¡_b™ +( +addr +, +size +))) + + ) + +272  + #fšd_Ãxt_b™ +( +addr +, +size +, +off +) \ + +273 (( + `__bužtš_cÚ¡ªt_p +( +size +è&& (sizeè<ð +BITS_PER_LONG + ? \ + +274 (( +off +è+ ( + `__sÿnb™ +((*(*) +addr +è>> (off),( +size +)-(off)))) : \ + +275 + `fšd_Ãxt_b™ +( +addr +, +size +, +off +))) + + ) + +277  + #fšd_fœ¡_z”o_b™ +( +addr +, +size +) \ + +278 (( + `__bužtš_cÚ¡ªt_p +( +size +è&& (sizeè<ð +BITS_PER_LONG + ? \ + +279 ( + `__sÿnb™ +(~*(*) +addr +,( +size +))) : \ + +280 + `fšd_fœ¡_z”o_b™ +( +addr +, +size +))) + + ) + +282  + #fšd_Ãxt_z”o_b™ +( +addr +, +size +, +off +) \ + +283 (( + `__bužtš_cÚ¡ªt_p +( +size +è&& (sizeè<ð +BITS_PER_LONG + ? \ + +284 (( +off +)+( + `__sÿnb™ +(~(((*(*) +addr +)è>> (off)),( +size +)-(off)))) : \ + +285 + `fšd_Ãxt_z”o_b™ +( +addr +, +size +, +off +))) + + ) + +287  +šlše +  + $£t_b™_¡ršg +(* +b™m­ +,  +i +, + +288  +Ën +) + +290  +’d + = +i + + +Ën +; + +291  +i + < +’d +) { + +292 + `__£t_b™ +( +i +, +b™m­ +); + +293 +i +++; + +295 + } +} + +297  +šlše +  + $__þ—r_b™_¡ršg +(* +b™m­ +,  +i +, + +298  +Ën +) + +300  +’d + = +i + + +Ën +; + +301  +i + < +’d +) { + +302 + `__þ—r_b™ +( +i +, +b™m­ +); + +303 +i +++; + +305 + } +} + +313  +__šlše__ +  + $ffz +( +wÜd +) + +315 + `__asm__ +("bsfq %1,%0" + +316 :"ô" ( +wÜd +) + +317 :"r" (~ +wÜd +)); + +318  +wÜd +; + +319 + } +} + +327  +__šlše__ +  + $__ffs +( +wÜd +) + +329 + `__asm__ +("bsfq %1,%0" + +330 :"ô" ( +wÜd +) + +331 :"rm" ( +wÜd +)); + +332  +wÜd +; + +333 + } +} + + @/usr/include/asm-x86_64/byteorder.h + +1 #iâdeà +_X86_64_BYTEORDER_H + + +2  + #_X86_64_BYTEORDER_H + + + ) + +4  + ~ + + @/usr/include/asm-x86_64/semaphore.h + +1 #iâdeà +_X86_64_SEMAPHORE_H + + +2  + #_X86_64_SEMAPHORE_H + + + ) + +4  + ~ + + @/usr/include/asm/cache.h + +5 #iâdeà +__i386STUB__CACHE_H__ + + +6  + #__i386STUB__CACHE_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/fcntl.h + +5 #iâdeà +__i386STUB__FCNTL_H__ + + +6  + #__i386STUB__FCNTL_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/ioctl.h + +5 #iâdeà +__i386STUB__IOCTL_H__ + + +6  + #__i386STUB__IOCTL_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/linkage.h + +5 #iâdeà +__i386STUB__LINKAGE_H__ + + +6  + #__i386STUB__LINKAGE_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/types.h + +5 #iâdeà +__i386STUB__TYPES_H__ + + +6  + #__i386STUB__TYPES_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/bits/confname.h + +21 #iâdeà +_UNISTD_H + + +28 + m_PC_LINK_MAX +, + +29  + #_PC_LINK_MAX + +_PC_LINK_MAX + + + ) + +30 + m_PC_MAX_CANON +, + +31  + #_PC_MAX_CANON + +_PC_MAX_CANON + + + ) + +32 + m_PC_MAX_INPUT +, + +33  + #_PC_MAX_INPUT + +_PC_MAX_INPUT + + + ) + +34 + m_PC_NAME_MAX +, + +35  + #_PC_NAME_MAX + +_PC_NAME_MAX + + + ) + +36 + m_PC_PATH_MAX +, + +37  + #_PC_PATH_MAX + +_PC_PATH_MAX + + + ) + +38 + m_PC_PIPE_BUF +, + +39  + #_PC_PIPE_BUF + +_PC_PIPE_BUF + + + ) + +40 + m_PC_CHOWN_RESTRICTED +, + +41  + #_PC_CHOWN_RESTRICTED + +_PC_CHOWN_RESTRICTED + + + ) + +42 + m_PC_NO_TRUNC +, + +43  + #_PC_NO_TRUNC + +_PC_NO_TRUNC + + + ) + +44 + m_PC_VDISABLE +, + +45  + #_PC_VDISABLE + +_PC_VDISABLE + + + ) + +46 + m_PC_SYNC_IO +, + +47  + #_PC_SYNC_IO + +_PC_SYNC_IO + + + ) + +48 + m_PC_ASYNC_IO +, + +49  + #_PC_ASYNC_IO + +_PC_ASYNC_IO + + + ) + +50 + m_PC_PRIO_IO +, + +51  + #_PC_PRIO_IO + +_PC_PRIO_IO + + + ) + +52 + m_PC_SOCK_MAXBUF +, + +53  + #_PC_SOCK_MAXBUF + +_PC_SOCK_MAXBUF + + + ) + +54 + m_PC_FILESIZEBITS +, + +55  + #_PC_FILESIZEBITS + +_PC_FILESIZEBITS + + + ) + +56 + m_PC_REC_INCR_XFER_SIZE +, + +57  + #_PC_REC_INCR_XFER_SIZE + +_PC_REC_INCR_XFER_SIZE + + + ) + +58 + m_PC_REC_MAX_XFER_SIZE +, + +59  + #_PC_REC_MAX_XFER_SIZE + +_PC_REC_MAX_XFER_SIZE + + + ) + +60 + m_PC_REC_MIN_XFER_SIZE +, + +61  + #_PC_REC_MIN_XFER_SIZE + +_PC_REC_MIN_XFER_SIZE + + + ) + +62 + m_PC_REC_XFER_ALIGN +, + +63  + #_PC_REC_XFER_ALIGN + +_PC_REC_XFER_ALIGN + + + ) + +64 + m_PC_ALLOC_SIZE_MIN +, + +65  + #_PC_ALLOC_SIZE_MIN + +_PC_ALLOC_SIZE_MIN + + + ) + +66 + m_PC_SYMLINK_MAX +, + +67  + #_PC_SYMLINK_MAX + +_PC_SYMLINK_MAX + + + ) + +68 + m_PC_2_SYMLINKS + + +69  + #_PC_2_SYMLINKS + +_PC_2_SYMLINKS + + + ) + +75 + m_SC_ARG_MAX +, + +76  + #_SC_ARG_MAX + +_SC_ARG_MAX + + + ) + +77 + m_SC_CHILD_MAX +, + +78  + #_SC_CHILD_MAX + +_SC_CHILD_MAX + + + ) + +79 + m_SC_CLK_TCK +, + +80  + #_SC_CLK_TCK + +_SC_CLK_TCK + + + ) + +81 + m_SC_NGROUPS_MAX +, + +82  + #_SC_NGROUPS_MAX + +_SC_NGROUPS_MAX + + + ) + +83 + m_SC_OPEN_MAX +, + +84  + #_SC_OPEN_MAX + +_SC_OPEN_MAX + + + ) + +85 + m_SC_STREAM_MAX +, + +86  + #_SC_STREAM_MAX + +_SC_STREAM_MAX + + + ) + +87 + m_SC_TZNAME_MAX +, + +88  + #_SC_TZNAME_MAX + +_SC_TZNAME_MAX + + + ) + +89 + m_SC_JOB_CONTROL +, + +90  + #_SC_JOB_CONTROL + +_SC_JOB_CONTROL + + + ) + +91 + m_SC_SAVED_IDS +, + +92  + #_SC_SAVED_IDS + +_SC_SAVED_IDS + + + ) + +93 + m_SC_REALTIME_SIGNALS +, + +94  + #_SC_REALTIME_SIGNALS + +_SC_REALTIME_SIGNALS + + + ) + +95 + m_SC_PRIORITY_SCHEDULING +, + +96  + #_SC_PRIORITY_SCHEDULING + +_SC_PRIORITY_SCHEDULING + + + ) + +97 + m_SC_TIMERS +, + +98  + #_SC_TIMERS + +_SC_TIMERS + + + ) + +99 + m_SC_ASYNCHRONOUS_IO +, + +100  + #_SC_ASYNCHRONOUS_IO + +_SC_ASYNCHRONOUS_IO + + + ) + +101 + m_SC_PRIORITIZED_IO +, + +102  + #_SC_PRIORITIZED_IO + +_SC_PRIORITIZED_IO + + + ) + +103 + m_SC_SYNCHRONIZED_IO +, + +104  + #_SC_SYNCHRONIZED_IO + +_SC_SYNCHRONIZED_IO + + + ) + +105 + m_SC_FSYNC +, + +106  + #_SC_FSYNC + +_SC_FSYNC + + + ) + +107 + m_SC_MAPPED_FILES +, + +108  + #_SC_MAPPED_FILES + +_SC_MAPPED_FILES + + + ) + +109 + m_SC_MEMLOCK +, + +110  + #_SC_MEMLOCK + +_SC_MEMLOCK + + + ) + +111 + m_SC_MEMLOCK_RANGE +, + +112  + #_SC_MEMLOCK_RANGE + +_SC_MEMLOCK_RANGE + + + ) + +113 + m_SC_MEMORY_PROTECTION +, + +114  + #_SC_MEMORY_PROTECTION + +_SC_MEMORY_PROTECTION + + + ) + +115 + m_SC_MESSAGE_PASSING +, + +116  + #_SC_MESSAGE_PASSING + +_SC_MESSAGE_PASSING + + + ) + +117 + m_SC_SEMAPHORES +, + +118  + #_SC_SEMAPHORES + +_SC_SEMAPHORES + + + ) + +119 + m_SC_SHARED_MEMORY_OBJECTS +, + +120  + #_SC_SHARED_MEMORY_OBJECTS + +_SC_SHARED_MEMORY_OBJECTS + + + ) + +121 + m_SC_AIO_LISTIO_MAX +, + +122  + #_SC_AIO_LISTIO_MAX + +_SC_AIO_LISTIO_MAX + + + ) + +123 + m_SC_AIO_MAX +, + +124  + #_SC_AIO_MAX + +_SC_AIO_MAX + + + ) + +125 + m_SC_AIO_PRIO_DELTA_MAX +, + +126  + #_SC_AIO_PRIO_DELTA_MAX + +_SC_AIO_PRIO_DELTA_MAX + + + ) + +127 + m_SC_DELAYTIMER_MAX +, + +128  + #_SC_DELAYTIMER_MAX + +_SC_DELAYTIMER_MAX + + + ) + +129 + m_SC_MQ_OPEN_MAX +, + +130  + #_SC_MQ_OPEN_MAX + +_SC_MQ_OPEN_MAX + + + ) + +131 + m_SC_MQ_PRIO_MAX +, + +132  + #_SC_MQ_PRIO_MAX + +_SC_MQ_PRIO_MAX + + + ) + +133 + m_SC_VERSION +, + +134  + #_SC_VERSION + +_SC_VERSION + + + ) + +135 + m_SC_PAGESIZE +, + +136  + #_SC_PAGESIZE + +_SC_PAGESIZE + + + ) + +137  + #_SC_PAGE_SIZE + +_SC_PAGESIZE + + + ) + +138 + m_SC_RTSIG_MAX +, + +139  + #_SC_RTSIG_MAX + +_SC_RTSIG_MAX + + + ) + +140 + m_SC_SEM_NSEMS_MAX +, + +141  + #_SC_SEM_NSEMS_MAX + +_SC_SEM_NSEMS_MAX + + + ) + +142 + m_SC_SEM_VALUE_MAX +, + +143  + #_SC_SEM_VALUE_MAX + +_SC_SEM_VALUE_MAX + + + ) + +144 + m_SC_SIGQUEUE_MAX +, + +145  + #_SC_SIGQUEUE_MAX + +_SC_SIGQUEUE_MAX + + + ) + +146 + m_SC_TIMER_MAX +, + +147  + #_SC_TIMER_MAX + +_SC_TIMER_MAX + + + ) + +151 + m_SC_BC_BASE_MAX +, + +152  + #_SC_BC_BASE_MAX + +_SC_BC_BASE_MAX + + + ) + +153 + m_SC_BC_DIM_MAX +, + +154  + #_SC_BC_DIM_MAX + +_SC_BC_DIM_MAX + + + ) + +155 + m_SC_BC_SCALE_MAX +, + +156  + #_SC_BC_SCALE_MAX + +_SC_BC_SCALE_MAX + + + ) + +157 + m_SC_BC_STRING_MAX +, + +158  + #_SC_BC_STRING_MAX + +_SC_BC_STRING_MAX + + + ) + +159 + m_SC_COLL_WEIGHTS_MAX +, + +160  + #_SC_COLL_WEIGHTS_MAX + +_SC_COLL_WEIGHTS_MAX + + + ) + +161 + m_SC_EQUIV_CLASS_MAX +, + +162  + #_SC_EQUIV_CLASS_MAX + +_SC_EQUIV_CLASS_MAX + + + ) + +163 + m_SC_EXPR_NEST_MAX +, + +164  + #_SC_EXPR_NEST_MAX + +_SC_EXPR_NEST_MAX + + + ) + +165 + m_SC_LINE_MAX +, + +166  + #_SC_LINE_MAX + +_SC_LINE_MAX + + + ) + +167 + m_SC_RE_DUP_MAX +, + +168  + #_SC_RE_DUP_MAX + +_SC_RE_DUP_MAX + + + ) + +169 + m_SC_CHARCLASS_NAME_MAX +, + +170  + #_SC_CHARCLASS_NAME_MAX + +_SC_CHARCLASS_NAME_MAX + + + ) + +172 + m_SC_2_VERSION +, + +173  + #_SC_2_VERSION + +_SC_2_VERSION + + + ) + +174 + m_SC_2_C_BIND +, + +175  + #_SC_2_C_BIND + +_SC_2_C_BIND + + + ) + +176 + m_SC_2_C_DEV +, + +177  + #_SC_2_C_DEV + +_SC_2_C_DEV + + + ) + +178 + m_SC_2_FORT_DEV +, + +179  + #_SC_2_FORT_DEV + +_SC_2_FORT_DEV + + + ) + +180 + m_SC_2_FORT_RUN +, + +181  + #_SC_2_FORT_RUN + +_SC_2_FORT_RUN + + + ) + +182 + m_SC_2_SW_DEV +, + +183  + #_SC_2_SW_DEV + +_SC_2_SW_DEV + + + ) + +184 + m_SC_2_LOCALEDEF +, + +185  + #_SC_2_LOCALEDEF + +_SC_2_LOCALEDEF + + + ) + +187 + m_SC_PII +, + +188  + #_SC_PII + +_SC_PII + + + ) + +189 + m_SC_PII_XTI +, + +190  + #_SC_PII_XTI + +_SC_PII_XTI + + + ) + +191 + m_SC_PII_SOCKET +, + +192  + #_SC_PII_SOCKET + +_SC_PII_SOCKET + + + ) + +193 + m_SC_PII_INTERNET +, + +194  + #_SC_PII_INTERNET + +_SC_PII_INTERNET + + + ) + +195 + m_SC_PII_OSI +, + +196  + #_SC_PII_OSI + +_SC_PII_OSI + + + ) + +197 + m_SC_POLL +, + +198  + #_SC_POLL + +_SC_POLL + + + ) + +199 + m_SC_SELECT +, + +200  + #_SC_SELECT + +_SC_SELECT + + + ) + +201 + m_SC_UIO_MAXIOV +, + +202  + #_SC_UIO_MAXIOV + +_SC_UIO_MAXIOV + + + ) + +203 + m_SC_IOV_MAX + = +_SC_UIO_MAXIOV +, + +204  + #_SC_IOV_MAX + +_SC_IOV_MAX + + + ) + +205 + m_SC_PII_INTERNET_STREAM +, + +206  + #_SC_PII_INTERNET_STREAM + +_SC_PII_INTERNET_STREAM + + + ) + +207 + m_SC_PII_INTERNET_DGRAM +, + +208  + #_SC_PII_INTERNET_DGRAM + +_SC_PII_INTERNET_DGRAM + + + ) + +209 + m_SC_PII_OSI_COTS +, + +210  + #_SC_PII_OSI_COTS + +_SC_PII_OSI_COTS + + + ) + +211 + m_SC_PII_OSI_CLTS +, + +212  + #_SC_PII_OSI_CLTS + +_SC_PII_OSI_CLTS + + + ) + +213 + m_SC_PII_OSI_M +, + +214  + #_SC_PII_OSI_M + +_SC_PII_OSI_M + + + ) + +215 + m_SC_T_IOV_MAX +, + +216  + #_SC_T_IOV_MAX + +_SC_T_IOV_MAX + + + ) + +219 + m_SC_THREADS +, + +220  + #_SC_THREADS + +_SC_THREADS + + + ) + +221 + m_SC_THREAD_SAFE_FUNCTIONS +, + +222  + #_SC_THREAD_SAFE_FUNCTIONS + +_SC_THREAD_SAFE_FUNCTIONS + + + ) + +223 + m_SC_GETGR_R_SIZE_MAX +, + +224  + #_SC_GETGR_R_SIZE_MAX + +_SC_GETGR_R_SIZE_MAX + + + ) + +225 + m_SC_GETPW_R_SIZE_MAX +, + +226  + #_SC_GETPW_R_SIZE_MAX + +_SC_GETPW_R_SIZE_MAX + + + ) + +227 + m_SC_LOGIN_NAME_MAX +, + +228  + #_SC_LOGIN_NAME_MAX + +_SC_LOGIN_NAME_MAX + + + ) + +229 + m_SC_TTY_NAME_MAX +, + +230  + #_SC_TTY_NAME_MAX + +_SC_TTY_NAME_MAX + + + ) + +231 + m_SC_THREAD_DESTRUCTOR_ITERATIONS +, + +232  + #_SC_THREAD_DESTRUCTOR_ITERATIONS + +_SC_THREAD_DESTRUCTOR_ITERATIONS + + + ) + +233 + m_SC_THREAD_KEYS_MAX +, + +234  + #_SC_THREAD_KEYS_MAX + +_SC_THREAD_KEYS_MAX + + + ) + +235 + m_SC_THREAD_STACK_MIN +, + +236  + #_SC_THREAD_STACK_MIN + +_SC_THREAD_STACK_MIN + + + ) + +237 + m_SC_THREAD_THREADS_MAX +, + +238  + #_SC_THREAD_THREADS_MAX + +_SC_THREAD_THREADS_MAX + + + ) + +239 + m_SC_THREAD_ATTR_STACKADDR +, + +240  + #_SC_THREAD_ATTR_STACKADDR + +_SC_THREAD_ATTR_STACKADDR + + + ) + +241 + m_SC_THREAD_ATTR_STACKSIZE +, + +242  + #_SC_THREAD_ATTR_STACKSIZE + +_SC_THREAD_ATTR_STACKSIZE + + + ) + +243 + m_SC_THREAD_PRIORITY_SCHEDULING +, + +244  + #_SC_THREAD_PRIORITY_SCHEDULING + +_SC_THREAD_PRIORITY_SCHEDULING + + + ) + +245 + m_SC_THREAD_PRIO_INHERIT +, + +246  + #_SC_THREAD_PRIO_INHERIT + +_SC_THREAD_PRIO_INHERIT + + + ) + +247 + m_SC_THREAD_PRIO_PROTECT +, + +248  + #_SC_THREAD_PRIO_PROTECT + +_SC_THREAD_PRIO_PROTECT + + + ) + +249 + m_SC_THREAD_PROCESS_SHARED +, + +250  + #_SC_THREAD_PROCESS_SHARED + +_SC_THREAD_PROCESS_SHARED + + + ) + +252 + m_SC_NPROCESSORS_CONF +, + +253  + #_SC_NPROCESSORS_CONF + +_SC_NPROCESSORS_CONF + + + ) + +254 + m_SC_NPROCESSORS_ONLN +, + +255  + #_SC_NPROCESSORS_ONLN + +_SC_NPROCESSORS_ONLN + + + ) + +256 + m_SC_PHYS_PAGES +, + +257  + #_SC_PHYS_PAGES + +_SC_PHYS_PAGES + + + ) + +258 + m_SC_AVPHYS_PAGES +, + +259  + #_SC_AVPHYS_PAGES + +_SC_AVPHYS_PAGES + + + ) + +260 + m_SC_ATEXIT_MAX +, + +261  + #_SC_ATEXIT_MAX + +_SC_ATEXIT_MAX + + + ) + +262 + m_SC_PASS_MAX +, + +263  + #_SC_PASS_MAX + +_SC_PASS_MAX + + + ) + +265 + m_SC_XOPEN_VERSION +, + +266  + #_SC_XOPEN_VERSION + +_SC_XOPEN_VERSION + + + ) + +267 + m_SC_XOPEN_XCU_VERSION +, + +268  + #_SC_XOPEN_XCU_VERSION + +_SC_XOPEN_XCU_VERSION + + + ) + +269 + m_SC_XOPEN_UNIX +, + +270  + #_SC_XOPEN_UNIX + +_SC_XOPEN_UNIX + + + ) + +271 + m_SC_XOPEN_CRYPT +, + +272  + #_SC_XOPEN_CRYPT + +_SC_XOPEN_CRYPT + + + ) + +273 + m_SC_XOPEN_ENH_I18N +, + +274  + #_SC_XOPEN_ENH_I18N + +_SC_XOPEN_ENH_I18N + + + ) + +275 + m_SC_XOPEN_SHM +, + +276  + #_SC_XOPEN_SHM + +_SC_XOPEN_SHM + + + ) + +278 + m_SC_2_CHAR_TERM +, + +279  + #_SC_2_CHAR_TERM + +_SC_2_CHAR_TERM + + + ) + +280 + m_SC_2_C_VERSION +, + +281  + #_SC_2_C_VERSION + +_SC_2_C_VERSION + + + ) + +282 + m_SC_2_UPE +, + +283  + #_SC_2_UPE + +_SC_2_UPE + + + ) + +285 + m_SC_XOPEN_XPG2 +, + +286  + #_SC_XOPEN_XPG2 + +_SC_XOPEN_XPG2 + + + ) + +287 + m_SC_XOPEN_XPG3 +, + +288  + #_SC_XOPEN_XPG3 + +_SC_XOPEN_XPG3 + + + ) + +289 + m_SC_XOPEN_XPG4 +, + +290  + #_SC_XOPEN_XPG4 + +_SC_XOPEN_XPG4 + + + ) + +292 + m_SC_CHAR_BIT +, + +293  + #_SC_CHAR_BIT + +_SC_CHAR_BIT + + + ) + +294 + m_SC_CHAR_MAX +, + +295  + #_SC_CHAR_MAX + +_SC_CHAR_MAX + + + ) + +296 + m_SC_CHAR_MIN +, + +297  + #_SC_CHAR_MIN + +_SC_CHAR_MIN + + + ) + +298 + m_SC_INT_MAX +, + +299  + #_SC_INT_MAX + +_SC_INT_MAX + + + ) + +300 + m_SC_INT_MIN +, + +301  + #_SC_INT_MIN + +_SC_INT_MIN + + + ) + +302 + m_SC_LONG_BIT +, + +303  + #_SC_LONG_BIT + +_SC_LONG_BIT + + + ) + +304 + m_SC_WORD_BIT +, + +305  + #_SC_WORD_BIT + +_SC_WORD_BIT + + + ) + +306 + m_SC_MB_LEN_MAX +, + +307  + #_SC_MB_LEN_MAX + +_SC_MB_LEN_MAX + + + ) + +308 + m_SC_NZERO +, + +309  + #_SC_NZERO + +_SC_NZERO + + + ) + +310 + m_SC_SSIZE_MAX +, + +311  + #_SC_SSIZE_MAX + +_SC_SSIZE_MAX + + + ) + +312 + m_SC_SCHAR_MAX +, + +313  + #_SC_SCHAR_MAX + +_SC_SCHAR_MAX + + + ) + +314 + m_SC_SCHAR_MIN +, + +315  + #_SC_SCHAR_MIN + +_SC_SCHAR_MIN + + + ) + +316 + m_SC_SHRT_MAX +, + +317  + #_SC_SHRT_MAX + +_SC_SHRT_MAX + + + ) + +318 + m_SC_SHRT_MIN +, + +319  + #_SC_SHRT_MIN + +_SC_SHRT_MIN + + + ) + +320 + m_SC_UCHAR_MAX +, + +321  + #_SC_UCHAR_MAX + +_SC_UCHAR_MAX + + + ) + +322 + m_SC_UINT_MAX +, + +323  + #_SC_UINT_MAX + +_SC_UINT_MAX + + + ) + +324 + m_SC_ULONG_MAX +, + +325  + #_SC_ULONG_MAX + +_SC_ULONG_MAX + + + ) + +326 + m_SC_USHRT_MAX +, + +327  + #_SC_USHRT_MAX + +_SC_USHRT_MAX + + + ) + +329 + m_SC_NL_ARGMAX +, + +330  + #_SC_NL_ARGMAX + +_SC_NL_ARGMAX + + + ) + +331 + m_SC_NL_LANGMAX +, + +332  + #_SC_NL_LANGMAX + +_SC_NL_LANGMAX + + + ) + +333 + m_SC_NL_MSGMAX +, + +334  + #_SC_NL_MSGMAX + +_SC_NL_MSGMAX + + + ) + +335 + m_SC_NL_NMAX +, + +336  + #_SC_NL_NMAX + +_SC_NL_NMAX + + + ) + +337 + m_SC_NL_SETMAX +, + +338  + #_SC_NL_SETMAX + +_SC_NL_SETMAX + + + ) + +339 + m_SC_NL_TEXTMAX +, + +340  + #_SC_NL_TEXTMAX + +_SC_NL_TEXTMAX + + + ) + +342 + m_SC_XBS5_ILP32_OFF32 +, + +343  + #_SC_XBS5_ILP32_OFF32 + +_SC_XBS5_ILP32_OFF32 + + + ) + +344 + m_SC_XBS5_ILP32_OFFBIG +, + +345  + #_SC_XBS5_ILP32_OFFBIG + +_SC_XBS5_ILP32_OFFBIG + + + ) + +346 + m_SC_XBS5_LP64_OFF64 +, + +347  + #_SC_XBS5_LP64_OFF64 + +_SC_XBS5_LP64_OFF64 + + + ) + +348 + m_SC_XBS5_LPBIG_OFFBIG +, + +349  + #_SC_XBS5_LPBIG_OFFBIG + +_SC_XBS5_LPBIG_OFFBIG + + + ) + +351 + m_SC_XOPEN_LEGACY +, + +352  + #_SC_XOPEN_LEGACY + +_SC_XOPEN_LEGACY + + + ) + +353 + m_SC_XOPEN_REALTIME +, + +354  + #_SC_XOPEN_REALTIME + +_SC_XOPEN_REALTIME + + + ) + +355 + m_SC_XOPEN_REALTIME_THREADS +, + +356  + #_SC_XOPEN_REALTIME_THREADS + +_SC_XOPEN_REALTIME_THREADS + + + ) + +358 + m_SC_ADVISORY_INFO +, + +359  + #_SC_ADVISORY_INFO + +_SC_ADVISORY_INFO + + + ) + +360 + m_SC_BARRIERS +, + +361  + #_SC_BARRIERS + +_SC_BARRIERS + + + ) + +362 + m_SC_BASE +, + +363  + #_SC_BASE + +_SC_BASE + + + ) + +364 + m_SC_C_LANG_SUPPORT +, + +365  + #_SC_C_LANG_SUPPORT + +_SC_C_LANG_SUPPORT + + + ) + +366 + m_SC_C_LANG_SUPPORT_R +, + +367  + #_SC_C_LANG_SUPPORT_R + +_SC_C_LANG_SUPPORT_R + + + ) + +368 + m_SC_CLOCK_SELECTION +, + +369  + #_SC_CLOCK_SELECTION + +_SC_CLOCK_SELECTION + + + ) + +370 + m_SC_CPUTIME +, + +371  + #_SC_CPUTIME + +_SC_CPUTIME + + + ) + +372 + m_SC_THREAD_CPUTIME +, + +373  + #_SC_THREAD_CPUTIME + +_SC_THREAD_CPUTIME + + + ) + +374 + m_SC_DEVICE_IO +, + +375  + #_SC_DEVICE_IO + +_SC_DEVICE_IO + + + ) + +376 + m_SC_DEVICE_SPECIFIC +, + +377  + #_SC_DEVICE_SPECIFIC + +_SC_DEVICE_SPECIFIC + + + ) + +378 + m_SC_DEVICE_SPECIFIC_R +, + +379  + #_SC_DEVICE_SPECIFIC_R + +_SC_DEVICE_SPECIFIC_R + + + ) + +380 + m_SC_FD_MGMT +, + +381  + #_SC_FD_MGMT + +_SC_FD_MGMT + + + ) + +382 + m_SC_FIFO +, + +383  + #_SC_FIFO + +_SC_FIFO + + + ) + +384 + m_SC_PIPE +, + +385  + #_SC_PIPE + +_SC_PIPE + + + ) + +386 + m_SC_FILE_ATTRIBUTES +, + +387  + #_SC_FILE_ATTRIBUTES + +_SC_FILE_ATTRIBUTES + + + ) + +388 + m_SC_FILE_LOCKING +, + +389  + #_SC_FILE_LOCKING + +_SC_FILE_LOCKING + + + ) + +390 + m_SC_FILE_SYSTEM +, + +391  + #_SC_FILE_SYSTEM + +_SC_FILE_SYSTEM + + + ) + +392 + m_SC_MONOTONIC_CLOCK +, + +393  + #_SC_MONOTONIC_CLOCK + +_SC_MONOTONIC_CLOCK + + + ) + +394 + m_SC_MULTI_PROCESS +, + +395  + #_SC_MULTI_PROCESS + +_SC_MULTI_PROCESS + + + ) + +396 + m_SC_SINGLE_PROCESS +, + +397  + #_SC_SINGLE_PROCESS + +_SC_SINGLE_PROCESS + + + ) + +398 + m_SC_NETWORKING +, + +399  + #_SC_NETWORKING + +_SC_NETWORKING + + + ) + +400 + m_SC_READER_WRITER_LOCKS +, + +401  + #_SC_READER_WRITER_LOCKS + +_SC_READER_WRITER_LOCKS + + + ) + +402 + m_SC_SPIN_LOCKS +, + +403  + #_SC_SPIN_LOCKS + +_SC_SPIN_LOCKS + + + ) + +404 + m_SC_REGEXP +, + +405  + #_SC_REGEXP + +_SC_REGEXP + + + ) + +406 + m_SC_REGEX_VERSION +, + +407  + #_SC_REGEX_VERSION + +_SC_REGEX_VERSION + + + ) + +408 + m_SC_SHELL +, + +409  + #_SC_SHELL + +_SC_SHELL + + + ) + +410 + m_SC_SIGNALS +, + +411  + #_SC_SIGNALS + +_SC_SIGNALS + + + ) + +412 + m_SC_SPAWN +, + +413  + #_SC_SPAWN + +_SC_SPAWN + + + ) + +414 + m_SC_SPORADIC_SERVER +, + +415  + #_SC_SPORADIC_SERVER + +_SC_SPORADIC_SERVER + + + ) + +416 + m_SC_THREAD_SPORADIC_SERVER +, + +417  + #_SC_THREAD_SPORADIC_SERVER + +_SC_THREAD_SPORADIC_SERVER + + + ) + +418 + m_SC_SYSTEM_DATABASE +, + +419  + #_SC_SYSTEM_DATABASE + +_SC_SYSTEM_DATABASE + + + ) + +420 + m_SC_SYSTEM_DATABASE_R +, + +421  + #_SC_SYSTEM_DATABASE_R + +_SC_SYSTEM_DATABASE_R + + + ) + +422 + m_SC_TIMEOUTS +, + +423  + #_SC_TIMEOUTS + +_SC_TIMEOUTS + + + ) + +424 + m_SC_TYPED_MEMORY_OBJECTS +, + +425  + #_SC_TYPED_MEMORY_OBJECTS + +_SC_TYPED_MEMORY_OBJECTS + + + ) + +426 + m_SC_USER_GROUPS +, + +427  + #_SC_USER_GROUPS + +_SC_USER_GROUPS + + + ) + +428 + m_SC_USER_GROUPS_R +, + +429  + #_SC_USER_GROUPS_R + +_SC_USER_GROUPS_R + + + ) + +430 + m_SC_2_PBS +, + +431  + #_SC_2_PBS + +_SC_2_PBS + + + ) + +432 + m_SC_2_PBS_ACCOUNTING +, + +433  + #_SC_2_PBS_ACCOUNTING + +_SC_2_PBS_ACCOUNTING + + + ) + +434 + m_SC_2_PBS_LOCATE +, + +435  + #_SC_2_PBS_LOCATE + +_SC_2_PBS_LOCATE + + + ) + +436 + m_SC_2_PBS_MESSAGE +, + +437  + #_SC_2_PBS_MESSAGE + +_SC_2_PBS_MESSAGE + + + ) + +438 + m_SC_2_PBS_TRACK +, + +439  + #_SC_2_PBS_TRACK + +_SC_2_PBS_TRACK + + + ) + +440 + m_SC_SYMLOOP_MAX +, + +441  + #_SC_SYMLOOP_MAX + +_SC_SYMLOOP_MAX + + + ) + +442 + m_SC_STREAMS +, + +443  + #_SC_STREAMS + +_SC_STREAMS + + + ) + +444 + m_SC_2_PBS_CHECKPOINT +, + +445  + #_SC_2_PBS_CHECKPOINT + +_SC_2_PBS_CHECKPOINT + + + ) + +447 + m_SC_V6_ILP32_OFF32 +, + +448  + #_SC_V6_ILP32_OFF32 + +_SC_V6_ILP32_OFF32 + + + ) + +449 + m_SC_V6_ILP32_OFFBIG +, + +450  + #_SC_V6_ILP32_OFFBIG + +_SC_V6_ILP32_OFFBIG + + + ) + +451 + m_SC_V6_LP64_OFF64 +, + +452  + #_SC_V6_LP64_OFF64 + +_SC_V6_LP64_OFF64 + + + ) + +453 + m_SC_V6_LPBIG_OFFBIG +, + +454  + #_SC_V6_LPBIG_OFFBIG + +_SC_V6_LPBIG_OFFBIG + + + ) + +456 + m_SC_HOST_NAME_MAX +, + +457  + #_SC_HOST_NAME_MAX + +_SC_HOST_NAME_MAX + + + ) + +458 + m_SC_TRACE +, + +459  + #_SC_TRACE + +_SC_TRACE + + + ) + +460 + m_SC_TRACE_EVENT_FILTER +, + +461  + #_SC_TRACE_EVENT_FILTER + +_SC_TRACE_EVENT_FILTER + + + ) + +462 + m_SC_TRACE_INHERIT +, + +463  + #_SC_TRACE_INHERIT + +_SC_TRACE_INHERIT + + + ) + +464 + m_SC_TRACE_LOG +, + +465  + #_SC_TRACE_LOG + +_SC_TRACE_LOG + + + ) + +467 + m_SC_LEVEL1_ICACHE_SIZE +, + +468  + #_SC_LEVEL1_ICACHE_SIZE + +_SC_LEVEL1_ICACHE_SIZE + + + ) + +469 + m_SC_LEVEL1_ICACHE_ASSOC +, + +470  + #_SC_LEVEL1_ICACHE_ASSOC + +_SC_LEVEL1_ICACHE_ASSOC + + + ) + +471 + m_SC_LEVEL1_ICACHE_LINESIZE +, + +472  + #_SC_LEVEL1_ICACHE_LINESIZE + +_SC_LEVEL1_ICACHE_LINESIZE + + + ) + +473 + m_SC_LEVEL1_DCACHE_SIZE +, + +474  + #_SC_LEVEL1_DCACHE_SIZE + +_SC_LEVEL1_DCACHE_SIZE + + + ) + +475 + m_SC_LEVEL1_DCACHE_ASSOC +, + +476  + #_SC_LEVEL1_DCACHE_ASSOC + +_SC_LEVEL1_DCACHE_ASSOC + + + ) + +477 + m_SC_LEVEL1_DCACHE_LINESIZE +, + +478  + #_SC_LEVEL1_DCACHE_LINESIZE + +_SC_LEVEL1_DCACHE_LINESIZE + + + ) + +479 + m_SC_LEVEL2_CACHE_SIZE +, + +480  + #_SC_LEVEL2_CACHE_SIZE + +_SC_LEVEL2_CACHE_SIZE + + + ) + +481 + m_SC_LEVEL2_CACHE_ASSOC +, + +482  + #_SC_LEVEL2_CACHE_ASSOC + +_SC_LEVEL2_CACHE_ASSOC + + + ) + +483 + m_SC_LEVEL2_CACHE_LINESIZE +, + +484  + #_SC_LEVEL2_CACHE_LINESIZE + +_SC_LEVEL2_CACHE_LINESIZE + + + ) + +485 + m_SC_LEVEL3_CACHE_SIZE +, + +486  + #_SC_LEVEL3_CACHE_SIZE + +_SC_LEVEL3_CACHE_SIZE + + + ) + +487 + m_SC_LEVEL3_CACHE_ASSOC +, + +488  + #_SC_LEVEL3_CACHE_ASSOC + +_SC_LEVEL3_CACHE_ASSOC + + + ) + +489 + m_SC_LEVEL3_CACHE_LINESIZE +, + +490  + #_SC_LEVEL3_CACHE_LINESIZE + +_SC_LEVEL3_CACHE_LINESIZE + + + ) + +491 + m_SC_LEVEL4_CACHE_SIZE +, + +492  + #_SC_LEVEL4_CACHE_SIZE + +_SC_LEVEL4_CACHE_SIZE + + + ) + +493 + m_SC_LEVEL4_CACHE_ASSOC +, + +494  + #_SC_LEVEL4_CACHE_ASSOC + +_SC_LEVEL4_CACHE_ASSOC + + + ) + +495 + m_SC_LEVEL4_CACHE_LINESIZE +, + +496  + #_SC_LEVEL4_CACHE_LINESIZE + +_SC_LEVEL4_CACHE_LINESIZE + + + ) + +499 + m_SC_IPV6 + = +_SC_LEVEL1_ICACHE_SIZE + + 50, + +500  + #_SC_IPV6 + +_SC_IPV6 + + + ) + +501 + m_SC_RAW_SOCKETS + + +502  + #_SC_RAW_SOCKETS + +_SC_RAW_SOCKETS + + + ) + +508 + m_CS_PATH +, + +509  + #_CS_PATH + +_CS_PATH + + + ) + +511 + m_CS_V6_WIDTH_RESTRICTED_ENVS +, + +512  + #_CS_V6_WIDTH_RESTRICTED_ENVS + +_CS_V6_WIDTH_RESTRICTED_ENVS + + + ) + +514 + m_CS_GNU_LIBC_VERSION +, + +515  + #_CS_GNU_LIBC_VERSION + +_CS_GNU_LIBC_VERSION + + + ) + +516 + m_CS_GNU_LIBPTHREAD_VERSION +, + +517  + #_CS_GNU_LIBPTHREAD_VERSION + +_CS_GNU_LIBPTHREAD_VERSION + + + ) + +519 + m_CS_LFS_CFLAGS + = 1000, + +520  + #_CS_LFS_CFLAGS + +_CS_LFS_CFLAGS + + + ) + +521 + m_CS_LFS_LDFLAGS +, + +522  + #_CS_LFS_LDFLAGS + +_CS_LFS_LDFLAGS + + + ) + +523 + m_CS_LFS_LIBS +, + +524  + #_CS_LFS_LIBS + +_CS_LFS_LIBS + + + ) + +525 + m_CS_LFS_LINTFLAGS +, + +526  + #_CS_LFS_LINTFLAGS + +_CS_LFS_LINTFLAGS + + + ) + +527 + m_CS_LFS64_CFLAGS +, + +528  + #_CS_LFS64_CFLAGS + +_CS_LFS64_CFLAGS + + + ) + +529 + m_CS_LFS64_LDFLAGS +, + +530  + #_CS_LFS64_LDFLAGS + +_CS_LFS64_LDFLAGS + + + ) + +531 + m_CS_LFS64_LIBS +, + +532  + #_CS_LFS64_LIBS + +_CS_LFS64_LIBS + + + ) + +533 + m_CS_LFS64_LINTFLAGS +, + +534  + #_CS_LFS64_LINTFLAGS + +_CS_LFS64_LINTFLAGS + + + ) + +536 + m_CS_XBS5_ILP32_OFF32_CFLAGS + = 1100, + +537  + #_CS_XBS5_ILP32_OFF32_CFLAGS + +_CS_XBS5_ILP32_OFF32_CFLAGS + + + ) + +538 + m_CS_XBS5_ILP32_OFF32_LDFLAGS +, + +539  + #_CS_XBS5_ILP32_OFF32_LDFLAGS + +_CS_XBS5_ILP32_OFF32_LDFLAGS + + + ) + +540 + m_CS_XBS5_ILP32_OFF32_LIBS +, + +541  + #_CS_XBS5_ILP32_OFF32_LIBS + +_CS_XBS5_ILP32_OFF32_LIBS + + + ) + +542 + m_CS_XBS5_ILP32_OFF32_LINTFLAGS +, + +543  + #_CS_XBS5_ILP32_OFF32_LINTFLAGS + +_CS_XBS5_ILP32_OFF32_LINTFLAGS + + + ) + +544 + m_CS_XBS5_ILP32_OFFBIG_CFLAGS +, + +545  + #_CS_XBS5_ILP32_OFFBIG_CFLAGS + +_CS_XBS5_ILP32_OFFBIG_CFLAGS + + + ) + +546 + m_CS_XBS5_ILP32_OFFBIG_LDFLAGS +, + +547  + #_CS_XBS5_ILP32_OFFBIG_LDFLAGS + +_CS_XBS5_ILP32_OFFBIG_LDFLAGS + + + ) + +548 + m_CS_XBS5_ILP32_OFFBIG_LIBS +, + +549  + #_CS_XBS5_ILP32_OFFBIG_LIBS + +_CS_XBS5_ILP32_OFFBIG_LIBS + + + ) + +550 + m_CS_XBS5_ILP32_OFFBIG_LINTFLAGS +, + +551  + #_CS_XBS5_ILP32_OFFBIG_LINTFLAGS + +_CS_XBS5_ILP32_OFFBIG_LINTFLAGS + + + ) + +552 + m_CS_XBS5_LP64_OFF64_CFLAGS +, + +553  + #_CS_XBS5_LP64_OFF64_CFLAGS + +_CS_XBS5_LP64_OFF64_CFLAGS + + + ) + +554 + m_CS_XBS5_LP64_OFF64_LDFLAGS +, + +555  + #_CS_XBS5_LP64_OFF64_LDFLAGS + +_CS_XBS5_LP64_OFF64_LDFLAGS + + + ) + +556 + m_CS_XBS5_LP64_OFF64_LIBS +, + +557  + #_CS_XBS5_LP64_OFF64_LIBS + +_CS_XBS5_LP64_OFF64_LIBS + + + ) + +558 + m_CS_XBS5_LP64_OFF64_LINTFLAGS +, + +559  + #_CS_XBS5_LP64_OFF64_LINTFLAGS + +_CS_XBS5_LP64_OFF64_LINTFLAGS + + + ) + +560 + m_CS_XBS5_LPBIG_OFFBIG_CFLAGS +, + +561  + #_CS_XBS5_LPBIG_OFFBIG_CFLAGS + +_CS_XBS5_LPBIG_OFFBIG_CFLAGS + + + ) + +562 + m_CS_XBS5_LPBIG_OFFBIG_LDFLAGS +, + +563  + #_CS_XBS5_LPBIG_OFFBIG_LDFLAGS + +_CS_XBS5_LPBIG_OFFBIG_LDFLAGS + + + ) + +564 + m_CS_XBS5_LPBIG_OFFBIG_LIBS +, + +565  + #_CS_XBS5_LPBIG_OFFBIG_LIBS + +_CS_XBS5_LPBIG_OFFBIG_LIBS + + + ) + +566 + m_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS +, + +567  + #_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS + +_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS + + + ) + +569 + m_CS_POSIX_V6_ILP32_OFF32_CFLAGS +, + +570  + #_CS_POSIX_V6_ILP32_OFF32_CFLAGS + +_CS_POSIX_V6_ILP32_OFF32_CFLAGS + + + ) + +571 + m_CS_POSIX_V6_ILP32_OFF32_LDFLAGS +, + +572  + #_CS_POSIX_V6_ILP32_OFF32_LDFLAGS + +_CS_POSIX_V6_ILP32_OFF32_LDFLAGS + + + ) + +573 + m_CS_POSIX_V6_ILP32_OFF32_LIBS +, + +574  + #_CS_POSIX_V6_ILP32_OFF32_LIBS + +_CS_POSIX_V6_ILP32_OFF32_LIBS + + + ) + +575 + m_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS +, + +576  + #_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS + +_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS + + + ) + +577 + m_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS +, + +578  + #_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + +_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + + + ) + +579 + m_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS +, + +580  + #_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS + +_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS + + + ) + +581 + m_CS_POSIX_V6_ILP32_OFFBIG_LIBS +, + +582  + #_CS_POSIX_V6_ILP32_OFFBIG_LIBS + +_CS_POSIX_V6_ILP32_OFFBIG_LIBS + + + ) + +583 + m_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS +, + +584  + #_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS + +_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS + + + ) + +585 + m_CS_POSIX_V6_LP64_OFF64_CFLAGS +, + +586  + #_CS_POSIX_V6_LP64_OFF64_CFLAGS + +_CS_POSIX_V6_LP64_OFF64_CFLAGS + + + ) + +587 + m_CS_POSIX_V6_LP64_OFF64_LDFLAGS +, + +588  + #_CS_POSIX_V6_LP64_OFF64_LDFLAGS + +_CS_POSIX_V6_LP64_OFF64_LDFLAGS + + + ) + +589 + m_CS_POSIX_V6_LP64_OFF64_LIBS +, + +590  + #_CS_POSIX_V6_LP64_OFF64_LIBS + +_CS_POSIX_V6_LP64_OFF64_LIBS + + + ) + +591 + m_CS_POSIX_V6_LP64_OFF64_LINTFLAGS +, + +592  + #_CS_POSIX_V6_LP64_OFF64_LINTFLAGS + +_CS_POSIX_V6_LP64_OFF64_LINTFLAGS + + + ) + +593 + m_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS +, + +594  + #_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + +_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + + + ) + +595 + m_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS +, + +596  + #_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + +_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + + + ) + +597 + m_CS_POSIX_V6_LPBIG_OFFBIG_LIBS +, + +598  + #_CS_POSIX_V6_LPBIG_OFFBIG_LIBS + +_CS_POSIX_V6_LPBIG_OFFBIG_LIBS + + + ) + +599 + m_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS + + +600  + #_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS + +_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS + + + ) + + @/usr/include/bits/dirent.h + +19 #iâdeà +_DIRENT_H + + +23  + sdœ’t + + +25 #iâdeà +__USE_FILE_OFFSET64 + + +26 +__šo_t + + md_šo +; + +27 +__off_t + + md_off +; + +29 +__šo64_t + + md_šo +; + +30 +__off64_t + + md_off +; + +32  + md_»þ’ +; + +33  + md_ty³ +; + +34  + md_Çme +[256]; + +37 #ifdeà +__USE_LARGEFILE64 + + +38  + sdœ’t64 + + +40 +__šo64_t + + md_šo +; + +41 +__off64_t + + md_off +; + +42  + md_»þ’ +; + +43  + md_ty³ +; + +44  + md_Çme +[256]; + +48  + #d_fž’o + +d_šo + + + ) + +50 #undeà +_DIRENT_HAVE_D_NAMLEN + + +51  + #_DIRENT_HAVE_D_RECLEN + + + ) + +52  + #_DIRENT_HAVE_D_OFF + + + ) + +53  + #_DIRENT_HAVE_D_TYPE + + + ) + + @/usr/include/bits/environments.h + +19 #iâdeà +_UNISTD_H + + +41  + #_POSIX_V6_ILP32_OFF32 + 1 + + ) + +42  + #_POSIX_V6_ILP32_OFFBIG + 1 + + ) + +43  + #_XBS5_ILP32_OFF32 + 1 + + ) + +44  + #_XBS5_ILP32_OFFBIG + 1 + + ) + +57  + #__ILP32_OFF32_CFLAGS + "-m32" + + ) + +58  + #__ILP32_OFFBIG_CFLAGS + "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + + ) + +59  + #__ILP32_OFF32_LDFLAGS + "-m32" + + ) + +60  + #__ILP32_OFFBIG_LDFLAGS + "-m32" + + ) + +61  + #__LP64_OFF64_CFLAGS + "-m64" + + ) + +62  + #__LP64_OFF64_LDFLAGS + "-m64" + + ) + + @/usr/include/bits/errno.h + +20 #ifdeà +_ERRNO_H + + +22 #undeà +EDOM + + +23 #undeà +EILSEQ + + +24 #undeà +ERANGE + + +25  + ~ + +28  + #ENOTSUP + +EOPNOTSUPP + + + ) + +32 #iâdeà +ECANCELED + + +33  + #ECANCELED + 125 + + ) + +36 #iâdeà +__ASSEMBLER__ + + +38 * + $__”ºo_loÿtiÚ + (è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +40 #ià! +defšed + +_LIBC + || defšed +_LIBC_REENTRANT + + +42  + #”ºo + (* + `__”ºo_loÿtiÚ + ()) + + ) + +47 #ià! +defšed + +_ERRNO_H + && defšed +__Ãed_Em©h + + +51  + #EDOM + 33 + + ) + +52  + #EILSEQ + 84 + + ) + +53  + #ERANGE + 34 + + ) + + @/usr/include/bits/fcntl.h + +21 #iâdef +_FCNTL_H + + +26  + ~ + +30  + #O_ACCMODE + 0003 + + ) + +31  + #O_RDONLY + 00 + + ) + +32  + #O_WRONLY + 01 + + ) + +33  + #O_RDWR + 02 + + ) + +34  + #O_CREAT + 0100 + + ) + +35  + #O_EXCL + 0200 + + ) + +36  + #O_NOCTTY + 0400 + + ) + +37  + #O_TRUNC + 01000 + + ) + +38  + #O_APPEND + 02000 + + ) + +39  + #O_NONBLOCK + 04000 + + ) + +40  + #O_NDELAY + +O_NONBLOCK + + + ) + +41  + #O_SYNC + 010000 + + ) + +42  + #O_FSYNC + +O_SYNC + + + ) + +43  + #O_ASYNC + 020000 + + ) + +45 #ifdeà +__USE_GNU + + +46  + #O_DIRECT + 040000 + + ) + +47  + #O_DIRECTORY + 0200000 + + ) + +48  + #O_NOFOLLOW + 0400000 + + ) + +49  + #O_NOATIME + 01000000 + + ) + +55 #ià +defšed + +__USE_POSIX199309 + || defšed +__USE_UNIX98 + + +56  + #O_DSYNC + +O_SYNC + + + ) + +57  + #O_RSYNC + +O_SYNC + + + ) + +60 #ifdeà +__USE_LARGEFILE64 + + +61  + #O_LARGEFILE + 0100000 + + ) + +65  + #F_DUPFD + 0 + + ) + +66  + #F_GETFD + 1 + + ) + +67  + #F_SETFD + 2 + + ) + +68  + #F_GETFL + 3 + + ) + +69  + #F_SETFL + 4 + + ) + +70 #iâdeà +__USE_FILE_OFFSET64 + + +71  + #F_GETLK + 5 + + ) + +72  + #F_SETLK + 6 + + ) + +73  + #F_SETLKW + 7 + + ) + +75  + #F_GETLK + +F_GETLK64 + + + ) + +76  + #F_SETLK + +F_SETLK64 + + + ) + +77  + #F_SETLKW + +F_SETLKW64 + + + ) + +79  + #F_GETLK64 + 12 + + ) + +80  + #F_SETLK64 + 13 + + ) + +81  + #F_SETLKW64 + 14 + + ) + +83 #ià +defšed + +__USE_BSD + || defšed +__USE_UNIX98 + + +84  + #F_SETOWN + 8 + + ) + +85  + #F_GETOWN + 9 + + ) + +88 #ifdeà +__USE_GNU + + +89  + #F_SETSIG + 10 + + ) + +90  + #F_GETSIG + 11 + + ) + +93 #ifdeà +__USE_GNU + + +94  + #F_SETLEASE + 1024 + + ) + +95  + #F_GETLEASE + 1025 + + ) + +96  + #F_NOTIFY + 1026 + + ) + +100  + #FD_CLOEXEC + 1 + + ) + +103  + #F_RDLCK + 0 + + ) + +104  + #F_WRLCK + 1 + + ) + +105  + #F_UNLCK + 2 + + ) + +108  + #F_EXLCK + 4 + + ) + +109  + #F_SHLCK + 8 + + ) + +111 #ifdeà +__USE_BSD + + +113  + #LOCK_SH + 1 + + ) + +114  + #LOCK_EX + 2 + + ) + +115  + #LOCK_NB + 4 + + ) + +117  + #LOCK_UN + 8 + + ) + +120 #ifdeà +__USE_GNU + + +121  + #LOCK_MAND + 32 + + ) + +122  + #LOCK_READ + 64 + + ) + +123  + #LOCK_WRITE + 128 + + ) + +124  + #LOCK_RW + 192 + + ) + +127 #ifdeà +__USE_GNU + + +129  + #DN_ACCESS + 0x00000001 + + ) + +130  + #DN_MODIFY + 0x00000002 + + ) + +131  + #DN_CREATE + 0x00000004 + + ) + +132  + #DN_DELETE + 0x00000008 + + ) + +133  + #DN_RENAME + 0x00000010 + + ) + +134  + #DN_ATTRIB + 0x00000020 + + ) + +135  + #DN_MULTISHOT + 0x80000000 + + ) + +138  + sæock + + +140  + ml_ty³ +; + +141  + ml_wh’û +; + +142 #iâdeà +__USE_FILE_OFFSET64 + + +143 +__off_t + + ml_¡¬t +; + +144 +__off_t + + ml_Ën +; + +146 +__off64_t + + ml_¡¬t +; + +147 +__off64_t + + ml_Ën +; + +149 +__pid_t + + ml_pid +; + +152 #ifdeà +__USE_LARGEFILE64 + + +153  + sæock64 + + +155  + ml_ty³ +; + +156  + ml_wh’û +; + +157 +__off64_t + + ml_¡¬t +; + +158 +__off64_t + + ml_Ën +; + +159 +__pid_t + + ml_pid +; + +165 #ifdef +__USE_BSD + + +166  + #FAPPEND + +O_APPEND + + + ) + +167  + #FFSYNC + +O_FSYNC + + + ) + +168  + #FASYNC + +O_ASYNC + + + ) + +169  + #FNONBLOCK + +O_NONBLOCK + + + ) + +170  + #FNDELAY + +O_NDELAY + + + ) + +174 #ifdeà +__USE_XOPEN2K + + +175  + #POSIX_FADV_NORMAL + 0 + + ) + +176  + #POSIX_FADV_RANDOM + 1 + + ) + +177  + #POSIX_FADV_SEQUENTIAL + 2 + + ) + +178  + #POSIX_FADV_WILLNEED + 3 + + ) + +179  + #POSIX_FADV_DONTNEED + 4 + + ) + +180  + #POSIX_FADV_NOREUSE + 5 + + ) + +183 +__BEGIN_DECLS + + +186 +ssize_t + + $»adah—d + ( +__fd +, +__off64_t + +__off£t +, +size_t + +__couÁ +) + +187 +__THROW +; + +189 +__END_DECLS + + + @/usr/include/bits/posix1_lim.h + +25 #iâdef +_BITS_POSIX1_LIM_H + + +26  + #_BITS_POSIX1_LIM_H + 1 + + ) + +32  + #_POSIX_AIO_LISTIO_MAX + 2 + + ) + +35  + #_POSIX_AIO_MAX + 1 + + ) + +38  + #_POSIX_ARG_MAX + 4096 + + ) + +41 #ifdeà +__USE_XOPEN2K + + +42  + #_POSIX_CHILD_MAX + 25 + + ) + +44  + #_POSIX_CHILD_MAX + 6 + + ) + +48  + #_POSIX_DELAYTIMER_MAX + 32 + + ) + +52  + #_POSIX_HOST_NAME_MAX + 255 + + ) + +55  + #_POSIX_LINK_MAX + 8 + + ) + +58  + #_POSIX_LOGIN_NAME_MAX + 9 + + ) + +61  + #_POSIX_MAX_CANON + 255 + + ) + +65  + #_POSIX_MAX_INPUT + 255 + + ) + +68  + #_POSIX_MQ_OPEN_MAX + 8 + + ) + +71  + #_POSIX_MQ_PRIO_MAX + 32 + + ) + +74  + #_POSIX_NAME_MAX + 14 + + ) + +77 #ifdeà +__USE_XOPEN2K + + +78  + #_POSIX_NGROUPS_MAX + 8 + + ) + +80  + #_POSIX_NGROUPS_MAX + 0 + + ) + +84 #ifdeà +__USE_XOPEN2K + + +85  + #_POSIX_OPEN_MAX + 20 + + ) + +87  + #_POSIX_OPEN_MAX + 16 + + ) + +92  + #_POSIX_FD_SETSIZE + +_POSIX_OPEN_MAX + + + ) + +95  + #_POSIX_PATH_MAX + 256 + + ) + +98  + #_POSIX_PIPE_BUF + 512 + + ) + +102  + #_POSIX_RE_DUP_MAX + 255 + + ) + +105  + #_POSIX_RTSIG_MAX + 8 + + ) + +108  + #_POSIX_SEM_NSEMS_MAX + 256 + + ) + +111  + #_POSIX_SEM_VALUE_MAX + 32767 + + ) + +114  + #_POSIX_SIGQUEUE_MAX + 32 + + ) + +117  + #_POSIX_SSIZE_MAX + 32767 + + ) + +120  + #_POSIX_STREAM_MAX + 8 + + ) + +123  + #_POSIX_SYMLINK_MAX + 255 + + ) + +127  + #_POSIX_SYMLOOP_MAX + 8 + + ) + +130  + #_POSIX_TIMER_MAX + 32 + + ) + +133  + #_POSIX_TTY_NAME_MAX + 9 + + ) + +136  + #_POSIX_TZNAME_MAX + 6 + + ) + +139  + #_POSIX_QLIMIT + 1 + + ) + +143  + #_POSIX_HIWAT + +_POSIX_PIPE_BUF + + + ) + +146  + #_POSIX_UIO_MAXIOV + 16 + + ) + +149  + #_POSIX_CLOCKRES_MIN + 20000000 + + ) + +153  + ~ + +156 #iâdef +SSIZE_MAX + + +157  + #SSIZE_MAX + +LONG_MAX + + + ) + +164 #iâdef +NGROUPS_MAX + + +165  + #NGROUPS_MAX + 8 + + ) + + @/usr/include/bits/posix_opt.h + +20 #iâdef +_POSIX_OPT_H + + +21  + #_POSIX_OPT_H + 1 + + ) + +24  + #_POSIX_JOB_CONTROL + 1 + + ) + +27  + #_POSIX_SAVED_IDS + 1 + + ) + +30  + #_POSIX_PRIORITY_SCHEDULING + 200112L + + ) + +33  + #_POSIX_SYNCHRONIZED_IO + 200112L + + ) + +36  + #_POSIX_FSYNC + 200112L + + ) + +39  + #_POSIX_MAPPED_FILES + 200112L + + ) + +42  + #_POSIX_MEMLOCK + 200112L + + ) + +45  + #_POSIX_MEMLOCK_RANGE + 200112L + + ) + +48  + #_POSIX_MEMORY_PROTECTION + 200112L + + ) + +51  + #_POSIX_CHOWN_RESTRICTED + 1 + + ) + +55  + #_POSIX_VDISABLE + '\0' + + ) + +58  + #_POSIX_NO_TRUNC + 1 + + ) + +61  + #_XOPEN_REALTIME + 1 + + ) + +64  + #_XOPEN_REALTIME_THREADS + 1 + + ) + +67  + #_XOPEN_SHM + 1 + + ) + +70  + #_POSIX_THREADS + 200112L + + ) + +73  + #_POSIX_REENTRANT_FUNCTIONS + 1 + + ) + +74  + #_POSIX_THREAD_SAFE_FUNCTIONS + 200112L + + ) + +77  + #_POSIX_THREAD_PRIORITY_SCHEDULING + 200112L + + ) + +80  + #_POSIX_THREAD_ATTR_STACKSIZE + 200112L + + ) + +83  + #_POSIX_THREAD_ATTR_STACKADDR + 200112L + + ) + +86  + #_POSIX_SEMAPHORES + 200112L + + ) + +89  + #_POSIX_REALTIME_SIGNALS + 200112L + + ) + +92  + #_POSIX_ASYNCHRONOUS_IO + 200112L + + ) + +93  + #_POSIX_ASYNC_IO + 1 + + ) + +95  + #_LFS_ASYNCHRONOUS_IO + 1 + + ) + +97  + #_POSIX_PRIORITIZED_IO + 200112L + + ) + +100  + #_LFS64_ASYNCHRONOUS_IO + 1 + + ) + +103  + #_LFS_LARGEFILE + 1 + + ) + +104  + #_LFS64_LARGEFILE + 1 + + ) + +105  + #_LFS64_STDIO + 1 + + ) + +108  + #_POSIX_SHARED_MEMORY_OBJECTS + 200112L + + ) + +111  + #_POSIX_CPUTIME + 0 + + ) + +114  + #_POSIX_THREAD_CPUTIME + 0 + + ) + +117  + #_POSIX_REGEXP + 1 + + ) + +120  + #_POSIX_READER_WRITER_LOCKS + 200112L + + ) + +123  + #_POSIX_SHELL + 1 + + ) + +126  + #_POSIX_TIMEOUTS + 200112L + + ) + +129  + #_POSIX_SPIN_LOCKS + 200112L + + ) + +132  + #_POSIX_SPAWN + 200112L + + ) + +135  + #_POSIX_TIMERS + 200112L + + ) + +138  + #_POSIX_BARRIERS + 200112L + + ) + +141  + #_POSIX_MESSAGE_PASSING + 200112L + + ) + +144  + #_POSIX_THREAD_PROCESS_SHARED + -1 + + ) + +147  + #_POSIX_MONOTONIC_CLOCK + 0 + + ) + +150  + #_POSIX_CLOCK_SELECTION + -1 + + ) + +153  + #_POSIX_ADVISORY_INFO + 200112L + + ) + +156  + #_POSIX_IPV6 + 200112L + + ) + +159  + #_POSIX_RAW_SOCKETS + 200112L + + ) + +162  + #_POSIX2_CHAR_TERM + 200112L + + ) + +165  + #_POSIX_SPORADIC_SERVER + -1 + + ) + +166  + #_POSIX_THREAD_SPORADIC_SERVER + -1 + + ) + +169  + #_POSIX_TRACE + -1 + + ) + +170  + #_POSIX_TRACE_EVENT_FILTER + -1 + + ) + +171  + #_POSIX_TRACE_INHERIT + -1 + + ) + +172  + #_POSIX_TRACE_LOG + -1 + + ) + +175  + #_POSIX_TYPED_MEMORY_OBJECTS + -1 + + ) + +178  + #_POSIX_THREAD_PRIO_INHERIT + -1 + + ) + +179  + #_POSIX_THREAD_PRIO_PROTECT + -1 + + ) + + @/usr/include/bits/pthreadtypes.h + +15 #ià! +defšed + +_BITS_TYPES_H + && !defšed +_PTHREAD_H + + +19 #iâdeà +_BITS_PTHREADTYPES_H + + +20  + #_BITS_PTHREADTYPES_H + 1 + + ) + +22  + #__Ãed_sched·¿m + + + ) + +23  + ~ + +25  + t__©omic_lock_t +; + +28  + s_±h»ad_ç¡lock + + +30  + m__¡©us +; + +31 +__©omic_lock_t + + m__¥šlock +; + +35 #iâdeà +_PTHREAD_DESCR_DEFINED + + +37  +_±h»ad_desü_¡ruù + * + t_±h»ad_desü +; + +38  + #_PTHREAD_DESCR_DEFINED + + + ) + +43  + s__±h»ad_©Œ_s + + +45  + m__d‘ach¡©e +; + +46  + m__schedpÞicy +; + +47  +__sched_·¿m + + m__sched·¿m +; + +48  + m__šh”™sched +; + +49  + m__scÝe +; + +50 +size_t + + m__gu¬dsize +; + +51  + m__¡ackaddr_£t +; + +52 * + m__¡ackaddr +; + +53 +size_t + + m__¡acksize +; + +54 } + t±h»ad_©Œ_t +; + +59 #ifdeà +__GLIBC_HAVE_LONG_LONG + + +60 +__ex‹nsiÚ__ +  + t__±h»ad_cÚd_®ign_t +; + +62  + t__±h»ad_cÚd_®ign_t +; + +67  +_±h»ad_ç¡lock + + m__c_lock +; + +68 +_±h»ad_desü + + m__c_wa™šg +; + +69  + m__·ddšg +[48 -  ( +_±h»ad_ç¡lock +) + +70 -  ( +_±h»ad_desü +è-  ( +__±h»ad_cÚd_®ign_t +)]; + +71 +__±h»ad_cÚd_®ign_t + + m__®ign +; + +72 } + t±h»ad_cÚd_t +; + +78  + m__dummy +; + +79 } + t±h»ad_cÚd©Œ_t +; + +82  + t±h»ad_key_t +; + +90  + m__m_»£rved +; + +91  + m__m_couÁ +; + +92 +_±h»ad_desü + + m__m_owÃr +; + +93  + m__m_kšd +; + +94  +_±h»ad_ç¡lock + + m__m_lock +; + +95 } + t±h»ad_mu‹x_t +; + +101  + m__mu‹xkšd +; + +102 } + t±h»ad_mu‹x©Œ_t +; + +106  + t±h»ad_Úû_t +; + +109 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +111  + s_±h»ad_rwlock_t + + +113  +_±h»ad_ç¡lock + + m__rw_lock +; + +114  + m__rw_»ad”s +; + +115 +_±h»ad_desü + + m__rw_wr™” +; + +116 +_±h»ad_desü + + m__rw_»ad_wa™šg +; + +117 +_±h»ad_desü + + m__rw_wr™e_wa™šg +; + +118  + m__rw_kšd +; + +119  + m__rw_psh¬ed +; + +120 } + t±h»ad_rwlock_t +; + +126  + m__lockkšd +; + +127  + m__psh¬ed +; + +128 } + t±h»ad_rwlock©Œ_t +; + +131 #ifdeà +__USE_XOPEN2K + + +133 vÞ©ž + t±h»ad_¥šlock_t +; + +137  +_±h»ad_ç¡lock + + m__ba_lock +; + +138  + m__ba_»quœed +; + +139  + m__ba_´e£Á +; + +140 +_±h»ad_desü + + m__ba_wa™šg +; + +141 } + t±h»ad_b¬r›r_t +; + +145  + m__psh¬ed +; + +146 } + t±h»ad_b¬r›¿‰r_t +; + +152  + t±h»ad_t +; + + @/usr/include/bits/setjmp.h + +20 #iâdeà +_BITS_SETJMP_H + + +21  + #_BITS_SETJMP_H + 1 + + ) + +23 #ià! +defšed + +_SETJMP_H + && !defšed +_PTHREAD_H + + +27 #ià +defšed + +__USE_MISC + || defšed +_ASM + + +28  + #JB_BX + 0 + + ) + +29  + #JB_SI + 1 + + ) + +30  + #JB_DI + 2 + + ) + +31  + #JB_BP + 3 + + ) + +32  + #JB_SP + 4 + + ) + +33  + #JB_PC + 5 + + ) + +34  + #JB_SIZE + 24 + + ) + +37 #iâdef +_ASM + + +38  + t__jmp_buf +[6]; + +43  + #_JMPBUF_UNWINDS +( +jmpbuf +, +add»ss +) \ + +44 ((*è( +add»ss +è< (*è( +jmpbuf +)[ +JB_SP +]) + + ) + + @/usr/include/bits/sigset.h + +20 #iâdef +_SIGSET_H_ty³s + + +21  + #_SIGSET_H_ty³s + 1 + + ) + +23  + t__sig_©omic_t +; + +27  + #_SIGSET_NWORDS + (1024 / (8 *  ())) + + ) + +30  + m__v® +[ +_SIGSET_NWORDS +]; + +31 } + t__sig£t_t +; + +42 #ià! +defšed + +_SIGSET_H_âs + && defšed +_SIGNAL_H + + +43  + #_SIGSET_H_âs + 1 + + ) + +45 #iâdeà +_EXTERN_INLINE + + +46  + #_EXTERN_INLINE + +__šlše + + + ) + +50  + #__sigmask +( +sig +) \ + +51 (((è1è<< ((( +sig +è- 1è% (8 *  ()))) + + ) + +54  + #__sigwÜd +( +sig +è(((sigè- 1è/ (8 *  ())) + + ) + +56 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +57  + #__sigem±y£t +( +£t +) \ + +58 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +59 +sig£t_t + * +__£t + = ( +£t +); \ + +60 -- +__út + >ð0è +__£t +-> +__v® +[__cnt] = 0; \ + +61 0; })) + + ) + +62  + #__sigfžl£t +( +£t +) \ + +63 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +64 +sig£t_t + * +__£t + = ( +£t +); \ + +65 -- +__út + >ð0è +__£t +-> +__v® +[__cnt] = ~0UL; \ + +66 0; })) + + ) + +68 #ifdeà +__USE_GNU + + +72  + #__sigi£m±y£t +( +£t +) \ + +73 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +74 cÚ¡ +sig£t_t + * +__£t + = ( +£t +); \ + +75  +__»t + = +__£t +-> +__v® +[-- +__út +]; \ + +76 ! +__»t + && -- +__út + >= 0) \ + +77 +__»t + = +__£t +-> +__v® +[ +__út +]; \ + +78 +__»t + =ð0; })) + + ) + +79  + #__sigªd£t +( +de¡ +, +Ëá +, +right +) \ + +80 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +81 +sig£t_t + * +__de¡ + = ( +de¡ +); \ + +82 cÚ¡ +sig£t_t + * +__Ëá + = ( +Ëá +); \ + +83 cÚ¡ +sig£t_t + * +__right + = ( +right +); \ + +84 -- +__út + >= 0) \ + +85 +__de¡ +-> +__v® +[ +__út +] = ( +__Ëá +->__val[__cnt] \ + +86 & +__right +-> +__v® +[ +__út +]); \ + +87 0; })) + + ) + +88  + #__sigÜ£t +( +de¡ +, +Ëá +, +right +) \ + +89 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +90 +sig£t_t + * +__de¡ + = ( +de¡ +); \ + +91 cÚ¡ +sig£t_t + * +__Ëá + = ( +Ëá +); \ + +92 cÚ¡ +sig£t_t + * +__right + = ( +right +); \ + +93 -- +__út + >= 0) \ + +94 +__de¡ +-> +__v® +[ +__út +] = ( +__Ëá +->__val[__cnt] \ + +95 | +__right +-> +__v® +[ +__út +]); \ + +96 0; })) + + ) + +103  +__sigismemb” + ( +__cÚ¡ + +__sig£t_t + *, ); + +104  +__sigadd£t + ( +__sig£t_t + *, ); + +105  +__sigd–£t + ( +__sig£t_t + *, ); + +107 #ifdeà +__USE_EXTERN_INLINES + + +108  + #__SIGSETFN +( +NAME +, +BODY +, +CONST +) \ + +109 +_EXTERN_INLINE + \ + +110 + `NAME + ( +CONST + +__sig£t_t + * +__£t +,  +__sig +) \ + +112  +__mask + = + `__sigmask + ( +__sig +); \ + +113  +__wÜd + = + `__sigwÜd + ( +__sig +); \ + +114  +BODY +; \ + +115 } + + ) + +117 +__SIGSETFN + ( +__sigismemb” +, ( +__£t +-> +__v® +[ +__wÜd +] & +__mask +è? 1 : 0, +__cÚ¡ +) + +118 +__SIGSETFN + ( +__sigadd£t +, (( +__£t +-> +__v® +[ +__wÜd +] |ð +__mask +), 0), ) + +119 +__SIGSETFN + ( +__sigd–£t +, (( +__£t +-> +__v® +[ +__wÜd +] &ð~ +__mask +), 0), ) + +121 #undeà +__SIGSETFN + + + @/usr/include/bits/stdio.h + +20 #iâdeà +_STDIO_H + + +24 #ifdeà +__ýlu¥lus + + +25  + #__STDIO_INLINE + +šlše + + + ) + +27  + #__STDIO_INLINE + +__šlše + + + ) + +31 #ifdeà +__USE_EXTERN_INLINES + + +33 +__STDIO_INLINE +  + +34 + $v´štf + ( +__cÚ¡ + * +__»¡riù + +__fmt +, +_G_va_li¡ + +__¬g +) + +36  + `vårštf + ( +¡dout +, +__fmt +, +__¬g +); + +37 + } +} + +40 +__STDIO_INLINE +  + +41 + $g‘ch¬ + () + +43  + `_IO_g‘c + ( +¡dš +); + +44 + } +} + +47 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +49 +__STDIO_INLINE +  + +50 + $g‘c_uÆocked + ( +FILE + * +__å +) + +52  + `_IO_g‘c_uÆocked + ( +__å +); + +53 + } +} + +56 +__STDIO_INLINE +  + +57 + $g‘ch¬_uÆocked + () + +59  + `_IO_g‘c_uÆocked + ( +¡dš +); + +60 + } +} + +65 +__STDIO_INLINE +  + +66 + $putch¬ + ( +__c +) + +68  + `_IO_putc + ( +__c +, +¡dout +); + +69 + } +} + +72 #ifdeà +__USE_MISC + + +74 +__STDIO_INLINE +  + +75 + $åutc_uÆocked + ( +__c +, +FILE + * +__¡»am +) + +77  + `_IO_putc_uÆocked + ( +__c +, +__¡»am +); + +78 + } +} + +82 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +84 +__STDIO_INLINE +  + +85 + $putc_uÆocked + ( +__c +, +FILE + * +__¡»am +) + +87  + `_IO_putc_uÆocked + ( +__c +, +__¡»am +); + +88 + } +} + +91 +__STDIO_INLINE +  + +92 + $putch¬_uÆocked + ( +__c +) + +94  + `_IO_putc_uÆocked + ( +__c +, +¡dout +); + +95 + } +} + +99 #ifdef +__USE_GNU + + +101 +__STDIO_INLINE + +_IO_ssize_t + + +102 + $g‘lše + (** +__lš•Œ +, +size_t + * +__n +, +FILE + * +__¡»am +) + +104  + `__g‘d–im + ( +__lš•Œ +, +__n +, '\n', +__¡»am +); + +105 + } +} + +109 #ifdeà +__USE_MISC + + +111 +__STDIO_INLINE +  + +112 +__NTH + ( + $ãof_uÆocked + ( +FILE + * +__¡»am +)) + +114  + `_IO_ãof_uÆocked + ( +__¡»am +); + +115 + } +} + +118 +__STDIO_INLINE +  + +119 +__NTH + ( + $ã¼Ü_uÆocked + ( +FILE + * +__¡»am +)) + +121  + `_IO_ã¼Ü_uÆocked + ( +__¡»am +); + +122 + } +} + +128 #ià +defšed + +__USE_MISC + && defšed +__GNUC__ + && defšed +__OPTIMIZE__ + + +130  + #ä—d_uÆocked +( +±r +, +size +, +n +, +¡»am +) \ + +131 ( + `__ex‹nsiÚ__ + (( + `__bužtš_cÚ¡ªt_p + ( +size +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +132 && ( +size_t +è( +size +è* (size_tè( +n +) <= 8 \ + +133 && ( +size_t +è( +size +) != 0) \ + +134 ? ({ * +__±r + = (*è( +±r +); \ + +135 +FILE + * +__¡»am + = ( +¡»am +); \ + +136 +size_t + +__út +; \ + +137  +__út + = ( +size_t +è( +size +è* (size_tè( +n +); \ + +138 +__út + > 0; --__cnt) \ + +140  +__c + = + `_IO_g‘c_uÆocked + ( +__¡»am +); \ + +141 ià( +__c + =ð +EOF +) \ + +143 * +__±r +++ = +__c +; \ + +145 (( +size_t +è( +size +è* (size_tè( +n +è- +__út +) \ + +146 / ( +size_t +è( +size +); }) \ + +147 : ((( + `__bužtš_cÚ¡ªt_p + ( +size +è&& ( +size_t +) (size) == 0) \ + +148 || ( + `__bužtš_cÚ¡ªt_p + ( +n +è&& ( +size_t +) (n) == 0)) \ + +150 ? ((è( +±r +), (è( +¡»am +), (è( +size +), \ + +151 (è( +n +), ( +size_t +) 0) \ + +152 : + `ä—d_uÆocked + ( +±r +, +size +, +n +, +¡»am +)))) + + ) + +154  + #fwr™e_uÆocked +( +±r +, +size +, +n +, +¡»am +) \ + +155 ( + `__ex‹nsiÚ__ + (( + `__bužtš_cÚ¡ªt_p + ( +size +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +156 && ( +size_t +è( +size +è* (size_tè( +n +) <= 8 \ + +157 && ( +size_t +è( +size +) != 0) \ + +158 ? ({ cÚ¡ * +__±r + = (cÚ¡ *è( +±r +); \ + +159 +FILE + * +__¡»am + = ( +¡»am +); \ + +160 +size_t + +__út +; \ + +161  +__út + = ( +size_t +è( +size +è* (size_tè( +n +); \ + +162 +__út + > 0; --__cnt) \ + +163 ià( + `_IO_putc_uÆocked + (* +__±r +++, +__¡»am +è=ð +EOF +) \ + +165 (( +size_t +è( +size +è* (size_tè( +n +è- +__út +) \ + +166 / ( +size_t +è( +size +); }) \ + +167 : ((( + `__bužtš_cÚ¡ªt_p + ( +size +è&& ( +size_t +) (size) == 0) \ + +168 || ( + `__bužtš_cÚ¡ªt_p + ( +n +è&& ( +size_t +) (n) == 0)) \ + +170 ? ((è( +±r +), (è( +¡»am +), (è( +size +), \ + +171 (è( +n +), ( +size_t +) 0) \ + +172 : + `fwr™e_uÆocked + ( +±r +, +size +, +n +, +¡»am +)))) + + ) + +176 #undeà +__STDIO_INLINE + + + @/usr/include/bits/stdio2.h + +20 #iâdeà +_STDIO_H + + +24  + $__¥rštf_chk + (* +__»¡riù + +__s +,  +__æag +, +size_t + +__¦’ +, + +25 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...è +__THROW +; + +26  + $__v¥rštf_chk + (* +__»¡riù + +__s +,  +__æag +, +size_t + +__¦’ +, + +27 +__cÚ¡ + * +__»¡riù + +__fÜm© +, + +28 +_G_va_li¡ + +__­ +è +__THROW +; + +30  + #¥rštf +( +¡r +, ...) \ + +31 + `__bužtš___¥rštf_chk + ( +¡r +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +32 +__VA_ARGS__ +) + + ) + +33  + #v¥rštf +( +¡r +, +fmt +, +­ +) \ + +34 + `__bužtš___v¥rštf_chk + ( +¡r +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (¡r), +fmt +, +­ +) + + ) + +36 #ià +defšed + +__USE_BSD + || defšed +__USE_ISOC99 + || defšed +__USE_UNIX98 + + +38  + $__¢´štf_chk + (* +__»¡riù + +__s +, +size_t + +__n +,  +__æag +, + +39 +size_t + +__¦’ +, +__cÚ¡ + * +__»¡riù + +__fÜm© +, + +40 ...è +__THROW +; + +41  + $__v¢´štf_chk + (* +__»¡riù + +__s +, +size_t + +__n +,  +__æag +, + +42 +size_t + +__¦’ +, +__cÚ¡ + * +__»¡riù + +__fÜm© +, + +43 +_G_va_li¡ + +__­ +è +__THROW +; + +45  + #¢´štf +( +¡r +, +Ën +, ...) \ + +46 + `__bužtš___¢´štf_chk + ( +¡r +, +Ën +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +47 +__VA_ARGS__ +) + + ) + +48  + #v¢´štf +( +¡r +, +Ën +, +fmt +, +­ +) \ + +49 + `__bužtš___v¢´štf_chk + ( +¡r +, +Ën +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +50 +fmt +, +­ +) + + ) + +54 #ià +__USE_FORTIFY_LEVEL + > 1 + +56  + `__årštf_chk + ( +FILE + * +__»¡riù + +__¡»am +,  +__æag +, + +57 +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...); + +58  + `__´štf_chk + ( +__æag +, +__cÚ¡ + * +__»¡riù + +__fÜm© +, ...); + +59  + `__vårštf_chk + ( +FILE + * +__»¡riù + +__¡»am +,  +__æag +, + +60 +__cÚ¡ + * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__­ +); + +61  + `__v´štf_chk + ( +__æag +, +__cÚ¡ + * +__»¡riù + +__fÜm© +, + +62 +_G_va_li¡ + +__­ +); + +64  + #´štf +(...) \ + +65 + `__´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +66  + #årštf +( +¡»am +, ...) \ + +67 + `__årštf_chk + ( +¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +68  + #v´štf +( +fÜm© +, +­ +) \ + +69 + `__v´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +fÜm© +, +­ +) + + ) + +70  + #vårštf +( +¡»am +, +fÜm© +, +­ +) \ + +71 + `__vårštf_chk + ( +¡»am +, +__USE_FORTIFY_LEVEL + - 1, +fÜm© +, +­ +) + + ) + +75 * + `__g‘s_chk + (* +__¡r +, +size_t +); + +76  + #g‘s +( +__¡r +) \ + +77 (( + `__bos + ( +__¡r +è=ð( +size_t +) -1) \ + +78 ? ( +g‘s +è( +__¡r +è: + `__g‘s_chk + (__¡r, + `__bos + (__¡r))) + + ) + + @/usr/include/bits/stdio_lim.h + +19 #ià! +defšed + +_STDIO_H + && !defšed +__Ãed_FOPEN_MAX + && !defšed +__Ãed_IOV_MAX + + +23 #ifdeà +_STDIO_H + + +24  + #L_tm²am + 20 + + ) + +25  + #TMP_MAX + 238328 + + ) + +26  + #FILENAME_MAX + 4096 + + ) + +28 #ifdeà +__USE_POSIX + + +29  + #L_ù”mid + 9 + + ) + +30  + #L_cu£rid + 9 + + ) + +34 #ià +defšed + +__Ãed_FOPEN_MAX + || defšed +_STDIO_H + + +35 #undeà +FOPEN_MAX + + +36  + #FOPEN_MAX + 16 + + ) + +39 #ià +defšed + +__Ãed_IOV_MAX + && !defšed +IOV_MAX + + +40  + #IOV_MAX + 1024 + + ) + + @/usr/include/bits/string.h + +21 #iâdeà +_STRING_H + + +26  + #_STRING_ARCH_uÇligÃd + 1 + + ) + +31 #ià! +defšed + +__NO_STRING_INLINES + && defšed +__USE_STRING_INLINES + \ + +32 && +defšed + + g__GNUC__ + && __GNUC__ >ð2 && ! +__BOUNDED_POINTERS__ + + +34 #iâdeà +__STRING_INLINE + + +35 #ifdeà +__ýlu¥lus + + +36  + #__STRING_INLINE + +šlše + + + ) + +38  + #__STRING_INLINE + +__šlše + + + ) + +43  + #__STRING_SMALL_GET16 +( +¤c +, +idx +) \ + +44 (((( +__cÚ¡ + *è( +¤c +))[ +idx + + 1] << 8) \ + +45 | (( +__cÚ¡ + *è( +¤c +))[ +idx +]) + + ) + +46  + #__STRING_SMALL_GET32 +( +¤c +, +idx +) \ + +47 ((((( +__cÚ¡ + *è( +¤c +))[ +idx + + 3] << 8 \ + +48 | (( +__cÚ¡ + *è( +¤c +))[ +idx + + 2]) << 8 \ + +49 | (( +__cÚ¡ + *è( +¤c +))[ +idx + + 1]) << 8 \ + +50 | (( +__cÚ¡ + *è( +¤c +))[ +idx +]) + + ) + +54  + #_HAVE_STRING_ARCH_memýy + 1 + + ) + +55  + #memýy +( +de¡ +, +¤c +, +n +) \ + +56 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +57 ? + `__memýy_c + (( +de¡ +), ( +¤c +), ( +n +)) \ + +58 : + `__memýy_g + (( +de¡ +), ( +¤c +), ( +n +)))) + + ) + +59  + #__memýy_c +( +de¡ +, +¤c +, +n +) \ + +60 (( +n +) == 0 \ + +61 ? ( +de¡ +) \ + +62 : ((( +n +) % 4 == 0) \ + +63 ? + `__memýy_by4 + ( +de¡ +, +¤c +, +n +) \ + +64 : ((( +n +) % 2 == 0) \ + +65 ? + `__memýy_by2 + ( +de¡ +, +¤c +, +n +) \ + +66 : + `__memýy_g + ( +de¡ +, +¤c +, +n +)))) + + ) + +68 +__STRING_INLINE + * +__memýy_by4 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, + +69 +size_t + +__n +); + +71 +__STRING_INLINE + * + +72 + $__memýy_by4 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__n +) + +74  +__d0 +, +__d1 +; + +75 * +__tmp + = +__de¡ +; + +76 +__asm__ + +__vÞ©že__ + + +84 : "=&r" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__¤c +), "=&r" ( +__d1 +) + +85 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__n + / 4) + +87  +__de¡ +; + +88 + } +} + +90 +__STRING_INLINE + * +__memýy_by2 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, + +91 +size_t + +__n +); + +93 +__STRING_INLINE + * + +94 + $__memýy_by2 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__n +) + +96  +__d0 +, +__d1 +; + +97 * +__tmp + = +__de¡ +; + +98 +__asm__ + +__vÞ©že__ + + +111 : "=&q" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__¤c +), "=&r" ( +__d1 +) + +112 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__n + / 2) + +114  +__de¡ +; + +115 + } +} + +117 +__STRING_INLINE + * +__memýy_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +, + +118 +size_t + +__n +); + +120 +__STRING_INLINE + * + +121 + $__memýy_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__n +) + +123  +__d0 +, +__d1 +, +__d2 +; + +124 * +__tmp + = +__de¡ +; + +125 +__asm__ + +__vÞ©že__ + + +136 : "=&c" ( +__d0 +), "=&D" ( +__d1 +), "=&S" ( +__d2 +), + +137 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__de¡ +) + +138 : "0" ( +__n +), "1" ( +__tmp +), "2" ( +__¤c +), + +139 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__¤c +) + +141  +__de¡ +; + +142 + } +} + +144  + #_HAVE_STRING_ARCH_memmove + 1 + + ) + +145 #iâdeà +_FORCE_INLINES + + +148 +__STRING_INLINE + * + +149 + $memmove + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__n +) + +151  +__d0 +, +__d1 +, +__d2 +; + +152 * +__tmp + = +__de¡ +; + +153 ià( +__de¡ + < +__¤c +) + +154 +__asm__ + +__vÞ©že__ + + +157 : "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), + +158 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__de¡ +) + +159 : "0" ( +__n +), "1" ( +__¤c +), "2" ( +__tmp +), + +160 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__¤c +)); + +162 +__asm__ + +__vÞ©že__ + + +166 : "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), + +167 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__de¡ +) + +168 : "0" ( +__n +), "1" (__À- 1 + ( +__cÚ¡ + *è +__¤c +), + +169 "2" ( +__n + - 1 + (*è +__tmp +), + +170 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__¤c +)); + +171  +__de¡ +; + +172 + } +} + +176  + #_HAVE_STRING_ARCH_memcmp + 1 + + ) + +177 #iâdeà +_FORCE_INLINES + + +178 #iâdeà +__PIC__ + + +180 +__STRING_INLINE +  + +181 + $memcmp + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, +size_t + +__n +) + +183  +__d0 +, +__d1 +, +__d2 +; + +184  +__»s +; + +185 +__asm__ + +__vÞ©že__ + + +193 : "=&a" ( +__»s +), "=&S" ( +__d0 +), "=&D" ( +__d1 +), "=&c" ( +__d2 +) + +194 : "0" (0), "1" ( +__s1 +), "2" ( +__s2 +), "3" ( +__n +), + +195 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s1 +), + +196 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s2 +) + +198  +__»s +; + +199 + } +} + +204  + #_HAVE_STRING_ARCH_mem£t + 1 + + ) + +205  + #_USE_STRING_ARCH_mem£t + 1 + + ) + +206  + #mem£t +( +s +, +c +, +n +) \ + +207 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) && (n) <= 16 \ + +208 ? (( +n +) == 1 \ + +209 ? + `__mem£t_c1 + (( +s +), ( +c +)) \ + +210 : + `__mem£t_gc + (( +s +), ( +c +), ( +n +))) \ + +211 : ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +212 ? ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +213 ? + `__mem£t_cú + (( +s +), ( +c +), ( +n +)) \ + +214 : + `mem£t + (( +s +), ( +c +), ( +n +))) \ + +215 : ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +216 ? + `__mem£t_gú + (( +s +), ( +c +), ( +n +)) \ + +217 : + `mem£t + (( +s +), ( +c +), ( +n +)))))) + + ) + +219  + #__mem£t_c1 +( +s +, +c +è({ * +__s + = (s); \ + +220 *((*è +__s +èð(è( +c +); \ + +221 +__s +; }) + + ) + +223  + #__mem£t_gc +( +s +, +c +, +n +) \ + +224 ({ * +__s + = ( +s +); \ + +226  +__ui +; \ + +227  +__usi +; \ + +228  +__uc +; \ + +229 } * +__u + = +__s +; \ + +230  +__c + = ((è((è( +c +))) * 0x01010101; \ + +236 ià(( +n +) == 3 || (n) >= 5) \ + +237 +__asm__ + + `__vÞ©že__ + ("" : "ô" ( +__c +) : "0" (__c)); \ + +240  +n +) \ + +243 +__u +-> +__ui + = +__c +; \ + +244 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +246 +__u +-> +__ui + = +__c +; \ + +247 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +249 +__u +-> +__ui + = +__c +; \ + +250 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +252 +__u +-> +__usi + = (è +__c +; \ + +253 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +254 +__u +-> +__uc + = (è +__c +; \ + +258 +__u +-> +__ui + = +__c +; \ + +259 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +261 +__u +-> +__ui + = +__c +; \ + +262 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +264 +__u +-> +__ui + = +__c +; \ + +265 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +267 +__u +-> +__usi + = (è +__c +; \ + +271 +__u +-> +__ui + = +__c +; \ + +272 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +274 +__u +-> +__ui + = +__c +; \ + +275 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +277 +__u +-> +__ui + = +__c +; \ + +278 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +280 +__u +-> +__uc + = (è +__c +; \ + +284 +__u +-> +__ui + = +__c +; \ + +285 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +287 +__u +-> +__ui + = +__c +; \ + +288 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +290 +__u +-> +__ui + = +__c +; \ + +291 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +293 +__u +-> +__ui + = +__c +; \ + +298 +__s +; }) + + ) + +300  + #__mem£t_cú +( +s +, +c +, +n +) \ + +301 ((( +n +) % 4 == 0) \ + +302 ? + `__mem£t_cú_by4 + ( +s +, ((è((è( +c +))) * 0x01010101,\ + +303 +n +) \ + +304 : ((( +n +) % 2 == 0) \ + +305 ? + `__mem£t_cú_by2 + ( +s +, \ + +306 ((è((è( +c +))) * 0x01010101,\ + +307 +n +) \ + +308 : + `mem£t + ( +s +, +c +, +n +))) + + ) + +310 +__STRING_INLINE + * +__mem£t_cú_by4 + (* +__s +,  +__c +, + +311 +size_t + +__n +); + +313 +__STRING_INLINE + * + +314 + $__mem£t_cú_by4 + (* +__s +,  +__c +, +size_t + +__n +) + +316 * +__tmp + = +__s +; + +317  +__d0 +; + +318 #ifdeà +__i686__ + + +319 +__asm__ + +__vÞ©že__ + + +322 : "=&a" ( +__c +), "=&D" ( +__tmp +), "=&c" ( +__d0 +), + +323 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +324 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +327 +__asm__ + +__vÞ©že__ + + +333 : "=&r" ( +__c +), "=&r" ( +__tmp +), "=&r" ( +__d0 +), + +334 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +335 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +338  +__s +; + +339 + } +} + +341 +__STRING_INLINE + * +__mem£t_cú_by2 + (* +__s +,  +__c +, + +342 +size_t + +__n +); + +344 +__STRING_INLINE + * + +345 + $__mem£t_cú_by2 + (* +__s +,  +__c +, +size_t + +__n +) + +347  +__d0 +, +__d1 +; + +348 * +__tmp + = +__s +; + +349 #ifdeà +__i686__ + + +350 +__asm__ + +__vÞ©že__ + + +354 : "=&a" ( +__d0 +), "=&D" ( +__tmp +), "=&c" ( +__d1 +), + +355 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +356 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +359 +__asm__ + +__vÞ©že__ + + +365 : "=&q" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__d1 +), + +366 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +367 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +370  +__s +; + +371 + } +} + +373  + #__mem£t_gú +( +s +, +c +, +n +) \ + +374 ((( +n +) % 4 == 0) \ + +375 ? + `__mem£t_gú_by4 + ( +s +, +c +, +n +) \ + +376 : ((( +n +) % 2 == 0) \ + +377 ? + `__mem£t_gú_by2 + ( +s +, +c +, +n +) \ + +378 : + `mem£t + ( +s +, +c +, +n +))) + + ) + +380 +__STRING_INLINE + * +__mem£t_gú_by4 + (* +__s +,  +__c +, +size_t + +__n +); + +382 +__STRING_INLINE + * + +383 + $__mem£t_gú_by4 + (* +__s +,  +__c +, +size_t + +__n +) + +385 * +__tmp + = +__s +; + +386  +__d0 +; + +387 +__asm__ + +__vÞ©že__ + + +397 : "=&q" ( +__c +), "=&r" ( +__tmp +), "=&r" ( +__d0 +), + +398 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +399 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +401  +__s +; + +402 + } +} + +404 +__STRING_INLINE + * +__mem£t_gú_by2 + (* +__s +,  +__c +, +size_t + +__n +); + +406 +__STRING_INLINE + * + +407 + $__mem£t_gú_by2 + (* +__s +,  +__c +, +size_t + +__n +) + +409  +__d0 +, +__d1 +; + +410 * +__tmp + = +__s +; + +411 +__asm__ + +__vÞ©že__ + + +422 : "=&q" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__d1 +), + +423 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +424 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +426  +__s +; + +427 + } +} + +431  + #_HAVE_STRING_ARCH_memchr + 1 + + ) + +432 #iâdeà +_FORCE_INLINES + + +433 +__STRING_INLINE + * + +434 + $memchr + ( +__cÚ¡ + * +__s +,  +__c +, +size_t + +__n +) + +436  +__d0 +; + +437 #ifdeà +__i686__ + + +438  +__d1 +; + +440 * +__»s +; + +441 ià( +__n + == 0) + +442  +NULL +; + +443 #ifdeà +__i686__ + + +444 +__asm__ + +__vÞ©že__ + + +448 : "=D" ( +__»s +), "=&c" ( +__d0 +), "=&r" ( +__d1 +) + +449 : "a" ( +__c +), "0" ( +__s +), "1" ( +__n +), "2" (1), + +450 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +453 +__asm__ + +__vÞ©že__ + + +459 : "=D" ( +__»s +), "=&c" ( +__d0 +) + +460 : "a" ( +__c +), "0" ( +__s +), "1" ( +__n +), + +461 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +464  +__»s + - 1; + +465 + } +} + +468  + #_HAVE_STRING_ARCH_memrchr + 1 + + ) + +469 #iâdeà +_FORCE_INLINES + + +470 +__STRING_INLINE + * +__memrchr + ( +__cÚ¡ + * +__s +,  +__c +, +size_t + +__n +); + +472 +__STRING_INLINE + * + +473 + $__memrchr + ( +__cÚ¡ + * +__s +,  +__c +, +size_t + +__n +) + +475  +__d0 +; + +476 #ifdeà +__i686__ + + +477  +__d1 +; + +479 * +__»s +; + +480 ià( +__n + == 0) + +481  +NULL +; + +482 #ifdeà +__i686__ + + +483 +__asm__ + +__vÞ©že__ + + +489 : "=D" ( +__»s +), "=&c" ( +__d0 +), "=&r" ( +__d1 +) + +490 : "a" ( +__c +), "0" ( +__s + + +__n + - 1), "1" (__n), "2" (-1), + +491 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +494 +__asm__ + +__vÞ©že__ + + +501 : "=D" ( +__»s +), "=&c" ( +__d0 +) + +502 : "a" ( +__c +), "0" ( +__s + + +__n + - 1), "1" (__n), + +503 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +506  +__»s +; + +507 + } +} + +508 #ifdeà +__USE_GNU + + +509  + #memrchr +( +s +, +c +, +n +è + `__memrchr + ((s), (c), (n)) + + ) + +514  + #_HAVE_STRING_ARCH_¿wmemchr + 1 + + ) + +515 +__STRING_INLINE + * +__¿wmemchr + (cÚ¡ * +__s +,  +__c +); + +517 #iâdeà +_FORCE_INLINES + + +518 +__STRING_INLINE + * + +519 + $__¿wmemchr + (cÚ¡ * +__s +,  +__c +) + +521  +__d0 +; + +522 * +__»s +; + +523 +__asm__ + +__vÞ©že__ + + +526 : "=D" ( +__»s +), "=&c" ( +__d0 +) + +527 : "a" ( +__c +), "0" ( +__s +), "1" (0xffffffff), + +528 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +530  +__»s + - 1; + +531 + } +} + +532 #ifdeà +__USE_GNU + + +533 +__STRING_INLINE + * + +534 + $¿wmemchr + (cÚ¡ * +__s +,  +__c +) + +536  + `__¿wmemchr + ( +__s +, +__c +); + +537 + } +} + +543  + #_HAVE_STRING_ARCH_¡¾’ + 1 + + ) + +544  + #¡¾’ +( +¡r +) \ + +545 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¡r +) \ + +546 ? + `__bužtš_¡¾’ + ( +¡r +) \ + +547 : + `__¡¾’_g + ( +¡r +))) + + ) + +548 +__STRING_INLINE + +size_t + +__¡¾’_g + ( +__cÚ¡ + * +__¡r +); + +550 +__STRING_INLINE + +size_t + + +551 + $__¡¾’_g + ( +__cÚ¡ + * +__¡r +) + +553  +__dummy +; + +554  +__cÚ¡ + * +__tmp + = +__¡r +; + +555 +__asm__ + +__vÞ©že__ + + +561 : "ô" ( +__tmp +), "=&q" ( +__dummy +) + +562 : "0" ( +__¡r +), + +563 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__¡r +) + +565  +__tmp + - +__¡r + - 1; + +566 + } +} + +570  + #_HAVE_STRING_ARCH_¡rýy + 1 + + ) + +571  + #¡rýy +( +de¡ +, +¤c +) \ + +572 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +573 ? ( (( +¤c +)[0]è=ð1 && + `¡¾’ + (src) + 1 <= 8 \ + +574 ? + `__¡rýy_a_sm®l + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1) \ + +575 : (*è + `memýy + ((*è( +de¡ +), \ + +576 ( +__cÚ¡ + *è( +¤c +), \ + +577 + `¡¾’ + ( +¤c +) + 1)) \ + +578 : + `__¡rýy_g + (( +de¡ +), ( +¤c +)))) + + ) + +580  + #__¡rýy_a_sm®l +( +de¡ +, +¤c +, +¤þ’ +) \ + +581 ( + `__ex‹nsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +583  +__ui +; \ + +584  +__usi +; \ + +585  +__uc +; \ + +586  +__c +; \ + +587 } * +__u + = (*è +__de¡ +; \ + +588  +¤þ’ +) \ + +591 +__u +-> +__uc + = '\0'; \ + +594 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +597 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +598 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +599 +__u +-> +__uc + = '\0'; \ + +602 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +605 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +606 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +607 +__u +-> +__uc + = '\0'; \ + +610 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +611 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +612 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +615 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +616 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +617 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +618 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +619 +__u +-> +__uc + = '\0'; \ + +622 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +623 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +624 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 4); \ + +627 (*è +__de¡ +; })) + + ) + +629 +__STRING_INLINE + * +__¡rýy_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +); + +631 +__STRING_INLINE + * + +632 + $__¡rýy_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +) + +634 * +__tmp + = +__de¡ +; + +635  +__dummy +; + +636 +__asm__ + +__vÞ©že__ + + +645 : "=&r" ( +__¤c +), "=&r" ( +__tmp +), "=&q" ( +__dummy +), + +646 "=m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__de¡ +) + +647 : "0" ( +__¤c +), "1" ( +__tmp +), + +648 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__¤c +) + +650  +__de¡ +; + +651 + } +} + +654 #ifdeà +__USE_GNU + + +655  + #_HAVE_STRING_ARCH_¡pýy + 1 + + ) + +657  + #__¡pýy +( +de¡ +, +¤c +) \ + +658 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +659 ? ( + `¡¾’ + ( +¤c +) + 1 <= 8 \ + +660 ? + `__¡pýy_a_sm®l + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1) \ + +661 : + `__¡pýy_c + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1)) \ + +662 : + `__¡pýy_g + (( +de¡ +), ( +¤c +)))) + + ) + +663  + #__¡pýy_c +( +de¡ +, +¤c +, +¤þ’ +) \ + +664 (( +¤þ’ +) % 4 == 0 \ + +665 ? + `__mempýy_by4 + ( +de¡ +, +¤c +, +¤þ’ +) - 1 \ + +666 : (( +¤þ’ +) % 2 == 0 \ + +667 ? + `__mempýy_by2 + ( +de¡ +, +¤c +, +¤þ’ +) - 1 \ + +668 : + `__mempýy_byn + ( +de¡ +, +¤c +, +¤þ’ +è- 1)) + + ) + +671  + #¡pýy +( +de¡ +, +¤c +è + `__¡pýy + ((de¡), (¤c)) + + ) + +673  + #__¡pýy_a_sm®l +( +de¡ +, +¤c +, +¤þ’ +) \ + +674 ( + `__ex‹nsiÚ__ + ({ union { \ + +675  +__ui +; \ + +676  +__usi +; \ + +677  +__uc +; \ + +678  +__c +; \ + +679 } * +__u + = (*è( +de¡ +); \ + +680  +¤þ’ +) \ + +683 +__u +-> +__uc + = '\0'; \ + +686 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +687 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); \ + +690 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +691 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +692 +__u +-> +__uc + = '\0'; \ + +695 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +696 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); \ + +699 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +700 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +701 +__u +-> +__uc + = '\0'; \ + +704 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +705 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +706 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +707 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); \ + +710 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +711 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +712 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +713 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +714 +__u +-> +__uc + = '\0'; \ + +717 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +718 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +719 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 4); \ + +720 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); \ + +723 (*è +__u +; })) + + ) + +725 +__STRING_INLINE + * +__mempýy_by4 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, + +726 +size_t + +__¤þ’ +); + +728 +__STRING_INLINE + * + +729 + $__mempýy_by4 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__¤þ’ +) + +731 * +__tmp + = +__de¡ +; + +732  +__d0 +, +__d1 +; + +733 +__asm__ + +__vÞ©že__ + + +741 : "=&r" ( +__d0 +), "ô" ( +__tmp +), "=&r" ( +__¤c +), "=&r" ( +__d1 +) + +742 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ’ + / 4) + +744  +__tmp +; + +745 + } +} + +747 +__STRING_INLINE + * +__mempýy_by2 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, + +748 +size_t + +__¤þ’ +); + +750 +__STRING_INLINE + * + +751 + $__mempýy_by2 + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__¤þ’ +) + +753 * +__tmp + = +__de¡ +; + +754  +__d0 +, +__d1 +; + +755 +__asm__ + +__vÞ©že__ + + +768 : "=&q" ( +__d0 +), "ô" ( +__tmp +), "=&r" ( +__¤c +), "=&r" ( +__d1 +), + +769 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +770 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ’ + / 2), + +771 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +773  +__tmp + + 2; + +774 + } +} + +776 +__STRING_INLINE + * +__mempýy_byn + (* +__de¡ +, +__cÚ¡ + * +__¤c +, + +777 +size_t + +__¤þ’ +); + +779 +__STRING_INLINE + * + +780 + $__mempýy_byn + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__¤þ’ +) + +782  +__d0 +, +__d1 +; + +783 * +__tmp + = +__de¡ +; + +784 +__asm__ + +__vÞ©že__ + + +795 : "=D" ( +__tmp +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), + +796 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +797 : "0" ( +__tmp +), "1" ( +__¤þ’ +), "2" ( +__¤c +), + +798 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +800  +__tmp +; + +801 + } +} + +803 +__STRING_INLINE + * +__¡pýy_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +); + +805 +__STRING_INLINE + * + +806 + $__¡pýy_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +) + +808 * +__tmp + = +__de¡ +; + +809  +__dummy +; + +810 +__asm__ + +__vÞ©že__ + + +819 : "=&r" ( +__¤c +), "ô" ( +__tmp +), "=&q" ( +__dummy +), + +820 "=m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__de¡ +) + +821 : "0" ( +__¤c +), "1" ( +__tmp +), + +822 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__¤c +) + +824  +__tmp + - 1; + +825 + } +} + +830  + #_HAVE_STRING_ARCH_¡ºýy + 1 + + ) + +831  + #¡ºýy +( +de¡ +, +¤c +, +n +) \ + +832 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +833 ? (( + `¡¾’ + ( +¤c +è+ 1 >ð(( +size_t +è( +n +)) \ + +834 ? (*è + `memýy + ((*è( +de¡ +), \ + +835 ( +__cÚ¡ + *è( +¤c +), +n +) \ + +836 : + `__¡ºýy_cg + (( +de¡ +), ( +¤c +), + `¡¾’ + (¤cè+ 1, +n +))) \ + +837 : + `__¡ºýy_gg + (( +de¡ +), ( +¤c +), +n +))) + + ) + +838  + #__¡ºýy_cg +( +de¡ +, +¤c +, +¤þ’ +, +n +) \ + +839 ((( +¤þ’ +) % 4 == 0) \ + +840 ? + `__¡ºýy_by4 + ( +de¡ +, +¤c +, +¤þ’ +, +n +) \ + +841 : ((( +¤þ’ +) % 2 == 0) \ + +842 ? + `__¡ºýy_by2 + ( +de¡ +, +¤c +, +¤þ’ +, +n +) \ + +843 : + `__¡ºýy_byn + ( +de¡ +, +¤c +, +¤þ’ +, +n +))) + + ) + +845 +__STRING_INLINE + * +__¡ºýy_by4 + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], + +846 +size_t + +__¤þ’ +, size_ˆ +__n +); + +848 +__STRING_INLINE + * + +849 + $__¡ºýy_by4 + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], +size_t + +__¤þ’ +, size_ˆ +__n +) + +851 * +__tmp + = +__de¡ +; + +852  +__dummy1 +, +__dummy2 +; + +853 +__asm__ + +__vÞ©že__ + + +861 : "=&r" ( +__dummy1 +), "ô" ( +__tmp +), "=&r" ( +__¤c +), "=&r" ( +__dummy2 +), + +862 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +863 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ’ + / 4), + +864 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +866 (è + `mem£t + ( +__tmp +, '\0', +__n + - +__¤þ’ +); + +867  +__de¡ +; + +868 + } +} + +870 +__STRING_INLINE + * +__¡ºýy_by2 + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], + +871 +size_t + +__¤þ’ +, size_ˆ +__n +); + +873 +__STRING_INLINE + * + +874 + $__¡ºýy_by2 + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], +size_t + +__¤þ’ +, size_ˆ +__n +) + +876 * +__tmp + = +__de¡ +; + +877  +__dummy1 +, +__dummy2 +; + +878 +__asm__ + +__vÞ©že__ + + +891 : "=&q" ( +__dummy1 +), "ô" ( +__tmp +), "=&r" ( +__¤c +), "=&r" ( +__dummy2 +), + +892 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +893 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ’ + / 2), + +894 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +896 (è + `mem£t + ( +__tmp + + 2, '\0', +__n + - +__¤þ’ +); + +897  +__de¡ +; + +898 + } +} + +900 +__STRING_INLINE + * +__¡ºýy_byn + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], + +901 +size_t + +__¤þ’ +, size_ˆ +__n +); + +903 +__STRING_INLINE + * + +904 + $__¡ºýy_byn + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], +size_t + +__¤þ’ +, size_ˆ +__n +) + +906  +__d0 +, +__d1 +; + +907 * +__tmp + = +__de¡ +; + +908 +__asm__ + +__vÞ©že__ + + +919 : "=D" ( +__tmp +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), + +920 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +921 : "1" ( +__¤þ’ +), "0" ( +__tmp +),"2" ( +__¤c +), + +922 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +924 (è + `mem£t + ( +__tmp +, '\0', +__n + - +__¤þ’ +); + +925  +__de¡ +; + +926 + } +} + +928 +__STRING_INLINE + * +__¡ºýy_gg + (* +__de¡ +, +__cÚ¡ + * +__¤c +, + +929 +size_t + +__n +); + +931 +__STRING_INLINE + * + +932 + $__¡ºýy_gg + (* +__de¡ +, +__cÚ¡ + * +__¤c +, +size_t + +__n +) + +934 * +__tmp + = +__de¡ +; + +935  +__dummy +; + +936 ià( +__n + > 0) + +937 +__asm__ + +__vÞ©že__ + + +953 : "=&r" ( +__¤c +), "=&r" ( +__tmp +), "=&q" ( +__dummy +), "=&r" ( +__n +) + +954 : "0" ( +__¤c +), "1" ( +__tmp +), "3" ( +__n +) + +957  +__de¡ +; + +958 + } +} + +962  + #_HAVE_STRING_ARCH_¡rÿt + 1 + + ) + +963  + #¡rÿt +( +de¡ +, +¤c +) \ + +964 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +965 ? + `__¡rÿt_c + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1) \ + +966 : + `__¡rÿt_g + (( +de¡ +), ( +¤c +)))) + + ) + +968 +__STRING_INLINE + * +__¡rÿt_c + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], + +969 +size_t + +__¤þ’ +); + +971 +__STRING_INLINE + * + +972 + $__¡rÿt_c + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], +size_t + +__¤þ’ +) + +974 #ifdeà +__i686__ + + +975  +__d0 +; + +976 * +__tmp +; + +977 +__asm__ + +__vÞ©že__ + + +979 : "=D" ( +__tmp +), "=&c" ( +__d0 +), + +980 "=m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__de¡ +) + +981 : "0" ( +__de¡ +), "1" (0xffffffff), "a" (0), + +982 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +984 -- +__tmp +; + +986 * +__tmp + = +__de¡ + - 1; + +987 +__asm__ + +__vÞ©že__ + + +992 : "ô" ( +__tmp +), + +993 "=m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__de¡ +) + +994 : "0" ( +__tmp +), + +995 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +998 (è + `memýy + ( +__tmp +, +__¤c +, +__¤þ’ +); + +999  +__de¡ +; + +1000 + } +} + +1002 +__STRING_INLINE + * +__¡rÿt_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +); + +1004 +__STRING_INLINE + * + +1005 + $__¡rÿt_g + (* +__de¡ +, +__cÚ¡ + * +__¤c +) + +1007 * +__tmp + = +__de¡ + - 1; + +1008  +__dummy +; + +1009 +__asm__ + +__vÞ©že__ + + +1021 : "=&q" ( +__dummy +), "=&r" ( +__tmp +), "=&r" ( +__¤c +), + +1022 "=m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__de¡ +) + +1023 : "1" ( +__tmp +), "2" ( +__¤c +), + +1024 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__¤c +) + +1026  +__de¡ +; + +1027 + } +} + +1031  + #_HAVE_STRING_ARCH_¡ºÿt + 1 + + ) + +1032  + #¡ºÿt +( +de¡ +, +¤c +, +n +) \ + +1033 ( + `__ex‹nsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +1034 + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +1035 ? ( + `¡¾’ + ( +¤c +è< (( +size_t +è( +n +)) \ + +1036 ? + `¡rÿt + ( +__de¡ +, ( +¤c +)) \ + +1037 : (*(*) + `__mempýy + ( + `¡rchr + ( +__de¡ +, '\0'), \ + +1038 ( +__cÚ¡ + *è( +¤c +), \ + +1039 ( +n +)èð0, +__de¡ +)) \ + +1040 : + `__¡ºÿt_g + ( +__de¡ +, ( +¤c +), ( +n +)); })) + + ) + +1042 +__STRING_INLINE + * +__¡ºÿt_g + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], + +1043 +size_t + +__n +); + +1045 +__STRING_INLINE + * + +1046 + $__¡ºÿt_g + (* +__de¡ +, +__cÚ¡ +  +__¤c +[], +size_t + +__n +) + +1048 * +__tmp + = +__de¡ +; + +1049  +__dummy +; + +1050 #ifdeà +__i686__ + + +1051 +__asm__ + +__vÞ©že__ + + +1065 : "=&a" ( +__dummy +), "=&D" ( +__tmp +), "=&S" ( +__¤c +), "=&c" ( +__n +) + +1066 : "g" ( +__n +), "0" (0), "1" ( +__tmp +), "2" ( +__¤c +), "3" (0xffffffff) + +1069 -- +__tmp +; + +1070 +__asm__ + +__vÞ©že__ + + +1087 : "=&q" ( +__dummy +), "=&r" ( +__tmp +), "=&r" ( +__¤c +), "=&r" ( +__n +) + +1088 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__n +) + +1091  +__de¡ +; + +1092 + } +} + +1096  + #_HAVE_STRING_ARCH_¡rcmp + 1 + + ) + +1097  + #¡rcmp +( +s1 +, +s2 +) \ + +1098 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& __bužtš_cÚ¡ªt_°( +s2 +) \ + +1099 && ( (( +s1 +)[0]è!ð1 || + `¡¾’ + (s1) >= 4) \ + +1100 && ( (( +s2 +)[0]è!ð1 || + `¡¾’ + (s2) >= 4) \ + +1101 ? + `memcmp + (( +__cÚ¡ + *è( +s1 +), (__cÚ¡ *è( +s2 +), \ + +1102 ( + `¡¾’ + ( +s1 +è< sŒËÀ( +s2 +) \ + +1103 ? + `¡¾’ + ( +s1 +è: sŒËÀ( +s2 +)) + 1) \ + +1104 : ( + `__bužtš_cÚ¡ªt_p + ( +s1 +) &&  ((s1)[0]) == 1 \ + +1105 &&  (( +s2 +)[0]è=ð1 && + `¡¾’ + ( +s1 +) < 4 \ + +1106 ? ( + `__bužtš_cÚ¡ªt_p + ( +s2 +) &&  ((s2)[0]) == 1 \ + +1107 ? + `__¡rcmp_cc + (( +__cÚ¡ + *è( +s1 +), \ + +1108 ( +__cÚ¡ + *è( +s2 +), \ + +1109 + `¡¾’ + ( +s1 +)) \ + +1110 : + `__¡rcmp_cg + (( +__cÚ¡ + *è( +s1 +), \ + +1111 ( +__cÚ¡ + *è( +s2 +), \ + +1112 + `¡¾’ + ( +s1 +))) \ + +1113 : ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&&  (( +s1 +)[0]) == 1 \ + +1114 &&  (( +s2 +)[0]è=ð1 && + `¡¾’ + (s2) < 4 \ + +1115 ? ( + `__bužtš_cÚ¡ªt_p + ( +s1 +) \ + +1116 ? + `__¡rcmp_cc + (( +__cÚ¡ + *è( +s1 +), \ + +1117 ( +__cÚ¡ + *è( +s2 +), \ + +1118 + `¡¾’ + ( +s2 +)) \ + +1119 : + `__¡rcmp_gc + (( +__cÚ¡ + *è( +s1 +), \ + +1120 ( +__cÚ¡ + *è( +s2 +), \ + +1121 + `¡¾’ + ( +s2 +))) \ + +1122 : + `__¡rcmp_gg + (( +s1 +), ( +s2 +)))))) + + ) + +1124  + #__¡rcmp_cc +( +s1 +, +s2 +, +l +) \ + +1125 ( + `__ex‹nsiÚ__ + ({  +__»suÉ + = ( +s1 +)[0] - ( +s2 +)[0]; \ + +1126 ià( +l + > 0 && +__»suÉ + == 0) \ + +1128 +__»suÉ + = ( +s1 +)[1] - ( +s2 +)[1]; \ + +1129 ià( +l + > 1 && +__»suÉ + == 0) \ + +1131 +__»suÉ + = ( +s1 +)[2] - ( +s2 +)[2]; \ + +1132 ià( +l + > 2 && +__»suÉ + == 0) \ + +1133 +__»suÉ + = ( +s1 +)[3] - ( +s2 +)[3]; \ + +1136 +__»suÉ +; })) + + ) + +1138  + #__¡rcmp_cg +( +s1 +, +s2 +, +l1 +) \ + +1139 ( + `__ex‹nsiÚ__ + ({ +__cÚ¡ + * +__s2 + = ( +s2 +); \ + +1140  +__»suÉ + = ( +s1 +)[0] - +__s2 +[0]; \ + +1141 ià( +l1 + > 0 && +__»suÉ + == 0) \ + +1143 +__»suÉ + = ( +s1 +)[1] - +__s2 +[1]; \ + +1144 ià( +l1 + > 1 && +__»suÉ + == 0) \ + +1146 +__»suÉ + = ( +s1 +)[2] - +__s2 +[2]; \ + +1147 ià( +l1 + > 2 && +__»suÉ + == 0) \ + +1148 +__»suÉ + = ( +s1 +)[3] - +__s2 +[3]; \ + +1151 +__»suÉ +; })) + + ) + +1153  + #__¡rcmp_gc +( +s1 +, +s2 +, +l2 +) \ + +1154 ( + `__ex‹nsiÚ__ + ({ +__cÚ¡ + * +__s1 + = ( +s1 +); \ + +1155  +__»suÉ + = +__s1 +[0] - ( +s2 +)[0]; \ + +1156 ià( +l2 + > 0 && +__»suÉ + == 0) \ + +1158 +__»suÉ + = +__s1 +[1] - ( +s2 +)[1]; \ + +1159 ià( +l2 + > 1 && +__»suÉ + == 0) \ + +1161 +__»suÉ + = +__s1 +[2] - ( +s2 +)[2]; \ + +1162 ià( +l2 + > 2 && +__»suÉ + == 0) \ + +1163 +__»suÉ + = +__s1 +[3] - ( +s2 +)[3]; \ + +1166 +__»suÉ +; })) + + ) + +1168 +__STRING_INLINE +  +__¡rcmp_gg + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +); + +1170 +__STRING_INLINE +  + +1171 + $__¡rcmp_gg + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +) + +1173  +__»s +; + +1174 +__asm__ + +__vÞ©že__ + + +1190 : "=q" ( +__»s +), "=&r" ( +__s1 +), "=&r" ( +__s2 +) + +1191 : "1" ( +__s1 +), "2" ( +__s2 +), + +1192 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s1 +), + +1193 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s2 +) + +1195  +__»s +; + +1196 + } +} + +1200  + #_HAVE_STRING_ARCH_¡ºcmp + 1 + + ) + +1201  + #¡ºcmp +( +s1 +, +s2 +, +n +) \ + +1202 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `¡¾’ + (s1è< (( +size_t +è( +n +)) \ + +1203 ? + `¡rcmp + (( +s1 +), ( +s2 +)) \ + +1204 : ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `¡¾’ + (s2è< (( +size_t +è( +n +))\ + +1205 ? + `¡rcmp + (( +s1 +), ( +s2 +)) \ + +1206 : + `__¡ºcmp_g + (( +s1 +), ( +s2 +), ( +n +))))) + + ) + +1208 +__STRING_INLINE +  +__¡ºcmp_g + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, + +1209 +size_t + +__n +); + +1211 +__STRING_INLINE +  + +1212 + $__¡ºcmp_g + ( +__cÚ¡ + * +__s1 +, __cÚ¡ * +__s2 +, +size_t + +__n +) + +1214  +__»s +; + +1215 +__asm__ + +__vÞ©že__ + + +1234 : "=q" ( +__»s +), "=&r" ( +__s1 +), "=&r" ( +__s2 +), "=&r" ( +__n +) + +1235 : "1" ( +__s1 +), "2" ( +__s2 +), "3" ( +__n +), + +1236 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s1 +), + +1237 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s2 +) + +1239  +__»s +; + +1240 + } +} + +1244  + #_HAVE_STRING_ARCH_¡rchr + 1 + + ) + +1245  + #_USE_STRING_ARCH_¡rchr + 1 + + ) + +1246  + #¡rchr +( +s +, +c +) \ + +1247 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +1248 ? (( +c +) == '\0' \ + +1249 ? (*è + `__¿wmemchr + (( +s +), ( +c +)) \ + +1250 : + `__¡rchr_c + (( +s +), (( +c +) & 0xff) << 8)) \ + +1251 : + `__¡rchr_g + (( +s +), ( +c +)))) + + ) + +1253 +__STRING_INLINE + * +__¡rchr_c + ( +__cÚ¡ + * +__s +,  +__c +); + +1255 +__STRING_INLINE + * + +1256 + $__¡rchr_c + ( +__cÚ¡ + * +__s +,  +__c +) + +1258  +__d0 +; + +1259 * +__»s +; + +1260 +__asm__ + +__vÞ©že__ + + +1270 : "ô" ( +__»s +), "=&a" ( +__d0 +) + +1271 : "0" ( +__s +), "1" ( +__c +), + +1272 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1274  +__»s +; + +1275 + } +} + +1277 +__STRING_INLINE + * +__¡rchr_g + ( +__cÚ¡ + * +__s +,  +__c +); + +1279 +__STRING_INLINE + * + +1280 + $__¡rchr_g + ( +__cÚ¡ + * +__s +,  +__c +) + +1282  +__d0 +; + +1283 * +__»s +; + +1284 +__asm__ + +__vÞ©že__ + + +1295 : "ô" ( +__»s +), "=&a" ( +__d0 +) + +1296 : "0" ( +__s +), "1" ( +__c +), + +1297 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1299  +__»s +; + +1300 + } +} + +1304  + #_HAVE_STRING_ARCH_¡rchºul + 1 + + ) + +1305  + #__¡rchºul +( +s +, +c +) \ + +1306 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +1307 ? (( +c +) == '\0' \ + +1308 ? (*è + `__¿wmemchr + (( +s +), +c +) \ + +1309 : + `__¡rchºul_c + (( +s +), (( +c +) & 0xff) << 8)) \ + +1310 : + `__¡rchºul_g + (( +s +), +c +))) + + ) + +1312 +__STRING_INLINE + * +__¡rchºul_c + ( +__cÚ¡ + * +__s +,  +__c +); + +1314 +__STRING_INLINE + * + +1315 + $__¡rchºul_c + ( +__cÚ¡ + * +__s +,  +__c +) + +1317  +__d0 +; + +1318 * +__»s +; + +1319 +__asm__ + +__vÞ©že__ + + +1329 : "ô" ( +__»s +), "=&a" ( +__d0 +) + +1330 : "0" ( +__s +), "1" ( +__c +), + +1331 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1333  +__»s +; + +1334 + } +} + +1336 +__STRING_INLINE + * +__¡rchºul_g + ( +__cÚ¡ + * +__s +,  +__c +); + +1338 +__STRING_INLINE + * + +1339 + $__¡rchºul_g + ( +__cÚ¡ + * +__s +,  +__c +) + +1341  +__d0 +; + +1342 * +__»s +; + +1343 +__asm__ + +__vÞ©že__ + + +1354 : "ô" ( +__»s +), "=&a" ( +__d0 +) + +1355 : "0" ( +__s +), "1" ( +__c +), + +1356 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1358  +__»s +; + +1359 + } +} + +1360 #ifdeà +__USE_GNU + + +1361  + #¡rchºul +( +s +, +c +è + `__¡rchºul + ((s), (c)) + + ) + +1365 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +1367  + #_HAVE_STRING_ARCH_šdex + 1 + + ) + +1368  + #šdex +( +s +, +c +) \ + +1369 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +1370 ? + `__¡rchr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1371 : + `__¡rchr_g + (( +s +), ( +c +)))) + + ) + +1376  + #_HAVE_STRING_ARCH_¡¼chr + 1 + + ) + +1377  + #¡¼chr +( +s +, +c +) \ + +1378 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +1379 ? + `__¡¼chr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1380 : + `__¡¼chr_g + (( +s +), ( +c +)))) + + ) + +1382 #ifdeà +__i686__ + + +1383 +__STRING_INLINE + * +__¡¼chr_c + ( +__cÚ¡ + * +__s +,  +__c +); + +1385 +__STRING_INLINE + * + +1386 + $__¡¼chr_c + ( +__cÚ¡ + * +__s +,  +__c +) + +1388  +__d0 +, +__d1 +; + +1389 * +__»s +; + +1390 +__asm__ + +__vÞ©že__ + + +1398 : "=d" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1399 : "0" (1), "1" ( +__s +), "2" ( +__c +), + +1400 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1402  +__»s + - 1; + +1403 + } +} + +1405 +__STRING_INLINE + * +__¡¼chr_g + ( +__cÚ¡ + * +__s +,  +__c +); + +1407 +__STRING_INLINE + * + +1408 + $__¡¼chr_g + ( +__cÚ¡ + * +__s +,  +__c +) + +1410  +__d0 +, +__d1 +; + +1411 * +__»s +; + +1412 +__asm__ + +__vÞ©že__ + + +1421 : "=d" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1422 : "0" (1), "1" ( +__s +), "2" ( +__c +), + +1423 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1425  +__»s + - 1; + +1426 + } +} + +1428 +__STRING_INLINE + * +__¡¼chr_c + ( +__cÚ¡ + * +__s +,  +__c +); + +1430 +__STRING_INLINE + * + +1431 + $__¡¼chr_c + ( +__cÚ¡ + * +__s +,  +__c +) + +1433  +__d0 +, +__d1 +; + +1434 * +__»s +; + +1435 +__asm__ + +__vÞ©že__ + + +1445 : "=d" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1446 : "0" (0), "1" ( +__s +), "2" ( +__c +), + +1447 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1449  +__»s +; + +1450 + } +} + +1452 +__STRING_INLINE + * +__¡¼chr_g + ( +__cÚ¡ + * +__s +,  +__c +); + +1454 +__STRING_INLINE + * + +1455 + $__¡¼chr_g + ( +__cÚ¡ + * +__s +,  +__c +) + +1457  +__d0 +, +__d1 +; + +1458 * +__»s +; + +1459 +__asm__ + +__vÞ©že__ + + +1470 : "ô" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1471 : "0" (0), "1" ( +__s +), "2" ( +__c +), + +1472 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1474  +__»s +; + +1475 + } +} + +1479 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +1481  + #_HAVE_STRING_ARCH_ršdex + 1 + + ) + +1482  + #ršdex +( +s +, +c +) \ + +1483 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +1484 ? + `__¡¼chr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1485 : + `__¡¼chr_g + (( +s +), ( +c +)))) + + ) + +1491  + #_HAVE_STRING_ARCH_¡rc¥n + 1 + + ) + +1492  + #¡rc¥n +( +s +, +»jeù +) \ + +1493 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +) &&  ((reject)[0]) == 1 \ + +1494 ? (( +»jeù +)[0] == '\0' \ + +1495 ? + `¡¾’ + ( +s +) \ + +1496 : (( +»jeù +)[1] == '\0' \ + +1497 ? + `__¡rc¥n_c1 + (( +s +), ((( +»jeù +)[0] << 8) & 0xff00)) \ + +1498 : + `__¡rc¥n_cg + (( +s +), ( +»jeù +), + `¡¾’ + (reject)))) \ + +1499 : + `__¡rc¥n_g + (( +s +), ( +»jeù +)))) + + ) + +1501 +__STRING_INLINE + +size_t + +__¡rc¥n_c1 + ( +__cÚ¡ + * +__s +,  +__»jeù +); + +1503 #iâdeà +_FORCE_INLINES + + +1504 +__STRING_INLINE + +size_t + + +1505 + $__¡rc¥n_c1 + ( +__cÚ¡ + * +__s +,  +__»jeù +) + +1507  +__d0 +; + +1508 * +__»s +; + +1509 +__asm__ + +__vÞ©že__ + + +1518 : "ô" ( +__»s +), "=&a" ( +__d0 +) + +1519 : "0" ( +__s +), "1" ( +__»jeù +), + +1520 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1522  ( +__»s + - 1è- +__s +; + +1523 + } +} + +1526 +__STRING_INLINE + +size_t + +__¡rc¥n_cg + ( +__cÚ¡ + * +__s +, __cÚ¡  +__»jeù +[], + +1527 +size_t + +__»jeù_Ën +); + +1529 +__STRING_INLINE + +size_t + + +1530 + $__¡rc¥n_cg + ( +__cÚ¡ + * +__s +, __cÚ¡  +__»jeù +[], +size_t + +__»jeù_Ën +) + +1532  +__d0 +, +__d1 +, +__d2 +; + +1533  +__cÚ¡ + * +__»s +; + +1534 +__asm__ + +__vÞ©že__ + + +1545 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1546 : "0" ( +__s +), "d" ( +__»jeù +), "g" ( +__»jeù_Ën +) + +1548  ( +__»s + - 1è- +__s +; + +1549 + } +} + +1551 +__STRING_INLINE + +size_t + +__¡rc¥n_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__»jeù +); + +1552 #ifdeà +__PIC__ + + +1554 +__STRING_INLINE + +size_t + + +1555 + $__¡rc¥n_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__»jeù +) + +1557  +__d0 +, +__d1 +, +__d2 +; + +1558  +__cÚ¡ + * +__»s +; + +1559 +__asm__ + +__vÞ©že__ + + +1576 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1577 : "r" ( +__»jeù +), "0" ( +__s +), "1" (0), "2" (0xffffffff) + +1579  ( +__»s + - 1è- +__s +; + +1580 + } +} + +1582 +__STRING_INLINE + +size_t + + +1583 + $__¡rc¥n_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__»jeù +) + +1585  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1586  +__cÚ¡ + * +__»s +; + +1587 +__asm__ + +__vÞ©že__ + + +1601 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +), "=&d" ( +__d3 +) + +1602 : "0" ( +__s +), "1" (0), "2" (0xffffffff), "3" ( +__»jeù +), "b" (__reject) + +1605  ( +__»s + - 1è- +__s +; + +1606 + } +} + +1612  + #_HAVE_STRING_ARCH_¡r¥n + 1 + + ) + +1613  + #¡r¥n +( +s +, +acû± +) \ + +1614 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +acû± +) &&  ((accept)[0]) == 1 \ + +1615 ? (( +acû± +)[0] == '\0' \ + +1616 ? ((è( +s +), 0) \ + +1617 : (( +acû± +)[1] == '\0' \ + +1618 ? + `__¡r¥n_c1 + (( +s +), ((( +acû± +)[0] << 8 ) & 0xff00)) \ + +1619 : + `__¡r¥n_cg + (( +s +), ( +acû± +), + `¡¾’ + (accept)))) \ + +1620 : + `__¡r¥n_g + (( +s +), ( +acû± +)))) + + ) + +1622 #iâdeà +_FORCE_INLINES + + +1623 +__STRING_INLINE + +size_t + +__¡r¥n_c1 + ( +__cÚ¡ + * +__s +,  +__acû± +); + +1625 +__STRING_INLINE + +size_t + + +1626 + $__¡r¥n_c1 + ( +__cÚ¡ + * +__s +,  +__acû± +) + +1628  +__d0 +; + +1629 * +__»s +; + +1631 +__asm__ + +__vÞ©že__ + + +1637 : "ô" ( +__»s +), "=&q" ( +__d0 +) + +1638 : "0" ( +__s +), "1" ( +__acû± +), + +1639 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +) + +1641  ( +__»s + - 1è- +__s +; + +1642 + } +} + +1645 +__STRING_INLINE + +size_t + +__¡r¥n_cg + ( +__cÚ¡ + * +__s +, __cÚ¡  +__acû± +[], + +1646 +size_t + +__acû±_Ën +); + +1648 +__STRING_INLINE + +size_t + + +1649 + $__¡r¥n_cg + ( +__cÚ¡ + * +__s +, __cÚ¡  +__acû± +[], +size_t + +__acû±_Ën +) + +1651  +__d0 +, +__d1 +, +__d2 +; + +1652  +__cÚ¡ + * +__»s +; + +1653 +__asm__ + +__vÞ©že__ + + +1664 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1665 : "0" ( +__s +), "g" ( +__acû± +), "g" ( +__acû±_Ën +), + +1668 "m" ( *(¡ruù {  +__x +[0xfffffff]; } *) +__s +), + +1669 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__acû±_Ën +]; } *) +__acû± +) + +1671  ( +__»s + - 1è- +__s +; + +1672 + } +} + +1674 +__STRING_INLINE + +size_t + +__¡r¥n_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +); + +1675 #ifdeà +__PIC__ + + +1677 +__STRING_INLINE + +size_t + + +1678 + $__¡r¥n_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +) + +1680  +__d0 +, +__d1 +, +__d2 +; + +1681  +__cÚ¡ + * +__»s +; + +1682 +__asm__ + +__vÞ©že__ + + +1698 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1699 : "d" ( +__acû± +), "0" ( +__s +), "1" (0), "2" (0xffffffff), "3" (__accept) + +1701  ( +__»s + - 1è- +__s +; + +1702 + } +} + +1704 +__STRING_INLINE + +size_t + + +1705 + $__¡r¥n_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +) + +1707  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1708  +__cÚ¡ + * +__»s +; + +1709 +__asm__ + +__vÞ©že__ + + +1723 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +), "=&d" ( +__d3 +) + +1724 : "0" ( +__s +), "1" (0), "2" (0xffffffff), "3" ( +__acû± +), "b" (__accept) + +1726  ( +__»s + - 1è- +__s +; + +1727 + } +} + +1732  + #_HAVE_STRING_ARCH_¡½brk + 1 + + ) + +1733  + #¡½brk +( +s +, +acû± +) \ + +1734 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +acû± +) &&  ((accept)[0]) == 1 \ + +1735 ? (( +acû± +)[0] == '\0' \ + +1736 ? ((è( +s +), (*) 0) \ + +1737 : (( +acû± +)[1] == '\0' \ + +1738 ? + `¡rchr + (( +s +), ( +acû± +)[0]) \ + +1739 : + `__¡½brk_cg + (( +s +), ( +acû± +), + `¡¾’ + (accept)))) \ + +1740 : + `__¡½brk_g + (( +s +), ( +acû± +)))) + + ) + +1742 +__STRING_INLINE + * +__¡½brk_cg + ( +__cÚ¡ + * +__s +, __cÚ¡  +__acû± +[], + +1743 +size_t + +__acû±_Ën +); + +1745 +__STRING_INLINE + * + +1746 + $__¡½brk_cg + ( +__cÚ¡ + * +__s +, __cÚ¡  +__acû± +[], +size_t + +__acû±_Ën +) + +1748  +__d0 +, +__d1 +, +__d2 +; + +1749 * +__»s +; + +1750 +__asm__ + +__vÞ©že__ + + +1765 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1766 : "0" ( +__s +), "d" ( +__acû± +), "g" ( +__acû±_Ën +) + +1768  +__»s +; + +1769 + } +} + +1771 +__STRING_INLINE + * +__¡½brk_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +); + +1772 #ifdeà +__PIC__ + + +1774 +__STRING_INLINE + * + +1775 + $__¡½brk_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +) + +1777  +__d0 +, +__d1 +, +__d2 +; + +1778 * +__»s +; + +1779 +__asm__ + +__vÞ©že__ + + +1800 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1801 : "d" ( +__acû± +), "0" ( +__s +), "1" (0), "2" (0xffffffff) + +1803  +__»s +; + +1804 + } +} + +1806 +__STRING_INLINE + * + +1807 + $__¡½brk_g + ( +__cÚ¡ + * +__s +, __cÚ¡ * +__acû± +) + +1809  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1810 * +__»s +; + +1811 +__asm__ + +__vÞ©že__ + + +1830 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&d" ( +__d2 +), "=&D" ( +__d3 +) + +1831 : "0" ( +__s +), "1" (0), "2" (0xffffffff), "b" ( +__acû± +) + +1833  +__»s +; + +1834 + } +} + +1839  + #_HAVE_STRING_ARCH_¡r¡r + 1 + + ) + +1840  + #¡r¡r +( +hay¡ack +, +ÃedË +) \ + +1841 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +ÃedË +) &&  ((needle)[0]) == 1 \ + +1842 ? (( +ÃedË +)[0] == '\0' \ + +1843 ? ( +hay¡ack +) \ + +1844 : (( +ÃedË +)[1] == '\0' \ + +1845 ? + `¡rchr + (( +hay¡ack +), ( +ÃedË +)[0]) \ + +1846 : + `__¡r¡r_cg + (( +hay¡ack +), ( +ÃedË +), \ + +1847 + `¡¾’ + ( +ÃedË +)))) \ + +1848 : + `__¡r¡r_g + (( +hay¡ack +), ( +ÃedË +)))) + + ) + +1852 +__STRING_INLINE + * +__¡r¡r_cg + ( +__cÚ¡ + * +__hay¡ack +, __cÚ¡  +__ÃedË +[], + +1853 +size_t + +__ÃedË_Ën +); + +1855 +__STRING_INLINE + * + +1856 + $__¡r¡r_cg + ( +__cÚ¡ + * +__hay¡ack +, __cÚ¡  +__ÃedË +[], + +1857 +size_t + +__ÃedË_Ën +) + +1859  +__d0 +, +__d1 +, +__d2 +; + +1860 * +__»s +; + +1861 +__asm__ + +__vÞ©že__ + + +1874 : "=&a" ( +__»s +), "=&S" ( +__d0 +), "=&D" ( +__d1 +), "=&c" ( +__d2 +) + +1875 : "g" ( +__ÃedË_Ën +), "1" ( +__hay¡ack +), "d" ( +__ÃedË +) + +1877  +__»s +; + +1878 + } +} + +1880 +__STRING_INLINE + * +__¡r¡r_g + ( +__cÚ¡ + * +__hay¡ack +, __cÚ¡ * +__ÃedË +); + +1881 #ifdeà +__PIC__ + + +1883 +__STRING_INLINE + * + +1884 + $__¡r¡r_g + ( +__cÚ¡ + * +__hay¡ack +, __cÚ¡ * +__ÃedË +) + +1886  +__d0 +, +__d1 +, +__d2 +; + +1887 * +__»s +; + +1888 +__asm__ + +__vÞ©že__ + + +1907 : "=&a" ( +__»s +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +) + +1908 : "0" (0), "1" (0xffffffff), "2" ( +__hay¡ack +), "3" ( +__ÃedË +), + +1909 "d" ( +__ÃedË +) + +1911  +__»s +; + +1912 + } +} + +1914 +__STRING_INLINE + * + +1915 + $__¡r¡r_g + ( +__cÚ¡ + * +__hay¡ack +, __cÚ¡ * +__ÃedË +) + +1917  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1918 * +__»s +; + +1919 +__asm__ + +__vÞ©že__ + + +1936 : "=&a" ( +__»s +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), "=&d" ( +__d3 +) + +1937 : "0" (0), "1" (0xffffffff), "2" ( +__hay¡ack +), "3" ( +__ÃedË +), + +1938 "b" ( +__ÃedË +) + +1940  +__»s +; + +1941 + } +} + +1947 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +1948 #ifdeà +__i686__ + + +1949  + #_HAVE_STRING_ARCH_ffs + 1 + + ) + +1950  + #ffs +( +wÜd +è( + `__bužtš_cÚ¡ªt_p + (word) \ + +1951 ? + `__bužtš_ffs + ( +wÜd +) \ + +1952 : ({  +__út +, +__tmp +; \ + +1953 +__asm__ + +__vÞ©že__ + \ + +1956 : "=&r" ( +__út +), "ô" ( +__tmp +) \ + +1957 : "rm" ( +wÜd +), "1" (-1)); \ + +1958 +__út + + 1; })) + + ) + +1960 #iâdeà +ff¦ + + +1961  + #ff¦ +( +wÜd +è + `ffs +(wÜd) + + ) + +1966 #iâdeà +_FORCE_INLINES + + +1967 #undeà +__STRING_INLINE + + + @/usr/include/bits/string2.h + +21 #iâdeà +_STRING_H + + +25 #ià! +defšed + +__NO_STRING_INLINES + && !defšed +__BOUNDED_POINTERS__ + + +42 #iâdeà +__STRING_INLINE + + +43 #ifdeà +__ýlu¥lus + + +44  + #__STRING_INLINE + +šlše + + + ) + +46  + #__STRING_INLINE + +__šlše + + + ) + +50 #ià +_STRING_ARCH_uÇligÃd + + +52  + ~<’dŸn.h +> + +53  + ~ + +55 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +56  + #__STRING2_SMALL_GET16 +( +¤c +, +idx +) \ + +57 ((( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 1] << 8 \ + +58 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx +]) + + ) + +59  + #__STRING2_SMALL_GET32 +( +¤c +, +idx +) \ + +60 ((((( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 3] << 8 \ + +61 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 2]) << 8 \ + +62 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 1]) << 8 \ + +63 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx +]) + + ) + +65  + #__STRING2_SMALL_GET16 +( +¤c +, +idx +) \ + +66 ((( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx +] << 8 \ + +67 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 1]) + + ) + +68  + #__STRING2_SMALL_GET32 +( +¤c +, +idx +) \ + +69 ((((( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx +] << 8 \ + +70 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 1]) << 8 \ + +71 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 2]) << 8 \ + +72 | (( +__cÚ¡ + *è(__cÚ¡ *è( +¤c +))[ +idx + + 3]) + + ) + +77  + #__STRING2_COPY_TYPE +( +N +) \ + +78 ¡ruù {  +__¬r +[ +N +]; } \ + +79 + t__©Œibu‹__ + (( + t__·cked__ +)è + t__STRING2_COPY_ARR +## + tN + + + ) + +80 + t__STRING2_COPY_TYPE + (2); + +81 +__STRING2_COPY_TYPE + (3); + +82 +__STRING2_COPY_TYPE + (4); + +83 +__STRING2_COPY_TYPE + (5); + +84 +__STRING2_COPY_TYPE + (6); + +85 +__STRING2_COPY_TYPE + (7); + +86 +__STRING2_COPY_TYPE + (8); + +87 #undeà +__STRING2_COPY_TYPE + + +93  + #__¡ršg2_1b±r_p +( +__x +) \ + +94 (( +size_t +)(cÚ¡ *)(( +__x +è+ 1è- (size_t)(cÚ¡ *)(__xè=ð1) + + ) + +97 #ià! +defšed + +_HAVE_STRING_ARCH_mem£t + + +98 #ià! +__GNUC_PREREQ + (3, 0) + +99 #ià +_STRING_ARCH_uÇligÃd + + +100  + #mem£t +( +s +, +c +, +n +) \ + +101 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) && (n) <= 16 \ + +102 ? (( +n +) == 1 \ + +103 ? + `__mem£t_1 + ( +s +, +c +) \ + +104 : + `__mem£t_gc + ( +s +, +c +, +n +)) \ + +105 : ( + `__bužtš_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +106 ? ({ * +__s + = ( +s +); + `__bz”o + (__s, +n +); __s; }) \ + +107 : + `mem£t + ( +s +, +c +, +n +)))) + + ) + +109  + #__mem£t_1 +( +s +, +c +è({ * +__s + = (s); \ + +110 *(( +__ušt8_t + *è +__s +èð(__ušt8_tè( +c +); __s; }) + + ) + +112  + #__mem£t_gc +( +s +, +c +, +n +) \ + +113 ({ * +__s + = ( +s +); \ + +115  +__ui +; \ + +116  +__usi +; \ + +117  +__uc +; \ + +118 } * +__u + = +__s +; \ + +119 +__ušt8_t + +__c + = (__ušt8_tè( +c +); \ + +122 (è( +n +)) \ + +125 +__u +-> +__ui + = +__c + * 0x01010101; \ + +126 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +128 +__u +-> +__ui + = +__c + * 0x01010101; \ + +129 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +131 +__u +-> +__ui + = +__c + * 0x01010101; \ + +132 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +134 +__u +-> +__usi + = (è +__c + * 0x0101; \ + +135 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +136 +__u +-> +__uc + = (è +__c +; \ + +140 +__u +-> +__ui + = +__c + * 0x01010101; \ + +141 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +143 +__u +-> +__ui + = +__c + * 0x01010101; \ + +144 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +146 +__u +-> +__ui + = +__c + * 0x01010101; \ + +147 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +149 +__u +-> +__usi + = (è +__c + * 0x0101; \ + +153 +__u +-> +__ui + = +__c + * 0x01010101; \ + +154 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +156 +__u +-> +__ui + = +__c + * 0x01010101; \ + +157 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +159 +__u +-> +__ui + = +__c + * 0x01010101; \ + +160 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +162 +__u +-> +__uc + = (è +__c +; \ + +166 +__u +-> +__ui + = +__c + * 0x01010101; \ + +167 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +169 +__u +-> +__ui + = +__c + * 0x01010101; \ + +170 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +172 +__u +-> +__ui + = +__c + * 0x01010101; \ + +173 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +175 +__u +-> +__ui + = +__c + * 0x01010101; \ + +180 +__s +; }) + + ) + +182  + #mem£t +( +s +, +c +, +n +) \ + +183 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +184 ? ({ * +__s + = ( +s +); + `__bz”o + (__s, +n +); __s; }) \ + +185 : + `mem£t + ( +s +, +c +, +n +))) + + ) + +194 #ià +__GNUC_PREREQ + (2, 91) + +195  + #__bz”o +( +s +, +n +è + `__bužtš_mem£t + (s, '\0',‚) + + ) + +203 #ifdeà +__USE_GNU + + +204 #ià! +defšed + +_HAVE_STRING_ARCH_mempýy + || defšed +_FORCE_INLINES + + +205 #iâdeà +_HAVE_STRING_ARCH_mempýy + + +206 #ià +__GNUC_PREREQ + (3, 4) + +207  + #__mempýy +( +de¡ +, +¤c +, +n +è + `__bužtš_mempýy + (de¡, src,‚) + + ) + +208 #–ià +__GNUC_PREREQ + (3, 0) + +209  + #__mempýy +( +de¡ +, +¤c +, +n +) \ + +210 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +211 && + `__¡ršg2_1b±r_p + ( +¤c +è&& +n + <= 8 \ + +212 ? + `__bužtš_memýy + ( +de¡ +, +¤c +, +n +) + (n) \ + +213 : + `__mempýy + ( +de¡ +, +¤c +, +n +))) + + ) + +215  + #__mempýy +( +de¡ +, +¤c +, +n +) \ + +216 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +217 && + `__¡ršg2_1b±r_p + ( +¤c +è&& +n + <= 8 \ + +218 ? + `__mempýy_sm®l + ( +de¡ +, + `__mempýy_¬gs + ( +¤c +), +n +) \ + +219 : + `__mempýy + ( +de¡ +, +¤c +, +n +))) + + ) + +223  + #mempýy +( +de¡ +, +¤c +, +n +è + `__mempýy + (de¡, src,‚) + + ) + +226 #ià! +__GNUC_PREREQ + (3, 0è|| +defšed + +_FORCE_INLINES + + +227 #ià +_STRING_ARCH_uÇligÃd + + +228 #iâdeà +_FORCE_INLINES + + +229  + #__mempýy_¬gs +( +¤c +) \ + +230 (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[2], \ + +231 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[6], \ + +232 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +233 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +234 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +235 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +237 +__STRING_INLINE + * +__mempýy_sm®l + (*, , , , , + +238 +__ušt16_t +, __ušt16_t, +__ušt32_t +, + +239 +__ušt32_t +, +size_t +); + +240 +__STRING_INLINE + * + +241 + $__mempýy_sm®l + (* +__de¡1 +, + +242  +__¤c0_1 +,  +__¤c2_1 +,  +__¤c4_1 +,  +__¤c6_1 +, + +243 +__ušt16_t + +__¤c0_2 +, __ušt16_ˆ +__¤c4_2 +, + +244 +__ušt32_t + +__¤c0_4 +, __ušt32_ˆ +__¤c4_4 +, + +245 +size_t + +__¤þ’ +) + +248 +__ušt32_t + +__ui +; + +249 +__ušt16_t + +__usi +; + +250  +__uc +; + +251  +__c +; + +252 } * +__u + = +__de¡1 +; + +253 (è +__¤þ’ +) + +256 +__u +-> +__c + = +__¤c0_1 +; + +257 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +260 +__u +-> +__usi + = +__¤c0_2 +; + +261 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +264 +__u +-> +__usi + = +__¤c0_2 +; + +265 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +266 +__u +-> +__c + = +__¤c2_1 +; + +267 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +270 +__u +-> +__ui + = +__¤c0_4 +; + +271 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +274 +__u +-> +__ui + = +__¤c0_4 +; + +275 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +276 +__u +-> +__c + = +__¤c4_1 +; + +277 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +280 +__u +-> +__ui + = +__¤c0_4 +; + +281 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +282 +__u +-> +__usi + = +__¤c4_2 +; + +283 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +286 +__u +-> +__ui + = +__¤c0_4 +; + +287 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +288 +__u +-> +__usi + = +__¤c4_2 +; + +289 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +290 +__u +-> +__c + = +__¤c6_1 +; + +291 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +294 +__u +-> +__ui + = +__¤c0_4 +; + +295 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +296 +__u +-> +__ui + = +__¤c4_4 +; + +297 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +300  (*è +__u +; + +301 + } +} + +303 #iâdeà +_FORCE_INLINES + + +304  + #__mempýy_¬gs +( +¤c +) \ + +305 (( +__cÚ¡ + *è( +¤c +))[0], \ + +306 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +307 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1] } }), \ + +308 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +309 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +310 (( +__cÚ¡ + *è( +¤c +))[2] } }), \ + +311 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +312 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +313 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3] } }), \ + +314 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +315 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +316 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +317 (( +__cÚ¡ + *è( +¤c +))[4] } }), \ + +318 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +319 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +320 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +321 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[5] } }), \ + +322 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR7 +) \ + +323 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +324 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +325 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[5], \ + +326 (( +__cÚ¡ + *è( +¤c +))[6] } }), \ + +327 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR8 +) \ + +328 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +329 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +330 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[5], \ + +331 (( +__cÚ¡ + *è( +¤c +))[6], ((__cÚ¡ *è(¤c))[7] } }) + + ) + +333 +__STRING_INLINE + * +__mempýy_sm®l + (*, , +__STRING2_COPY_ARR2 +, + +334 +__STRING2_COPY_ARR3 +, + +335 +__STRING2_COPY_ARR4 +, + +336 +__STRING2_COPY_ARR5 +, + +337 +__STRING2_COPY_ARR6 +, + +338 +__STRING2_COPY_ARR7 +, + +339 +__STRING2_COPY_ARR8 +, +size_t +); + +340 +__STRING_INLINE + * + +341 + $__mempýy_sm®l + (* +__de¡ +,  +__¤c1 +, + +342 +__STRING2_COPY_ARR2 + +__¤c2 +, +__STRING2_COPY_ARR3 + +__¤c3 +, + +343 +__STRING2_COPY_ARR4 + +__¤c4 +, +__STRING2_COPY_ARR5 + +__¤c5 +, + +344 +__STRING2_COPY_ARR6 + +__¤c6 +, +__STRING2_COPY_ARR7 + +__¤c7 +, + +345 +__STRING2_COPY_ARR8 + +__¤c8 +, +size_t + +__¤þ’ +) + +348  +__c +; + +349 +__STRING2_COPY_ARR2 + +__sÿ2 +; + +350 +__STRING2_COPY_ARR3 + +__sÿ3 +; + +351 +__STRING2_COPY_ARR4 + +__sÿ4 +; + +352 +__STRING2_COPY_ARR5 + +__sÿ5 +; + +353 +__STRING2_COPY_ARR6 + +__sÿ6 +; + +354 +__STRING2_COPY_ARR7 + +__sÿ7 +; + +355 +__STRING2_COPY_ARR8 + +__sÿ8 +; + +356 } * +__u + = +__de¡ +; + +357 (è +__¤þ’ +) + +360 +__u +-> +__c + = +__¤c1 +; + +363 +__ex‹nsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +366 +__ex‹nsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +369 +__ex‹nsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +372 +__ex‹nsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +375 +__ex‹nsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +378 +__ex‹nsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +381 +__ex‹nsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +384  + `__ex‹nsiÚ__ + ((*è +__u + + +__¤þ’ +); + +385 + } +} + +393 #iâdeà +_HAVE_STRING_ARCH_¡rchr + + +394 * +__¿wmemchr + (cÚ¡ * +__s +,  +__c +); + +395 #ià +__GNUC_PREREQ + (3, 2) + +396  + #¡rchr +( +s +, +c +) \ + +397 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +è&& !__bužtš_cÚ¡ªt_°( +s +) \ + +398 && ( +c +) == '\0' \ + +399 ? (*è + `__¿wmemchr + ( +s +, +c +) \ + +400 : + `__bužtš_¡rchr + ( +s +, +c +))) + + ) + +402  + #¡rchr +( +s +, +c +) \ + +403 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +404 ? (*è + `__¿wmemchr + ( +s +, +c +) \ + +405 : + `¡rchr + ( +s +, +c +))) + + ) + +411 #ià(! +defšed + +_HAVE_STRING_ARCH_¡rýy + && ! +__GNUC_PREREQ + (3, 0)) \ + +412 || +defšed + + g_FORCE_INLINES + + +413 #ià! +defšed + +_HAVE_STRING_ARCH_¡rýy + && ! +__GNUC_PREREQ + (3, 0) + +414  + #¡rýy +( +de¡ +, +¤c +) \ + +415 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +416 ? ( + `__¡ršg2_1b±r_p + ( +¤c +è&& + `¡¾’ + (src) + 1 <= 8 \ + +417 ? + `__¡rýy_sm®l + ( +de¡ +, + `__¡rýy_¬gs + ( +¤c +), \ + +418 + `¡¾’ + ( +¤c +) + 1) \ + +419 : (*è + `memýy + ( +de¡ +, +¤c +, + `¡¾’ + (src) + 1)) \ + +420 : + `¡rýy + ( +de¡ +, +¤c +))) + + ) + +423 #ià +_STRING_ARCH_uÇligÃd + + +424 #iâdeà +_FORCE_INLINES + + +425  + #__¡rýy_¬gs +( +¤c +) \ + +426 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +427 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +428 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +429 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +431 +__STRING_INLINE + * +__¡rýy_sm®l + (*, +__ušt16_t +, __uint16_t, + +432 +__ušt32_t +, __ušt32_t, +size_t +); + +433 +__STRING_INLINE + * + +434 + $__¡rýy_sm®l + (* +__de¡ +, + +435 +__ušt16_t + +__¤c0_2 +, __ušt16_ˆ +__¤c4_2 +, + +436 +__ušt32_t + +__¤c0_4 +, __ušt32_ˆ +__¤c4_4 +, + +437 +size_t + +__¤þ’ +) + +440 +__ušt32_t + +__ui +; + +441 +__ušt16_t + +__usi +; + +442  +__uc +; + +443 } * +__u + = (*è +__de¡ +; + +444 (è +__¤þ’ +) + +447 +__u +-> +__uc + = '\0'; + +450 +__u +-> +__usi + = +__¤c0_2 +; + +453 +__u +-> +__usi + = +__¤c0_2 +; + +454 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +455 +__u +-> +__uc + = '\0'; + +458 +__u +-> +__ui + = +__¤c0_4 +; + +461 +__u +-> +__ui + = +__¤c0_4 +; + +462 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +463 +__u +-> +__uc + = '\0'; + +466 +__u +-> +__ui + = +__¤c0_4 +; + +467 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +468 +__u +-> +__usi + = +__¤c4_2 +; + +471 +__u +-> +__ui + = +__¤c0_4 +; + +472 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +473 +__u +-> +__usi + = +__¤c4_2 +; + +474 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +475 +__u +-> +__uc + = '\0'; + +478 +__u +-> +__ui + = +__¤c0_4 +; + +479 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +480 +__u +-> +__ui + = +__¤c4_4 +; + +483  +__de¡ +; + +484 + } +} + +486 #iâdeà +_FORCE_INLINES + + +487  + #__¡rýy_¬gs +( +¤c +) \ + +488 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +489 { { (( +__cÚ¡ + *è( +¤c +))[0], '\0' } }), \ + +490 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +491 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +493 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +494 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +495 (( +__cÚ¡ + *è( +¤c +))[2], '\0' } }), \ + +496 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +497 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +498 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +500 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +501 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +502 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +503 (( +__cÚ¡ + *è( +¤c +))[4], '\0' } }), \ + +504 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR7 +) \ + +505 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +506 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +507 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[5], \ + +509 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR8 +) \ + +510 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +511 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +512 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[5], \ + +513 (( +__cÚ¡ + *è( +¤c +))[6], '\0' } }) + + ) + +515 +__STRING_INLINE + * +__¡rýy_sm®l + (*, +__STRING2_COPY_ARR2 +, + +516 +__STRING2_COPY_ARR3 +, + +517 +__STRING2_COPY_ARR4 +, + +518 +__STRING2_COPY_ARR5 +, + +519 +__STRING2_COPY_ARR6 +, + +520 +__STRING2_COPY_ARR7 +, + +521 +__STRING2_COPY_ARR8 +, +size_t +); + +522 +__STRING_INLINE + * + +523 + $__¡rýy_sm®l + (* +__de¡ +, + +524 +__STRING2_COPY_ARR2 + +__¤c2 +, +__STRING2_COPY_ARR3 + +__¤c3 +, + +525 +__STRING2_COPY_ARR4 + +__¤c4 +, +__STRING2_COPY_ARR5 + +__¤c5 +, + +526 +__STRING2_COPY_ARR6 + +__¤c6 +, +__STRING2_COPY_ARR7 + +__¤c7 +, + +527 +__STRING2_COPY_ARR8 + +__¤c8 +, +size_t + +__¤þ’ +) + +530  +__c +; + +531 +__STRING2_COPY_ARR2 + +__sÿ2 +; + +532 +__STRING2_COPY_ARR3 + +__sÿ3 +; + +533 +__STRING2_COPY_ARR4 + +__sÿ4 +; + +534 +__STRING2_COPY_ARR5 + +__sÿ5 +; + +535 +__STRING2_COPY_ARR6 + +__sÿ6 +; + +536 +__STRING2_COPY_ARR7 + +__sÿ7 +; + +537 +__STRING2_COPY_ARR8 + +__sÿ8 +; + +538 } * +__u + = (*è +__de¡ +; + +539 (è +__¤þ’ +) + +542 +__u +-> +__c + = '\0'; + +545 +__ex‹nsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +548 +__ex‹nsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +551 +__ex‹nsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +554 +__ex‹nsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +557 +__ex‹nsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +560 +__ex‹nsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +563 +__ex‹nsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +566  +__de¡ +; + +567 + } +} + +573 #ifdeà +__USE_GNU + + +574 #ià! +defšed + +_HAVE_STRING_ARCH_¡pýy + || defšed +_FORCE_INLINES + + +575 #iâdeà +_HAVE_STRING_ARCH_¡pýy + + +576 #ià +__GNUC_PREREQ + (3, 4) + +577  + #__¡pýy +( +de¡ +, +¤c +è + `__bužtš_¡pýy + (de¡, src) + + ) + +578 #–ià +__GNUC_PREREQ + (3, 0) + +579  + #__¡pýy +( +de¡ +, +¤c +) \ + +580 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +581 ? ( + `__¡ršg2_1b±r_p + ( +¤c +è&& + `¡¾’ + (src) + 1 <= 8 \ + +582 ? + `__bužtš_¡rýy + ( +de¡ +, +¤c +è+ + `¡¾’ + (src) \ + +583 : ((*è( +__mempýy +è( +de¡ +, +¤c +, + `¡¾’ + (src) + 1) \ + +585 : + `__¡pýy + ( +de¡ +, +¤c +))) + + ) + +587  + #__¡pýy +( +de¡ +, +¤c +) \ + +588 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +589 ? ( + `__¡ršg2_1b±r_p + ( +¤c +è&& + `¡¾’ + (src) + 1 <= 8 \ + +590 ? + `__¡pýy_sm®l + ( +de¡ +, + `__¡pýy_¬gs + ( +¤c +), \ + +591 + `¡¾’ + ( +¤c +) + 1) \ + +592 : ((*è( +__mempýy +è( +de¡ +, +¤c +, + `¡¾’ + (src) + 1) \ + +594 : + `__¡pýy + ( +de¡ +, +¤c +))) + + ) + +598  + #¡pýy +( +de¡ +, +¤c +è + `__¡pýy + (de¡, src) + + ) + +601 #ià! +__GNUC_PREREQ + (3, 0è|| +defšed + +_FORCE_INLINES + + +602 #ià +_STRING_ARCH_uÇligÃd + + +603 #iâdeà +_FORCE_INLINES + + +604  + #__¡pýy_¬gs +( +¤c +) \ + +605 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +606 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +607 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +608 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +610 +__STRING_INLINE + * +__¡pýy_sm®l + (*, +__ušt16_t +, __uint16_t, + +611 +__ušt32_t +, __ušt32_t, +size_t +); + +612 +__STRING_INLINE + * + +613 + $__¡pýy_sm®l + (* +__de¡ +, + +614 +__ušt16_t + +__¤c0_2 +, __ušt16_ˆ +__¤c4_2 +, + +615 +__ušt32_t + +__¤c0_4 +, __ušt32_ˆ +__¤c4_4 +, + +616 +size_t + +__¤þ’ +) + +619  +__ui +; + +620  +__usi +; + +621  +__uc +; + +622  +__c +; + +623 } * +__u + = (*è +__de¡ +; + +624 (è +__¤þ’ +) + +627 +__u +-> +__uc + = '\0'; + +630 +__u +-> +__usi + = +__¤c0_2 +; + +631 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +634 +__u +-> +__usi + = +__¤c0_2 +; + +635 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +636 +__u +-> +__uc + = '\0'; + +639 +__u +-> +__ui + = +__¤c0_4 +; + +640 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); + +643 +__u +-> +__ui + = +__¤c0_4 +; + +644 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +645 +__u +-> +__uc + = '\0'; + +648 +__u +-> +__ui + = +__¤c0_4 +; + +649 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +650 +__u +-> +__usi + = +__¤c4_2 +; + +651 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +654 +__u +-> +__ui + = +__¤c0_4 +; + +655 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +656 +__u +-> +__usi + = +__¤c4_2 +; + +657 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +658 +__u +-> +__uc + = '\0'; + +661 +__u +-> +__ui + = +__¤c0_4 +; + +662 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +663 +__u +-> +__ui + = +__¤c4_4 +; + +664 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); + +667  & +__u +-> +__c +; + +668 + } +} + +670 #iâdeà +_FORCE_INLINES + + +671  + #__¡pýy_¬gs +( +¤c +) \ + +672 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +673 { { (( +__cÚ¡ + *è( +¤c +))[0], '\0' } }), \ + +674 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +675 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +677 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +678 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +679 (( +__cÚ¡ + *è( +¤c +))[2], '\0' } }), \ + +680 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +681 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +682 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +684 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +685 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +686 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +687 (( +__cÚ¡ + *è( +¤c +))[4], '\0' } }), \ + +688 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR7 +) \ + +689 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +690 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +691 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[5], \ + +693 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR8 +) \ + +694 { { (( +__cÚ¡ + *è( +¤c +))[0], ((__const *) (src))[1], \ + +695 (( +__cÚ¡ + *è( +¤c +))[2], ((__const *) (src))[3], \ + +696 (( +__cÚ¡ + *è( +¤c +))[4], ((__const *) (src))[5], \ + +697 (( +__cÚ¡ + *è( +¤c +))[6], '\0' } }) + + ) + +699 +__STRING_INLINE + * +__¡pýy_sm®l + (*, +__STRING2_COPY_ARR2 +, + +700 +__STRING2_COPY_ARR3 +, + +701 +__STRING2_COPY_ARR4 +, + +702 +__STRING2_COPY_ARR5 +, + +703 +__STRING2_COPY_ARR6 +, + +704 +__STRING2_COPY_ARR7 +, + +705 +__STRING2_COPY_ARR8 +, +size_t +); + +706 +__STRING_INLINE + * + +707 + $__¡pýy_sm®l + (* +__de¡ +, + +708 +__STRING2_COPY_ARR2 + +__¤c2 +, +__STRING2_COPY_ARR3 + +__¤c3 +, + +709 +__STRING2_COPY_ARR4 + +__¤c4 +, +__STRING2_COPY_ARR5 + +__¤c5 +, + +710 +__STRING2_COPY_ARR6 + +__¤c6 +, +__STRING2_COPY_ARR7 + +__¤c7 +, + +711 +__STRING2_COPY_ARR8 + +__¤c8 +, +size_t + +__¤þ’ +) + +714  +__c +; + +715 +__STRING2_COPY_ARR2 + +__sÿ2 +; + +716 +__STRING2_COPY_ARR3 + +__sÿ3 +; + +717 +__STRING2_COPY_ARR4 + +__sÿ4 +; + +718 +__STRING2_COPY_ARR5 + +__sÿ5 +; + +719 +__STRING2_COPY_ARR6 + +__sÿ6 +; + +720 +__STRING2_COPY_ARR7 + +__sÿ7 +; + +721 +__STRING2_COPY_ARR8 + +__sÿ8 +; + +722 } * +__u + = (*è +__de¡ +; + +723 (è +__¤þ’ +) + +726 +__u +-> +__c + = '\0'; + +729 +__ex‹nsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +732 +__ex‹nsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +735 +__ex‹nsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +738 +__ex‹nsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +741 +__ex‹nsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +744 +__ex‹nsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +747 +__ex‹nsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +750  +__de¡ + + +__¤þ’ + - 1; + +751 + } +} + +759 #iâdeà +_HAVE_STRING_ARCH_¡ºýy + + +760 #ià +__GNUC_PREREQ + (3, 2) + +761  + #¡ºýy +( +de¡ +, +¤c +, +n +è + `__bužtš_¡ºýy + (de¡, src,‚) + + ) + +763  + #¡ºýy +( +de¡ +, +¤c +, +n +) \ + +764 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +765 ? ( + `¡¾’ + ( +¤c +è+ 1 >ð(( +size_t +è( +n +)) \ + +766 ? (*è + `memýy + ( +de¡ +, +¤c +, +n +) \ + +767 : + `¡ºýy + ( +de¡ +, +¤c +, +n +)) \ + +768 : + `¡ºýy + ( +de¡ +, +¤c +, +n +))) + + ) + +774 #iâdeà +_HAVE_STRING_ARCH_¡ºÿt + + +775 #ifdeà +_USE_STRING_ARCH_¡rchr + + +776  + #¡ºÿt +( +de¡ +, +¤c +, +n +) \ + +777 ( + `__ex‹nsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +778 + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +779 ? ( + `¡¾’ + ( +¤c +è< (( +size_t +è( +n +)) \ + +780 ? + `¡rÿt + ( +__de¡ +, +¤c +) \ + +781 : (*((*è + `__mempýy + ( + `¡rchr + ( +__de¡ +, '\0'), \ + +782 +¤c +, +n +)èð'\0', +__de¡ +)) \ + +783 : + `¡ºÿt + ( +de¡ +, +¤c +, +n +); })) + + ) + +784 #–ià +__GNUC_PREREQ + (3, 2) + +785  + #¡ºÿt +( +de¡ +, +¤c +, +n +è + `__bužtš_¡ºÿt + (de¡, src,‚) + + ) + +787  + #¡ºÿt +( +de¡ +, +¤c +, +n +) \ + +788 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +789 ? ( + `¡¾’ + ( +¤c +è< (( +size_t +è( +n +)) \ + +790 ? + `¡rÿt + ( +de¡ +, +¤c +) \ + +791 : + `¡ºÿt + ( +de¡ +, +¤c +, +n +)) \ + +792 : + `¡ºÿt + ( +de¡ +, +¤c +, +n +))) + + ) + +798 #iâdeà +_HAVE_STRING_ARCH_¡rcmp + + +799 #ià +__GNUC_PREREQ + (3, 2) + +800  + #¡rcmp +( +s1 +, +s2 +) \ + +801 +__ex‹nsiÚ__ + \ + +802 ({ +size_t + +__s1_Ën +, +__s2_Ën +; \ + +803 ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& __bužtš_cÚ¡ªt_°( +s2 +) \ + +804 && ( +__s1_Ën + = + `¡¾’ + ( +s1 +), +__s2_Ën + = sŒËÀ( +s2 +), \ + +805 (! + `__¡ršg2_1b±r_p + ( +s1 +è|| +__s1_Ën + >= 4) \ + +806 && (! + `__¡ršg2_1b±r_p + ( +s2 +è|| +__s2_Ën + >= 4)) \ + +807 ? + `__bužtš_¡rcmp + ( +s1 +, +s2 +) \ + +808 : ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_p + (s1) \ + +809 && ( +__s1_Ën + = + `¡¾’ + ( +s1 +), __s1_len < 4) \ + +810 ? ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +811 ? + `__bužtš_¡rcmp + ( +s1 +, +s2 +) \ + +812 : + `__¡rcmp_cg + ( +s1 +, +s2 +, +__s1_Ën +)) \ + +813 : ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +814 && ( +__s2_Ën + = + `¡¾’ + ( +s2 +), __s2_len < 4) \ + +815 ? ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_p + (s1) \ + +816 ? + `__bužtš_¡rcmp + ( +s1 +, +s2 +) \ + +817 : + `__¡rcmp_gc + ( +s1 +, +s2 +, +__s2_Ën +)) \ + +818 : + `__bužtš_¡rcmp + ( +s1 +, +s2 +)))); }) + + ) + +820  + #¡rcmp +( +s1 +, +s2 +) \ + +821 +__ex‹nsiÚ__ + \ + +822 ({ +size_t + +__s1_Ën +, +__s2_Ën +; \ + +823 ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& __bužtš_cÚ¡ªt_°( +s2 +) \ + +824 && ( +__s1_Ën + = + `¡¾’ + ( +s1 +), +__s2_Ën + = sŒËÀ( +s2 +), \ + +825 (! + `__¡ršg2_1b±r_p + ( +s1 +è|| +__s1_Ën + >= 4) \ + +826 && (! + `__¡ršg2_1b±r_p + ( +s2 +è|| +__s2_Ën + >= 4)) \ + +827 ? + `memcmp + (( +__cÚ¡ + *è( +s1 +), (__cÚ¡ *è( +s2 +), \ + +828 ( +__s1_Ën + < +__s2_Ën + ? __s1_len : __s2_len) + 1) \ + +829 : ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_p + (s1) \ + +830 && ( +__s1_Ën + = + `¡¾’ + ( +s1 +), __s1_len < 4) \ + +831 ? ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +832 ? + `__¡rcmp_cc + ( +s1 +, +s2 +, +__s1_Ën +) \ + +833 : + `__¡rcmp_cg + ( +s1 +, +s2 +, +__s1_Ën +)) \ + +834 : ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +835 && ( +__s2_Ën + = + `¡¾’ + ( +s2 +), __s2_len < 4) \ + +836 ? ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_p + (s1) \ + +837 ? + `__¡rcmp_cc + ( +s1 +, +s2 +, +__s2_Ën +) \ + +838 : + `__¡rcmp_gc + ( +s1 +, +s2 +, +__s2_Ën +)) \ + +839 : + `¡rcmp + ( +s1 +, +s2 +)))); }) + + ) + +842  + #__¡rcmp_cc +( +s1 +, +s2 +, +l +) \ + +843 ( + `__ex‹nsiÚ__ + ({  +__»suÉ + = \ + +844 ((( +__cÚ¡ + *è(__cÚ¡ *è( +s1 +))[0] \ + +845 - (( +__cÚ¡ + *è(__cÚ¡ *)( +s2 +))[0]);\ + +846 ià( +l + > 0 && +__»suÉ + == 0) \ + +848 +__»suÉ + = ((( +__cÚ¡ + *) \ + +849 ( +__cÚ¡ + *è( +s1 +))[1] \ + +850 - (( +__cÚ¡ + *) \ + +851 ( +__cÚ¡ + *è( +s2 +))[1]); \ + +852 ià( +l + > 1 && +__»suÉ + == 0) \ + +854 +__»suÉ + = \ + +855 ((( +__cÚ¡ + *) \ + +856 ( +__cÚ¡ + *è( +s1 +))[2] \ + +857 - (( +__cÚ¡ + *) \ + +858 ( +__cÚ¡ + *è( +s2 +))[2]); \ + +859 ià( +l + > 2 && +__»suÉ + == 0) \ + +860 +__»suÉ + = \ + +861 ((( +__cÚ¡ + *) \ + +862 ( +__cÚ¡ + *è( +s1 +))[3] \ + +863 - (( +__cÚ¡ + *) \ + +864 ( +__cÚ¡ + *è( +s2 +))[3]); \ + +867 +__»suÉ +; })) + + ) + +869  + #__¡rcmp_cg +( +s1 +, +s2 +, +l1 +) \ + +870 ( + `__ex‹nsiÚ__ + ({ +__cÚ¡ + * +__s2 + = \ + +871 ( +__cÚ¡ + *è(__cÚ¡ *è( +s2 +); \ + +872  +__»suÉ + = \ + +873 ((( +__cÚ¡ + *è(__cÚ¡ *è( +s1 +))[0] \ + +874 - +__s2 +[0]); \ + +875 ià( +l1 + > 0 && +__»suÉ + == 0) \ + +877 +__»suÉ + = ((( +__cÚ¡ + *) \ + +878 ( +__cÚ¡ + *è( +s1 +))[1] - +__s2 +[1]); \ + +879 ià( +l1 + > 1 && +__»suÉ + == 0) \ + +881 +__»suÉ + = ((( +__cÚ¡ + *) \ + +882 ( +__cÚ¡ + *è( +s1 +))[2] - +__s2 +[2]);\ + +883 ià( +l1 + > 2 && +__»suÉ + == 0) \ + +884 +__»suÉ + = ((( +__cÚ¡ + *) \ + +885 ( +__cÚ¡ + *è( +s1 +))[3] \ + +886 - +__s2 +[3]); \ + +889 +__»suÉ +; })) + + ) + +891  + #__¡rcmp_gc +( +s1 +, +s2 +, +l2 +) \ + +892 ( + `__ex‹nsiÚ__ + ({ +__cÚ¡ + * +__s1 + = \ + +893 ( +__cÚ¡ + *è(__cÚ¡ *è( +s1 +); \ + +894  +__»suÉ + = \ + +895 +__s1 +[0] - (( +__cÚ¡ + *) \ + +896 ( +__cÚ¡ + *è( +s2 +))[0]; \ + +897 ià( +l2 + > 0 && +__»suÉ + == 0) \ + +899 +__»suÉ + = ( +__s1 +[1] \ + +900 - (( +__cÚ¡ + *) \ + +901 ( +__cÚ¡ + *è( +s2 +))[1]); \ + +902 ià( +l2 + > 1 && +__»suÉ + == 0) \ + +904 +__»suÉ + = \ + +905 ( +__s1 +[2] - (( +__cÚ¡ + *) \ + +906 ( +__cÚ¡ + *è( +s2 +))[2]); \ + +907 ià( +l2 + > 2 && +__»suÉ + == 0) \ + +908 +__»suÉ + = \ + +909 ( +__s1 +[3] \ + +910 - (( +__cÚ¡ + *) \ + +911 ( +__cÚ¡ + *è( +s2 +))[3]); \ + +914 +__»suÉ +; })) + + ) + +919 #iâdeà +_HAVE_STRING_ARCH_¡ºcmp + + +920  + #¡ºcmp +( +s1 +, +s2 +, +n +) \ + +921 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +922 && (( + `__bužtš_cÚ¡ªt_p + ( +s1 +) \ + +923 && + `¡¾’ + ( +s1 +è< (( +size_t +è( +n +))) \ + +924 || ( + `__bužtš_cÚ¡ªt_p + ( +s2 +) \ + +925 && + `¡¾’ + ( +s2 +è< (( +size_t +è( +n +)))) \ + +926 ? + `¡rcmp + ( +s1 +, +s2 +è: + `¡ºcmp + (s1, s2, +n +))) + + ) + +932 #ià! +defšed + +_HAVE_STRING_ARCH_¡rc¥n + || defšed +_FORCE_INLINES + + +933 #iâdeà +_HAVE_STRING_ARCH_¡rc¥n + + +934 #ià +__GNUC_PREREQ + (3, 2) + +935  + #¡rc¥n +( +s +, +»jeù +) \ + +936 +__ex‹nsiÚ__ + \ + +937 ({  +__r0 +, +__r1 +, +__r2 +; \ + +938 ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +è&& + `__¡ršg2_1b±r_p + (reject) \ + +939 ? (( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s)) \ + +940 ? + `__bužtš_¡rc¥n + ( +s +, +»jeù +) \ + +941 : (( +__r0 + = (( +__cÚ¡ + *è( +»jeù +))[0], __r0 == '\0') \ + +942 ? + `¡¾’ + ( +s +) \ + +943 : (( +__r1 + = (( +__cÚ¡ + *è( +»jeù +))[1], __r1 == '\0') \ + +944 ? + `__¡rc¥n_c1 + ( +s +, +__r0 +) \ + +945 : (( +__r2 + = (( +__cÚ¡ + *è( +»jeù +))[2], __r2 == '\0') \ + +946 ? + `__¡rc¥n_c2 + ( +s +, +__r0 +, +__r1 +) \ + +947 : ((( +__cÚ¡ + *è( +»jeù +))[3] == '\0' \ + +948 ? + `__¡rc¥n_c3 + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +949 : + `__bužtš_¡rc¥n + ( +s +, +»jeù +)))))) \ + +950 : + `__bužtš_¡rc¥n + ( +s +, +»jeù +)); }) + + ) + +952  + #¡rc¥n +( +s +, +»jeù +) \ + +953 +__ex‹nsiÚ__ + \ + +954 ({  +__r0 +, +__r1 +, +__r2 +; \ + +955 ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +è&& + `__¡ršg2_1b±r_p + (reject) \ + +956 ? (( +__r0 + = (( +__cÚ¡ + *è( +»jeù +))[0], __r0 == '\0') \ + +957 ? + `¡¾’ + ( +s +) \ + +958 : (( +__r1 + = (( +__cÚ¡ + *è( +»jeù +))[1], __r1 == '\0') \ + +959 ? + `__¡rc¥n_c1 + ( +s +, +__r0 +) \ + +960 : (( +__r2 + = (( +__cÚ¡ + *è( +»jeù +))[2], __r2 == '\0') \ + +961 ? + `__¡rc¥n_c2 + ( +s +, +__r0 +, +__r1 +) \ + +962 : ((( +__cÚ¡ + *è( +»jeù +))[3] == '\0' \ + +963 ? + `__¡rc¥n_c3 + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +964 : + `¡rc¥n + ( +s +, +»jeù +))))) \ + +965 : + `¡rc¥n + ( +s +, +»jeù +)); }) + + ) + +969 +__STRING_INLINE + +size_t + +__¡rc¥n_c1 + ( +__cÚ¡ + * +__s +,  +__»jeù +); + +970 +__STRING_INLINE + +size_t + + +971 + $__¡rc¥n_c1 + ( +__cÚ¡ + * +__s +,  +__»jeù +) + +973  +size_t + +__»suÉ + = 0; + +974  +__s +[ +__»suÉ +] !ð'\0' && __s[__»suÉ] !ð +__»jeù +) + +975 ++ +__»suÉ +; + +976  +__»suÉ +; + +977 + } +} + +979 +__STRING_INLINE + +size_t + +__¡rc¥n_c2 + ( +__cÚ¡ + * +__s +,  +__»jeù1 +, + +980  +__»jeù2 +); + +981 +__STRING_INLINE + +size_t + + +982 + $__¡rc¥n_c2 + ( +__cÚ¡ + * +__s +,  +__»jeù1 +,  +__»jeù2 +) + +984  +size_t + +__»suÉ + = 0; + +985  +__s +[ +__»suÉ +] !ð'\0' && __s[__»suÉ] !ð +__»jeù1 + + +986 && +__s +[ +__»suÉ +] !ð +__»jeù2 +) + +987 ++ +__»suÉ +; + +988  +__»suÉ +; + +989 + } +} + +991 +__STRING_INLINE + +size_t + +__¡rc¥n_c3 + ( +__cÚ¡ + * +__s +,  +__»jeù1 +, + +992  +__»jeù2 +,  +__»jeù3 +); + +993 +__STRING_INLINE + +size_t + + +994 + $__¡rc¥n_c3 + ( +__cÚ¡ + * +__s +,  +__»jeù1 +,  +__»jeù2 +, + +995  +__»jeù3 +) + +997  +size_t + +__»suÉ + = 0; + +998  +__s +[ +__»suÉ +] !ð'\0' && __s[__»suÉ] !ð +__»jeù1 + + +999 && +__s +[ +__»suÉ +] !ð +__»jeù2 + && __s[__»suÉ] !ð +__»jeù3 +) + +1000 ++ +__»suÉ +; + +1001  +__»suÉ +; + +1002 + } +} + +1008 #ià! +defšed + +_HAVE_STRING_ARCH_¡r¥n + || defšed +_FORCE_INLINES + + +1009 #iâdeà +_HAVE_STRING_ARCH_¡r¥n + + +1010 #ià +__GNUC_PREREQ + (3, 2) + +1011  + #¡r¥n +( +s +, +acû± +) \ + +1012 +__ex‹nsiÚ__ + \ + +1013 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1014 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_p + (accept) \ + +1015 ? (( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s)) \ + +1016 ? + `__bužtš_¡r¥n + ( +s +, +acû± +) \ + +1017 : (( +__a0 + = (( +__cÚ¡ + *è( +acû± +))[0], __a0 == '\0') \ + +1018 ? ((è( +s +), 0) \ + +1019 : (( +__a1 + = (( +__cÚ¡ + *è( +acû± +))[1], __a1 == '\0') \ + +1020 ? + `__¡r¥n_c1 + ( +s +, +__a0 +) \ + +1021 : (( +__a2 + = (( +__cÚ¡ + *è( +acû± +))[2], __a2 == '\0') \ + +1022 ? + `__¡r¥n_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1023 : ((( +__cÚ¡ + *è( +acû± +))[3] == '\0' \ + +1024 ? + `__¡r¥n_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1025 : + `__bužtš_¡r¥n + ( +s +, +acû± +)))))) \ + +1026 : + `__bužtš_¡r¥n + ( +s +, +acû± +)); }) + + ) + +1028  + #¡r¥n +( +s +, +acû± +) \ + +1029 +__ex‹nsiÚ__ + \ + +1030 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1031 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_p + (accept) \ + +1032 ? (( +__a0 + = (( +__cÚ¡ + *è( +acû± +))[0], __a0 == '\0') \ + +1033 ? ((è( +s +), 0) \ + +1034 : (( +__a1 + = (( +__cÚ¡ + *è( +acû± +))[1], __a1 == '\0') \ + +1035 ? + `__¡r¥n_c1 + ( +s +, +__a0 +) \ + +1036 : (( +__a2 + = (( +__cÚ¡ + *è( +acû± +))[2], __a2 == '\0') \ + +1037 ? + `__¡r¥n_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1038 : ((( +__cÚ¡ + *è( +acû± +))[3] == '\0' \ + +1039 ? + `__¡r¥n_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1040 : + `¡r¥n + ( +s +, +acû± +))))) \ + +1041 : + `¡r¥n + ( +s +, +acû± +)); }) + + ) + +1045 +__STRING_INLINE + +size_t + +__¡r¥n_c1 + ( +__cÚ¡ + * +__s +,  +__acû± +); + +1046 +__STRING_INLINE + +size_t + + +1047 + $__¡r¥n_c1 + ( +__cÚ¡ + * +__s +,  +__acû± +) + +1049  +size_t + +__»suÉ + = 0; + +1051  +__s +[ +__»suÉ +] =ð +__acû± +) + +1052 ++ +__»suÉ +; + +1053  +__»suÉ +; + +1054 + } +} + +1056 +__STRING_INLINE + +size_t + +__¡r¥n_c2 + ( +__cÚ¡ + * +__s +,  +__acû±1 +, + +1057  +__acû±2 +); + +1058 +__STRING_INLINE + +size_t + + +1059 + $__¡r¥n_c2 + ( +__cÚ¡ + * +__s +,  +__acû±1 +,  +__acû±2 +) + +1061  +size_t + +__»suÉ + = 0; + +1063  +__s +[ +__»suÉ +] =ð +__acû±1 + || __s[__»suÉ] =ð +__acû±2 +) + +1064 ++ +__»suÉ +; + +1065  +__»suÉ +; + +1066 + } +} + +1068 +__STRING_INLINE + +size_t + +__¡r¥n_c3 + ( +__cÚ¡ + * +__s +,  +__acû±1 +, + +1069  +__acû±2 +,  +__acû±3 +); + +1070 +__STRING_INLINE + +size_t + + +1071 + $__¡r¥n_c3 + ( +__cÚ¡ + * +__s +,  +__acû±1 +,  +__acû±2 +,  +__acû±3 +) + +1073  +size_t + +__»suÉ + = 0; + +1075  +__s +[ +__»suÉ +] =ð +__acû±1 + || __s[__»suÉ] =ð +__acû±2 + + +1076 || +__s +[ +__»suÉ +] =ð +__acû±3 +) + +1077 ++ +__»suÉ +; + +1078  +__»suÉ +; + +1079 + } +} + +1084 #ià! +defšed + +_HAVE_STRING_ARCH_¡½brk + || defšed +_FORCE_INLINES + + +1085 #iâdeà +_HAVE_STRING_ARCH_¡½brk + + +1086 #ià +__GNUC_PREREQ + (3, 2) + +1087  + #¡½brk +( +s +, +acû± +) \ + +1088 +__ex‹nsiÚ__ + \ + +1089 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1090 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_p + (accept) \ + +1091 ? (( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s)) \ + +1092 ? + `__bužtš_¡½brk + ( +s +, +acû± +) \ + +1093 : (( +__a0 + = (( +__cÚ¡ + *è( +acû± +))[0], __a0 == '\0') \ + +1094 ? ((è( +s +), (*è +NULL +) \ + +1095 : (( +__a1 + = (( +__cÚ¡ + *è( +acû± +))[1], __a1 == '\0') \ + +1096 ? + `__bužtš_¡rchr + ( +s +, +__a0 +) \ + +1097 : (( +__a2 + = (( +__cÚ¡ + *è( +acû± +))[2], __a2 == '\0') \ + +1098 ? + `__¡½brk_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1099 : ((( +__cÚ¡ + *è( +acû± +))[3] == '\0' \ + +1100 ? + `__¡½brk_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1101 : + `__bužtš_¡½brk + ( +s +, +acû± +)))))) \ + +1102 : + `__bužtš_¡½brk + ( +s +, +acû± +)); }) + + ) + +1104  + #¡½brk +( +s +, +acû± +) \ + +1105 +__ex‹nsiÚ__ + \ + +1106 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1107 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_p + (accept) \ + +1108 ? (( +__a0 + = (( +__cÚ¡ + *è( +acû± +))[0], __a0 == '\0') \ + +1109 ? ((è( +s +), (*è +NULL +) \ + +1110 : (( +__a1 + = (( +__cÚ¡ + *è( +acû± +))[1], __a1 == '\0') \ + +1111 ? + `¡rchr + ( +s +, +__a0 +) \ + +1112 : (( +__a2 + = (( +__cÚ¡ + *è( +acû± +))[2], __a2 == '\0') \ + +1113 ? + `__¡½brk_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1114 : ((( +__cÚ¡ + *è( +acû± +))[3] == '\0' \ + +1115 ? + `__¡½brk_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1116 : + `¡½brk + ( +s +, +acû± +))))) \ + +1117 : + `¡½brk + ( +s +, +acû± +)); }) + + ) + +1121 +__STRING_INLINE + * +__¡½brk_c2 + ( +__cÚ¡ + * +__s +,  +__acû±1 +, + +1122  +__acû±2 +); + +1123 +__STRING_INLINE + * + +1124 + $__¡½brk_c2 + ( +__cÚ¡ + * +__s +,  +__acû±1 +,  +__acû±2 +) + +1127 * +__s + !ð'\0' && *__ !ð +__acû±1 + && *__ !ð +__acû±2 +) + +1128 ++ +__s +; + +1129  * +__s + =ð'\0' ? +NULL + : (*è( +size_t +) __s; + +1130 + } +} + +1132 +__STRING_INLINE + * +__¡½brk_c3 + ( +__cÚ¡ + * +__s +,  +__acû±1 +, + +1133  +__acû±2 +,  +__acû±3 +); + +1134 +__STRING_INLINE + * + +1135 + $__¡½brk_c3 + ( +__cÚ¡ + * +__s +,  +__acû±1 +,  +__acû±2 +, + +1136  +__acû±3 +) + +1139 * +__s + !ð'\0' && *__ !ð +__acû±1 + && *__ !ð +__acû±2 + + +1140 && * +__s + !ð +__acû±3 +) + +1141 ++ +__s +; + +1142  * +__s + =ð'\0' ? +NULL + : (*è( +size_t +) __s; + +1143 + } +} + +1149 #ià! +defšed + +_HAVE_STRING_ARCH_¡r¡r + && ! +__GNUC_PREREQ + (2, 97) + +1150  + #¡r¡r +( +hay¡ack +, +ÃedË +) \ + +1151 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +ÃedË +è&& + `__¡ršg2_1b±r_p + (needle) \ + +1152 ? ((( +__cÚ¡ + *è( +ÃedË +))[0] == '\0' \ + +1153 ? (*è( +size_t +è( +hay¡ack +) \ + +1154 : ((( +__cÚ¡ + *è( +ÃedË +))[1] == '\0' \ + +1155 ? + `¡rchr + ( +hay¡ack +, \ + +1156 (( +__cÚ¡ + *è( +ÃedË +))[0]) \ + +1157 : + `¡r¡r + ( +hay¡ack +, +ÃedË +))) \ + +1158 : + `¡r¡r + ( +hay¡ack +, +ÃedË +))) + + ) + +1162 #ià! +defšed + +_HAVE_STRING_ARCH_¡¹ok_r + || defšed +_FORCE_INLINES + + +1163 #iâdeà +_HAVE_STRING_ARCH_¡¹ok_r + + +1164  + #__¡¹ok_r +( +s +, +£p +, +Ãx +) \ + +1165 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +£p +è&& + `__¡ršg2_1b±r_p + (sep) \ + +1166 ? ((( +__cÚ¡ + *è( +£p +))[0] != '\0' \ + +1167 && (( +__cÚ¡ + *è( +£p +))[1] == '\0' \ + +1168 ? + `__¡¹ok_r_1c + ( +s +, (( +__cÚ¡ + *è( +£p +))[0], +Ãx +) \ + +1169 : + `__¡¹ok_r + ( +s +, +£p +, +Ãx +)) \ + +1170 : + `__¡¹ok_r + ( +s +, +£p +, +Ãx +))) + + ) + +1173 +__STRING_INLINE + * +__¡¹ok_r_1c + (* +__s +,  +__£p +, ** +__Ãx +); + +1174 +__STRING_INLINE + * + +1175 + $__¡¹ok_r_1c + (* +__s +,  +__£p +, ** +__Ãx +) + +1177 * +__»suÉ +; + +1178 ià( +__s + =ð +NULL +) + +1179 +__s + = * +__Ãx +; + +1180 * +__s + =ð +__£p +) + +1181 ++ +__s +; + +1182 +__»suÉ + = +NULL +; + +1183 ià(* +__s + != '\0') + +1185 +__»suÉ + = +__s +++; + +1186 * +__s + != '\0') + +1187 ià(* +__s +++ =ð +__£p +) + +1189 +__s +[-1] = '\0'; + +1192 * +__Ãx + = +__s +; + +1194  +__»suÉ +; + +1195 + } +} + +1196 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +1197  + #¡¹ok_r +( +s +, +£p +, +Ãx +è + `__¡¹ok_r + (s, s•,‚ex) + + ) + +1202 #ià! +defšed + +_HAVE_STRING_ARCH_¡r£p + || defšed +_FORCE_INLINES + + +1203 #iâdeà +_HAVE_STRING_ARCH_¡r£p + + +1205 * +__¡r£p_g + (** +__¡ršgp +, +__cÚ¡ + * +__d–im +); + +1206  + #__¡r£p +( +s +, +»jeù +) \ + +1207 +__ex‹nsiÚ__ + \ + +1208 ({  +__r0 +, +__r1 +, +__r2 +; \ + +1209 ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +è&& + `__¡ršg2_1b±r_p + (reject) \ + +1210 && ( +__r0 + = (( +__cÚ¡ + *è( +»jeù +))[0], \ + +1211 (( +__cÚ¡ + *è( +»jeù +))[0] != '\0') \ + +1212 ? (( +__r1 + = (( +__cÚ¡ + *è( +»jeù +))[1], \ + +1213 (( +__cÚ¡ + *è( +»jeù +))[1] == '\0') \ + +1214 ? + `__¡r£p_1c + ( +s +, +__r0 +) \ + +1215 : (( +__r2 + = (( +__cÚ¡ + *è( +»jeù +))[2], __r2 == '\0') \ + +1216 ? + `__¡r£p_2c + ( +s +, +__r0 +, +__r1 +) \ + +1217 : ((( +__cÚ¡ + *è( +»jeù +))[3] == '\0' \ + +1218 ? + `__¡r£p_3c + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +1219 : + `__¡r£p_g + ( +s +, +»jeù +)))) \ + +1220 : + `__¡r£p_g + ( +s +, +»jeù +)); }) + + ) + +1223 +__STRING_INLINE + * +__¡r£p_1c + (** +__s +,  +__»jeù +); + +1224 +__STRING_INLINE + * + +1225 + $__¡r£p_1c + (** +__s +,  +__»jeù +) + +1227 * +__»tv® + = * +__s +; + +1228 ià( +__»tv® + !ð +NULL + && (* +__s + = + `¡rchr + (__»tv®, +__»jeù +)) != NULL) + +1229 *(* +__s +)++ = '\0'; + +1230  +__»tv® +; + +1231 + } +} + +1233 +__STRING_INLINE + * +__¡r£p_2c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +); + +1234 +__STRING_INLINE + * + +1235 + $__¡r£p_2c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +) + +1237 * +__»tv® + = * +__s +; + +1238 ià( +__»tv® + !ð +NULL +) + +1240 * +__ý + = +__»tv® +; + +1243 ià(* +__ý + == '\0') + +1245 +__ý + = +NULL +; + +1248 ià(* +__ý + =ð +__»jeù1 + || *__ý =ð +__»jeù2 +) + +1250 * +__ý +++ = '\0'; + +1253 ++ +__ý +; + +1255 * +__s + = +__ý +; + +1257  +__»tv® +; + +1258 + } +} + +1260 +__STRING_INLINE + * +__¡r£p_3c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +, + +1261  +__»jeù3 +); + +1262 +__STRING_INLINE + * + +1263 + $__¡r£p_3c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +,  +__»jeù3 +) + +1265 * +__»tv® + = * +__s +; + +1266 ià( +__»tv® + !ð +NULL +) + +1268 * +__ý + = +__»tv® +; + +1271 ià(* +__ý + == '\0') + +1273 +__ý + = +NULL +; + +1276 ià(* +__ý + =ð +__»jeù1 + || *__ý =ð +__»jeù2 + || *__ý =ð +__»jeù3 +) + +1278 * +__ý +++ = '\0'; + +1281 ++ +__ý +; + +1283 * +__s + = +__ý +; + +1285  +__»tv® +; + +1286 + } +} + +1287 #ifdeà +__USE_BSD + + +1288  + #¡r£p +( +s +, +»jeù +è + `__¡r£p + (s,„ejeù) + + ) + +1295 #ifdeà +__USE_MISC + + +1297 #ià! +defšed + +_HAVE_STRING_ARCH_¡rdup + || !defšed +_HAVE_STRING_ARCH_¡ºdup + + +1298  + #__Ãed_m®loc_ªd_ÿÎoc + + + ) + +1299  + ~<¡dlib.h +> + +1302 #iâdeà +_HAVE_STRING_ARCH_¡rdup + + +1304 * + $__¡rdup + ( +__cÚ¡ + * +__¡ršg +è +__THROW + +__©Œibu‹_m®loc__ +; + +1305  + #__¡rdup +( +s +) \ + +1306 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s) \ + +1307 ? ((( +__cÚ¡ + *è( +s +))[0] == '\0' \ + +1308 ? (*è + `ÿÎoc + (1, 1) \ + +1309 : ({ +size_t + +__Ën + = + `¡¾’ + ( +s +) + 1; \ + +1310 * +__»tv® + = (*è + `m®loc + ( +__Ën +); \ + +1311 ià( +__»tv® + !ð +NULL +) \ + +1312 +__»tv® + = (*è + `memýy + (__»tv®, +s +, +__Ën +); \ + +1313 +__»tv® +; + } +})) \ + +1314 : + `__¡rdup + ( +s +))) + + ) + +1316 #ià +defšed + +__USE_SVID + || defšed +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +1317  + #¡rdup +( +s +è + `__¡rdup + (s) + + ) + +1321 #iâdeà +_HAVE_STRING_ARCH_¡ºdup + + +1323 * + $__¡ºdup + ( +__cÚ¡ + * +__¡ršg +, +size_t + +__n +) + +1324 +__THROW + +__©Œibu‹_m®loc__ +; + +1325  + #__¡ºdup +( +s +, +n +) \ + +1326 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s) \ + +1327 ? ((( +__cÚ¡ + *è( +s +))[0] == '\0' \ + +1328 ? (*è + `ÿÎoc + (1, 1) \ + +1329 : ({ +size_t + +__Ën + = + `¡¾’ + ( +s +) + 1; \ + +1330 +size_t + +__n + = ( +n +); \ + +1331 * +__»tv® +; \ + +1332 ià( +__n + < +__Ën +) \ + +1333 +__Ën + = +__n + + 1; \ + +1334 +__»tv® + = (*è + `m®loc + ( +__Ën +); \ + +1335 ià( +__»tv® + !ð +NULL +) \ + +1337 +__»tv® +[ +__Ën + - 1] = '\0'; \ + +1338 +__»tv® + = (*è + `memýy + (__»tv®, +s +, \ + +1339 +__Ën + - 1); \ + +1341 +__»tv® +; + } +})) \ + +1342 : + `__¡ºdup + ( +s +, +n +))) + + ) + +1344 #ifdeà +__USE_GNU + + +1345  + #¡ºdup +( +s +, +n +è + `__¡ºdup + (s,‚) + + ) + +1351 #iâdeà +_FORCE_INLINES + + +1352 #undeà +__STRING_INLINE + + + @/usr/include/bits/string3.h + +19 #iâdeà +_STRING_H + + +26 #undeà +memýy + + +27 #undeà +memmove + + +28 #undeà +mem£t + + +29 #undeà +¡rÿt + + +30 #undeà +¡rýy + + +31 #undeà +¡ºÿt + + +32 #undeà +¡ºýy + + +33 #ifdeà +__USE_GNU + + +34 #undeà +mempýy + + +35 #undeà +¡pýy + + +37 #ifdeà +__USE_BSD + + +38 #undeà +bcÝy + + +39 #undeà +bz”o + + +43  + #memýy +( +de¡ +, +¤c +, +Ën +) \ + +44 (( + `__bos0 + ( +de¡ +è!ð( +size_t +) -1) \ + +45 ? + `__bužtš___memýy_chk + ( +de¡ +, +¤c +, +Ën +, + `__bos0 + (dest)) \ + +46 : + `__memýy_ichk + ( +de¡ +, +¤c +, +Ën +)) + + ) + +47  +__šlše__ + * + +48 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +49 + $__memýy_ichk + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +50 +size_t + +__Ën +) + +52  + `__bužtš___memýy_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +53 + } +} + +56  + #memmove +( +de¡ +, +¤c +, +Ën +) \ + +57 (( + `__bos0 + ( +de¡ +è!ð( +size_t +) -1) \ + +58 ? + `__bužtš___memmove_chk + ( +de¡ +, +¤c +, +Ën +, + `__bos0 + (dest)) \ + +59 : + `__memmove_ichk + ( +de¡ +, +¤c +, +Ën +)) + + ) + +60  +__šlše__ + * + +61 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +62 + $__memmove_ichk + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__Ën +) + +64  + `__bužtš___memmove_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +65 + } +} + +68 #ifdeà +__USE_GNU + + +69  + #mempýy +( +de¡ +, +¤c +, +Ën +) \ + +70 (( + `__bos0 + ( +de¡ +è!ð( +size_t +) -1) \ + +71 ? + `__bužtš___mempýy_chk + ( +de¡ +, +¤c +, +Ën +, + `__bos0 + (dest)) \ + +72 : + `__mempýy_ichk + ( +de¡ +, +¤c +, +Ën +)) + + ) + +73  +__šlše__ + * + +74 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +75 + $__mempýy_ichk + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +76 +size_t + +__Ën +) + +78  + `__bužtš___mempýy_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +79 + } +} + +83  + #mem£t +( +de¡ +, +ch +, +Ën +) \ + +84 (( + `__bos0 + ( +de¡ +è!ð( +size_t +) -1) \ + +85 ? + `__bužtš___mem£t_chk + ( +de¡ +, +ch +, +Ën +, + `__bos0 + (dest)) \ + +86 : + `__mem£t_ichk + ( +de¡ +, +ch +, +Ën +)) + + ) + +87  +__šlše__ + * + +88 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +89 + $__mem£t_ichk + (* +__de¡ +,  +__ch +, +size_t + +__Ën +) + +91  + `__bužtš___mem£t_chk + ( +__de¡ +, +__ch +, +__Ën +, + `__bos0 + (__dest)); + +92 + } +} + +94 #ifdeà +__USE_BSD + + +95  + #bcÝy +( +¤c +, +de¡ +, +Ën +) (() \ + +96 (( + `__bos0 + ( +de¡ +è!ð( +size_t +) -1) \ + +97 ? + `__bužtš___memmove_chk + ( +de¡ +, +¤c +, +Ën +, + `__bos0 + (dest)) \ + +98 : + `__memmove_ichk + ( +de¡ +, +¤c +, +Ën +))) + + ) + +99  + #bz”o +( +de¡ +, +Ën +) (() \ + +100 (( + `__bos0 + ( +de¡ +è!ð( +size_t +) -1) \ + +101 ? + `__bužtš___mem£t_chk + ( +de¡ +, '\0', +Ën +, + `__bos0 + (dest)) \ + +102 : + `__mem£t_ichk + ( +de¡ +, '\0', +Ën +))) + + ) + +106  + #¡rýy +( +de¡ +, +¤c +) \ + +107 (( + `__bos + ( +de¡ +è!ð( +size_t +) -1) \ + +108 ? + `__bužtš___¡rýy_chk + ( +de¡ +, +¤c +, + `__bos + (dest)) \ + +109 : + `__¡rýy_ichk + ( +de¡ +, +¤c +)) + + ) + +110  +__šlše__ + * + +111 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +112 + $__¡rýy_ichk + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +) + +114  + `__bužtš___¡rýy_chk + ( +__de¡ +, +__¤c +, + `__bos + (__dest)); + +115 + } +} + +118 #ifdeà +__USE_GNU + + +119  + #¡pýy +( +de¡ +, +¤c +) \ + +120 (( + `__bos + ( +de¡ +è!ð( +size_t +) -1) \ + +121 ? + `__bužtš___¡pýy_chk + ( +de¡ +, +¤c +, + `__bos + (dest)) \ + +122 : + `__¡pýy_ichk + ( +de¡ +, +¤c +)) + + ) + +123  +__šlše__ + * + +124 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +125 + $__¡pýy_ichk + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +) + +127  + `__bužtš___¡pýy_chk + ( +__de¡ +, +__¤c +, + `__bos + (__dest)); + +128 + } +} + +132  + #¡ºýy +( +de¡ +, +¤c +, +Ën +) \ + +133 (( + `__bos + ( +de¡ +è!ð( +size_t +) -1) \ + +134 ? + `__bužtš___¡ºýy_chk + ( +de¡ +, +¤c +, +Ën +, + `__bos + (dest)) \ + +135 : + `__¡ºýy_ichk + ( +de¡ +, +¤c +, +Ën +)) + + ) + +136  +__šlše__ + * + +137 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +138 + $__¡ºýy_ichk + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +139 +size_t + +__Ën +) + +141  + `__bužtš___¡ºýy_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos + (__dest)); + +142 + } +} + +145  + #¡rÿt +( +de¡ +, +¤c +) \ + +146 (( + `__bos + ( +de¡ +è!ð( +size_t +) -1) \ + +147 ? + `__bužtš___¡rÿt_chk + ( +de¡ +, +¤c +, + `__bos + (dest)) \ + +148 : + `__¡rÿt_ichk + ( +de¡ +, +¤c +)) + + ) + +149  +__šlše__ + * + +150 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +151 + $__¡rÿt_ichk + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +) + +153  + `__bužtš___¡rÿt_chk + ( +__de¡ +, +__¤c +, + `__bos + (__dest)); + +154 + } +} + +157  + #¡ºÿt +( +de¡ +, +¤c +, +Ën +) \ + +158 (( + `__bos + ( +de¡ +è!ð( +size_t +) -1) \ + +159 ? + `__bužtš___¡ºÿt_chk + ( +de¡ +, +¤c +, +Ën +, + `__bos + (dest)) \ + +160 : + `__¡ºÿt_ichk + ( +de¡ +, +¤c +, +Ën +)) + + ) + +161  +__šlše__ + * + +162 +__©Œibu‹__ + (( +__®ways_šlše__ +)) + +163 + $__¡ºÿt_ichk + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +164 +size_t + +__Ën +) + +166  + `__bužtš___¡ºÿt_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos + (__dest)); + +167 + } +} + + @/usr/include/bits/sys_errlist.h + +20 #iâdeà +_STDIO_H + + +26 #ifdeà +__USE_BSD + + +27  +sys_ü +; + +28 +__cÚ¡ + *__cÚ¡ +sys_”¾i¡ +[]; + +30 #ifdeà +__USE_GNU + + +31  +_sys_ü +; + +32 +__cÚ¡ + *__cÚ¡ +_sys_”¾i¡ +[]; + + @/usr/include/bits/types.h + +24 #iâdef +_BITS_TYPES_H + + +25  + #_BITS_TYPES_H + 1 + + ) + +27  + ~<ã©u»s.h +> + +28  + ~ + +30  + #__Ãed_size_t + + + ) + +31  + ~<¡ddef.h +> + +34  + t__u_ch¬ +; + +35  + t__u_shÜt +; + +36  + t__u_št +; + +37  + t__u_lÚg +; + +40 sigÃd  + t__št8_t +; + +41  + t__ušt8_t +; + +42 sigÃd  + t__št16_t +; + +43  + t__ušt16_t +; + +44 sigÃd  + t__št32_t +; + +45  + t__ušt32_t +; + +46 #ià +__WORDSIZE + == 64 + +47 sigÃd  + t__št64_t +; + +48  + t__ušt64_t +; + +49 #–ià +defšed + +__GLIBC_HAVE_LONG_LONG + + +50 +__ex‹nsiÚ__ + sigÃd  + t__št64_t +; + +51 +__ex‹nsiÚ__ +  + t__ušt64_t +; + +55 #ià +__WORDSIZE + == 64 + +56  + t__quad_t +; + +57  + t__u_quad_t +; + +58 #–ià +defšed + +__GLIBC_HAVE_LONG_LONG + + +59 +__ex‹nsiÚ__ +  + t__quad_t +; + +60 +__ex‹nsiÚ__ +  + t__u_quad_t +; + +64  + m__v® +[2]; + +65 } + t__quad_t +; + +68 +__u_lÚg + + m__v® +[2]; + +69 } + t__u_quad_t +; + +102  + #__S16_TYPE +  + + ) + +103  + #__U16_TYPE +  + + ) + +104  + #__S32_TYPE +  + + ) + +105  + #__U32_TYPE +  + + ) + +106  + #__SLONGWORD_TYPE +  + + ) + +107  + #__ULONGWORD_TYPE +  + + ) + +108 #ià +__WORDSIZE + == 32 + +109  + #__SQUAD_TYPE + +__quad_t + + + ) + +110  + #__UQUAD_TYPE + +__u_quad_t + + + ) + +111  + #__SWORD_TYPE +  + + ) + +112  + #__UWORD_TYPE +  + + ) + +113  + #__SLONG32_TYPE +  + + ) + +114  + #__ULONG32_TYPE +  + + ) + +115  + #__S64_TYPE + +__quad_t + + + ) + +116  + #__U64_TYPE + +__u_quad_t + + + ) + +117 #–ià +__WORDSIZE + == 64 + +118  + #__SQUAD_TYPE +  + + ) + +119  + #__UQUAD_TYPE +  + + ) + +120  + #__SWORD_TYPE +  + + ) + +121  + #__UWORD_TYPE +  + + ) + +122  + #__SLONG32_TYPE +  + + ) + +123  + #__ULONG32_TYPE +  + + ) + +124  + #__S64_TYPE +  + + ) + +125  + #__U64_TYPE +  + + ) + +129  + ~ + +133  + #__STD_TYPE + +__ex‹nsiÚ__ +  + + ) + +136 +__STD_TYPE + + t__DEV_T_TYPE + + t__dev_t +; + +137 +__STD_TYPE + +__UID_T_TYPE + + g__uid_t +; + +138 +__STD_TYPE + +__GID_T_TYPE + + g__gid_t +; + +139 +__STD_TYPE + +__INO_T_TYPE + + g__šo_t +; + +140 +__STD_TYPE + +__INO64_T_TYPE + + g__šo64_t +; + +141 +__STD_TYPE + +__MODE_T_TYPE + + g__mode_t +; + +142 +__STD_TYPE + +__NLINK_T_TYPE + + g__ƚk_t +; + +143 +__STD_TYPE + +__OFF_T_TYPE + + g__off_t +; + +144 +__STD_TYPE + +__OFF64_T_TYPE + + g__off64_t +; + +145 +__STD_TYPE + +__PID_T_TYPE + + g__pid_t +; + +146 +__STD_TYPE + +__FSID_T_TYPE + + g__fsid_t +; + +147 +__STD_TYPE + +__CLOCK_T_TYPE + + g__þock_t +; + +148 +__STD_TYPE + +__RLIM_T_TYPE + + g__¾im_t +; + +149 +__STD_TYPE + +__RLIM64_T_TYPE + + g__¾im64_t +; + +150 +__STD_TYPE + +__ID_T_TYPE + + g__id_t +; + +151 +__STD_TYPE + +__TIME_T_TYPE + + g__time_t +; + +152 +__STD_TYPE + +__USECONDS_T_TYPE + + g__u£cÚds_t +; + +153 +__STD_TYPE + +__SUSECONDS_T_TYPE + + g__su£cÚds_t +; + +155 +__STD_TYPE + +__DADDR_T_TYPE + + g__daddr_t +; + +156 +__STD_TYPE + +__SWBLK_T_TYPE + + g__swblk_t +; + +157 +__STD_TYPE + +__KEY_T_TYPE + + g__key_t +; + +160 +__STD_TYPE + +__CLOCKID_T_TYPE + + g__þockid_t +; + +163 +__STD_TYPE + +__TIMER_T_TYPE + + g__tim”_t +; + +166 +__STD_TYPE + +__BLKSIZE_T_TYPE + + g__blksize_t +; + +171 +__STD_TYPE + +__BLKCNT_T_TYPE + + g__blkút_t +; + +172 +__STD_TYPE + +__BLKCNT64_T_TYPE + + g__blkút64_t +; + +175 +__STD_TYPE + +__FSBLKCNT_T_TYPE + + g__fsblkút_t +; + +176 +__STD_TYPE + +__FSBLKCNT64_T_TYPE + + g__fsblkút64_t +; + +179 +__STD_TYPE + +__FSFILCNT_T_TYPE + + g__fsfžút_t +; + +180 +__STD_TYPE + +__FSFILCNT64_T_TYPE + + g__fsfžút64_t +; + +182 +__STD_TYPE + +__SSIZE_T_TYPE + + g__ssize_t +; + +186  +__off64_t + + t__loff_t +; + +187  +__quad_t + * + t__qaddr_t +; + +188 * + t__ÿddr_t +; + +191 +__STD_TYPE + +__SWORD_TYPE + + g__šŒ_t +; + +194 +__STD_TYPE + +__U32_TYPE + + g__sockËn_t +; + +197 #undeà +__STD_TYPE + + + @/usr/include/bits/waitflags.h + +20 #ià! +defšed + +_SYS_WAIT_H + && !defšed +_STDLIB_H + + +26  + #WNOHANG + 1 + + ) + +27  + #WUNTRACED + 2 + + ) + +30  + #WSTOPPED + 2 + + ) + +31  + #WEXITED + 4 + + ) + +32  + #WCONTINUED + 8 + + ) + +33  + #WNOWAIT + 0x01000000 + + ) + +35  + #__WALL + 0x40000000 + + ) + +36  + #__WCLONE + 0x80000000 + + ) + + @/usr/include/bits/waitstatus.h + +20 #ià! +defšed + +_SYS_WAIT_H + && !defšed +_STDLIB_H + + +29  + #__WEXITSTATUS +( +¡©us +è(((¡©usè& 0xff00è>> 8) + + ) + +32  + #__WTERMSIG +( +¡©us +è((¡©usè& 0x7f) + + ) + +35  + #__WSTOPSIG +( +¡©us +è + `__WEXITSTATUS +(¡©us) + + ) + +38  + #__WIFEXITED +( +¡©us +è( + `__WTERMSIG +(¡©usè=ð0) + + ) + +41  + #__WIFSIGNALED +( +¡©us +) \ + +42 (((sigÃd è((( +¡©us +è& 0x7fè+ 1è>> 1è> 0) + + ) + +45  + #__WIFSTOPPED +( +¡©us +è(((¡©usè& 0xffè=ð0x7f) + + ) + +49 #ifdeà +WCONTINUED + + +50  + #__WIFCONTINUED +( +¡©us +è((¡©usè=ð +__W_CONTINUED +) + + ) + +54  + #__WCOREDUMP +( +¡©us +è((¡©usè& +__WCOREFLAG +) + + ) + +57  + #__W_EXITCODE +( +»t +, +sig +è(ԑè<< 8 | (sig)) + + ) + +58  + #__W_STOPCODE +( +sig +è((sigè<< 8 | 0x7f) + + ) + +59  + #__W_CONTINUED + 0xffff + + ) + +60  + #__WCOREFLAG + 0x80 + + ) + +63 #ifdef +__USE_BSD + + +65  + ~<’dŸn.h +> + +67  + uwa™ + + +69  + mw_¡©us +; + +72 #if +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +73  + m__w_‹rmsig +:7; + +74  + m__w_cÜedump +:1; + +75  + m__w_»tcode +:8; + +78 #if +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +80  + m__w_»tcode +:8; + +81  + m__w_cÜedump +:1; + +82  + m__w_‹rmsig +:7; + +84 } + m__wa™_‹rmš©ed +; + +87 #if +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +88  + m__w_¡Ýv® +:8; + +89  + m__w_¡Ýsig +:8; + +92 #if +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +94  + m__w_¡Ýsig +:8; + +95  + m__w_¡Ýv® +:8; + +97 } + m__wa™_¡Ý³d +; + +100  + #w_‹rmsig + +__wa™_‹rmš©ed +. +__w_‹rmsig + + + ) + +101  + #w_cÜedump + +__wa™_‹rmš©ed +. +__w_cÜedump + + + ) + +102  + #w_»tcode + +__wa™_‹rmš©ed +. +__w_»tcode + + + ) + +103  + #w_¡Ýsig + +__wa™_¡Ý³d +. +__w_¡Ýsig + + + ) + +104  + #w_¡Ýv® + +__wa™_¡Ý³d +. +__w_¡Ýv® + + + ) + + @/usr/include/bits/wchar.h + +20 #iâdeà +_BITS_WCHAR_H + + +21  + #_BITS_WCHAR_H + 1 + + ) + +23  + #__WCHAR_MIN + (-2147483647È- 1l) + + ) + +24  + #__WCHAR_MAX + (2147483647l) + + ) + + @/usr/include/bits/wordsize.h + +19  + #__WORDSIZE + 32 + + ) + + @/usr/include/endian.h + +19 #iâdef +_ENDIAN_H + + +20  + #_ENDIAN_H + 1 + + ) + +22  + ~<ã©u»s.h +> + +32  + #__LITTLE_ENDIAN + 1234 + + ) + +33  + #__BIG_ENDIAN + 4321 + + ) + +34  + #__PDP_ENDIAN + 3412 + + ) + +37  + ~ + +41 #iâdeà +__FLOAT_WORD_ORDER + + +42  + #__FLOAT_WORD_ORDER + +__BYTE_ORDER + + + ) + +45 #ifdef +__USE_BSD + + +46  + #LITTLE_ENDIAN + +__LITTLE_ENDIAN + + + ) + +47  + #BIG_ENDIAN + +__BIG_ENDIAN + + + ) + +48  + #PDP_ENDIAN + +__PDP_ENDIAN + + + ) + +49  + #BYTE_ORDER + +__BYTE_ORDER + + + ) + +52 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +53  + #__LONG_LONG_PAIR +( +HI +, +LO +èLO, + ) +HI + +54 #–ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +55  + #__LONG_LONG_PAIR +( +HI +, +LO +èHI, + ) +LO + + @/usr/include/features.h + +19 #iâdef +_FEATURES_H + + +20  + #_FEATURES_H + 1 + + ) + +90 #undeà +__USE_ISOC99 + + +91 #undeà +__USE_POSIX + + +92 #undeà +__USE_POSIX2 + + +93 #undeà +__USE_POSIX199309 + + +94 #undeà +__USE_POSIX199506 + + +95 #undeà +__USE_XOPEN + + +96 #undeà +__USE_XOPEN_EXTENDED + + +97 #undeà +__USE_UNIX98 + + +98 #undeà +__USE_XOPEN2K + + +99 #undeà +__USE_LARGEFILE + + +100 #undeà +__USE_LARGEFILE64 + + +101 #undeà +__USE_FILE_OFFSET64 + + +102 #undeà +__USE_BSD + + +103 #undeà +__USE_SVID + + +104 #undeà +__USE_MISC + + +105 #undeà +__USE_GNU + + +106 #undeà +__USE_REENTRANT + + +107 #undeà +__USE_FORTIFY_LEVEL + + +108 #undeà +__FAVOR_BSD + + +109 #undeà +__KERNEL_STRICT_NAMES + + +113 #iâdeà +_LOOSE_KERNEL_NAMES + + +114  + #__KERNEL_STRICT_NAMES + + + ) + +118  + #__USE_ANSI + 1 + + ) + +127 #ià +defšed + +__GNUC__ + && defšed +__GNUC_MINOR__ + + +128  + #__GNUC_PREREQ +( +maj +, +mš +) \ + +129 (( +__GNUC__ + << 16è+ +__GNUC_MINOR__ + >ð(( +maj +è<< 16è+ ( +mš +)) + + ) + +131  + #__GNUC_PREREQ +( +maj +, +mš +è0 + + ) + +136 #ià +defšed + +_BSD_SOURCE + && \ + +137 !( +defšed + + g_POSIX_SOURCE + || defšed + g_POSIX_C_SOURCE + || \ + +138 +defšed + + g_XOPEN_SOURCE + || defšed + g_XOPEN_SOURCE_EXTENDED + || \ + +139 +defšed + + g_GNU_SOURCE + || defšed + g_SVID_SOURCE +) + +140  + #__FAVOR_BSD + 1 + + ) + +144 #ifdeà +_GNU_SOURCE + + +145 #undeà +_ISOC99_SOURCE + + +146  + #_ISOC99_SOURCE + 1 + + ) + +147 #undeà +_POSIX_SOURCE + + +148  + #_POSIX_SOURCE + 1 + + ) + +149 #undeà +_POSIX_C_SOURCE + + +150  + #_POSIX_C_SOURCE + 199506L + + ) + +151 #undeà +_XOPEN_SOURCE + + +152  + #_XOPEN_SOURCE + 600 + + ) + +153 #undeà +_XOPEN_SOURCE_EXTENDED + + +154  + #_XOPEN_SOURCE_EXTENDED + 1 + + ) + +155 #undeà +_LARGEFILE64_SOURCE + + +156  + #_LARGEFILE64_SOURCE + 1 + + ) + +157 #undeà +_BSD_SOURCE + + +158  + #_BSD_SOURCE + 1 + + ) + +159 #undeà +_SVID_SOURCE + + +160  + #_SVID_SOURCE + 1 + + ) + +165 #ià(! +defšed + +__STRICT_ANSI__ + && !defšed +_ISOC99_SOURCE + && \ + +166 ! +defšed + + g_POSIX_SOURCE + && !defšed + g_POSIX_C_SOURCE + && \ + +167 ! +defšed + + g_XOPEN_SOURCE + && !defšed + g_XOPEN_SOURCE_EXTENDED + && \ + +168 ! +defšed + + g_BSD_SOURCE + && !defšed + g_SVID_SOURCE +) + +169  + #_BSD_SOURCE + 1 + + ) + +170  + #_SVID_SOURCE + 1 + + ) + +177 #ià( +defšed + +_ISOC99_SOURCE + || defšed +_ISOC9X_SOURCE + \ + +178 || ( +defšed + + g__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L)) + +179  + #__USE_ISOC99 + 1 + + ) + +184 #ià((! +defšed + +__STRICT_ANSI__ + || ( +_XOPEN_SOURCE + - 0) >= 500) && \ + +185 ! +defšed + +_POSIX_SOURCE + && !defšed +_POSIX_C_SOURCE +) + +186  + #_POSIX_SOURCE + 1 + + ) + +187 #ià +defšed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 500 + +188  + #_POSIX_C_SOURCE + 2 + + ) + +190  + #_POSIX_C_SOURCE + 199506L + + ) + +194 #ià +defšed + +_POSIX_SOURCE + || +_POSIX_C_SOURCE + >ð1 || defšed +_XOPEN_SOURCE + + +195  + #__USE_POSIX + 1 + + ) + +198 #ià +defšed + +_POSIX_C_SOURCE + && _POSIX_C_SOURCE >ð2 || defšed +_XOPEN_SOURCE + + +199  + #__USE_POSIX2 + 1 + + ) + +202 #ià( +_POSIX_C_SOURCE + - 0) >= 199309L + +203  + #__USE_POSIX199309 + 1 + + ) + +206 #ià( +_POSIX_C_SOURCE + - 0) >= 199506L + +207  + #__USE_POSIX199506 + 1 + + ) + +210 #ià( +_POSIX_C_SOURCE + - 0) >= 200112L + +211  + #__USE_XOPEN2K + 1 + + ) + +214 #ifdef +_XOPEN_SOURCE + + +215  + #__USE_XOPEN + 1 + + ) + +216 #ià( +_XOPEN_SOURCE + - 0) >= 500 + +217  + #__USE_XOPEN_EXTENDED + 1 + + ) + +218  + #__USE_UNIX98 + 1 + + ) + +219 #undeà +_LARGEFILE_SOURCE + + +220  + #_LARGEFILE_SOURCE + 1 + + ) + +221 #ià( +_XOPEN_SOURCE + - 0) >= 600 + +222  + #__USE_XOPEN2K + 1 + + ) + +223 #undeà +__USE_ISOC99 + + +224  + #__USE_ISOC99 + 1 + + ) + +227 #ifdeà +_XOPEN_SOURCE_EXTENDED + + +228  + #__USE_XOPEN_EXTENDED + 1 + + ) + +233 #ifdeà +_LARGEFILE_SOURCE + + +234  + #__USE_LARGEFILE + 1 + + ) + +237 #ifdeà +_LARGEFILE64_SOURCE + + +238  + #__USE_LARGEFILE64 + 1 + + ) + +241 #ià +defšed + +_FILE_OFFSET_BITS + && _FILE_OFFSET_BITS == 64 + +242  + #__USE_FILE_OFFSET64 + 1 + + ) + +245 #ià +defšed + +_BSD_SOURCE + || defšed +_SVID_SOURCE + + +246  + #__USE_MISC + 1 + + ) + +249 #ifdef +_BSD_SOURCE + + +250  + #__USE_BSD + 1 + + ) + +253 #ifdef +_SVID_SOURCE + + +254  + #__USE_SVID + 1 + + ) + +257 #ifdef +_GNU_SOURCE + + +258  + #__USE_GNU + 1 + + ) + +261 #ià +defšed + +_REENTRANT + || defšed +_THREAD_SAFE + + +262  + #__USE_REENTRANT + 1 + + ) + +265 #ià +_FORTIFY_SOURCE + > 0 && +__GNUC_PREREQ + (4, 1è&& +__OPTIMIZE__ + > 0 + +266 #ià +_FORTIFY_SOURCE + == 1 + +267  + #__USE_FORTIFY_LEVEL + 1 + + ) + +268 #–ià +_FORTIFY_SOURCE + > 1 + +269  + #__USE_FORTIFY_LEVEL + 2 + + ) + +274  + #__STDC_IEC_559__ + 1 + + ) + +275  + #__STDC_IEC_559_COMPLEX__ + 1 + + ) + +278  + #__STDC_ISO_10646__ + 200009L + + ) + +286 #undeà +__GNU_LIBRARY__ + + +287  + #__GNU_LIBRARY__ + 6 + + ) + +291  + #__GLIBC__ + 2 + + ) + +292  + #__GLIBC_MINOR__ + 3 + + ) + +294  + #__GLIBC_PREREQ +( +maj +, +mš +) \ + +295 (( +__GLIBC__ + << 16è+ +__GLIBC_MINOR__ + >ð(( +maj +è<< 16è+ ( +mš +)) + + ) + +298 #ià +defšed + +__GNUC__ + \ + +299 || ( +defšed + + g__PGI + && defšed + g__i386__ + ) \ + +300 || ( +defšed + + g__INTEL_COMPILER + && (defšed + g__i386__ + || defšed + g__Ÿ64__ +)) \ + +301 || ( +defšed + + g__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L) + +302  + #__GLIBC_HAVE_LONG_LONG + 1 + + ) + +306 #iâdeà +__ASSEMBLER__ + + +307 #iâdeà +_SYS_CDEFS_H + + +308  + ~ + +313 #ià +defšed + +__USE_FILE_OFFSET64 + && !defšed +__REDIRECT + + +314  + #__USE_LARGEFILE + 1 + + ) + +315  + #__USE_LARGEFILE64 + 1 + + ) + +321 #ià +__GNUC_PREREQ + (2, 7è&& +defšed + +__OPTIMIZE__ + \ + +322 && ! +defšed + + g__OPTIMIZE_SIZE__ + && !defšed + g__NO_INLINE__ + + +323  + #__USE_EXTERN_INLINES + 1 + + ) + +331  + ~ + + @/usr/include/libio.h + +29 #iâdeà +_IO_STDIO_H + + +30  + #_IO_STDIO_H + + + ) + +32  + ~<_G_cÚfig.h +> + +34  + #_IO_pos_t + +_G_åos_t + + + ) + +35  + #_IO_åos_t + +_G_åos_t + + + ) + +36  + #_IO_åos64_t + +_G_åos64_t + + + ) + +37  + #_IO_size_t + +_G_size_t + + + ) + +38  + #_IO_ssize_t + +_G_ssize_t + + + ) + +39  + #_IO_off_t + +_G_off_t + + + ) + +40  + #_IO_off64_t + +_G_off64_t + + + ) + +41  + #_IO_pid_t + +_G_pid_t + + + ) + +42  + #_IO_uid_t + +_G_uid_t + + + ) + +43  + #_IO_icÚv_t + +_G_icÚv_t + + + ) + +44  + #_IO_HAVE_SYS_WAIT + +_G_HAVE_SYS_WAIT + + + ) + +45  + #_IO_HAVE_ST_BLKSIZE + +_G_HAVE_ST_BLKSIZE + + + ) + +46  + #_IO_BUFSIZ + +_G_BUFSIZ + + + ) + +47  + #_IO_va_li¡ + +_G_va_li¡ + + + ) + +48  + #_IO_wšt_t + +_G_wšt_t + + + ) + +50 #ifdeà +_G_NEED_STDARG_H + + +52  + #__Ãed___va_li¡ + + + ) + +53  + ~<¡d¬g.h +> + +54 #ifdeà +__GNUC_VA_LIST + + +55 #undeà +_IO_va_li¡ + + +56  + #_IO_va_li¡ + +__gnuc_va_li¡ + + + ) + +60 #iâdeà +__P + + +61 #ià +_G_HAVE_SYS_CDEFS + + +62  + ~ + +64 #ifdeà +__STDC__ + + +65  + #__P +( +p +è + ) +p + +66  + #__PMT +( +p +è + ) +p + +68  + #__P +( +p +è() + + ) + +69  + #__PMT +( +p +è() + + ) + +75 #iâdeà +_PARAMS + + +76  + #_PARAMS +( +´Ùos +è + `__P +ÕrÙos) + + ) + +79 #iâdeà +__STDC__ + + +81 cÚ¡ + + ) + +84  + #_IO_UNIFIED_JUMPTABLES + 1 + + ) + +85 #iâdeà +_G_HAVE_PRINTF_FP + + +86  + #_IO_USE_DTOA + 1 + + ) + +89 #iâdeà +EOF + + +90  + #EOF + (-1) + + ) + +92 #iâdeà +NULL + + +93 #ià +defšed + +__GNUG__ + && \ + +94 ( + g__GNUC__ + > 2 || (__GNUC__ =ð2 && +__GNUC_MINOR__ + >= 8)) + +95  + #NULL + ( +__nuÎ +) + + ) + +97 #ià! +defšed +( +__ýlu¥lus +) + +98  + #NULL + ((*)0) + + ) + +100  + #NULL + (0) + + ) + +105  + #_IOS_INPUT + 1 + + ) + +106  + #_IOS_OUTPUT + 2 + + ) + +107  + #_IOS_ATEND + 4 + + ) + +108  + #_IOS_APPEND + 8 + + ) + +109  + #_IOS_TRUNC + 16 + + ) + +110  + #_IOS_NOCREATE + 32 + + ) + +111  + #_IOS_NOREPLACE + 64 + + ) + +112  + #_IOS_BIN + 128 + + ) + +120  + #_IO_MAGIC + 0xFBAD0000 + + ) + +121  + #_OLD_STDIO_MAGIC + 0xFABC0000 + + ) + +122  + #_IO_MAGIC_MASK + 0xFFFF0000 + + ) + +123  + #_IO_USER_BUF + 1 + + ) + +124  + #_IO_UNBUFFERED + 2 + + ) + +125  + #_IO_NO_READS + 4 + + ) + +126  + #_IO_NO_WRITES + 8 + + ) + +127  + #_IO_EOF_SEEN + 0x10 + + ) + +128  + #_IO_ERR_SEEN + 0x20 + + ) + +129  + #_IO_DELETE_DONT_CLOSE + 0x40 + + ) + +130  + #_IO_LINKED + 0x80 + + ) + +131  + #_IO_IN_BACKUP + 0x100 + + ) + +132  + #_IO_LINE_BUF + 0x200 + + ) + +133  + #_IO_TIED_PUT_GET + 0x400 + + ) + +134  + #_IO_CURRENTLY_PUTTING + 0x800 + + ) + +135  + #_IO_IS_APPENDING + 0x1000 + + ) + +136  + #_IO_IS_FILEBUF + 0x2000 + + ) + +137  + #_IO_BAD_SEEN + 0x4000 + + ) + +138  + #_IO_USER_LOCK + 0x8000 + + ) + +140  + #_IO_FLAGS2_MMAP + 1 + + ) + +141  + #_IO_FLAGS2_NOTCANCEL + 2 + + ) + +142 #ifdeà +_LIBC + + +143  + #_IO_FLAGS2_FORTIFY + 4 + + ) + +147  + #_IO_SKIPWS + 01 + + ) + +148  + #_IO_LEFT + 02 + + ) + +149  + #_IO_RIGHT + 04 + + ) + +150  + #_IO_INTERNAL + 010 + + ) + +151  + #_IO_DEC + 020 + + ) + +152  + #_IO_OCT + 040 + + ) + +153  + #_IO_HEX + 0100 + + ) + +154  + #_IO_SHOWBASE + 0200 + + ) + +155  + #_IO_SHOWPOINT + 0400 + + ) + +156  + #_IO_UPPERCASE + 01000 + + ) + +157  + #_IO_SHOWPOS + 02000 + + ) + +158  + #_IO_SCIENTIFIC + 04000 + + ) + +159  + #_IO_FIXED + 010000 + + ) + +160  + #_IO_UNITBUF + 020000 + + ) + +161  + #_IO_STDIO + 040000 + + ) + +162  + #_IO_DONT_CLOSE + 0100000 + + ) + +163  + #_IO_BOOLALPHA + 0200000 + + ) + +166  +_IO_jump_t +;  + g_IO_FILE +; + +169 #ifdeà +_IO_MTSAFE_IO + + +170 #ià +defšed + +__GLIBC__ + && __GLIBC__ >= 2 + +171  + ~ + +176  + t_IO_lock_t +; + +182  + s_IO_m¬k” + { + +183  +_IO_m¬k” + * + m_Ãxt +; + +184  +_IO_FILE + * + m_sbuf +; + +188  + m_pos +; + +190  +£t_¡»ampos +( +¡»ampos + +¥ +è{ + m_¥os + = sp; } + +191  +£t_off£t +( +off£t +è{ + m_pos + = off£t; + m_¥os + = ( +¡»ampos +)(-2); } + +192 + mpublic +: + +193 +¡»amm¬k” +( +¡»ambuf + * +sb +); + +194 ~ +¡»amm¬k” +(); + +195  +§všg +(è{  + m_¥os + == -2; } + +196  +d– +( +¡»amm¬k” +&); + +197  +d– +(); + +202 + e__codecvt_»suÉ + + +204 + m__codecvt_ok +, + +205 + m__codecvt_·¹Ÿl +, + +206 + m__codecvt_”rÜ +, + +207 + m__codecvt_nocÚv + + +210 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +213  + s_IO_codecvt + + +215 (* + m__codecvt_de¡r +è( + m_IO_codecvt + *); + +216 +__codecvt_»suÉ + (* +__codecvt_do_out +è( + m_IO_codecvt + *, + +217 + m__mb¡©e_t + *, + +218 cÚ¡ + mwch¬_t + *, + +219 cÚ¡ + mwch¬_t + *, + +220 cÚ¡ + mwch¬_t + **, *, + +222 +__codecvt_»suÉ + (* +__codecvt_do_unshiá +è( + m_IO_codecvt + *, + +223 + m__mb¡©e_t + *, *, + +225 +__codecvt_»suÉ + (* +__codecvt_do_š +è( + m_IO_codecvt + *, + +226 + m__mb¡©e_t + *, + +228 cÚ¡ **, + mwch¬_t + *, + +229 + mwch¬_t + *, wchar_t **); + +230 (* + m__codecvt_do_’codšg +è( + m_IO_codecvt + *); + +231 (* + m__codecvt_do_®ways_nocÚv +è( + m_IO_codecvt + *); + +232 (* + m__codecvt_do_Ëngth +è( + m_IO_codecvt + *, + m__mb¡©e_t + *, + +233 cÚ¡ *, cÚ¡ *, + m_IO_size_t +); + +234 (* + m__codecvt_do_max_Ëngth +è( + m_IO_codecvt + *); + +236 +_IO_icÚv_t + + m__cd_š +; + +237 +_IO_icÚv_t + + m__cd_out +; + +241  + s_IO_wide_d©a + + +243 +wch¬_t + * + m_IO_»ad_±r +; + +244 +wch¬_t + * + m_IO_»ad_’d +; + +245 +wch¬_t + * + m_IO_»ad_ba£ +; + +246 +wch¬_t + * + m_IO_wr™e_ba£ +; + +247 +wch¬_t + * + m_IO_wr™e_±r +; + +248 +wch¬_t + * + m_IO_wr™e_’d +; + +249 +wch¬_t + * + m_IO_buf_ba£ +; + +250 +wch¬_t + * + m_IO_buf_’d +; + +252 +wch¬_t + * + m_IO_§ve_ba£ +; + +253 +wch¬_t + * + m_IO_backup_ba£ +; + +255 +wch¬_t + * + m_IO_§ve_’d +; + +257 +__mb¡©e_t + + m_IO_¡©e +; + +258 +__mb¡©e_t + + m_IO_Ï¡_¡©e +; + +259  +_IO_codecvt + + m_codecvt +; + +261 +wch¬_t + + m_shÜtbuf +[1]; + +263 cÚ¡  +_IO_jump_t + * + m_wide_vbË +; + +267  + s_IO_FILE + { + +268  + m_æags +; + +269  + #_IO_fže_æags + +_æags + + + ) + +273 * + m_IO_»ad_±r +; + +274 * + m_IO_»ad_’d +; + +275 * + m_IO_»ad_ba£ +; + +276 * + m_IO_wr™e_ba£ +; + +277 * + m_IO_wr™e_±r +; + +278 * + m_IO_wr™e_’d +; + +279 * + m_IO_buf_ba£ +; + +280 * + m_IO_buf_’d +; + +282 * + m_IO_§ve_ba£ +; + +283 * + m_IO_backup_ba£ +; + +284 * + m_IO_§ve_’d +; + +286  +_IO_m¬k” + * + m_m¬k”s +; + +288  +_IO_FILE + * + m_chaš +; + +290  + m_fž’o +; + +292  + m_blksize +; + +294  + m_æags2 +; + +296 +_IO_off_t + + m_Þd_off£t +; + +298  + #__HAVE_COLUMN + + + ) + +300  + m_cur_cÞumn +; + +301 sigÃd  + m_vbË_off£t +; + +302  + m_shÜtbuf +[1]; + +306 +_IO_lock_t + * + m_lock +; + +307 #ifdeà +_IO_USE_OLD_IO_FILE + + +310  + s_IO_FILE_com¶‘e + + +312  +_IO_FILE + + m_fže +; + +314 #ià +defšed + +_G_IO_IO_FILE_VERSION + && _G_IO_IO_FILE_VERSION == 0x20001 + +315 +_IO_off64_t + + m_off£t +; + +316 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +318  +_IO_codecvt + * + m_codecvt +; + +319  +_IO_wide_d©a + * + m_wide_d©a +; + +321 * + m__·d1 +; + +322 * + m__·d2 +; + +324  + m_mode +; + +326  + m_unu£d2 +[15 *  () - 2 *  (*)]; + +330 #iâdeà +__ýlu¥lus + + +331  +_IO_FILE + + t_IO_FILE +; + +334  + g_IO_FILE_¶us +; + +336  +_IO_FILE_¶us + +_IO_2_1_¡dš_ +; + +337  +_IO_FILE_¶us + +_IO_2_1_¡dout_ +; + +338  +_IO_FILE_¶us + +_IO_2_1_¡d”r_ +; + +339 #iâdeà +_LIBC + + +340  + #_IO_¡dš + (( +_IO_FILE +*)(& +_IO_2_1_¡dš_ +)) + + ) + +341  + #_IO_¡dout + (( +_IO_FILE +*)(& +_IO_2_1_¡dout_ +)) + + ) + +342  + #_IO_¡d”r + (( +_IO_FILE +*)(& +_IO_2_1_¡d”r_ +)) + + ) + +344 +_IO_FILE + * +_IO_¡dš + +©Œibu‹_hidd’ +; + +345 +_IO_FILE + * +_IO_¡dout + +©Œibu‹_hidd’ +; + +346 +_IO_FILE + * +_IO_¡d”r + +©Œibu‹_hidd’ +; + +354  +__ssize_t + + t__io_»ad_â + (* + t__cook› +, * + t__buf +, + tsize_t + + t__nby‹s +); + +362  +__ssize_t + + t__io_wr™e_â + (* + t__cook› +, + t__cÚ¡ + * + t__buf +, + +363 + tsize_t + + t__n +); + +371  + t__io_£ek_â + (* + t__cook› +, + t_IO_off64_t + * + t__pos +,  + t__w +); + +374  + t__io_þo£_â + (* + t__cook› +); + +377 #ifdeà +_GNU_SOURCE + + +379  +__io_»ad_â + + tcook›_»ad_funùiÚ_t +; + +380  +__io_wr™e_â + + tcook›_wr™e_funùiÚ_t +; + +381  +__io_£ek_â + + tcook›_£ek_funùiÚ_t +; + +382  +__io_þo£_â + + tcook›_þo£_funùiÚ_t +; + +387 +__io_»ad_â + * + m»ad +; + +388 +__io_wr™e_â + * + mwr™e +; + +389 +__io_£ek_â + * + m£ek +; + +390 +__io_þo£_â + * + mþo£ +; + +391 } + t_IO_cook›_io_funùiÚs_t +; + +392  +_IO_cook›_io_funùiÚs_t + + tcook›_io_funùiÚs_t +; + +394  + g_IO_cook›_fže +; + +397  +_IO_cook›_š™ + ( +_IO_cook›_fže + * +__cfže +,  +__»ad_wr™e +, + +398 * +__cook› +, +_IO_cook›_io_funùiÚs_t + +__âs +); + +402 #ifdeà +__ýlu¥lus + + +406  +__und”æow + ( +_IO_FILE + *è +__THROW +; + +407  +__uæow + ( +_IO_FILE + *è +__THROW +; + +408  +__ov”æow + ( +_IO_FILE + *, è +__THROW +; + +409 +_IO_wšt_t + +__wund”æow + ( +_IO_FILE + *è +__THROW +; + +410 +_IO_wšt_t + +__wuæow + ( +_IO_FILE + *è +__THROW +; + +411 +_IO_wšt_t + +__wov”æow + ( +_IO_FILE + *, _IO_wšt_tè +__THROW +; + +413 #ià +__GNUC__ + >= 3 + +414  + #_IO_BE +( +ex´ +, +»s +è + `__bužtš_ex³ù + (ex´,„es) + + ) + +416  + #_IO_BE +( +ex´ +, +»s +èÓx´) + + ) + +419  + #_IO_g‘c_uÆocked +( +_å +) \ + +420 ( + `_IO_BE + (( +_å +)-> +_IO_»ad_±r + >ð(_å)-> +_IO_»ad_’d +, 0) \ + +421 ? + `__uæow + ( +_å +è: *(*è(_å)-> +_IO_»ad_±r +++) + + ) + +422  + #_IO_³ekc_uÆocked +( +_å +) \ + +423 ( + `_IO_BE + (( +_å +)-> +_IO_»ad_±r + >ð(_å)-> +_IO_»ad_’d +, 0) \ + +424 && + `__und”æow + ( +_å +è=ð +EOF + ? EOF \ + +425 : *(*è( +_å +)-> +_IO_»ad_±r +) + + ) + +426  + #_IO_putc_uÆocked +( +_ch +, +_å +) \ + +427 ( + `_IO_BE + (( +_å +)-> +_IO_wr™e_±r + >ð(_å)-> +_IO_wr™e_’d +, 0) \ + +428 ? + `__ov”æow + ( +_å +, (è( +_ch +)) \ + +429 : (è(*( +_å +)-> +_IO_wr™e_±r +++ = ( +_ch +))) + + ) + +431  + #_IO_g‘wc_uÆocked +( +_å +) \ + +432 ( + `_IO_BE + (( +_å +)-> +_wide_d©a +-> +_IO_»ad_±r + >ð(_å)->_wide_d©a-> +_IO_»ad_’d +,\ + +434 ? + `__wuæow + ( +_å +è: ( +_IO_wšt_t +è*(_å)-> +_wide_d©a +-> +_IO_»ad_±r +++) + + ) + +435  + #_IO_putwc_uÆocked +( +_wch +, +_å +) \ + +436 ( + `_IO_BE + (( +_å +)-> +_wide_d©a +-> +_IO_wr™e_±r + \ + +437 >ð( +_å +)-> +_wide_d©a +-> +_IO_wr™e_’d +, 0) \ + +438 ? + `__wov”æow + ( +_å +, +_wch +) \ + +439 : ( +_IO_wšt_t +è(*( +_å +)-> +_wide_d©a +-> +_IO_wr™e_±r +++ = ( +_wch +))) + + ) + +441  + #_IO_ãof_uÆocked +( +__å +è(((__å)-> +_æags + & +_IO_EOF_SEEN +è!ð0) + + ) + +442  + #_IO_ã¼Ü_uÆocked +( +__å +è(((__å)-> +_æags + & +_IO_ERR_SEEN +è!ð0) + + ) + +444  +_IO_g‘c + ( +_IO_FILE + * +__å +è +__THROW +; + +445  +_IO_putc + ( +__c +, +_IO_FILE + * +__å +è +__THROW +; + +446  +_IO_ãof + ( +_IO_FILE + * +__å +è +__THROW +; + +447  +_IO_ã¼Ü + ( +_IO_FILE + * +__å +è +__THROW +; + +449  +_IO_³ekc_locked + ( +_IO_FILE + * +__å +è +__THROW +; + +452  + #_IO_PENDING_OUTPUT_COUNT +( +_å +) \ + +453 (( +_å +)-> +_IO_wr™e_±r + - (_å)-> +_IO_wr™e_ba£ +) + + ) + +455  +_IO_æockfže + ( +_IO_FILE + *è +__THROW +; + +456  +_IO_fuÆockfže + ( +_IO_FILE + *è +__THROW +; + +457  +_IO_árylockfže + ( +_IO_FILE + *è +__THROW +; + +459 #ifdeà +_IO_MTSAFE_IO + + +460  + #_IO_³ekc +( +_å +è + `_IO_³ekc_locked + (_å) + + ) + +461  + #_IO_æockfže +( +_å +) \ + +462 ià((( +_å +)-> +_æags + & +_IO_USER_LOCK +è=ð0è + `_IO_æockfže + (_å) + + ) + +463  + #_IO_fuÆockfže +( +_å +) \ + +464 ià((( +_å +)-> +_æags + & +_IO_USER_LOCK +è=ð0è + `_IO_fuÆockfže + (_å) + + ) + +466  + #_IO_³ekc +( +_å +è + `_IO_³ekc_uÆocked + (_å) + + ) + +467  + #_IO_æockfže +( +_å +è + + ) + +468  + #_IO_fuÆockfže +( +_å +è + + ) + +469  + #_IO_árylockfže +( +_å +è + + ) + +470  + #_IO_þ—nup_»giÚ_¡¬t +( +_fù +, +_å +è + + ) + +471  + #_IO_þ—nup_»giÚ_’d +( +_Do™ +è + + ) + +474  +_IO_vfsÿnf + ( +_IO_FILE + * +__»¡riù +, const * __restrict, + +475 +_IO_va_li¡ +, * +__»¡riù +è +__THROW +; + +476  +_IO_vårštf + ( +_IO_FILE + * +__»¡riù +, const *__restrict, + +477 +_IO_va_li¡ +è +__THROW +; + +478 +_IO_ssize_t + +_IO_·dn + ( +_IO_FILE + *, , _IO_ssize_tè +__THROW +; + +479 +_IO_size_t + +_IO_sg‘n + ( +_IO_FILE + *, *, _IO_size_tè +__THROW +; + +481 +_IO_off64_t + +_IO_£ekoff + ( +_IO_FILE + *, _IO_off64_t, , è +__THROW +; + +482 +_IO_off64_t + +_IO_£ekpos + ( +_IO_FILE + *, _IO_off64_t, è +__THROW +; + +484  +_IO_ä“_backup_¬— + ( +_IO_FILE + *è +__THROW +; + +486 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +487 +_IO_wšt_t + +_IO_g‘wc + ( +_IO_FILE + * +__å +è +__THROW +; + +488 +_IO_wšt_t + +_IO_putwc + ( +wch¬_t + +__wc +, +_IO_FILE + * +__å +è +__THROW +; + +489  +_IO_fwide + ( +_IO_FILE + * +__å +,  +__mode +è +__THROW +; + +490 #ià +__GNUC__ + >= 2 + +493 #ià +defšed + +_LIBC + && defšed +SHARED + + +494  + ~ + +495 #ià +SHLIB_COMPAT + ( +libc +, +GLIBC_2_0 +, +GLIBC_2_1 +) + +496  + #_IO_fwide_maybe_šcom·tibË + \ + +497 ( + `__bužtš_ex³ù + (& +_IO_¡dš_u£d + =ð +NULL +, 0)) + + ) + +498 cÚ¡  +_IO_¡dš_u£d +; + +499 +w—k_ex‹º + ( +_IO_¡dš_u£d +); + +502 #iâdeà +_IO_fwide_maybe_šcom·tibË + + +503  + #_IO_fwide_maybe_šcom·tibË + (0) + + ) + +507  + #_IO_fwide +( +__å +, +__mode +) \ + +508 ({  +__»suÉ + = ( +__mode +); \ + +509 ià( +__»suÉ + < 0 && ! +_IO_fwide_maybe_šcom·tibË +) \ + +511 ià(( +__å +)-> +_mode + == 0) \ + +513 ( +__å +)-> +_mode + = -1; \ + +514 +__»suÉ + = ( +__å +)-> +_mode +; \ + +516 ià( + `__bužtš_cÚ¡ªt_p + ( +__mode +) && (__mode) == 0) \ + +517 +__»suÉ + = +_IO_fwide_maybe_šcom·tibË + ? -1 : ( +__å +)-> +_mode +; \ + +519 +__»suÉ + = + `_IO_fwide + ( +__å +, __result); \ + +520 +__»suÉ +; }) + + ) + +523  +_IO_vfwsÿnf + ( +_IO_FILE + * +__»¡riù +, cÚ¡ +wch¬_t + * __restrict, + +524 +_IO_va_li¡ +, * +__»¡riù +è +__THROW +; + +525  +_IO_vfw´štf + ( +_IO_FILE + * +__»¡riù +, cÚ¡ +wch¬_t + *__restrict, + +526 +_IO_va_li¡ +è +__THROW +; + +527 +_IO_ssize_t + +_IO_w·dn + ( +_IO_FILE + *, +wšt_t +, _IO_ssize_tè +__THROW +; + +528  +_IO_ä“_wbackup_¬— + ( +_IO_FILE + *è +__THROW +; + +531 #ifdeà +__ýlu¥lus + + + @/usr/include/linux/backing-dev.h + +8 #iâdeà +_LINUX_BACKING_DEV_H + + +9  + #_LINUX_BACKING_DEV_H + + + ) + +15 + ebdi_¡©e + { + +16 + mBDI_pdæush +, + +17 + mBDI_wr™e_cÚge¡ed +, + +18 + mBDI_»ad_cÚge¡ed +, + +19 + mBDI_unu£d +, + +22 ( + tcÚge¡ed_â +)(*, ); + +24  + sbackšg_dev_šfo + { + +25  +¿_·ges +; + +26  +¡©e +; + +27  +memÜy_backed +; + +28 +cÚge¡ed_â + *congested_fn; + +29 * +cÚge¡ed_d©a +; + +30 (* +uÅlug_io_â +)( +backšg_dev_šfo + *,  +·ge + *); + +31 * +uÅlug_io_d©a +; + +34  +backšg_dev_šfo + +deçuÉ_backšg_dev_šfo +; + +35  + `deçuÉ_uÅlug_io_â +( +backšg_dev_šfo + * +bdi +,  +·ge + *page); + +37  + `wr™eback_acquœe +( +backšg_dev_šfo + * +bdi +); + +38  + `wr™eback_š_´og»ss +( +backšg_dev_šfo + * +bdi +); + +39  + `wr™eback_»Ëa£ +( +backšg_dev_šfo + * +bdi +); + +41  +šlše +  + $bdi_cÚge¡ed +( +backšg_dev_šfo + * +bdi +,  +bdi_b™s +) + +43 ià( +bdi +-> +cÚge¡ed_â +) + +44  +bdi +-> + `cÚge¡ed_â +(bdi-> +cÚge¡ed_d©a +, +bdi_b™s +); + +45  ( +bdi +-> +¡©e + & +bdi_b™s +); + +46 + } +} + +48  +šlše +  + $bdi_»ad_cÚge¡ed +( +backšg_dev_šfo + * +bdi +) + +50  + `bdi_cÚge¡ed +( +bdi +, 1 << +BDI_»ad_cÚge¡ed +); + +51 + } +} + +53  +šlše +  + $bdi_wr™e_cÚge¡ed +( +backšg_dev_šfo + * +bdi +) + +55  + `bdi_cÚge¡ed +( +bdi +, 1 << +BDI_wr™e_cÚge¡ed +); + +56 + } +} + +58  +šlše +  + $bdi_rw_cÚge¡ed +( +backšg_dev_šfo + * +bdi +) + +60  + `bdi_cÚge¡ed +( +bdi +, (1 << +BDI_»ad_cÚge¡ed +)| + +61 (1 << +BDI_wr™e_cÚge¡ed +)); + +62 + } +} + + @/usr/include/linux/err_kernel_only.h + +1 #”rÜ +K”Ãl + +Úly + +h—d” + +šþuded + +š + +u£r¥aû + + + @/usr/include/linux/errno.h + +1 #iâdeà +_LINUX_ERRNO_H + + +2  + #_LINUX_ERRNO_H + + + ) + +4  + #EPERM + 1 + + ) + +5  + #ENOENT + 2 + + ) + +6  + #ESRCH + 3 + + ) + +7  + #EINTR + 4 + + ) + +8  + #EIO + 5 + + ) + +9  + #ENXIO + 6 + + ) + +10  + #E2BIG + 7 + + ) + +11  + #ENOEXEC + 8 + + ) + +12  + #EBADF + 9 + + ) + +13  + #ECHILD + 10 + + ) + +14  + #EAGAIN + 11 + + ) + +15  + #ENOMEM + 12 + + ) + +16  + #EACCES + 13 + + ) + +17  + #EFAULT + 14 + + ) + +18  + #ENOTBLK + 15 + + ) + +19  + #EBUSY + 16 + + ) + +20  + #EEXIST + 17 + + ) + +21  + #EXDEV + 18 + + ) + +22  + #ENODEV + 19 + + ) + +23  + #ENOTDIR + 20 + + ) + +24  + #EISDIR + 21 + + ) + +25  + #EINVAL + 22 + + ) + +26  + #ENFILE + 23 + + ) + +27  + #EMFILE + 24 + + ) + +28  + #ENOTTY + 25 + + ) + +29  + #ETXTBSY + 26 + + ) + +30  + #EFBIG + 27 + + ) + +31  + #ENOSPC + 28 + + ) + +32  + #ESPIPE + 29 + + ) + +33  + #EROFS + 30 + + ) + +34  + #EMLINK + 31 + + ) + +35  + #EPIPE + 32 + + ) + +36  + #EDOM + 33 + + ) + +37  + #ERANGE + 34 + + ) + +38  + #EDEADLK + 35 + + ) + +40  + #ENAMETOOLONG + 36 + + ) + +41  + #ENOLCK + 37 + + ) + +42  + #ENOSYS + 38 + + ) + +43  + #ENOTEMPTY + 39 + + ) + +44  + #ELOOP + 40 + + ) + +45  + #EWOULDBLOCK + +EAGAIN + + + ) + +46  + #ENOMSG + 42 + + ) + +47  + #EIDRM + 43 + + ) + +48  + #ECHRNG + 44 + + ) + +49  + #EL2NSYNC + 45 + + ) + +50  + #EL3HLT + 46 + + ) + +51  + #EL3RST + 47 + + ) + +52  + #ELNRNG + 48 + + ) + +53  + #EUNATCH + 49 + + ) + +54  + #ENOCSI + 50 + + ) + +55  + #EL2HLT + 51 + + ) + +56  + #EBADE + 52 + + ) + +57  + #EBADR + 53 + + ) + +58  + #EXFULL + 54 + + ) + +59  + #ENOANO + 55 + + ) + +60  + #EBADRQC + 56 + + ) + +61  + #EBADSLT + 57 + + ) + +63  + #EDEADLOCK + +EDEADLK + + + ) + +65  + #EBFONT + 59 + + ) + +66  + #ENOSTR + 60 + + ) + +67  + #ENODATA + 61 + + ) + +68  + #ETIME + 62 + + ) + +69  + #ENOSR + 63 + + ) + +70  + #ENONET + 64 + + ) + +71  + #ENOPKG + 65 + + ) + +72  + #EREMOTE + 66 + + ) + +73  + #ENOLINK + 67 + + ) + +74  + #EADV + 68 + + ) + +75  + #ESRMNT + 69 + + ) + +76  + #ECOMM + 70 + + ) + +77  + #EPROTO + 71 + + ) + +78  + #EMULTIHOP + 72 + + ) + +79  + #EDOTDOT + 73 + + ) + +80  + #EBADMSG + 74 + + ) + +81  + #EOVERFLOW + 75 + + ) + +82  + #ENOTUNIQ + 76 + + ) + +83  + #EBADFD + 77 + + ) + +84  + #EREMCHG + 78 + + ) + +85  + #ELIBACC + 79 + + ) + +86  + #ELIBBAD + 80 + + ) + +87  + #ELIBSCN + 81 + + ) + +88  + #ELIBMAX + 82 + + ) + +89  + #ELIBEXEC + 83 + + ) + +90  + #EILSEQ + 84 + + ) + +91  + #ERESTART + 85 + + ) + +92  + #ESTRPIPE + 86 + + ) + +93  + #EUSERS + 87 + + ) + +94  + #ENOTSOCK + 88 + + ) + +95  + #EDESTADDRREQ + 89 + + ) + +96  + #EMSGSIZE + 90 + + ) + +97  + #EPROTOTYPE + 91 + + ) + +98  + #ENOPROTOOPT + 92 + + ) + +99  + #EPROTONOSUPPORT + 93 + + ) + +100  + #ESOCKTNOSUPPORT + 94 + + ) + +101  + #EOPNOTSUPP + 95 + + ) + +102  + #EPFNOSUPPORT + 96 + + ) + +103  + #EAFNOSUPPORT + 97 + + ) + +104  + #EADDRINUSE + 98 + + ) + +105  + #EADDRNOTAVAIL + 99 + + ) + +106  + #ENETDOWN + 100 + + ) + +107  + #ENETUNREACH + 101 + + ) + +108  + #ENETRESET + 102 + + ) + +109  + #ECONNABORTED + 103 + + ) + +110  + #ECONNRESET + 104 + + ) + +111  + #ENOBUFS + 105 + + ) + +112  + #EISCONN + 106 + + ) + +113  + #ENOTCONN + 107 + + ) + +114  + #ESHUTDOWN + 108 + + ) + +115  + #ETOOMANYREFS + 109 + + ) + +116  + #ETIMEDOUT + 110 + + ) + +117  + #ECONNREFUSED + 111 + + ) + +118  + #EHOSTDOWN + 112 + + ) + +119  + #EHOSTUNREACH + 113 + + ) + +120  + #EALREADY + 114 + + ) + +121  + #EINPROGRESS + 115 + + ) + +122  + #ESTALE + 116 + + ) + +123  + #EUCLEAN + 117 + + ) + +124  + #ENOTNAM + 118 + + ) + +125  + #ENAVAIL + 119 + + ) + +126  + #EISNAM + 120 + + ) + +127  + #EREMOTEIO + 121 + + ) + +128  + #EDQUOT + 122 + + ) + +130  + #ENOMEDIUM + 123 + + ) + +131  + #EMEDIUMTYPE + 124 + + ) + +132  + #ECANCELED + 125 + + ) + +133  + #ENOKEY + 126 + + ) + +134  + #EKEYEXPIRED + 127 + + ) + +135  + #EKEYREVOKED + 128 + + ) + +136  + #EKEYREJECTED + 129 + + ) + +139  + ~ + + @/usr/include/linux/fs.h + +1 #iâdeà +_LINUX_FS_H + + +2  + #_LINUX_FS_H + + + ) + +9  + ~ + +10  + ~ + +11  + ~ + +24 #undeà +NR_OPEN + + +25  + #NR_OPEN + (1024*1024è + + ) + +26  + #INR_OPEN + 1024 + + ) + +28  + #BLOCK_SIZE_BITS + 10 + + ) + +29  + #BLOCK_SIZE + (1<< +BLOCK_SIZE_BITS +) + + ) + +32  + sfžes_¡©_¡ruù + { + +33  + mÄ_fžes +; + +34  + mÄ_ä“_fžes +; + +35  + mmax_fžes +; + +37  +fžes_¡©_¡ruù + +fžes_¡© +; + +39  + sšodes_¡©_t + { + +40  + mÄ_šodes +; + +41  + mÄ_unu£d +; + +42  + mdummy +[5]; + +44  +šodes_¡©_t + +šodes_¡© +; + +46  +Ëa£s_’abË +, +Ëa£_b»ak_time +; + +48 #ifdeà +CONFIG_DNOTIFY + + +49  +dœ_nÙify_’abË +; + +52  + #NR_FILE + 8192 + + ) + +54  + #MAY_EXEC + 1 + + ) + +55  + #MAY_WRITE + 2 + + ) + +56  + #MAY_READ + 4 + + ) + +57  + #MAY_APPEND + 8 + + ) + +59  + #FMODE_READ + 1 + + ) + +60  + #FMODE_WRITE + 2 + + ) + +63  + #FMODE_LSEEK + 4 + + ) + +64  + #FMODE_PREAD + 8 + + ) + +65  + #FMODE_PWRITE + +FMODE_PREAD + + + ) + +67  + #RW_MASK + 1 + + ) + +68  + #RWA_MASK + 2 + + ) + +69  + #READ + 0 + + ) + +70  + #WRITE + 1 + + ) + +71  + #READA + 2 + + ) + +72  + #SPECIAL + 4 + + ) + +73  + #READ_SYNC + ( +READ + | (1 << +BIO_RW_SYNC +)) + + ) + +74  + #WRITE_SYNC + ( +WRITE + | (1 << +BIO_RW_SYNC +)) + + ) + +75  + #WRITE_BARRIER + ((1 << +BIO_RW +è| (1 << +BIO_RW_BARRIER +)) + + ) + +77  + #SEL_IN + 1 + + ) + +78  + #SEL_OUT + 2 + + ) + +79  + #SEL_EX + 4 + + ) + +82  + #FS_REQUIRES_DEV + 1 + + ) + +83  + #FS_BINARY_MOUNTDATA + 2 + + ) + +84  + #FS_REVAL_DOT + 16384 + + ) + +85  + #FS_ODD_RENAME + 32768 + + ) + +91  + #MS_RDONLY + 1 + + ) + +92  + #MS_NOSUID + 2 + + ) + +93  + #MS_NODEV + 4 + + ) + +94  + #MS_NOEXEC + 8 + + ) + +95  + #MS_SYNCHRONOUS + 16 + + ) + +96  + #MS_REMOUNT + 32 + + ) + +97  + #MS_MANDLOCK + 64 + + ) + +98  + #MS_DIRSYNC + 128 + + ) + +99  + #MS_NOATIME + 1024 + + ) + +100  + #MS_NODIRATIME + 2048 + + ) + +101  + #MS_BIND + 4096 + + ) + +102  + #MS_MOVE + 8192 + + ) + +103  + #MS_REC + 16384 + + ) + +104  + #MS_VERBOSE + 32768 + + ) + +105  + #MS_POSIXACL + (1<<16è + + ) + +106  + #MS_ACTIVE + (1<<30) + + ) + +107  + #MS_NOUSER + (1<<31) + + ) + +112  + #MS_RMT_MASK + ( +MS_RDONLY +| +MS_SYNCHRONOUS +| +MS_MANDLOCK +| +MS_NOATIME +|\ + +113 +MS_NODIRATIME +) + + ) + +118  + #MS_MGC_VAL + 0xC0ED0000 + + ) + +119  + #MS_MGC_MSK + 0xffff0000 + + ) + +123  + #S_SYNC + 1 + + ) + +124  + #S_NOATIME + 2 + + ) + +125  + #S_APPEND + 4 + + ) + +126  + #S_IMMUTABLE + 8 + + ) + +127  + #S_DEAD + 16 + + ) + +128  + #S_NOQUOTA + 32 + + ) + +129  + #S_DIRSYNC + 64 + + ) + +130  + #S_NOCMTIME + 128 + + ) + +131  + #S_SWAPFILE + 256 + + ) + +146  + #__IS_FLG +( +šode +, +æg +è((šode)-> +i_sb +-> +s_æags + & (æg)) + + ) + +148  + #IS_RDONLY +( +šode +è((šode)-> +i_sb +-> +s_æags + & +MS_RDONLY +) + + ) + +149  + #IS_SYNC +( +šode +è( + `__IS_FLG +(šode, +MS_SYNCHRONOUS +) || \ + +150 (( +šode +)-> +i_æags + & +S_SYNC +)) + + ) + +151  + #IS_DIRSYNC +( +šode +è( + `__IS_FLG +(šode, +MS_SYNCHRONOUS +| +MS_DIRSYNC +) || \ + +152 (( +šode +)-> +i_æags + & ( +S_SYNC +| +S_DIRSYNC +))) + + ) + +153  + #IS_MANDLOCK +( +šode +è + `__IS_FLG +(šode, +MS_MANDLOCK +) + + ) + +155  + #IS_NOQUOTA +( +šode +è((šode)-> +i_æags + & +S_NOQUOTA +) + + ) + +156  + #IS_APPEND +( +šode +è((šode)-> +i_æags + & +S_APPEND +) + + ) + +157  + #IS_IMMUTABLE +( +šode +è((šode)-> +i_æags + & +S_IMMUTABLE +) + + ) + +158  + #IS_NOATIME +( +šode +è( + `__IS_FLG +(šode, +MS_NOATIME +è|| ((šode)-> +i_æags + & +S_NOATIME +)) + + ) + +159  + #IS_NODIRATIME +( +šode +è + `__IS_FLG +(šode, +MS_NODIRATIME +) + + ) + +160  + #IS_POSIXACL +( +šode +è + `__IS_FLG +(šode, +MS_POSIXACL +) + + ) + +162  + #IS_DEADDIR +( +šode +è((šode)-> +i_æags + & +S_DEAD +) + + ) + +163  + #IS_NOCMTIME +( +šode +è((šode)-> +i_æags + & +S_NOCMTIME +) + + ) + +164  + #IS_SWAPFILE +( +šode +è((šode)-> +i_æags + & +S_SWAPFILE +) + + ) + +169  + #BLKROSET + + `_IO +(0x12,93è + + ) + +170  + #BLKROGET + + `_IO +(0x12,94è + + ) + +171  + #BLKRRPART + + `_IO +(0x12,95è + + ) + +172  + #BLKGETSIZE + + `_IO +(0x12,96è + + ) + +173  + #BLKFLSBUF + + `_IO +(0x12,97è + + ) + +174  + #BLKRASET + + `_IO +(0x12,98è + + ) + +175  + #BLKRAGET + + `_IO +(0x12,99è + + ) + +176  + #BLKFRASET + + `_IO +(0x12,100) + + ) + +177  + #BLKFRAGET + + `_IO +(0x12,101) + + ) + +178  + #BLKSECTSET + + `_IO +(0x12,102) + + ) + +179  + #BLKSECTGET + + `_IO +(0x12,103) + + ) + +180  + #BLKSSZGET + + `_IO +(0x12,104) + + ) + +182  + #BLKPG + + `_IO +(0x12,105) + + ) + +186  + #BLKELVGET + + `_IOR +(0x12,106, +size_t +) + + ) + +187  + #BLKELVSET + + `_IOW +(0x12,107, +size_t +) + + ) + +192  + #BLKBSZGET + + `_IOR +(0x12,112, +size_t +) + + ) + +193  + #BLKBSZSET + + `_IOW +(0x12,113, +size_t +) + + ) + +194  + #BLKGETSIZE64 + + `_IOR +(0x12,114, +size_t +è + + ) + +196  + #BMAP_IOCTL + 1 + + ) + +197  + #FIBMAP + + `_IO +(0x00,1è + + ) + +198  + #FIGETBSZ + + `_IO +(0x00,2è + + ) + + @/usr/include/linux/kernel.h + +1 #iâdeà +_LINUX_KERNEL_H + + +2  + #_LINUX_KERNEL_H + + + ) + +8  + #SI_LOAD_SHIFT + 16 + + ) + +9  + ssysšfo + { + +10  + mu±ime +; + +11  + mlßds +[3]; + +12  + mtÙ®¿m +; + +13  + m䓿m +; + +14  + msh¬ed¿m +; + +15  + mbufã¼am +; + +16  + mtÙ®sw­ +; + +17  + mä“sw­ +; + +18  + m´ocs +; + +19  + m·d +; + +20  + mtÙ®high +; + +21  + mä“high +; + +22  + mmem_un™ +; + +23  + m_f +[20-2*()-()]; + +26  +BUILD_BUG +(); + +27  + #BUILD_BUG_ON +( +cÚd™iÚ +èdØ{ ià(cÚd™iÚè + `BUILD_BUG +(); } 0) + + ) + +30 #ià +__GNUC__ + > 2 || +__GNUC_MINOR__ + >= 95 + +31  + #__FUNCTION__ + ( +__func__ +) + + ) + + @/usr/include/linux/nfs.h + +7 #iâdeà +_LINUX_NFS_H + + +8  + #_LINUX_NFS_H + + + ) + +10  + #NFS_PROGRAM + 100003 + + ) + +11  + #NFS_PORT + 2049 + + ) + +12  + #NFS_MAXDATA + 8192 + + ) + +13  + #NFS_MAXPATHLEN + 1024 + + ) + +14  + #NFS_MAXNAMLEN + 255 + + ) + +15  + #NFS_MAXGROUPS + 16 + + ) + +16  + #NFS_FHSIZE + 32 + + ) + +17  + #NFS_COOKIESIZE + 4 + + ) + +18  + #NFS_FIFO_DEV + (-1) + + ) + +19  + #NFSMODE_FMT + 0170000 + + ) + +20  + #NFSMODE_DIR + 0040000 + + ) + +21  + #NFSMODE_CHR + 0020000 + + ) + +22  + #NFSMODE_BLK + 0060000 + + ) + +23  + #NFSMODE_REG + 0100000 + + ) + +24  + #NFSMODE_LNK + 0120000 + + ) + +25  + #NFSMODE_SOCK + 0140000 + + ) + +26  + #NFSMODE_FIFO + 0010000 + + ) + +28  + #NFS_MNT_PROGRAM + 100005 + + ) + +29  + #NFS_MNT_PORT + 627 + + ) + +39 + enfs_¡© + { + +40 + mNFS_OK + = 0, + +41 + mNFSERR_PERM + = 1, + +42 + mNFSERR_NOENT + = 2, + +43 + mNFSERR_IO + = 5, + +44 + mNFSERR_NXIO + = 6, + +45 + mNFSERR_EAGAIN + = 11, + +46 + mNFSERR_ACCES + = 13, + +47 + mNFSERR_EXIST + = 17, + +48 + mNFSERR_XDEV + = 18, + +49 + mNFSERR_NODEV + = 19, + +50 + mNFSERR_NOTDIR + = 20, + +51 + mNFSERR_ISDIR + = 21, + +52 + mNFSERR_INVAL + = 22, + +53 + mNFSERR_FBIG + = 27, + +54 + mNFSERR_NOSPC + = 28, + +55 + mNFSERR_ROFS + = 30, + +56 + mNFSERR_MLINK + = 31, + +57 + mNFSERR_OPNOTSUPP + = 45, + +58 + mNFSERR_NAMETOOLONG + = 63, + +59 + mNFSERR_NOTEMPTY + = 66, + +60 + mNFSERR_DQUOT + = 69, + +61 + mNFSERR_STALE + = 70, + +62 + mNFSERR_REMOTE + = 71, + +63 + mNFSERR_WFLUSH + = 99, + +64 + mNFSERR_BADHANDLE + = 10001, + +65 + mNFSERR_NOT_SYNC + = 10002, + +66 + mNFSERR_BAD_COOKIE + = 10003, + +67 + mNFSERR_NOTSUPP + = 10004, + +68 + mNFSERR_TOOSMALL + = 10005, + +69 + mNFSERR_SERVERFAULT + = 10006, + +70 + mNFSERR_BADTYPE + = 10007, + +71 + mNFSERR_JUKEBOX + = 10008, + +72 + mNFSERR_SAME + = 10009, + +73 + mNFSERR_DENIED + = 10010, + +74 + mNFSERR_EXPIRED + = 10011, + +75 + mNFSERR_LOCKED + = 10012, + +76 + mNFSERR_GRACE + = 10013, + +77 + mNFSERR_FHEXPIRED + = 10014, + +78 + mNFSERR_SHARE_DENIED + = 10015, + +79 + mNFSERR_WRONGSEC + = 10016, + +80 + mNFSERR_CLID_INUSE + = 10017, + +81 + mNFSERR_RESOURCE + = 10018, + +82 + mNFSERR_MOVED + = 10019, + +83 + mNFSERR_NOFILEHANDLE + = 10020, + +84 + mNFSERR_MINOR_VERS_MISMATCH + = 10021, + +85 + mNFSERR_STALE_CLIENTID + = 10022, + +86 + mNFSERR_STALE_STATEID + = 10023, + +87 + mNFSERR_OLD_STATEID + = 10024, + +88 + mNFSERR_BAD_STATEID + = 10025, + +89 + mNFSERR_BAD_SEQID + = 10026, + +90 + mNFSERR_NOT_SAME + = 10027, + +91 + mNFSERR_LOCK_RANGE + = 10028, + +92 + mNFSERR_SYMLINK + = 10029, + +93 + mNFSERR_RESTOREFH + = 10030, + +94 + mNFSERR_LEASE_MOVED + = 10031, + +95 + mNFSERR_ATTRNOTSUPP + = 10032, + +96 + mNFSERR_NO_GRACE + = 10033, + +97 + mNFSERR_RECLAIM_BAD + = 10034, + +98 + mNFSERR_RECLAIM_CONFLICT + = 10035, + +99 + mNFSERR_BAD_XDR + = 10036, + +100 + mNFSERR_LOCKS_HELD + = 10037, + +101 + mNFSERR_OPENMODE + = 10038, + +102 + mNFSERR_BADOWNER + = 10039, + +103 + mNFSERR_BADCHAR + = 10040, + +104 + mNFSERR_BADNAME + = 10041, + +105 + mNFSERR_BAD_RANGE + = 10042, + +106 + mNFSERR_LOCK_NOTSUPP + = 10043, + +107 + mNFSERR_OP_ILLEGAL + = 10044, + +108 + mNFSERR_DEADLOCK + = 10045, + +109 + mNFSERR_FILE_OPEN + = 10046, + +110 + mNFSERR_ADMIN_REVOKED + = 10047, + +111 + mNFSERR_CB_PATH_DOWN + = 10048, + +112 + mNFSERR_REPLAY_ME + = 10049 + +117 + enfs_áy³ + { + +118 + mNFNON + = 0, + +119 + mNFREG + = 1, + +120 + mNFDIR + = 2, + +121 + mNFBLK + = 3, + +122 + mNFCHR + = 4, + +123 + mNFLNK + = 5, + +124 + mNFSOCK + = 6, + +125 + mNFBAD + = 7, + +126 + mNFFIFO + = 8 + + @/usr/include/linux/posix_types.h + +1 #iâdeà +_LINUX_POSIX_TYPES_H + + +2  + #_LINUX_POSIX_TYPES_H + + + ) + +4  + ~ + +21 #undeà +__NFDBITS + + +22  + #__NFDBITS + (8 * ()) + + ) + +24 #undeà +__FD_SETSIZE + + +25  + #__FD_SETSIZE + 1024 + + ) + +27 #undeà +__FDSET_LONGS + + +28  + #__FDSET_LONGS + ( +__FD_SETSIZE +/ +__NFDBITS +) + + ) + +30 #undeà +__FDELT + + +31  + #__FDELT +( +d +è((dè/ +__NFDBITS +) + + ) + +33 #undeà +__FDMASK + + +34  + #__FDMASK +( +d +è(1UL << ((dè% +__NFDBITS +)) + + ) + +37  + mfds_b™s + [ +__FDSET_LONGS +]; + +38 } + t__k”Ãl_fd_£t +; + +41 (* + t__k”Ãl_sighªdËr_t +)(); + +44  + t__k”Ãl_key_t +; + +45  + t__k”Ãl_mqd_t +; + +47  + ~ + + @/usr/include/sys/select.h + +22 #iâdeà +_SYS_SELECT_H + + +23  + #_SYS_SELECT_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +28  + ~ + +31  + ~ + +34  + ~ + +36 #iâdeà +__sig£t_t_defšed + + +37  + #__sig£t_t_defšed + + + ) + +38  +__sig£t_t + + tsig£t_t +; + +42  + #__Ãed_time_t + + + ) + +43  + #__Ãed_time¥ec + + + ) + +44  + ~ + +45  + #__Ãed_timev® + + + ) + +46  + ~ + +48 #iâdeà +__su£cÚds_t_defšed + + +49  +__su£cÚds_t + + tsu£cÚds_t +; + +50  + #__su£cÚds_t_defšed + + + ) + +55  + t__fd_mask +; + +58 #undeà +__NFDBITS + + +59 #undeà +__FDELT + + +60 #undeà +__FDMASK + + +62  + #__NFDBITS + (8 *  ( +__fd_mask +)) + + ) + +63  + #__FDELT +( +d +è((dè/ +__NFDBITS +) + + ) + +64  + #__FDMASK +( +d +è(( +__fd_mask +è1 << ((dè% +__NFDBITS +)) + + ) + +71 #ifdeà +__USE_XOPEN + + +72 +__fd_mask + + mfds_b™s +[ +__FD_SETSIZE + / +__NFDBITS +]; + +73  + #__FDS_BITS +( +£t +è((£t)-> +fds_b™s +) + + ) + +75 +__fd_mask + + m__fds_b™s +[ +__FD_SETSIZE + / +__NFDBITS +]; + +76  + #__FDS_BITS +( +£t +è((£t)-> +__fds_b™s +) + + ) + +78 } + tfd_£t +; + +81  + #FD_SETSIZE + +__FD_SETSIZE + + + ) + +83 #ifdeà +__USE_MISC + + +85  +__fd_mask + + tfd_mask +; + +88  + #NFDBITS + +__NFDBITS + + + ) + +93  + #FD_SET +( +fd +, +fd£ +è + `__FD_SET + (fd, fd£) + + ) + +94  + #FD_CLR +( +fd +, +fd£ +è + `__FD_CLR + (fd, fd£) + + ) + +95  + #FD_ISSET +( +fd +, +fd£ +è + `__FD_ISSET + (fd, fd£) + + ) + +96  + #FD_ZERO +( +fd£ +è + `__FD_ZERO + (fd£) + + ) + +99 +__BEGIN_DECLS + + +109  +£Ëù + ( +__nfds +, +fd_£t + * +__»¡riù + +__»adfds +, + +110 +fd_£t + * +__»¡riù + +__wr™efds +, + +111 +fd_£t + * +__»¡riù + +__exû±fds +, + +112  +timev® + * +__»¡riù + +__timeout +); + +114 #ifdeà +__USE_XOPEN2K + + +121  +p£Ëù + ( +__nfds +, +fd_£t + * +__»¡riù + +__»adfds +, + +122 +fd_£t + * +__»¡riù + +__wr™efds +, + +123 +fd_£t + * +__»¡riù + +__exû±fds +, + +124 cÚ¡  +time¥ec + * +__»¡riù + +__timeout +, + +125 cÚ¡ +__sig£t_t + * +__»¡riù + +__sigmask +); + +128 + g__END_DECLS + + + @/usr/include/sys/stat.h + +23 #iâdef +_SYS_STAT_H + + +24  + #_SYS_STAT_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +28  + ~ + +30 #ià +defšed + +__USE_XOPEN + || defšed +__USE_MISC + + +31 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K + + +32  + #__Ãed_time_t + + + ) + +34 #ifdeà +__USE_MISC + + +35  + #__Ãed_time¥ec + + + ) + +37  + ~ + +40 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K + + +43 #iâdeà +__dev_t_defšed + + +44  +__dev_t + + tdev_t +; + +45  + #__dev_t_defšed + + + ) + +48 #iâdeà +__gid_t_defšed + + +49  +__gid_t + + tgid_t +; + +50  + #__gid_t_defšed + + + ) + +53 #iâdeà +__šo_t_defšed + + +54 #iâdeà +__USE_FILE_OFFSET64 + + +55  +__šo_t + + tšo_t +; + +57  +__šo64_t + + tšo_t +; + +59  + #__šo_t_defšed + + + ) + +62 #iâdeà +__mode_t_defšed + + +63  +__mode_t + + tmode_t +; + +64  + #__mode_t_defšed + + + ) + +67 #iâdeà +__ƚk_t_defšed + + +68  +__ƚk_t + + tƚk_t +; + +69  + #__ƚk_t_defšed + + + ) + +72 #iâdeà +__off_t_defšed + + +73 #iâdeà +__USE_FILE_OFFSET64 + + +74  +__off_t + + toff_t +; + +76  +__off64_t + + toff_t +; + +78  + #__off_t_defšed + + + ) + +81 #iâdeà +__uid_t_defšed + + +82  +__uid_t + + tuid_t +; + +83  + #__uid_t_defšed + + + ) + +87 #ifdeà +__USE_UNIX98 + + +88 #iâdeà +__blkút_t_defšed + + +89 #iâdeà +__USE_FILE_OFFSET64 + + +90  +__blkút_t + + tblkút_t +; + +92  +__blkút64_t + + tblkút_t +; + +94  + #__blkút_t_defšed + + + ) + +97 #iâdeà +__blksize_t_defšed + + +98  +__blksize_t + + tblksize_t +; + +99  + #__blksize_t_defšed + + + ) + +103 + g__BEGIN_DECLS + + +105  + ~ + +107 #ià +defšed + +__USE_BSD + || defšed +__USE_MISC + || defšed +__USE_XOPEN + + +108  + #S_IFMT + +__S_IFMT + + + ) + +109  + #S_IFDIR + +__S_IFDIR + + + ) + +110  + #S_IFCHR + +__S_IFCHR + + + ) + +111  + #S_IFBLK + +__S_IFBLK + + + ) + +112  + #S_IFREG + +__S_IFREG + + + ) + +113 #ifdeà +__S_IFIFO + + +114  + #S_IFIFO + +__S_IFIFO + + + ) + +116 #ifdeà +__S_IFLNK + + +117  + #S_IFLNK + +__S_IFLNK + + + ) + +119 #ià( +defšed + +__USE_BSD + || defšed +__USE_MISC + || defšed +__USE_UNIX98 +) \ + +120 && +defšed + + g__S_IFSOCK + + +121  + #S_IFSOCK + +__S_IFSOCK + + + ) + +127  + #__S_ISTYPE +( +mode +, +mask +è(((modeè& +__S_IFMT +è=ð(mask)) + + ) + +129  + #S_ISDIR +( +mode +è + `__S_ISTYPE +((mode), +__S_IFDIR +) + + ) + +130  + #S_ISCHR +( +mode +è + `__S_ISTYPE +((mode), +__S_IFCHR +) + + ) + +131  + #S_ISBLK +( +mode +è + `__S_ISTYPE +((mode), +__S_IFBLK +) + + ) + +132  + #S_ISREG +( +mode +è + `__S_ISTYPE +((mode), +__S_IFREG +) + + ) + +133 #ifdeà +__S_IFIFO + + +134  + #S_ISFIFO +( +mode +è + `__S_ISTYPE +((mode), +__S_IFIFO +) + + ) + +136 #ifdeà +__S_IFLNK + + +137  + #S_ISLNK +( +mode +è + `__S_ISTYPE +((mode), +__S_IFLNK +) + + ) + +140 #ià +defšed + +__USE_BSD + && !defšed +__S_IFLNK + + +141  + #S_ISLNK +( +mode +è0 + + ) + +144 #ià( +defšed + +__USE_BSD + || defšed +__USE_UNIX98 +) \ + +145 && +defšed + + g__S_IFSOCK + + +146  + #S_ISSOCK +( +mode +è + `__S_ISTYPE +((mode), +__S_IFSOCK +) + + ) + +153 #ifdef +__USE_POSIX199309 + + +154  + #S_TYPEISMQ +( +buf +è + `__S_TYPEISMQ +(buf) + + ) + +155  + #S_TYPEISSEM +( +buf +è + `__S_TYPEISSEM +(buf) + + ) + +156  + #S_TYPEISSHM +( +buf +è + `__S_TYPEISSHM +(buf) + + ) + +162  + #S_ISUID + +__S_ISUID + + + ) + +163  + #S_ISGID + +__S_ISGID + + + ) + +165 #ià +defšed + +__USE_BSD + || defšed +__USE_MISC + || defšed +__USE_XOPEN + + +167  + #S_ISVTX + +__S_ISVTX + + + ) + +170  + #S_IRUSR + +__S_IREAD + + + ) + +171  + #S_IWUSR + +__S_IWRITE + + + ) + +172  + #S_IXUSR + +__S_IEXEC + + + ) + +174  + #S_IRWXU + ( +__S_IREAD +| +__S_IWRITE +| +__S_IEXEC +) + + ) + +176 #ià +defšed + +__USE_MISC + && defšed +__USE_BSD + + +177  + #S_IREAD + +S_IRUSR + + + ) + +178  + #S_IWRITE + +S_IWUSR + + + ) + +179  + #S_IEXEC + +S_IXUSR + + + ) + +182  + #S_IRGRP + ( +S_IRUSR + >> 3è + + ) + +183  + #S_IWGRP + ( +S_IWUSR + >> 3è + + ) + +184  + #S_IXGRP + ( +S_IXUSR + >> 3è + + ) + +186  + #S_IRWXG + ( +S_IRWXU + >> 3) + + ) + +188  + #S_IROTH + ( +S_IRGRP + >> 3è + + ) + +189  + #S_IWOTH + ( +S_IWGRP + >> 3è + + ) + +190  + #S_IXOTH + ( +S_IXGRP + >> 3è + + ) + +192  + #S_IRWXO + ( +S_IRWXG + >> 3) + + ) + +195 #ifdef +__USE_BSD + + +197  + #ACCESSPERMS + ( +S_IRWXU +| +S_IRWXG +| +S_IRWXO +è + + ) + +198  + #ALLPERMS + ( +S_ISUID +| +S_ISGID +| +S_ISVTX +| +S_IRWXU +| +S_IRWXG +| +S_IRWXO +) + + ) + +199  + #DEFFILEMODE + ( +S_IRUSR +| +S_IWUSR +| +S_IRGRP +| +S_IWGRP +| +S_IROTH +| +S_IWOTH +) + + ) + +201  + #S_BLKSIZE + 512 + + ) + +205 #iâdeà +__USE_FILE_OFFSET64 + + +207  + $¡© + ( +__cÚ¡ + * +__»¡riù + +__fže +, + +208  +¡© + * +__»¡riù + +__buf +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +212  + $f¡© + ( +__fd +,  +¡© + * +__buf +è +__THROW + + `__nÚnuÎ + ((2)); + +214 #ifdeà +__REDIRECT_NTH + + +215  + `__REDIRECT_NTH + ( +¡© +, ( +__cÚ¡ + * +__»¡riù + +__fže +, + +216  +¡© + * +__»¡riù + +__buf +), +¡©64 +) + +217 + `__nÚnuÎ + ((1, 2)); + +218  + `__REDIRECT_NTH + ( +f¡© +, ( +__fd +,  +¡© + * +__buf +), +f¡©64 +) + +219 + `__nÚnuÎ + ((2)); + +221  + #¡© + +¡©64 + + + ) + +222  + #f¡© + +f¡©64 + + + ) + +225 #ifdeà +__USE_LARGEFILE64 + + +226  + $¡©64 + ( +__cÚ¡ + * +__»¡riù + +__fže +, + +227  +¡©64 + * +__»¡riù + +__buf +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +228  + $f¡©64 + ( +__fd +,  +¡©64 + * +__buf +è +__THROW + + `__nÚnuÎ + ((2)); + +231 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +232 #iâdeà +__USE_FILE_OFFSET64 + + +235  + $l¡© + ( +__cÚ¡ + * +__»¡riù + +__fže +, + +236  +¡© + * +__»¡riù + +__buf +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +238 #ifdeà +__REDIRECT_NTH + + +239  + `__REDIRECT_NTH + ( +l¡© +, + +240 ( +__cÚ¡ + * +__»¡riù + +__fže +, + +241  +¡© + * +__»¡riù + +__buf +), +l¡©64 +) + +242 + `__nÚnuÎ + ((1, 2)); + +244  + #l¡© + +l¡©64 + + + ) + +247 #ifdeà +__USE_LARGEFILE64 + + +248  + $l¡©64 + ( +__cÚ¡ + * +__»¡riù + +__fže +, + +249  +¡©64 + * +__»¡riù + +__buf +) + +250 +__THROW + + `__nÚnuÎ + ((1, 2)); + +256  + $chmod + ( +__cÚ¡ + * +__fže +, +__mode_t + +__mode +) + +257 +__THROW + + `__nÚnuÎ + ((1)); + +259 #ifdeà +__USE_BSD + + +263  + $lchmod + ( +__cÚ¡ + * +__fže +, +__mode_t + +__mode +) + +264 +__THROW + + `__nÚnuÎ + ((1)); + +268 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +269  + $fchmod + ( +__fd +, +__mode_t + +__mode +è +__THROW +; + +275 +__mode_t + + $umask + ( +__mode_t + +__mask +è +__THROW +; + +277 #ifdef +__USE_GNU + + +280 +__mode_t + + $g‘umask + (è +__THROW +; + +284  + $mkdœ + ( +__cÚ¡ + * +__·th +, +__mode_t + +__mode +) + +285 +__THROW + + `__nÚnuÎ + ((1)); + +290 #ià +defšed + +__USE_MISC + || defšed +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +291  + $mknod + ( +__cÚ¡ + * +__·th +, +__mode_t + +__mode +, +__dev_t + +__dev +) + +292 +__THROW + + `__nÚnuÎ + ((1)); + +297  + $mkfifo + ( +__cÚ¡ + * +__·th +, +__mode_t + +__mode +) + +298 +__THROW + + `__nÚnuÎ + ((1)); + +315 #iâdeà +_STAT_VER + + +316  + #_STAT_VER + 0 + + ) + +318 #iâdeà +_MKNOD_VER + + +319  + #_MKNOD_VER + 0 + + ) + +323 #iâdeà +__USE_FILE_OFFSET64 + + +324  + $__fx¡© + ( +__v” +,  +__fždes +,  +¡© + * +__¡©_buf +) + +325 +__THROW + + `__nÚnuÎ + ((3)); + +326  + $__x¡© + ( +__v” +, +__cÚ¡ + * +__fž’ame +, + +327  +¡© + * +__¡©_buf +è +__THROW + + `__nÚnuÎ + ((2, 3)); + +328  + $__lx¡© + ( +__v” +, +__cÚ¡ + * +__fž’ame +, + +329  +¡© + * +__¡©_buf +è +__THROW + + `__nÚnuÎ + ((2, 3)); + +331 #ifdeà +__REDIRECT_NTH + + +332  + `__REDIRECT_NTH + ( +__fx¡© +, ( +__v” +,  +__fždes +, + +333  +¡© + * +__¡©_buf +), +__fx¡©64 +) + +334 + `__nÚnuÎ + ((3)); + +335  + `__REDIRECT_NTH + ( +__x¡© +, ( +__v” +, +__cÚ¡ + * +__fž’ame +, + +336  +¡© + * +__¡©_buf +), +__x¡©64 +) + +337 + `__nÚnuÎ + ((2, 3)); + +338  + `__REDIRECT_NTH + ( +__lx¡© +, ( +__v” +, +__cÚ¡ + * +__fž’ame +, + +339  +¡© + * +__¡©_buf +), +__lx¡©64 +) + +340 + `__nÚnuÎ + ((2, 3)); + +343  + #__fx¡© + +__fx¡©64 + + + ) + +344  + #__x¡© + +__x¡©64 + + + ) + +345  + #__lx¡© + +__lx¡©64 + + + ) + +349 #ifdeà +__USE_LARGEFILE64 + + +350  + $__fx¡©64 + ( +__v” +,  +__fždes +,  +¡©64 + * +__¡©_buf +) + +351 +__THROW + + `__nÚnuÎ + ((3)); + +352  + $__x¡©64 + ( +__v” +, +__cÚ¡ + * +__fž’ame +, + +353  +¡©64 + * +__¡©_buf +è +__THROW + + `__nÚnuÎ + ((2, 3)); + +354  + $__lx¡©64 + ( +__v” +, +__cÚ¡ + * +__fž’ame +, + +355  +¡©64 + * +__¡©_buf +è +__THROW + + `__nÚnuÎ + ((2, 3)); + +357  + $__xmknod + ( +__v” +, +__cÚ¡ + * +__·th +, +__mode_t + +__mode +, + +358 +__dev_t + * +__dev +è +__THROW + + `__nÚnuÎ + ((2, 4)); + +360 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +363 +__šlše__ +  + +364 + `__NTH + ( + $¡© + ( +__cÚ¡ + * +__·th +,  +¡© + * +__¡©buf +)) + +366  + `__x¡© + ( +_STAT_VER +, +__·th +, +__¡©buf +); + +367 + } +} + +369 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +370 +__šlše__ +  + +371 +__NTH + ( + $l¡© + ( +__cÚ¡ + * +__·th +,  +¡© + * +__¡©buf +)) + +373  + `__lx¡© + ( +_STAT_VER +, +__·th +, +__¡©buf +); + +374 + } +} + +377 +__šlše__ +  + +378 +__NTH + ( + $f¡© + ( +__fd +,  +¡© + * +__¡©buf +)) + +380  + `__fx¡© + ( +_STAT_VER +, +__fd +, +__¡©buf +); + +381 + } +} + +383 #ià +defšed + +__USE_MISC + || defšed +__USE_BSD + + +384 +__šlše__ +  + +385 +__NTH + ( + $mknod + ( +__cÚ¡ + * +__·th +, +__mode_t + +__mode +, +__dev_t + +__dev +)) + +387  + `__xmknod + ( +_MKNOD_VER +, +__·th +, +__mode +, & +__dev +); + +388 + } +} + +391 #ià +defšed + +__USE_LARGEFILE64 + \ + +392 && (! +defšed + +__USE_FILE_OFFSET64 + \ + +393 || ( +defšed + +__REDIRECT_NTH + && defšed +__OPTIMIZE__ +)) + +394 +__šlše__ +  + +395 +__NTH + ( + $¡©64 + ( +__cÚ¡ + * +__·th +,  +¡©64 + * +__¡©buf +)) + +397  + `__x¡©64 + ( +_STAT_VER +, +__·th +, +__¡©buf +); + +398 + } +} + +400 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +401 +__šlše__ +  + +402 +__NTH + ( + $l¡©64 + ( +__cÚ¡ + * +__·th +,  +¡©64 + * +__¡©buf +)) + +404  + `__lx¡©64 + ( +_STAT_VER +, +__·th +, +__¡©buf +); + +405 + } +} + +408 +__šlše__ +  + +409 +__NTH + ( + $f¡©64 + ( +__fd +,  +¡©64 + * +__¡©buf +)) + +411  + `__fx¡©64 + ( +_STAT_VER +, +__fd +, +__¡©buf +); + +412 + } +} + +417 +__END_DECLS + + + @/usr/include/sys/sysmacros.h + +20 #iâdeà +_SYS_SYSMACROS_H + + +21  + #_SYS_SYSMACROS_H + 1 + + ) + +23  + ~<ã©u»s.h +> + +28 #ifdeà +__GLIBC_HAVE_LONG_LONG + + +29 +__ex‹nsiÚ__ + + +30 +__šlše +  + $gnu_dev_majÜ + ( +__dev +) + +31 +__THROW +; + +32 +__ex‹nsiÚ__ + + +33 +__šlše +  + $gnu_dev_mšÜ + ( +__dev +) + +34 +__THROW +; + +35 +__ex‹nsiÚ__ + + +36 +__šlše +  + $gnu_dev_makedev + ( +__majÜ +, + +37  +__mšÜ +) + +38 +__THROW +; + +40 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +41 +__ex‹nsiÚ__ + +__šlše +  + +42 + `__NTH + ( + $gnu_dev_majÜ + ( +__dev +)) + +44  (( +__dev + >> 8) & 0xfff) | (() (__dev >> 32) & ~0xfff); + +45 + } +} + +47 +__ex‹nsiÚ__ + +__šlše +  + +48 +__NTH + ( + $gnu_dev_mšÜ + ( +__dev +)) + +50  ( +__dev + & 0xff) | (() (__dev >> 12) & ~0xff); + +51 + } +} + +53 +__ex‹nsiÚ__ + +__šlše +  + +54 +__NTH + ( + $gnu_dev_makedev + ( +__majÜ +,  +__mšÜ +)) + +56  (( +__mšÜ + & 0xffè| (( +__majÜ + & 0xfff) << 8) + +57 | (((è( +__mšÜ + & ~0xff)) << 12) + +58 | (((è( +__majÜ + & ~0xfff)) << 32)); + +59 + } +} + +64  + #majÜ +( +dev +è + `gnu_dev_majÜ + (dev) + + ) + +65  + #mšÜ +( +dev +è + `gnu_dev_mšÜ + (dev) + + ) + +66  + #makedev +( +maj +, +mš +è + `gnu_dev_makedev + (maj, mš) + + ) + + @/usr/include/sys/wait.h + +23 #iâdef +_SYS_WAIT_H + + +24  + #_SYS_WAIT_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +28 + g__BEGIN_DECLS + + +30  + ~ + +31  + ~ + +34 #ià! +defšed + +_STDLIB_H + || !defšed +__USE_XOPEN + + +37  + ~ + +39 #ifdef +__USE_BSD + + +44 #ià +defšed + +__GNUC__ + && !defšed +__ýlu¥lus + + +45  + #__WAIT_INT +( +¡©us +) \ + +46 ( + `__ex‹nsiÚ__ + ({ uniÚ { + `__ty³of +( +¡©us +è +__š +;  +__i +; } +__u +; \ + +47 +__u +. +__š + = ( +¡©us +); __u. +__i +; })) + + ) + +49  + #__WAIT_INT +( +¡©us +è(*(*è&(¡©us)) + + ) + +57 #ià! +defšed + +__GNUC__ + || __GNUC__ < 2 || defšed +__ýlu¥lus + + +58  + #__WAIT_STATUS + * + + ) + +59  + #__WAIT_STATUS_DEFN + * + + ) + +64  +wa™ + * + m__u±r +; + +65 * + m__Œ +; + +66 } + t__WAIT_STATUS + + t__©Œibu‹__ + (( + t__Œª¥¬’t_uniÚ__ +)); + +67  + #__WAIT_STATUS_DEFN + * + + ) + +72  + #__WAIT_INT +( +¡©us +è(¡©us) + + ) + +73  + #__WAIT_STATUS + * + + ) + +74  + #__WAIT_STATUS_DEFN + * + + ) + +79  + ~ + +81  + #WEXITSTATUS +( +¡©us +è + `__WEXITSTATUS +( + `__WAIT_INT +(¡©us)) + + ) + +82  + #WTERMSIG +( +¡©us +è + `__WTERMSIG +( + `__WAIT_INT +(¡©us)) + + ) + +83  + #WSTOPSIG +( +¡©us +è + `__WSTOPSIG +( + `__WAIT_INT +(¡©us)) + + ) + +84  + #WIFEXITED +( +¡©us +è + `__WIFEXITED +( + `__WAIT_INT +(¡©us)) + + ) + +85  + #WIFSIGNALED +( +¡©us +è + `__WIFSIGNALED +( + `__WAIT_INT +(¡©us)) + + ) + +86  + #WIFSTOPPED +( +¡©us +è + `__WIFSTOPPED +( + `__WAIT_INT +(¡©us)) + + ) + +87 #ifdeà +__WIFCONTINUED + + +88  + #WIFCONTINUED +( +¡©us +è + `__WIFCONTINUED +( + `__WAIT_INT +(¡©us)) + + ) + +92 #ifdef +__USE_BSD + + +93  + #WCOREFLAG + +__WCOREFLAG + + + ) + +94  + #WCOREDUMP +( +¡©us +è + `__WCOREDUMP +( + `__WAIT_INT +(¡©us)) + + ) + +95  + #W_EXITCODE +( +»t +, +sig +è + `__W_EXITCODE +ԑ, sig) + + ) + +96  + #W_STOPCODE +( +sig +è + `__W_STOPCODE +(sig) + + ) + +100 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN + + +103 + mP_ALL +, + +104 + mP_PID +, + +105 + mP_PGID + + +106 } + tidty³_t +; + +115 +__pid_t + +wa™ + ( +__WAIT_STATUS + +__¡©_loc +); + +117 #ifdef +__USE_BSD + + +119  + #WAIT_ANY + (-1è + + ) + +120  + #WAIT_MYPGRP + 0 + + ) + +138 +__pid_t + +wa™pid + (__pid_ˆ +__pid +, * +__¡©_loc +,  +__ÝtiÚs +); + +140 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN + + +141  + #__Ãed_sigšfo_t + + + ) + +142  + ~ + +154  +wa™id + ( +idty³_t + +__idty³ +, +__id_t + +__id +, +sigšfo_t + * +__šfÝ +, + +155  +__ÝtiÚs +); + +158 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +161  + gru§ge +; + +168 +__pid_t + + $wa™3 + ( +__WAIT_STATUS + +__¡©_loc +,  +__ÝtiÚs +, + +169  +ru§ge + * +__u§ge +è +__THROW +; + +172 #ifdeà +__USE_BSD + + +175  +ru§ge +; + +178 +__pid_t + + $wa™4 + ( +__pid_t + +__pid +, +__WAIT_STATUS + +__¡©_loc +,  +__ÝtiÚs +, + +179  +ru§ge + * +__u§ge +è +__THROW +; + +183 +__END_DECLS + + + @/usr/include/time.h + +23 #iâdef +_TIME_H + + +25 #ià(! +defšed + +__Ãed_time_t + && !defšed +__Ãed_þock_t + && \ + +26 ! +defšed + + g__Ãed_time¥ec +) + +27  + #_TIME_H + 1 + + ) + +28  + ~<ã©u»s.h +> + +30 + g__BEGIN_DECLS + + +34 #ifdef +_TIME_H + + +36  + #__Ãed_size_t + + + ) + +37  + #__Ãed_NULL + + + ) + +38  + ~<¡ddef.h +> + +42  + ~ + +45 #ià! +defšed + +__STRICT_ANSI__ + && !defšed +__USE_XOPEN2K + + +46 #iâdeà +CLK_TCK + + +47  + #CLK_TCK + +CLOCKS_PER_SEC + + + ) + +53 #ià! +defšed + +__þock_t_defšed + && (defšed +_TIME_H + || defšed +__Ãed_þock_t +) + +54  + #__þock_t_defšed + 1 + + ) + +56  + ~ + +58 +__BEGIN_NAMESPACE_STD + + +60  +__þock_t + + tþock_t +; + +61 + g__END_NAMESPACE_STD + + +62 #ià +defšed + +__USE_XOPEN + || defšed +__USE_POSIX + || defšed +__USE_MISC + + +63 + $__USING_NAMESPACE_STD +( +þock_t +) + +67 #undeà +__Ãed_þock_t + + +69 #ià! +defšed + +__time_t_defšed + && (defšed +_TIME_H + || defšed +__Ãed_time_t +) + +70  + #__time_t_defšed + 1 + + ) + +72  + ~ + +74 +__BEGIN_NAMESPACE_STD + + +76  +__time_t + + ttime_t +; + +77 +__END_NAMESPACE_STD + + +78 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + || defšed +__USE_SVID + + +79 + $__USING_NAMESPACE_STD +( +time_t +) + +83 #undeà +__Ãed_time_t + + +85 #ià! +defšed + +__þockid_t_defšed + && \ + +86 (( +defšed + +_TIME_H + && defšed +__USE_POSIX199309 +è|| defšed +__Ãed_þockid_t +) + +87  + #__þockid_t_defšed + 1 + + ) + +89  + ~ + +92  +__þockid_t + + tþockid_t +; + +95 #undeà +__þockid_time_t + + +97 #ià! +defšed + +__tim”_t_defšed + && \ + +98 (( +defšed + +_TIME_H + && defšed +__USE_POSIX199309 +è|| defšed +__Ãed_tim”_t +) + +99  + #__tim”_t_defšed + 1 + + ) + +101  + ~ + +104  +__tim”_t + + ttim”_t +; + +107 #undeà +__Ãed_tim”_t + + +110 #ià! +defšed + +__time¥ec_defšed + && \ + +111 (( +defšed + +_TIME_H + && \ + +112 ( +defšed + +__USE_POSIX199309 + || defšed +__USE_MISC +)) || \ + +113 +defšed + +__Ãed_time¥ec +) + +114  + #__time¥ec_defšed + 1 + + ) + +118  + stime¥ec + + +120 +__time_t + +tv_£c +; + +121  +tv_n£c +; + +125 #undeà +__Ãed_time¥ec + + +128 #ifdef +_TIME_H + + +129 +__BEGIN_NAMESPACE_STD + + +131  + stm + + +133  +tm_£c +; + +134  +tm_mš +; + +135  +tm_hour +; + +136  +tm_mday +; + +137  +tm_mÚ +; + +138  +tm_y—r +; + +139  +tm_wday +; + +140  +tm_yday +; + +141  +tm_isd¡ +; + +143 #ifdef +__USE_BSD + + +144  +tm_gmtoff +; + +145 +__cÚ¡ + * +tm_zÚe +; + +147  +__tm_gmtoff +; + +148 +__cÚ¡ + * +__tm_zÚe +; + +151 +__END_NAMESPACE_STD + + +152 #ià +defšed + +__USE_XOPEN + || defšed +__USE_POSIX + || defšed +__USE_MISC + + +153 + $__USING_NAMESPACE_STD +( +tm +) + +157 #ifdeà +__USE_POSIX199309 + + +159  + s™im”¥ec + + +161  +time¥ec + +™_š‹rv® +; + +162  +time¥ec + +™_v®ue +; + +166  +sigev’t +; + +170 #ifdeà +__USE_XOPEN2K + + +171 #iâdeà +__pid_t_defšed + + +172  +__pid_t + + tpid_t +; + +173  + #__pid_t_defšed + + + ) + +178 +__BEGIN_NAMESPACE_STD + + +181 +þock_t + + $þock + (è +__THROW +; + +184 +time_t + + $time + ( +time_t + * +__tim” +è +__THROW +; + +187  + $difáime + ( +time_t + +__time1 +,ime_ˆ +__time0 +) + +188 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +191 +time_t + + $mktime + ( +tm + * +__ +è +__THROW +; + +197 +size_t + + $¡ráime + (* +__»¡riù + +__s +, +size_t + +__maxsize +, + +198 +__cÚ¡ + * +__»¡riù + +__fÜm© +, + +199 +__cÚ¡ +  +tm + * +__»¡riù + +__ +è +__THROW +; + +200 +__END_NAMESPACE_STD + + +202 #ifdeà +__USE_XOPEN + + +205 * + $¡½time + ( +__cÚ¡ + * +__»¡riù + +__s +, + +206 +__cÚ¡ + * +__»¡riù + +__fmt +,  +tm + * +__ +) + +207 +__THROW +; + +210 #ifdeà +__USE_GNU + + +213  + ~ + +215 +size_t + + $¡ráime_l + (* +__»¡riù + +__s +, +size_t + +__maxsize +, + +216 +__cÚ¡ + * +__»¡riù + +__fÜm© +, + +217 +__cÚ¡ +  +tm + * +__»¡riù + +__ +, + +218 +__loÿË_t + +__loc +è +__THROW +; + +220 * + $¡½time_l + ( +__cÚ¡ + * +__»¡riù + +__s +, + +221 +__cÚ¡ + * +__»¡riù + +__fmt +,  +tm + * +__ +, + +222 +__loÿË_t + +__loc +è +__THROW +; + +226 +__BEGIN_NAMESPACE_STD + + +229  +tm + * + $gmtime + ( +__cÚ¡ + +time_t + * +__tim” +è +__THROW +; + +233  +tm + * + $loÿÉime + ( +__cÚ¡ + +time_t + * +__tim” +è +__THROW +; + +234 +__END_NAMESPACE_STD + + +236 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +239  +tm + * + $gmtime_r + ( +__cÚ¡ + +time_t + * +__»¡riù + +__tim” +, + +240  +tm + * +__»¡riù + +__ +è +__THROW +; + +244  +tm + * + $loÿÉime_r + ( +__cÚ¡ + +time_t + * +__»¡riù + +__tim” +, + +245  +tm + * +__»¡riù + +__ +è +__THROW +; + +248 +__BEGIN_NAMESPACE_STD + + +251 * + $asùime + ( +__cÚ¡ +  +tm + * +__ +è +__THROW +; + +254 * + $ùime + ( +__cÚ¡ + +time_t + * +__tim” +è +__THROW +; + +255 +__END_NAMESPACE_STD + + +257 #ià +defšed + +__USE_POSIX + || defšed +__USE_MISC + + +262 * + $asùime_r + ( +__cÚ¡ +  +tm + * +__»¡riù + +__ +, + +263 * +__»¡riù + +__buf +è +__THROW +; + +266 * + $ùime_r + ( +__cÚ¡ + +time_t + * +__»¡riù + +__tim” +, + +267 * +__»¡riù + +__buf +è +__THROW +; + +272 * +__tzÇme +[2]; + +273  +__daylight +; + +274  +__timezÚe +; + +277 #ifdef +__USE_POSIX + + +279 * +tzÇme +[2]; + +283  + $tz£t + (è +__THROW +; + +286 #ià +defšed + +__USE_SVID + || defšed +__USE_XOPEN + + +287  +daylight +; + +288  +timezÚe +; + +291 #ifdeà +__USE_SVID + + +294  + $¡ime + ( +__cÚ¡ + +time_t + * +__wh’ +è +__THROW +; + +300  + #__i¦—p +( +y—r +) \ + +301 (( +y—r +è% 4 =ð0 && ((y—rè% 100 !ð0 || (y—rè% 400 =ð0)) + + ) + +304 #ifdeà +__USE_MISC + + +309 +time_t + + $timegm + ( +tm + * +__ +è +__THROW +; + +312 +time_t + + $tim–oÿl + ( +tm + * +__ +è +__THROW +; + +315  + $dysize + ( +__y—r +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +319 #ifdeà +__USE_POSIX199309 + + +324  + `Çno¦“p + ( +__cÚ¡ +  +time¥ec + * +__»que¡ed_time +, + +325  +time¥ec + * +__»maššg +); + +329  + $þock_g‘»s + ( +þockid_t + +__þock_id +,  +time¥ec + * +__»s +è +__THROW +; + +332  + $þock_g‘time + ( +þockid_t + +__þock_id +,  +time¥ec + * +__ +è +__THROW +; + +335  + $þock_£‰ime + ( +þockid_t + +__þock_id +, +__cÚ¡ +  +time¥ec + * +__ +) + +336 +__THROW +; + +338 #ifdeà +__USE_XOPEN2K + + +343  + `þock_Çno¦“p + ( +þockid_t + +__þock_id +,  +__æags +, + +344 +__cÚ¡ +  +time¥ec + * +__»q +, + +345  +time¥ec + * +__»m +); + +348  + $þock_g‘ýuþockid + ( +pid_t + +__pid +, +þockid_t + * +__þock_id +è +__THROW +; + +353  + $tim”_ü—‹ + ( +þockid_t + +__þock_id +, + +354  +sigev’t + * +__»¡riù + +__evp +, + +355 +tim”_t + * +__»¡riù + +__tim”id +è +__THROW +; + +358  + $tim”_d–‘e + ( +tim”_t + +__tim”id +è +__THROW +; + +361  + $tim”_£‰ime + ( +tim”_t + +__tim”id +,  +__æags +, + +362 +__cÚ¡ +  +™im”¥ec + * +__»¡riù + +__v®ue +, + +363  +™im”¥ec + * +__»¡riù + +__ov®ue +è +__THROW +; + +366  + $tim”_g‘time + ( +tim”_t + +__tim”id +,  +™im”¥ec + * +__v®ue +) + +367 +__THROW +; + +370  + $tim”_g‘ov”run + ( +tim”_t + +__tim”id +è +__THROW +; + +374 #ifdeà +__USE_XOPEN_EXTENDED + + +386  +g‘d©e_”r +; + +395  +tm + * + `g‘d©e + ( +__cÚ¡ + * +__¡ršg +); + +398 #ifdeà +__USE_GNU + + +409  + `g‘d©e_r + ( +__cÚ¡ + * +__»¡riù + +__¡ršg +, + +410  +tm + * +__»¡riù + +__»sbuå +); + +413 +__END_DECLS + + + @/usr/include/xlocale.h + +21 #iâdeà +_XLOCALE_H + + +22  + #_XLOCALE_H + 1 + + ) + +28  + s__loÿË_¡ruù + + +31  +loÿË_d©a + * + m__loÿËs +[13]; + +34 cÚ¡ * + m__ùy³_b +; + +35 cÚ¡ * + m__ùy³_tÞow” +; + +36 cÚ¡ * + m__ùy³_touµ” +; + +39 cÚ¡ * + m__Çmes +[13]; + +40 } * + t__loÿË_t +; + + @/usr/include/_G_config.h + +4 #iâdeà +_G_cÚfig_h + + +5  + #_G_cÚfig_h + 1 + + ) + +9  + ~ + +10  + #__Ãed_size_t + + + ) + +11  + #__Ãed_wch¬_t + + + ) + +12  + #__Ãed_wšt_t + + + ) + +13  + #__Ãed_NULL + + + ) + +14  + ~<¡ddef.h +> + +15 #iâdeà +_WINT_T + + +20  + #_WINT_T + + + ) + +21  + twšt_t +; + +23  + #__Ãed_mb¡©e_t + + + ) + +24  + ~ + +25  + #_G_size_t + +size_t + + + ) + +28 +__off_t + + m__pos +; + +29 +__mb¡©e_t + + m__¡©e +; + +30 } + t_G_åos_t +; + +33 +__off64_t + + m__pos +; + +34 +__mb¡©e_t + + m__¡©e +; + +35 } + t_G_åos64_t +; + +36  + #_G_ssize_t + +__ssize_t + + + ) + +37  + #_G_off_t + +__off_t + + + ) + +38  + #_G_off64_t + +__off64_t + + + ) + +39  + #_G_pid_t + +__pid_t + + + ) + +40  + #_G_uid_t + +__uid_t + + + ) + +41  + #_G_wch¬_t + +wch¬_t + + + ) + +42  + #_G_wšt_t + +wšt_t + + + ) + +43  + #_G_¡©64 + +¡©64 + + + ) + +44  + ~ + +47  +__gcÚv_šfo + + m__cd +; + +50  +__gcÚv_šfo + + m__cd +; + +51  +__gcÚv_¡•_d©a + + m__d©a +; + +52 } + m__combšed +; + +53 } + t_G_icÚv_t +; + +55  + t_G_št16_t + + t__©Œibu‹__ + (( + t__mode__ + ( + t__HI__ +))); + +56  + t_G_št32_t + + t__©Œibu‹__ + (( + t__mode__ + ( + t__SI__ +))); + +57  + t_G_ušt16_t + + t__©Œibu‹__ + (( + t__mode__ + ( + t__HI__ +))); + +58  + t_G_ušt32_t + + t__©Œibu‹__ + (( + t__mode__ + ( + t__SI__ +))); + +60  + #_G_HAVE_BOOL + 1 + + ) + +64  + #_G_HAVE_ATEXIT + 1 + + ) + +65  + #_G_HAVE_SYS_CDEFS + 1 + + ) + +66  + #_G_HAVE_SYS_WAIT + 1 + + ) + +67  + #_G_NEED_STDARG_H + 1 + + ) + +68  + #_G_va_li¡ + +__gnuc_va_li¡ + + + ) + +70  + #_G_HAVE_PRINTF_FP + 1 + + ) + +71  + #_G_HAVE_MMAP + 1 + + ) + +72  + #_G_HAVE_MREMAP + 1 + + ) + +73  + #_G_HAVE_LONG_DOUBLE_IO + 1 + + ) + +74  + #_G_HAVE_IO_FILE_OPEN + 1 + + ) + +75  + #_G_HAVE_IO_GETLINE_INFO + 1 + + ) + +77  + #_G_IO_IO_FILE_VERSION + 0x20001 + + ) + +79  + #_G_OPEN64 + +__ݒ64 + + + ) + +80  + #_G_LSEEK64 + +__l£ek64 + + + ) + +81  + #_G_MMAP64 + +__mm­64 + + + ) + +82  + #_G_FSTAT64 +( +fd +, +buf +è + `__fx¡©64 + ( +_STAT_VER +, fd, buf) + + ) + +85  + #_G_HAVE_ST_BLKSIZE + + `defšed + ( +_STATBUF_ST_BLKSIZE +) + + ) + +87  + #_G_BUFSIZ + 8192 + + ) + +90  + #_G_NAMES_HAVE_UNDERSCORE + 0 + + ) + +91  + #_G_VTABLE_LABEL_HAS_LENGTH + 1 + + ) + +92  + #_G_USING_THUNKS + 1 + + ) + +93  + #_G_VTABLE_LABEL_PREFIX + "__vt_" + + ) + +94  + #_G_VTABLE_LABEL_PREFIX_ID + +__vt_ + + + ) + +97 #ià +defšed + +__ýlu¥lus + || defšed +__STDC__ + + +98  + #_G_ARGS +( +ARGLIST +è + ) +ARGLIST + +100  + #_G_ARGS +( +ARGLIST +è() + + ) + + @/usr/include/asm-i386/cache.h + +4 #iâdeà +__ARCH_I386_CACHE_H + + +5  + #__ARCH_I386_CACHE_H + + + ) + +9  + #L1_CACHE_SHIFT + ( +CONFIG_X86_L1_CACHE_SHIFT +) + + ) + +10  + #L1_CACHE_BYTES + (1 << +L1_CACHE_SHIFT +) + + ) + +12  + #L1_CACHE_SHIFT_MAX + 7 + + ) + + @/usr/include/asm-i386/fcntl.h + +1 #iâdeà +_I386_FCNTL_H + + +2  + #_I386_FCNTL_H + + + ) + +6  + #O_ACCMODE + 0003 + + ) + +7  + #O_RDONLY + 00 + + ) + +8  + #O_WRONLY + 01 + + ) + +9  + #O_RDWR + 02 + + ) + +10  + #O_CREAT + 0100 + + ) + +11  + #O_EXCL + 0200 + + ) + +12  + #O_NOCTTY + 0400 + + ) + +13  + #O_TRUNC + 01000 + + ) + +14  + #O_APPEND + 02000 + + ) + +15  + #O_NONBLOCK + 04000 + + ) + +16  + #O_NDELAY + +O_NONBLOCK + + + ) + +17  + #O_SYNC + 010000 + + ) + +18  + #FASYNC + 020000 + + ) + +19  + #O_DIRECT + 040000 + + ) + +20  + #O_LARGEFILE + 0100000 + + ) + +21  + #O_DIRECTORY + 0200000 + + ) + +22  + #O_NOFOLLOW + 0400000 + + ) + +23  + #O_NOATIME + 01000000 + + ) + +25  + #F_DUPFD + 0 + + ) + +26  + #F_GETFD + 1 + + ) + +27  + #F_SETFD + 2 + + ) + +28  + #F_GETFL + 3 + + ) + +29  + #F_SETFL + 4 + + ) + +30  + #F_GETLK + 5 + + ) + +31  + #F_SETLK + 6 + + ) + +32  + #F_SETLKW + 7 + + ) + +34  + #F_SETOWN + 8 + + ) + +35  + #F_GETOWN + 9 + + ) + +36  + #F_SETSIG + 10 + + ) + +37  + #F_GETSIG + 11 + + ) + +39  + #F_GETLK64 + 12 + + ) + +40  + #F_SETLK64 + 13 + + ) + +41  + #F_SETLKW64 + 14 + + ) + +44  + #FD_CLOEXEC + 1 + + ) + +47  + #F_RDLCK + 0 + + ) + +48  + #F_WRLCK + 1 + + ) + +49  + #F_UNLCK + 2 + + ) + +52  + #F_EXLCK + 4 + + ) + +53  + #F_SHLCK + 8 + + ) + +56  + #F_INPROGRESS + 16 + + ) + +59  + #LOCK_SH + 1 + + ) + +60  + #LOCK_EX + 2 + + ) + +61  + #LOCK_NB + 4 + + ) + +63  + #LOCK_UN + 8 + + ) + +65  + #LOCK_MAND + 32 + + ) + +66  + #LOCK_READ + 64 + + ) + +67  + #LOCK_WRITE + 128 + + ) + +68  + #LOCK_RW + 192 + + ) + +70  + sæock + { + +71  + ml_ty³ +; + +72  + ml_wh’û +; + +73 +off_t + + ml_¡¬t +; + +74 +off_t + + ml_Ën +; + +75 +pid_t + + ml_pid +; + +78  + sæock64 + { + +79  + ml_ty³ +; + +80  + ml_wh’û +; + +81 +loff_t + + ml_¡¬t +; + +82 +loff_t + + ml_Ën +; + +83 +pid_t + + ml_pid +; + +86  + #F_LINUX_SPECIFIC_BASE + 1024 + + ) + + @/usr/include/asm-i386/ioctl.h + +6 #iâdeà +_ASMI386_IOCTL_H + + +7  + #_ASMI386_IOCTL_H + + + ) + +27  + #_IOC_NRBITS + 8 + + ) + +28  + #_IOC_TYPEBITS + 8 + + ) + +29  + #_IOC_SIZEBITS + 14 + + ) + +30  + #_IOC_DIRBITS + 2 + + ) + +32  + #_IOC_NRMASK + ((1 << +_IOC_NRBITS +)-1) + + ) + +33  + #_IOC_TYPEMASK + ((1 << +_IOC_TYPEBITS +)-1) + + ) + +34  + #_IOC_SIZEMASK + ((1 << +_IOC_SIZEBITS +)-1) + + ) + +35  + #_IOC_DIRMASK + ((1 << +_IOC_DIRBITS +)-1) + + ) + +37  + #_IOC_NRSHIFT + 0 + + ) + +38  + #_IOC_TYPESHIFT + ( +_IOC_NRSHIFT ++ +_IOC_NRBITS +) + + ) + +39  + #_IOC_SIZESHIFT + ( +_IOC_TYPESHIFT ++ +_IOC_TYPEBITS +) + + ) + +40  + #_IOC_DIRSHIFT + ( +_IOC_SIZESHIFT ++ +_IOC_SIZEBITS +) + + ) + +45  + #_IOC_NONE + 0U + + ) + +46  + #_IOC_WRITE + 1U + + ) + +47  + #_IOC_READ + 2U + + ) + +49  + #_IOC +( +dœ +, +ty³ +, +Ä +, +size +) \ + +50 ((( +dœ +è<< +_IOC_DIRSHIFT +) | \ + +51 (( +ty³ +è<< +_IOC_TYPESHIFT +) | \ + +52 (( +Ä +è<< +_IOC_NRSHIFT +) | \ + +53 (( +size +è<< +_IOC_SIZESHIFT +)) + + ) + +57  + #_IOC_TYPECHECK +( +t +èÑ) + + ) + +60  + #_IO +( +ty³ +, +Ä +è + `_IOC +( +_IOC_NONE +,Ñy³),Òr),0) + + ) + +61  + #_IOR +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_READ +,Ñy³),Òr),( + `_IOC_TYPECHECK +(size))) + + ) + +62  + #_IOW +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_WRITE +,Ñy³),Òr),( + `_IOC_TYPECHECK +(size))) + + ) + +63  + #_IOWR +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_READ +| +_IOC_WRITE +,Ñy³),Òr),( + `_IOC_TYPECHECK +(size))) + + ) + +64  + #_IOR_BAD +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_READ +,Ñy³),Òr),(size)) + + ) + +65  + #_IOW_BAD +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_WRITE +,Ñy³),Òr),(size)) + + ) + +66  + #_IOWR_BAD +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_READ +| +_IOC_WRITE +,Ñy³),Òr),(size)) + + ) + +69  + #_IOC_DIR +( +Ä +è((Òrè>> +_IOC_DIRSHIFT +è& +_IOC_DIRMASK +) + + ) + +70  + #_IOC_TYPE +( +Ä +è((Òrè>> +_IOC_TYPESHIFT +è& +_IOC_TYPEMASK +) + + ) + +71  + #_IOC_NR +( +Ä +è((Òrè>> +_IOC_NRSHIFT +è& +_IOC_NRMASK +) + + ) + +72  + #_IOC_SIZE +( +Ä +è((Òrè>> +_IOC_SIZESHIFT +è& +_IOC_SIZEMASK +) + + ) + +76  + #IOC_IN + ( +_IOC_WRITE + << +_IOC_DIRSHIFT +) + + ) + +77  + #IOC_OUT + ( +_IOC_READ + << +_IOC_DIRSHIFT +) + + ) + +78  + #IOC_INOUT + (( +_IOC_WRITE +| +_IOC_READ +è<< +_IOC_DIRSHIFT +) + + ) + +79  + #IOCSIZE_MASK + ( +_IOC_SIZEMASK + << +_IOC_SIZESHIFT +) + + ) + +80  + #IOCSIZE_SHIFT + ( +_IOC_SIZESHIFT +) + + ) + + @/usr/include/asm-i386/linkage.h + +1 #iâdeà +__ASM_LINKAGE_H + + +2  + #__ASM_LINKAGE_H + + + ) + +4  + #asmlškage + +CPP_ASMLINKAGE + + `__©Œibu‹__ +(( + `»g·rm +(0))) + + ) + +5  + #FASTCALL +( +x +èx + `__©Œibu‹__ +(( + `»g·rm +(3))) + + ) + +6  + #ç¡ÿÎ + + `__©Œibu‹__ +(( + `»g·rm +(3))) + + ) + +8 #ifdeà +CONFIG_REGPARM + + +9  + #´ev’t_ž_ÿÎ +( +»t +è + `__asm__ + ("" : "ô" (»tè: "0" (»t)) + + ) + +12 #ifdeà +CONFIG_X86_ALIGNMENT_16 + + +13  + #__ALIGN + . +®ign + 16,0x90 + + ) + +14  + #__ALIGN_STR + ".®igÀ16,0x90" + + ) + + @/usr/include/asm-i386/types.h + +1 #iâdeà +_I386_TYPES_H + + +2  + #_I386_TYPES_H + + + ) + +4 #iâdeà +__ASSEMBLY__ + + +6  + tumode_t +; + +13  +__sigÃd__ +  + t__s8 +; + +14  + t__u8 +; + +16  +__sigÃd__ +  + t__s16 +; + +17  + t__u16 +; + +19  +__sigÃd__ +  + t__s32 +; + +20  + t__u32 +; + +22 #ià( +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +)è|| ( +__STDC_VERSION__ + >= 199901L) + +23  +__sigÃd__ +  + t__s64 +; + +24  + t__u64 +; + + @/usr/include/asm-x86_64/cache.h + +4 #iâdeà +__ARCH_X8664_CACHE_H + + +5  + #__ARCH_X8664_CACHE_H + + + ) + +9  + #L1_CACHE_SHIFT + ( +CONFIG_X86_L1_CACHE_SHIFT +) + + ) + +10  + #L1_CACHE_BYTES + (1 << +L1_CACHE_SHIFT +) + + ) + +11  + #L1_CACHE_SHIFT_MAX + 6 + + ) + + @/usr/include/asm-x86_64/fcntl.h + +1 #iâdeà +_X86_64_FCNTL_H + + +2  + #_X86_64_FCNTL_H + + + ) + +6  + #O_ACCMODE + 0003 + + ) + +7  + #O_RDONLY + 00 + + ) + +8  + #O_WRONLY + 01 + + ) + +9  + #O_RDWR + 02 + + ) + +10  + #O_CREAT + 0100 + + ) + +11  + #O_EXCL + 0200 + + ) + +12  + #O_NOCTTY + 0400 + + ) + +13  + #O_TRUNC + 01000 + + ) + +14  + #O_APPEND + 02000 + + ) + +15  + #O_NONBLOCK + 04000 + + ) + +16  + #O_NDELAY + +O_NONBLOCK + + + ) + +17  + #O_SYNC + 010000 + + ) + +18  + #FASYNC + 020000 + + ) + +19  + #O_DIRECT + 040000 + + ) + +20  + #O_LARGEFILE + 0100000 + + ) + +21  + #O_DIRECTORY + 0200000 + + ) + +22  + #O_NOFOLLOW + 0400000 + + ) + +23  + #O_NOATIME + 01000000 + + ) + +25  + #F_DUPFD + 0 + + ) + +26  + #F_GETFD + 1 + + ) + +27  + #F_SETFD + 2 + + ) + +28  + #F_GETFL + 3 + + ) + +29  + #F_SETFL + 4 + + ) + +30  + #F_GETLK + 5 + + ) + +31  + #F_SETLK + 6 + + ) + +32  + #F_SETLKW + 7 + + ) + +34  + #F_SETOWN + 8 + + ) + +35  + #F_GETOWN + 9 + + ) + +36  + #F_SETSIG + 10 + + ) + +37  + #F_GETSIG + 11 + + ) + +40  + #FD_CLOEXEC + 1 + + ) + +43  + #F_RDLCK + 0 + + ) + +44  + #F_WRLCK + 1 + + ) + +45  + #F_UNLCK + 2 + + ) + +48  + #F_EXLCK + 4 + + ) + +49  + #F_SHLCK + 8 + + ) + +52  + #F_INPROGRESS + 16 + + ) + +55  + #LOCK_SH + 1 + + ) + +56  + #LOCK_EX + 2 + + ) + +57  + #LOCK_NB + 4 + + ) + +59  + #LOCK_UN + 8 + + ) + +61  + #LOCK_MAND + 32 + + ) + +62  + #LOCK_READ + 64 + + ) + +63  + #LOCK_WRITE + 128 + + ) + +64  + #LOCK_RW + 192 + + ) + +66  + sæock + { + +67  + ml_ty³ +; + +68  + ml_wh’û +; + +69 +off_t + + ml_¡¬t +; + +70 +off_t + + ml_Ën +; + +71 +pid_t + + ml_pid +; + +74  + #F_LINUX_SPECIFIC_BASE + 1024 + + ) + + @/usr/include/asm-x86_64/ioctl.h + +6 #iâdeà +_ASMX8664_IOCTL_H + + +7  + #_ASMX8664_IOCTL_H + + + ) + +27  + #_IOC_NRBITS + 8 + + ) + +28  + #_IOC_TYPEBITS + 8 + + ) + +29  + #_IOC_SIZEBITS + 14 + + ) + +30  + #_IOC_DIRBITS + 2 + + ) + +32  + #_IOC_NRMASK + ((1 << +_IOC_NRBITS +)-1) + + ) + +33  + #_IOC_TYPEMASK + ((1 << +_IOC_TYPEBITS +)-1) + + ) + +34  + #_IOC_SIZEMASK + ((1 << +_IOC_SIZEBITS +)-1) + + ) + +35  + #_IOC_DIRMASK + ((1 << +_IOC_DIRBITS +)-1) + + ) + +37  + #_IOC_NRSHIFT + 0 + + ) + +38  + #_IOC_TYPESHIFT + ( +_IOC_NRSHIFT ++ +_IOC_NRBITS +) + + ) + +39  + #_IOC_SIZESHIFT + ( +_IOC_TYPESHIFT ++ +_IOC_TYPEBITS +) + + ) + +40  + #_IOC_DIRSHIFT + ( +_IOC_SIZESHIFT ++ +_IOC_SIZEBITS +) + + ) + +45  + #_IOC_NONE + 0U + + ) + +46  + #_IOC_WRITE + 1U + + ) + +47  + #_IOC_READ + 2U + + ) + +49  + #_IOC +( +dœ +, +ty³ +, +Ä +, +size +) \ + +50 ((( +dœ +è<< +_IOC_DIRSHIFT +) | \ + +51 (( +ty³ +è<< +_IOC_TYPESHIFT +) | \ + +52 (( +Ä +è<< +_IOC_NRSHIFT +) | \ + +53 (( +size +è<< +_IOC_SIZESHIFT +)) + + ) + +56  + #_IO +( +ty³ +, +Ä +è + `_IOC +( +_IOC_NONE +,Ñy³),Òr),0) + + ) + +57  + #_IOR +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_READ +,Ñy³),Òr),(size)) + + ) + +58  + #_IOW +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_WRITE +,Ñy³),Òr),(size)) + + ) + +59  + #_IOWR +( +ty³ +, +Ä +, +size +è + `_IOC +( +_IOC_READ +| +_IOC_WRITE +,Ñy³),Òr),(size)) + + ) + +62  + #_IOC_DIR +( +Ä +è((Òrè>> +_IOC_DIRSHIFT +è& +_IOC_DIRMASK +) + + ) + +63  + #_IOC_TYPE +( +Ä +è((Òrè>> +_IOC_TYPESHIFT +è& +_IOC_TYPEMASK +) + + ) + +64  + #_IOC_NR +( +Ä +è((Òrè>> +_IOC_NRSHIFT +è& +_IOC_NRMASK +) + + ) + +65  + #_IOC_SIZE +( +Ä +è((Òrè>> +_IOC_SIZESHIFT +è& +_IOC_SIZEMASK +) + + ) + +69  + #IOC_IN + ( +_IOC_WRITE + << +_IOC_DIRSHIFT +) + + ) + +70  + #IOC_OUT + ( +_IOC_READ + << +_IOC_DIRSHIFT +) + + ) + +71  + #IOC_INOUT + (( +_IOC_WRITE +| +_IOC_READ +è<< +_IOC_DIRSHIFT +) + + ) + +72  + #IOCSIZE_MASK + ( +_IOC_SIZEMASK + << +_IOC_SIZESHIFT +) + + ) + +73  + #IOCSIZE_SHIFT + ( +_IOC_SIZESHIFT +) + + ) + + @/usr/include/asm-x86_64/linkage.h + +1 #iâdeà +__ASM_LINKAGE_H + + +2  + #__ASM_LINKAGE_H + + + ) + + @/usr/include/asm-x86_64/types.h + +1 #iâdeà +_X86_64_TYPES_H + + +2  + #_X86_64_TYPES_H + + + ) + +4 #iâdeà +__ASSEMBLY__ + + +6  + tumode_t +; + +13  +__sigÃd__ +  + t__s8 +; + +14  + t__u8 +; + +16  +__sigÃd__ +  + t__s16 +; + +17  + t__u16 +; + +19  +__sigÃd__ +  + t__s32 +; + +20  + t__u32 +; + +22 #ià( +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +)è|| ( +__STDC_VERSION__ + >= 199901L) + +23  +__sigÃd__ +  + t__s64 +; + +24  + t__u64 +; + + @/usr/include/asm/errno.h + +5 #iâdeà +__i386STUB__ERRNO_H__ + + +6  + #__i386STUB__ERRNO_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/asm/posix_types.h + +5 #iâdeà +__i386STUB__POSIX_TYPES_H__ + + +6  + #__i386STUB__POSIX_TYPES_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/bits/endian.h + +3 #iâdeà +_ENDIAN_H + + +7  + #__BYTE_ORDER + +__LITTLE_ENDIAN + + + ) + + @/usr/include/bits/local_lim.h + +25 #iâdeà +NR_OPEN + + +26  + #__undef_NR_OPEN + + + ) + +28 #iâdeà +LINK_MAX + + +29  + #__undef_LINK_MAX + + + ) + +31 #iâdeà +OPEN_MAX + + +32  + #__undef_OPEN_MAX + + + ) + +36  + ~ + +39 #ifdeà +__undef_NR_OPEN + + +40 #undeà +NR_OPEN + + +41 #undeà +__undef_NR_OPEN + + +44 #ifdeà +__undef_LINK_MAX + + +45 #undeà +LINK_MAX + + +46 #undeà +__undef_LINK_MAX + + +49 #ifdeà +__undef_OPEN_MAX + + +50 #undeà +OPEN_MAX + + +51 #undeà +__undef_OPEN_MAX + + +55  + #_POSIX_THREAD_KEYS_MAX + 128 + + ) + +57  + #PTHREAD_KEYS_MAX + 1024 + + ) + +60  + #_POSIX_THREAD_DESTRUCTOR_ITERATIONS + 4 + + ) + +62  + #PTHREAD_DESTRUCTOR_ITERATIONS + +_POSIX_THREAD_DESTRUCTOR_ITERATIONS + + + ) + +65  + #_POSIX_THREAD_THREADS_MAX + 64 + + ) + +67  + #PTHREAD_THREADS_MAX + 16384 + + ) + +71  + #AIO_PRIO_DELTA_MAX + 20 + + ) + +74  + #PTHREAD_STACK_MIN + 16384 + + ) + +77  + #TIMER_MAX + 256 + + ) + +80  + #DELAYTIMER_MAX + 2147483647 + + ) + +83  + #TTY_NAME_MAX + 32 + + ) + +86  + #LOGIN_NAME_MAX + 256 + + ) + +89  + #HOST_NAME_MAX + 64 + + ) + +92  + #MQ_PRIO_MAX + 32768 + + ) + + @/usr/include/bits/sched.h + +21 #iâdeà +__Ãed_sched·¿m + + +23 #iâdeà +_SCHED_H + + +29  + #SCHED_OTHER + 0 + + ) + +30  + #SCHED_FIFO + 1 + + ) + +31  + #SCHED_RR + 2 + + ) + +33 #ifdeà +__USE_MISC + + +35  + #CSIGNAL + 0x000000fà + + ) + +36  + #CLONE_VM + 0x00000100 + + ) + +37  + #CLONE_FS + 0x00000200 + + ) + +38  + #CLONE_FILES + 0x00000400 + + ) + +39  + #CLONE_SIGHAND + 0x00000800 + + ) + +40  + #CLONE_PTRACE + 0x00002000 + + ) + +41  + #CLONE_VFORK + 0x00004000 + + ) + +43  + #CLONE_PARENT + 0x00008000 + + ) + +45  + #CLONE_THREAD + 0x00010000 + + ) + +46  + #CLONE_NEWNS + 0x00020000 + + ) + +47  + #CLONE_SYSVSEM + 0x00040000 + + ) + +48  + #CLONE_SETTLS + 0x00080000 + + ) + +49  + #CLONE_PARENT_SETTID + 0x00100000 + + ) + +51  + #CLONE_CHILD_CLEARTID + 0x00200000 + + ) + +53  + #CLONE_DETACHED + 0x00400000 + + ) + +54  + #CLONE_UNTRACED + 0x00800000 + + ) + +56  + #CLONE_CHILD_SETTID + 0x01000000 + + ) + +58  + #CLONE_STOPPED + 0x02000000 + + ) + +62  + ssched_·¿m + + +64  + m__sched_´iܙy +; + +67 + g__BEGIN_DECLS + + +70 #ifdeà +__USE_MISC + + +71  +þÚe + ((* +__â +è(* +__¬g +), * +__chžd_¡ack +, + +72  +__æags +, * +__¬g +è +__THROW +; + +75 +__END_DECLS + + +79 #ià! +defšed + +__defšed_sched·¿m + \ + +80 && ( +defšed + +__Ãed_sched·¿m + || defšed +_SCHED_H +) + +81  + #__defšed_sched·¿m + 1 + + ) + +83  + s__sched_·¿m + + +85  +__sched_´iܙy +; + +87 #undeà +__Ãed_sched·¿m + + +91 #ià +defšed + +_SCHED_H + && !defšed +__ýu_£t_t_defšed + + +92  + #__ýu_£t_t_defšed + + + ) + +94  + #__CPU_SETSIZE + 1024 + + ) + +95  + #__NCPUBITS + (8 *  ( +__ýu_mask +)) + + ) + +98  + t__ýu_mask +; + +101  + #__CPUELT +( +ýu +è((ýuè/ +__NCPUBITS +) + + ) + +102  + #__CPUMASK +( +ýu +è(( +__ýu_mask +è1 << ((ýuè% +__NCPUBITS +)) + + ) + +107 +__ýu_mask + +__b™s +[ +__CPU_SETSIZE + / +__NCPUBITS +]; + +108 } + týu_£t_t +; + +111  + #__CPU_ZERO +( +ýu£ +) \ + +113  +__i +; \ + +114 +ýu_£t_t + * +__¬r + = ( +ýu£ +); \ + +115  +__i + = 0; __˜<  ( +ýu_£t_t +è/  ( +__ýu_mask +); ++__i) \ + +116 +__¬r +-> +__b™s +[ +__i +] = 0; \ + +117 + } +} 0) + + ) + +118  + #__CPU_SET +( +ýu +, +ýu£ +) \ + +119 (( +ýu£ +)-> +__b™s +[ + `__CPUELT + ( +ýu +)] |ð + `__CPUMASK + (ýu)) + + ) + +120  + #__CPU_CLR +( +ýu +, +ýu£ +) \ + +121 (( +ýu£ +)-> +__b™s +[ + `__CPUELT + ( +ýu +)] &ð~ + `__CPUMASK + (ýu)) + + ) + +122  + #__CPU_ISSET +( +ýu +, +ýu£ +) \ + +123 ((( +ýu£ +)-> +__b™s +[ + `__CPUELT + ( +ýu +)] & + `__CPUMASK + (ýu)è!ð0) + + ) + + @/usr/include/bits/select.h + +19 #iâdeà +_SYS_SELECT_H + + +24 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +26  + #__FD_ZERO +( +fd¥ +) \ + +28  +__d0 +, +__d1 +; \ + +29 +__asm__ + + `__vÞ©že__ + ("cld;„ep; stosl" \ + +30 : "=c" ( +__d0 +), "=D" ( +__d1 +) \ + +31 : "a" (0), "0" ( ( +fd_£t +) \ + +32 /  ( +__fd_mask +)), \ + +33 "1" (& + `__FDS_BITS + ( +fd¥ +)[0]) \ + +35 } 0) + + ) + +37  + #__FD_SET +( +fd +, +fd¥ +) \ + +38 +__asm__ + + `__vÞ©že__ + ("btsl %1,%0" \ + +39 : "=m" ( + `__FDS_BITS + ( +fd¥ +)[ + `__FDELT + ( +fd +)]) \ + +40 : "r" (((è( +fd +)è% +__NFDBITS +) \ + +41 : "cc","memÜy") + + ) + +42  + #__FD_CLR +( +fd +, +fd¥ +) \ + +43 +__asm__ + + `__vÞ©že__ + ("btrl %1,%0" \ + +44 : "=m" ( + `__FDS_BITS + ( +fd¥ +)[ + `__FDELT + ( +fd +)]) \ + +45 : "r" (((è( +fd +)è% +__NFDBITS +) \ + +46 : "cc","memÜy") + + ) + +47  + #__FD_ISSET +( +fd +, +fd¥ +) \ + +48 ( +__ex‹nsiÚ__ + \ + +49 ({ +__»suÉ +; \ + +50 +__asm__ + + `__vÞ©že__ + ("btl %1,%2 ; setcb %b0" \ + +51 : "=q" ( +__»suÉ +) \ + +52 : "r" (((è( +fd +)è% +__NFDBITS +), \ + +53 "m" ( + `__FDS_BITS + ( +fd¥ +)[ + `__FDELT + ( +fd +)]) \ + +55 +__»suÉ +; })) + + ) + +61  + #__FD_ZERO +( +£t +) \ + +63  +__i +; \ + +64 +fd_£t + * +__¬r + = ( +£t +); \ + +65  +__i + = 0; __˜<  ( +fd_£t +è/  ( +__fd_mask +); ++__i) \ + +66 + `__FDS_BITS + ( +__¬r +)[ +__i +] = 0; \ + +67 } 0) + + ) + +68  + #__FD_SET +( +d +, +£t +è( + `__FDS_BITS + (£t)[ + `__FDELT + (d)] |ð + `__FDMASK + (d)) + + ) + +69  + #__FD_CLR +( +d +, +£t +è( + `__FDS_BITS + (£t)[ + `__FDELT + (d)] &ð~ + `__FDMASK + (d)) + + ) + +70  + #__FD_ISSET +( +d +, +£t +è( + `__FDS_BITS + (£t)[ + `__FDELT + (d)] & + `__FDMASK + (d)) + + ) + + @/usr/include/bits/siginfo.h + +20 #ià! +defšed + +_SIGNAL_H + && !defšed +__Ãed_sigšfo_t + \ + +21 && ! +defšed + + g__Ãed_sigev’t_t + + +25  + ~ + +27 #ià(! +defšed + +__have_sigv®_t + \ + +28 && ( +defšed + + g_SIGNAL_H + || defšed + g__Ãed_sigšfo_t + \ + +29 || +defšed + + g__Ãed_sigev’t_t +)) + +30  + #__have_sigv®_t + 1 + + ) + +33  + usigv® + + +35  + msiv®_št +; + +36 * + msiv®_±r +; + +37 } + tsigv®_t +; + +40 #ià(! +defšed + +__have_sigšfo_t + \ + +41 && ( +defšed + + g_SIGNAL_H + || defšed + g__Ãed_sigšfo_t +)) + +42  + #__have_sigšfo_t + 1 + + ) + +44  + #__SI_MAX_SIZE + 128 + + ) + +45 #ià +__WORDSIZE + == 64 + +46  + #__SI_PAD_SIZE + (( +__SI_MAX_SIZE + /  ()è- 4) + + ) + +48  + #__SI_PAD_SIZE + (( +__SI_MAX_SIZE + /  ()è- 3) + + ) + +51  + ssigšfo + + +53  + msi_signo +; + +54  + msi_”ºo +; + +56  + msi_code +; + +60  + m_·d +[ +__SI_PAD_SIZE +]; + +65 +__pid_t + + msi_pid +; + +66 +__uid_t + + msi_uid +; + +67 } + m_kžl +; + +72  + msi_tid +; + +73  + msi_ov”run +; + +74 +sigv®_t + + msi_sigv® +; + +75 } + m_tim” +; + +80 +__pid_t + + msi_pid +; + +81 +__uid_t + + msi_uid +; + +82 +sigv®_t + + msi_sigv® +; + +83 } + m_¹ +; + +88 +__pid_t + + msi_pid +; + +89 +__uid_t + + msi_uid +; + +90  + msi_¡©us +; + +91 +__þock_t + + msi_utime +; + +92 +__þock_t + + msi_¡ime +; + +93 } + m_sigchld +; + +98 * + msi_addr +; + +99 } + m_sigçuÉ +; + +104  + msi_bªd +; + +105  + msi_fd +; + +106 } + m_sigpÞl +; + +107 } + m_sif›lds +; + +108 } + tsigšfo_t +; + +112  + #si_pid + +_sif›lds +. +_kžl +. +si_pid + + + ) + +113  + #si_uid + +_sif›lds +. +_kžl +. +si_uid + + + ) + +114  + #si_tim”id + +_sif›lds +. +_tim” +. +si_tid + + + ) + +115  + #si_ov”run + +_sif›lds +. +_tim” +. +si_ov”run + + + ) + +116  + #si_¡©us + +_sif›lds +. +_sigchld +. +si_¡©us + + + ) + +117  + #si_utime + +_sif›lds +. +_sigchld +. +si_utime + + + ) + +118  + #si_¡ime + +_sif›lds +. +_sigchld +. +si_¡ime + + + ) + +119  + #si_v®ue + +_sif›lds +. +_¹ +. +si_sigv® + + + ) + +120  + #si_št + +_sif›lds +. +_¹ +. +si_sigv® +. +siv®_št + + + ) + +121  + #si_±r + +_sif›lds +. +_¹ +. +si_sigv® +. +siv®_±r + + + ) + +122  + #si_addr + +_sif›lds +. +_sigçuÉ +. +si_addr + + + ) + +123  + #si_bªd + +_sif›lds +. +_sigpÞl +. +si_bªd + + + ) + +124  + #si_fd + +_sif›lds +. +_sigpÞl +. +si_fd + + + ) + +131 + mSI_ASYNCNL + = -60, + +132  + #SI_ASYNCNL + +SI_ASYNCNL + + + ) + +133 + mSI_TKILL + = -6, + +134  + #SI_TKILL + +SI_TKILL + + + ) + +135 + mSI_SIGIO +, + +136  + #SI_SIGIO + +SI_SIGIO + + + ) + +137 + mSI_ASYNCIO +, + +138  + #SI_ASYNCIO + +SI_ASYNCIO + + + ) + +139 + mSI_MESGQ +, + +140  + #SI_MESGQ + +SI_MESGQ + + + ) + +141 + mSI_TIMER +, + +142  + #SI_TIMER + +SI_TIMER + + + ) + +143 + mSI_QUEUE +, + +144  + #SI_QUEUE + +SI_QUEUE + + + ) + +145 + mSI_USER +, + +146  + #SI_USER + +SI_USER + + + ) + +147 + mSI_KERNEL + = 0x80 + +148  + #SI_KERNEL + +SI_KERNEL + + + ) + +155 + mILL_ILLOPC + = 1, + +156  + #ILL_ILLOPC + +ILL_ILLOPC + + + ) + +157 + mILL_ILLOPN +, + +158  + #ILL_ILLOPN + +ILL_ILLOPN + + + ) + +159 + mILL_ILLADR +, + +160  + #ILL_ILLADR + +ILL_ILLADR + + + ) + +161 + mILL_ILLTRP +, + +162  + #ILL_ILLTRP + +ILL_ILLTRP + + + ) + +163 + mILL_PRVOPC +, + +164  + #ILL_PRVOPC + +ILL_PRVOPC + + + ) + +165 + mILL_PRVREG +, + +166  + #ILL_PRVREG + +ILL_PRVREG + + + ) + +167 + mILL_COPROC +, + +168  + #ILL_COPROC + +ILL_COPROC + + + ) + +169 + mILL_BADSTK + + +170  + #ILL_BADSTK + +ILL_BADSTK + + + ) + +176 + mFPE_INTDIV + = 1, + +177  + #FPE_INTDIV + +FPE_INTDIV + + + ) + +178 + mFPE_INTOVF +, + +179  + #FPE_INTOVF + +FPE_INTOVF + + + ) + +180 + mFPE_FLTDIV +, + +181  + #FPE_FLTDIV + +FPE_FLTDIV + + + ) + +182 + mFPE_FLTOVF +, + +183  + #FPE_FLTOVF + +FPE_FLTOVF + + + ) + +184 + mFPE_FLTUND +, + +185  + #FPE_FLTUND + +FPE_FLTUND + + + ) + +186 + mFPE_FLTRES +, + +187  + #FPE_FLTRES + +FPE_FLTRES + + + ) + +188 + mFPE_FLTINV +, + +189  + #FPE_FLTINV + +FPE_FLTINV + + + ) + +190 + mFPE_FLTSUB + + +191  + #FPE_FLTSUB + +FPE_FLTSUB + + + ) + +197 + mSEGV_MAPERR + = 1, + +198  + #SEGV_MAPERR + +SEGV_MAPERR + + + ) + +199 + mSEGV_ACCERR + + +200  + #SEGV_ACCERR + +SEGV_ACCERR + + + ) + +206 + mBUS_ADRALN + = 1, + +207  + #BUS_ADRALN + +BUS_ADRALN + + + ) + +208 + mBUS_ADRERR +, + +209  + #BUS_ADRERR + +BUS_ADRERR + + + ) + +210 + mBUS_OBJERR + + +211  + #BUS_OBJERR + +BUS_OBJERR + + + ) + +217 + mTRAP_BRKPT + = 1, + +218  + #TRAP_BRKPT + +TRAP_BRKPT + + + ) + +219 + mTRAP_TRACE + + +220  + #TRAP_TRACE + +TRAP_TRACE + + + ) + +226 + mCLD_EXITED + = 1, + +227  + #CLD_EXITED + +CLD_EXITED + + + ) + +228 + mCLD_KILLED +, + +229  + #CLD_KILLED + +CLD_KILLED + + + ) + +230 + mCLD_DUMPED +, + +231  + #CLD_DUMPED + +CLD_DUMPED + + + ) + +232 + mCLD_TRAPPED +, + +233  + #CLD_TRAPPED + +CLD_TRAPPED + + + ) + +234 + mCLD_STOPPED +, + +235  + #CLD_STOPPED + +CLD_STOPPED + + + ) + +236 + mCLD_CONTINUED + + +237  + #CLD_CONTINUED + +CLD_CONTINUED + + + ) + +243 + mPOLL_IN + = 1, + +244  + #POLL_IN + +POLL_IN + + + ) + +245 + mPOLL_OUT +, + +246  + #POLL_OUT + +POLL_OUT + + + ) + +247 + mPOLL_MSG +, + +248  + #POLL_MSG + +POLL_MSG + + + ) + +249 + mPOLL_ERR +, + +250  + #POLL_ERR + +POLL_ERR + + + ) + +251 + mPOLL_PRI +, + +252  + #POLL_PRI + +POLL_PRI + + + ) + +253 + mPOLL_HUP + + +254  + #POLL_HUP + +POLL_HUP + + + ) + +257 #undeà +__Ãed_sigšfo_t + + +261 #ià( +defšed + +_SIGNAL_H + || defšed +__Ãed_sigev’t_t +) \ + +262 && ! +defšed + + g__have_sigev’t_t + + +263  + #__have_sigev’t_t + 1 + + ) + +266  + #__SIGEV_MAX_SIZE + 64 + + ) + +267 #ià +__WORDSIZE + == 64 + +268  + #__SIGEV_PAD_SIZE + (( +__SIGEV_MAX_SIZE + /  ()è- 4) + + ) + +270  + #__SIGEV_PAD_SIZE + (( +__SIGEV_MAX_SIZE + /  ()è- 3) + + ) + +273  + ssigev’t + + +275 +sigv®_t + + msigev_v®ue +; + +276  + msigev_signo +; + +277  + msigev_nÙify +; + +281  + m_·d +[ +__SIGEV_PAD_SIZE +]; + +285 +__pid_t + + m_tid +; + +289 (* + m_funùiÚ +è( + msigv®_t +); + +290 * + m_©Œibu‹ +; + +291 } + m_sigev_th»ad +; + +292 } + m_sigev_un +; + +293 } + tsigev’t_t +; + +296  + #sigev_nÙify_funùiÚ + +_sigev_un +. +_sigev_th»ad +. +_funùiÚ + + + ) + +297  + #sigev_nÙify_©Œibu‹s + +_sigev_un +. +_sigev_th»ad +. +_©Œibu‹ + + + ) + +302 + mSIGEV_SIGNAL + = 0, + +303  + #SIGEV_SIGNAL + +SIGEV_SIGNAL + + + ) + +304 + mSIGEV_NONE +, + +305  + #SIGEV_NONE + +SIGEV_NONE + + + ) + +306 + mSIGEV_THREAD +, + +307  + #SIGEV_THREAD + +SIGEV_THREAD + + + ) + +309 + mSIGEV_THREAD_ID + = 4 + +310  + #SIGEV_THREAD_ID + +SIGEV_THREAD_ID + + + ) + + @/usr/include/bits/stat.h + +19 #iâdeà +_SYS_STAT_H + + +24  + #_STAT_VER_LINUX_OLD + 1 + + ) + +25  + #_STAT_VER_KERNEL + 1 + + ) + +26  + #_STAT_VER_SVR4 + 2 + + ) + +27  + #_STAT_VER_LINUX + 3 + + ) + +28  + #_STAT_VER + +_STAT_VER_LINUX + + + ) + +31  + #_MKNOD_VER_LINUX + 1 + + ) + +32  + #_MKNOD_VER_SVR4 + 2 + + ) + +33  + #_MKNOD_VER + +_MKNOD_VER_LINUX + + + ) + +36  + s¡© + + +38 +__dev_t + + m¡_dev +; + +39  + m__·d1 +; + +40 #iâdeà +__USE_FILE_OFFSET64 + + +41 +__šo_t + + m¡_šo +; + +43 +__šo_t + + m__¡_šo +; + +45 +__mode_t + + m¡_mode +; + +46 +__ƚk_t + + m¡_ƚk +; + +47 +__uid_t + + m¡_uid +; + +48 +__gid_t + + m¡_gid +; + +49 +__dev_t + + m¡_rdev +; + +50  + m__·d2 +; + +51 #iâdeà +__USE_FILE_OFFSET64 + + +52 +__off_t + + m¡_size +; + +54 +__off64_t + + m¡_size +; + +56 +__blksize_t + + m¡_blksize +; + +58 #iâdeà +__USE_FILE_OFFSET64 + + +59 +__blkút_t + + m¡_blocks +; + +61 +__blkút64_t + + m¡_blocks +; + +63 #ifdeà +__USE_MISC + + +70  +time¥ec + + m¡_©im +; + +71  +time¥ec + + m¡_mtim +; + +72  +time¥ec + + m¡_ùim +; + +73  + #¡_©ime + +¡_©im +. +tv_£c + + + ) + +74  + #¡_mtime + +¡_mtim +. +tv_£c + + + ) + +75  + #¡_ùime + +¡_ùim +. +tv_£c + + + ) + +77 +__time_t + + m¡_©ime +; + +78  + m¡_©im’£c +; + +79 +__time_t + + m¡_mtime +; + +80  + m¡_mtim’£c +; + +81 +__time_t + + m¡_ùime +; + +82  + m¡_ùim’£c +; + +84 #iâdeà +__USE_FILE_OFFSET64 + + +85  + m__unu£d4 +; + +86  + m__unu£d5 +; + +88 +__šo64_t + + m¡_šo +; + +92 #ifdeà +__USE_LARGEFILE64 + + +93  + s¡©64 + + +95 +__dev_t + + m¡_dev +; + +96  + m__·d1 +; + +98 +__šo_t + + m__¡_šo +; + +99 +__mode_t + + m¡_mode +; + +100 +__ƚk_t + + m¡_ƚk +; + +101 +__uid_t + + m¡_uid +; + +102 +__gid_t + + m¡_gid +; + +103 +__dev_t + + m¡_rdev +; + +104  + m__·d2 +; + +105 +__off64_t + + m¡_size +; + +106 +__blksize_t + + m¡_blksize +; + +108 +__blkút64_t + + m¡_blocks +; + +109 #ifdeà +__USE_MISC + + +116  +time¥ec + + m¡_©im +; + +117  +time¥ec + + m¡_mtim +; + +118  +time¥ec + + m¡_ùim +; + +120 +__time_t + + m¡_©ime +; + +121  + m¡_©im’£c +; + +122 +__time_t + + m¡_mtime +; + +123  + m¡_mtim’£c +; + +124 +__time_t + + m¡_ùime +; + +125  + m¡_ùim’£c +; + +127 +__šo64_t + + m¡_šo +; + +132  + #_STATBUF_ST_BLKSIZE + + + ) + +133  + #_STATBUF_ST_RDEV + + + ) + +135  + #_STATBUF_ST_NSEC + + + ) + +139  + #__S_IFMT + 0170000 + + ) + +142  + #__S_IFDIR + 0040000 + + ) + +143  + #__S_IFCHR + 0020000 + + ) + +144  + #__S_IFBLK + 0060000 + + ) + +145  + #__S_IFREG + 0100000 + + ) + +146  + #__S_IFIFO + 0010000 + + ) + +147  + #__S_IFLNK + 0120000 + + ) + +148  + #__S_IFSOCK + 0140000 + + ) + +152  + #__S_TYPEISMQ +( +buf +è((buf)-> +¡_mode + - (buf)->¡_mode) + + ) + +153  + #__S_TYPEISSEM +( +buf +è((buf)-> +¡_mode + - (buf)->¡_mode) + + ) + +154  + #__S_TYPEISSHM +( +buf +è((buf)-> +¡_mode + - (buf)->¡_mode) + + ) + +158  + #__S_ISUID + 04000 + + ) + +159  + #__S_ISGID + 02000 + + ) + +160  + #__S_ISVTX + 01000 + + ) + +161  + #__S_IREAD + 0400 + + ) + +162  + #__S_IWRITE + 0200 + + ) + +163  + #__S_IEXEC + 0100 + + ) + + @/usr/include/bits/stdio-lock.h + +20 #iâdeà +_BITS_STDIO_LOCK_H + + +21  + #_BITS_STDIO_LOCK_H + 1 + + ) + +23  + ~ + +25 + $__libc_lock_defše_»cursive + (, +_IO_lock_t +) + +28 #ifdeà + t_LIBC_LOCK_RECURSIVE_INITIALIZER + + +29  + t_IO_lock_š™Ÿliz” + + t_LIBC_LOCK_RECURSIVE_INITIALIZER + + + ) + +30 #–ià + t_IO_MTSAFE_IO + + +31 #”rÜ + tlibio + + tÃeds + + t»cursive + + tmu‹xes +  + t_IO_MTSAFE_IO + + +34  + t_IO_lock_š™ +( + t_Çme +è + t__libc_lock_š™_»cursive + (_Çme) + + ) + +35  + t_IO_lock_fši +( + t_Çme +è + t__libc_lock_fši_»cursive + (_Çme) + + ) + +36  + t_IO_lock_lock +( + t_Çme +è + t__libc_lock_lock_»cursive + (_Çme) + + ) + +37  + t_IO_lock_Œylock +( + t_Çme +è + t__libc_lock_Œylock_»cursive + (_Çme) + + ) + +38  + t_IO_lock_uÆock +( + t_Çme +è + t__libc_lock_uÆock_»cursive + (_Çme) + + ) + +41  + t_IO_þ—nup_»giÚ_¡¬t +( + t_fù +, + t_å +) \ + +42 + t__libc_þ—nup_»giÚ_¡¬t + ((( + t_å +)-> + t_æags + & + t_IO_USER_LOCK +è=ð0, + t_fù +, _å) + + ) + +43  + t_IO_þ—nup_»giÚ_¡¬t_nßrg +( + t_fù +) \ + +44 + t__libc_þ—nup_»giÚ_¡¬t + (1, + t_fù +, + tNULL +) + + ) + +45  + t_IO_þ—nup_»giÚ_’d +( + t_do™ +) \ + +46 + t__libc_þ—nup_»giÚ_’d + ( + t_do™ +) + + ) + +48 #ià + tdefšed + + t_LIBC + && !defšed + tNOT_IN_libc + + +49  + t_IO_acquœe_lock +( + t_å +) \ + +50 + t_IO_þ—nup_»giÚ_¡¬t + (((*è(*)è + t_IO_fuÆockfže +, ( + t_å +)); \ + +51 + `_IO_æockfže + ( +_å +) + + ) + +53  + #_IO_»Ëa£_lock +( +_å +) \ + +54 + `_IO_fuÆockfže + ( +_å +); \ + +55 + `_IO_þ—nup_»giÚ_’d + (0) + + ) + + @/usr/include/bits/time.h + +24 #iâdeà +__Ãed_timev® + + +25 #iâdeà +_BITS_TIME_H + + +26  + #_BITS_TIME_H + 1 + + ) + +34  + #CLOCKS_PER_SEC + 1000000l + + ) + +36 #ià! +defšed + +__STRICT_ANSI__ + && !defšed +__USE_XOPEN2K + + +39  + ~ + +40  +__syscÚf + (); + +41  + #CLK_TCK + (( +__þock_t +è + `__syscÚf + (2)è + + ) + +44 #ifdeà +__USE_POSIX199309 + + +46  + #CLOCK_REALTIME + 0 + + ) + +48  + #CLOCK_MONOTONIC + 1 + + ) + +50  + #CLOCK_PROCESS_CPUTIME_ID + 2 + + ) + +52  + #CLOCK_THREAD_CPUTIME_ID + 3 + + ) + +55  + #TIMER_ABSTIME + 1 + + ) + +61 #ifdeà +__Ãed_timev® + + +62 #undeà +__Ãed_timev® + + +63 #iâdeà +_STRUCT_TIMEVAL + + +64  + #_STRUCT_TIMEVAL + 1 + + ) + +65  + ~ + +69  + stimev® + + +71 +__time_t + + mtv_£c +; + +72 +__su£cÚds_t + + mtv_u£c +; + + @/usr/include/bits/typesizes.h + +20 #iâdeà +_BITS_TYPES_H + + +24 #iâdef +_BITS_TYPESIZES_H + + +25  + #_BITS_TYPESIZES_H + 1 + + ) + +30  + #__DEV_T_TYPE + +__UQUAD_TYPE + + + ) + +31  + #__UID_T_TYPE + +__U32_TYPE + + + ) + +32  + #__GID_T_TYPE + +__U32_TYPE + + + ) + +33  + #__INO_T_TYPE + +__ULONGWORD_TYPE + + + ) + +34  + #__INO64_T_TYPE + +__UQUAD_TYPE + + + ) + +35  + #__MODE_T_TYPE + +__U32_TYPE + + + ) + +36  + #__NLINK_T_TYPE + +__UWORD_TYPE + + + ) + +37  + #__OFF_T_TYPE + +__SLONGWORD_TYPE + + + ) + +38  + #__OFF64_T_TYPE + +__SQUAD_TYPE + + + ) + +39  + #__PID_T_TYPE + +__S32_TYPE + + + ) + +40  + #__RLIM_T_TYPE + +__ULONGWORD_TYPE + + + ) + +41  + #__RLIM64_T_TYPE + +__UQUAD_TYPE + + + ) + +42  + #__BLKCNT_T_TYPE + +__SLONGWORD_TYPE + + + ) + +43  + #__BLKCNT64_T_TYPE + +__SQUAD_TYPE + + + ) + +44  + #__FSBLKCNT_T_TYPE + +__ULONGWORD_TYPE + + + ) + +45  + #__FSBLKCNT64_T_TYPE + +__UQUAD_TYPE + + + ) + +46  + #__FSFILCNT_T_TYPE + +__ULONGWORD_TYPE + + + ) + +47  + #__FSFILCNT64_T_TYPE + +__UQUAD_TYPE + + + ) + +48  + #__ID_T_TYPE + +__U32_TYPE + + + ) + +49  + #__CLOCK_T_TYPE + +__SLONGWORD_TYPE + + + ) + +50  + #__TIME_T_TYPE + +__SLONGWORD_TYPE + + + ) + +51  + #__USECONDS_T_TYPE + +__U32_TYPE + + + ) + +52  + #__SUSECONDS_T_TYPE + +__SLONGWORD_TYPE + + + ) + +53  + #__DADDR_T_TYPE + +__S32_TYPE + + + ) + +54  + #__SWBLK_T_TYPE + +__SLONGWORD_TYPE + + + ) + +55  + #__KEY_T_TYPE + +__S32_TYPE + + + ) + +56  + #__CLOCKID_T_TYPE + +__S32_TYPE + + + ) + +57  + #__TIMER_T_TYPE + +__S32_TYPE + + + ) + +58  + #__BLKSIZE_T_TYPE + +__SLONGWORD_TYPE + + + ) + +59  + #__FSID_T_TYPE + sŒuù {  +__v® +[2]; } + + ) + +60  + #__SSIZE_T_TYPE + +__SWORD_TYPE + + + ) + +63  + #__FD_SETSIZE + 1024 + + ) + + @/usr/include/gnu/stubs.h + +6 #ifdeà +_LIBC + + +7 #”rÜ +AµliÿtiÚs + +may + +nÙ + +defše + +the + +maüo + +_LIBC + + +10  + #__¡ub___k”Ãl_co¦ + + + ) + +11  + #__¡ub___k”Ãl_sšl + + + ) + +12  + #__¡ub___k”Ãl_Æ + + + ) + +13  + #__¡ub_chæags + + + ) + +14  + #__¡ub_ç‰ach + + + ) + +15  + #__¡ub_fchæags + + + ) + +16  + #__¡ub_fd‘ach + + + ) + +17  + #__¡ub_g‰y + + + ) + +18  + #__¡ub_lchmod + + + ) + +19  + #__¡ub_lutimes + + + ) + +20  + #__¡ub_»voke + + + ) + +21  + #__¡ub_£Žogš + + + ) + +22  + #__¡ub_s¡k + + + ) + +23  + #__¡ub_¡ty + + + ) + + @/usr/include/linux/byteorder/little_endian.h + +1 #iâdeà +_LINUX_BYTEORDER_LITTLE_ENDIAN_H + + +2  + #_LINUX_BYTEORDER_LITTLE_ENDIAN_H + + + ) + +4 #iâdeà +__LITTLE_ENDIAN + + +5  + #__LITTLE_ENDIAN + 1234 + + ) + +7 #iâdeà +__LITTLE_ENDIAN_BITFIELD + + +8  + #__LITTLE_ENDIAN_BITFIELD + + + ) + +11  + ~ + +12  + ~ + +14  + #__cÚ¡ªt_htÚl +( +x +è + `___cÚ¡ªt_swab32 +((x)) + + ) + +15  + #__cÚ¡ªt_Áohl +( +x +è + `___cÚ¡ªt_swab32 +((x)) + + ) + +16  + #__cÚ¡ªt_htÚs +( +x +è + `___cÚ¡ªt_swab16 +((x)) + + ) + +17  + #__cÚ¡ªt_Áohs +( +x +è + `___cÚ¡ªt_swab16 +((x)) + + ) + +18  + #__cÚ¡ªt_ýu_to_Ë64 +( +x +è(( +__u64 +)(x)) + + ) + +19  + #__cÚ¡ªt_Ë64_to_ýu +( +x +è(( +__u64 +)(x)) + + ) + +20  + #__cÚ¡ªt_ýu_to_Ë32 +( +x +è(( +__u32 +)(x)) + + ) + +21  + #__cÚ¡ªt_Ë32_to_ýu +( +x +è(( +__u32 +)(x)) + + ) + +22  + #__cÚ¡ªt_ýu_to_Ë16 +( +x +è(( +__u16 +)(x)) + + ) + +23  + #__cÚ¡ªt_Ë16_to_ýu +( +x +è(( +__u16 +)(x)) + + ) + +24  + #__cÚ¡ªt_ýu_to_be64 +( +x +è + `___cÚ¡ªt_swab64 +((x)) + + ) + +25  + #__cÚ¡ªt_be64_to_ýu +( +x +è + `___cÚ¡ªt_swab64 +((x)) + + ) + +26  + #__cÚ¡ªt_ýu_to_be32 +( +x +è + `___cÚ¡ªt_swab32 +((x)) + + ) + +27  + #__cÚ¡ªt_be32_to_ýu +( +x +è + `___cÚ¡ªt_swab32 +((x)) + + ) + +28  + #__cÚ¡ªt_ýu_to_be16 +( +x +è + `___cÚ¡ªt_swab16 +((x)) + + ) + +29  + #__cÚ¡ªt_be16_to_ýu +( +x +è + `___cÚ¡ªt_swab16 +((x)) + + ) + +30  + #__ýu_to_Ë64 +( +x +è(( +__u64 +)(x)) + + ) + +31  + #__Ë64_to_ýu +( +x +è(( +__u64 +)(x)) + + ) + +32  + #__ýu_to_Ë32 +( +x +è(( +__u32 +)(x)) + + ) + +33  + #__Ë32_to_ýu +( +x +è(( +__u32 +)(x)) + + ) + +34  + #__ýu_to_Ë16 +( +x +è(( +__u16 +)(x)) + + ) + +35  + #__Ë16_to_ýu +( +x +è(( +__u16 +)(x)) + + ) + +36  + #__ýu_to_be64 +( +x +è + `__swab64 +((x)) + + ) + +37  + #__be64_to_ýu +( +x +è + `__swab64 +((x)) + + ) + +38  + #__ýu_to_be32 +( +x +è + `__swab32 +((x)) + + ) + +39  + #__be32_to_ýu +( +x +è + `__swab32 +((x)) + + ) + +40  + #__ýu_to_be16 +( +x +è + `__swab16 +((x)) + + ) + +41  + #__be16_to_ýu +( +x +è + `__swab16 +((x)) + + ) + +42  + #__ýu_to_Ë64p +( +x +è(*( +__u64 +*)(x)) + + ) + +43  + #__Ë64_to_ýup +( +x +è(*( +__u64 +*)(x)) + + ) + +44  + #__ýu_to_Ë32p +( +x +è(*( +__u32 +*)(x)) + + ) + +45  + #__Ë32_to_ýup +( +x +è(*( +__u32 +*)(x)) + + ) + +46  + #__ýu_to_Ë16p +( +x +è(*( +__u16 +*)(x)) + + ) + +47  + #__Ë16_to_ýup +( +x +è(*( +__u16 +*)(x)) + + ) + +48  + #__ýu_to_be64p +( +x +è + `__swab64p +((x)) + + ) + +49  + #__be64_to_ýup +( +x +è + `__swab64p +((x)) + + ) + +50  + #__ýu_to_be32p +( +x +è + `__swab32p +((x)) + + ) + +51  + #__be32_to_ýup +( +x +è + `__swab32p +((x)) + + ) + +52  + #__ýu_to_be16p +( +x +è + `__swab16p +((x)) + + ) + +53  + #__be16_to_ýup +( +x +è + `__swab16p +((x)) + + ) + +54  + #__ýu_to_Ë64s +( +x +èdØ{} 0) + + ) + +55  + #__Ë64_to_ýus +( +x +èdØ{} 0) + + ) + +56  + #__ýu_to_Ë32s +( +x +èdØ{} 0) + + ) + +57  + #__Ë32_to_ýus +( +x +èdØ{} 0) + + ) + +58  + #__ýu_to_Ë16s +( +x +èdØ{} 0) + + ) + +59  + #__Ë16_to_ýus +( +x +èdØ{} 0) + + ) + +60  + #__ýu_to_be64s +( +x +è + `__swab64s +((x)) + + ) + +61  + #__be64_to_ýus +( +x +è + `__swab64s +((x)) + + ) + +62  + #__ýu_to_be32s +( +x +è + `__swab32s +((x)) + + ) + +63  + #__be32_to_ýus +( +x +è + `__swab32s +((x)) + + ) + +64  + #__ýu_to_be16s +( +x +è + `__swab16s +((x)) + + ) + +65  + #__be16_to_ýus +( +x +è + `__swab16s +((x)) + + ) + +67  + ~ + + @/usr/include/signal.h + +23 #iâdef +_SIGNAL_H + + +25 #ià! +defšed + +__Ãed_sig_©omic_t + && !defšed +__Ãed_sig£t_t + + +26  + #_SIGNAL_H + + + ) + +29  + ~<ã©u»s.h +> + +31 + g__BEGIN_DECLS + + +33  + ~ + +37 #ià +defšed + +__Ãed_sig_©omic_t + || defšed +_SIGNAL_H + + +38 #iâdeà +__sig_©omic_t_defšed + + +39  + #__sig_©omic_t_defšed + + + ) + +40 +__BEGIN_NAMESPACE_STD + + +41  +__sig_©omic_t + + tsig_©omic_t +; + +42 + g__END_NAMESPACE_STD + + +44 #undeà +__Ãed_sig_©omic_t + + +47 #ià +defšed + +__Ãed_sig£t_t + || (defšed +_SIGNAL_H + && defšed +__USE_POSIX +) + +48 #iâdeà +__sig£t_t_defšed + + +49  + #__sig£t_t_defšed + + + ) + +50  +__sig£t_t + + tsig£t_t +; + +52 #undeà +__Ãed_sig£t_t + + +55 #ifdeà +_SIGNAL_H + + +57  + ~ + +58  + ~ + +60 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K + + +61 #iâdeà +__pid_t_defšed + + +62  +__pid_t + + tpid_t +; + +63  + #__pid_t_defšed + + + ) + +65 #ifdeà +__USE_XOPEN + + +67 #iâdeà +__uid_t_defšed + + +68  +__uid_t + + tuid_t +; + +69  + #__uid_t_defšed + + + ) + +75 (* + t__sighªdËr_t +) (); + +80 +__sighªdËr_t + + $__sysv_sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +81 +__THROW +; + +82 #ifdeà +__USE_GNU + + +83 +__sighªdËr_t + + $sysv_sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +84 +__THROW +; + +90 +__BEGIN_NAMESPACE_STD + + +91 #ifdeà +__USE_BSD + + +92 +__sighªdËr_t + + $sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +93 +__THROW +; + +96 #ifdeà +__REDIRECT_NTH + + +97 +__sighªdËr_t + + `__REDIRECT_NTH + ( +sigÇl +, + +98 ( +__sig +, +__sighªdËr_t + +__hªdËr +), + +99 +__sysv_sigÇl +); + +101  + #sigÇl + +__sysv_sigÇl + + + ) + +104 +__END_NAMESPACE_STD + + +106 #ifdeà +__USE_XOPEN + + +109 +__sighªdËr_t + + $bsd_sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +110 +__THROW +; + +116 #ifdeà +__USE_POSIX + + +117  + $kžl + ( +__pid_t + +__pid +,  +__sig +è +__THROW +; + +120 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +124  + $kžÍg + ( +__pid_t + +__pg½ +,  +__sig +è +__THROW +; + +127 +__BEGIN_NAMESPACE_STD + + +129  + $¿i£ + ( +__sig +è +__THROW +; + +130 +__END_NAMESPACE_STD + + +132 #ifdeà +__USE_SVID + + +134 +__sighªdËr_t + + $ssigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +135 +__THROW +; + +136  + $gsigÇl + ( +__sig +è +__THROW +; + +139 #ifdeà +__USE_MISC + + +141  + `psigÇl + ( +__sig +, +__cÚ¡ + * +__s +); + +153  + `__sig·u£ + ( +__sig_Ü_mask +,  +__is_sig +); + +155 #ifdeà +__FAVOR_BSD + + +158  + $sig·u£ + ( +__mask +è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +160 #ifdeà +__USE_XOPEN + + +161 #ifdeà +__GNUC__ + + +162  + $sig·u£ + ( +__sig +è + `__asm__ + ("__xpg_sigpause"); + +165  + #sig·u£ +( +sig +è + `__sig·u£ + ((sig), 1) + + ) + +171 #ifdeà +__USE_BSD + + +178  + #sigmask +( +sig +è + `__sigmask +(sig) + + ) + +181  + $sigblock + ( +__mask +è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +184  + $sig£tmask + ( +__mask +è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +187  + $sigg‘mask + (è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +191 #ifdeà +__USE_MISC + + +192  + #NSIG + +_NSIG + + + ) + +195 #ifdeà +__USE_GNU + + +196  +__sighªdËr_t + + tsighªdËr_t +; + +200 #ifdeà +__USE_BSD + + +201  +__sighªdËr_t + + tsig_t +; + +204 #ifdeà +__USE_POSIX + + +206 #ifdeà +__USE_POSIX199309 + + +208  + #__Ãed_time¥ec + + + ) + +209  + ~ + +212  + ~ + +216  + $sigem±y£t + ( +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +219  + $sigfžl£t + ( +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +222  + $sigadd£t + ( +sig£t_t + * +__£t +,  +__signo +è +__THROW + + `__nÚnuÎ + ((1)); + +225  + $sigd–£t + ( +sig£t_t + * +__£t +,  +__signo +è +__THROW + + `__nÚnuÎ + ((1)); + +228  + $sigismemb” + ( +__cÚ¡ + +sig£t_t + * +__£t +,  +__signo +) + +229 +__THROW + + `__nÚnuÎ + ((1)); + +231 #ifdeà +__USE_GNU + + +233  + $sigi£m±y£t + ( +__cÚ¡ + +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +236  + $sigªd£t + ( +sig£t_t + * +__£t +, +__cÚ¡ + sig£t_ˆ* +__Ëá +, + +237 +__cÚ¡ + +sig£t_t + * +__right +è +__THROW + + `__nÚnuÎ + ((1, 2, 3)); + +240  + $sigÜ£t + ( +sig£t_t + * +__£t +, +__cÚ¡ + sig£t_ˆ* +__Ëá +, + +241 +__cÚ¡ + +sig£t_t + * +__right +è +__THROW + + `__nÚnuÎ + ((1, 2, 3)); + +246  + ~ + +249  + $sig´ocmask + ( +__how +, +__cÚ¡ + +sig£t_t + * +__»¡riù + +__£t +, + +250 +sig£t_t + * +__»¡riù + +__o£t +è +__THROW +; + +257  + $sigsu¥’d + ( +__cÚ¡ + +sig£t_t + * +__£t +è + `__nÚnuÎ + ((1)); + +260  + $sigaùiÚ + ( +__sig +, +__cÚ¡ +  +sigaùiÚ + * +__»¡riù + +__aù +, + +261  +sigaùiÚ + * +__»¡riù + +__ßù +è +__THROW +; + +264  + $sig³ndšg + ( +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +271  + $sigwa™ + ( +__cÚ¡ + +sig£t_t + * +__»¡riù + +__£t +, *__»¡riù +__sig +) + +272 + `__nÚnuÎ + ((1, 2)); + +274 #ifdeà +__USE_POSIX199309 + + +279  + $sigwa™šfo + ( +__cÚ¡ + +sig£t_t + * +__»¡riù + +__£t +, + +280 +sigšfo_t + * +__»¡riù + +__šfo +è + `__nÚnuÎ + ((1)); + +287  + $sigtimedwa™ + ( +__cÚ¡ + +sig£t_t + * +__»¡riù + +__£t +, + +288 +sigšfo_t + * +__»¡riù + +__šfo +, + +289 +__cÚ¡ +  +time¥ec + * +__»¡riù + +__timeout +) + +290 + `__nÚnuÎ + ((1)); + +294  + $sigqueue + ( +__pid_t + +__pid +,  +__sig +, +__cÚ¡ +  +sigv® + +__v® +) + +295 +__THROW +; + +300 #ifdeà +__USE_BSD + + +304 +__cÚ¡ + *__cÚ¡ +_sys_sigli¡ +[ +_NSIG +]; + +305 +__cÚ¡ + *__cÚ¡ +sys_sigli¡ +[ +_NSIG +]; + +308  + ssigvec + + +310 +__sighªdËr_t + +sv_hªdËr +; + +311  +sv_mask +; + +313  +sv_æags +; + +314  + #sv_Ú¡ack + +sv_æags + + + ) + +318  + #SV_ONSTACK + (1 << 0) + + ) + +319  + #SV_INTERRUPT + (1 << 1) + + ) + +320  + #SV_RESETHAND + (1 << 2) + + ) + +328  + $sigvec + ( +__sig +, +__cÚ¡ +  +sigvec + * +__vec +, + +329  +sigvec + * +__ovec +è +__THROW +; + +333  + ~ + +336  + $sig»tuº + ( +sigcڋxt + * +__sý +è +__THROW +; + +341 #ià +defšed + +__USE_BSD + || defšed +__USE_XOPEN_EXTENDED + + +346  + $sigš‹¼u± + ( +__sig +,  +__š‹¼u± +è +__THROW +; + +348  + ~ + +349 #ifdeà +__USE_XOPEN + + +351  + ~ + +357  + $sig¡ack + ( +sig¡ack + * +__ss +, sig¡ack * +__oss +) + +358 +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +362  + $sig®t¡ack + ( +__cÚ¡ +  +sig®t¡ack + * +__»¡riù + +__ss +, + +363  +sig®t¡ack + * +__»¡riù + +__oss +è +__THROW +; + +367 #ifdeà +__USE_XOPEN_EXTENDED + + +371  + $sighÞd + ( +__sig +è +__THROW +; + +374  + $sig»l£ + ( +__sig +è +__THROW +; + +377  + $sigignÜe + ( +__sig +è +__THROW +; + +380 +__sighªdËr_t + + $sig£t + ( +__sig +, +__sighªdËr_t + +__di¥ +è +__THROW +; + +383 #ià +defšed + +__USE_POSIX199506 + || defšed +__USE_UNIX98 + + +386  + ~ + +387  + ~ + +394  + $__libc_cu¼’t_sig¹mš + (è +__THROW +; + +396  + $__libc_cu¼’t_sig¹max + (è +__THROW +; + +400 +__END_DECLS + + + @/usr/include/sys/cdefs.h + +19 #iâdef +_SYS_CDEFS_H + + +20  + #_SYS_CDEFS_H + 1 + + ) + +23 #iâdeà +_FEATURES_H + + +24  + ~<ã©u»s.h +> + +30 #ià +defšed + +__GNUC__ + && !defšed +__STDC__ + + +35 #undeà +__P + + +36 #undeà +__PMT + + +38 #ifdeà +__GNUC__ + + +45 #ià! +defšed + +__ýlu¥lus + && +__GNUC_PREREQ + (3, 3) + +46  + #__THROW + + `__©Œibu‹__ + (( +__nÙhrow__ +)) + + ) + +47  + #__NTH +( +fù +è + `__©Œibu‹__ + (( +__nÙhrow__ +)è + ) +fct + +49 #ià +defšed + +__ýlu¥lus + && +__GNUC_PREREQ + (2,8) + +50  + #__THROW + + `throw + () + + ) + +51  + #__NTH +( +fù +èfù + `throw + () + + ) + +53  + #__THROW + + + ) + +54  + #__NTH +( +fù +è + ) +fct + +60  + #__šlše + + + ) + +62  + #__THROW + + + ) + +63  + #__NTH +( +fù +è + ) +fct + +65  + #__cÚ¡ + cÚ¡ + + ) + +66  + #__sigÃd + sigÃd + + ) + +67  + #__vÞ©že + vÞ©že + + ) + +73  + #__P +( +¬gs +è + ) +args + +74  + #__PMT +( +¬gs +è + ) +args + +79  + #__CONCAT +( +x +, +y +èx ## + ) +y + +80  + #__STRING +( +x +è#x + + ) + +83  + #__±r_t + * + + ) + +84  + #__lÚg_doubË_t +  + + ) + +88 #ifdef +__ýlu¥lus + + +89  + #__BEGIN_DECLS + "C" { + + ) + +90  + #__END_DECLS + } + + ) + +92  + #__BEGIN_DECLS + + + ) + +93  + #__END_DECLS + + + ) + +102 #ià +defšed + +__ýlu¥lus + && defšed +_GLIBCPP_USE_NAMESPACES + + +103  + #__BEGIN_NAMESPACE_STD + +Çme¥aû + +¡d + { + + ) + +104  + #__END_NAMESPACE_STD + } + + ) + +105  + #__USING_NAMESPACE_STD +( +Çme +è +usšg + +¡d +::Çme; + + ) + +106  + #__BEGIN_NAMESPACE_C99 + +Çme¥aû + +__c99 + { + + ) + +107  + #__END_NAMESPACE_C99 + } + + ) + +108  + #__USING_NAMESPACE_C99 +( +Çme +è +usšg + +__c99 +::Çme; + + ) + +113  + #__BEGIN_NAMESPACE_STD + + + ) + +114  + #__END_NAMESPACE_STD + + + ) + +115  + #__USING_NAMESPACE_STD +( +Çme +) + + ) + +116  + #__BEGIN_NAMESPACE_C99 + + + ) + +117  + #__END_NAMESPACE_C99 + + + ) + +118  + #__USING_NAMESPACE_C99 +( +Çme +) + + ) + +123 #iâdeà +__BOUNDED_POINTERS__ + + +124  + #__bounded + + + ) + +125  + #__unbounded + + + ) + +126  + #__±rv®ue + + + ) + +131  + #__bos +( +±r +è + `__bužtš_objeù_size + (±r, +__USE_FORTIFY_LEVEL + > 1) + + ) + +132  + #__bos0 +( +±r +è + `__bužtš_objeù_size + (±r, 0) + + ) + +136 #ià +__GNUC_PREREQ + (2,97) + +138  + #__æex¬r + [] + + ) + +140 #ifdeà +__GNUC__ + + +141  + #__æex¬r + [0] + + ) + +143 #ià +defšed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +144  + #__æex¬r + [] + + ) + +147  + #__æex¬r + [1] + + ) + +163 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +165  + #__REDIRECT +( +Çme +, +´Ùo +, +®Ÿs +èÇm´ÙØ + `__asm__ + ( + `__ASMNAME + (#®Ÿs)) + + ) + +166 #ifdeà +__ýlu¥lus + + +167  + #__REDIRECT_NTH +( +Çme +, +´Ùo +, +®Ÿs +) \ + +168 +Çme + +´Ùo + +__THROW + + `__asm__ + ( + `__ASMNAME + (#®Ÿs)) + + ) + +170  + #__REDIRECT_NTH +( +Çme +, +´Ùo +, +®Ÿs +) \ + +171 +Çme + +´Ùo + + `__asm__ + ( + `__ASMNAME + (#®Ÿs)è +__THROW + + + ) + +173  + #__ASMNAME +( +úame +è + `__ASMNAME2 + ( +__USER_LABEL_PREFIX__ +, cÇme) + + ) + +174  + #__ASMNAME2 +( +´efix +, +úame +è + `__STRING + (´efixè + ) +cname + +187 #ià! +defšed + +__GNUC__ + || __GNUC__ < 2 + +188  + #__©Œibu‹__ +( +xyz +è + + ) + +194 #ià +__GNUC_PREREQ + (2,96) + +195  + #__©Œibu‹_m®loc__ + + `__©Œibu‹__ + (( +__m®loc__ +)) + + ) + +197  + #__©Œibu‹_m®loc__ + + + ) + +203 #ià +__GNUC_PREREQ + (2,96) + +204  + #__©Œibu‹_pu»__ + + `__©Œibu‹__ + (( +__pu»__ +)) + + ) + +206  + #__©Œibu‹_pu»__ + + + ) + +212 #ià +__GNUC_PREREQ + (3,1) + +213  + #__©Œibu‹_u£d__ + + `__©Œibu‹__ + (( +__u£d__ +)) + + ) + +214  + #__©Œibu‹_nošlše__ + + `__©Œibu‹__ + (( +__nošlše__ +)) + + ) + +216  + #__©Œibu‹_u£d__ + + `__©Œibu‹__ + (( +__unu£d__ +)) + + ) + +217  + #__©Œibu‹_nošlše__ + + + ) + +221 #ià +__GNUC_PREREQ + (3,2) + +222  + #__©Œibu‹_d•»ÿ‹d__ + + `__©Œibu‹__ + (( +__d•»ÿ‹d__ +)) + + ) + +224  + #__©Œibu‹_d•»ÿ‹d__ + + + ) + +233 #ià +__GNUC_PREREQ + (2,8) + +234  + #__©Œibu‹_fÜm©_¬g__ +( +x +è + `__©Œibu‹__ + (( + `__fÜm©_¬g__ + (x))) + + ) + +236  + #__©Œibu‹_fÜm©_¬g__ +( +x +è + + ) + +243 #ià +__GNUC_PREREQ + (2,97) + +244  + #__©Œibu‹_fÜm©_¡rfmÚ__ +( +a +, +b +) \ + +245 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__¡rfmÚ__ +, +a +, +b +))) + + ) + +247  + #__©Œibu‹_fÜm©_¡rfmÚ__ +( +a +, +b +è + + ) + +252 #ià +__GNUC_PREREQ + (3,3) + +253  + #__nÚnuÎ +( +·¿ms +è + `__©Œibu‹__ + (( +__nÚnuÎ__ +…¬ams)) + + ) + +255  + #__nÚnuÎ +( +·¿ms +) + + ) + +262 #ià! +__GNUC_PREREQ + (2,8) + +263  + #__ex‹nsiÚ__ + + + ) + +267 #ià! +__GNUC_PREREQ + (2,92) + +268  + #__»¡riù + + + ) + +274 #ià +__GNUC_PREREQ + (3,1è&& ! +defšed + +__GNUG__ + + +275  + #__»¡riù_¬r + +__»¡riù + + + ) + +277 #ifdeà +__GNUC__ + + +278  + #__»¡riù_¬r + + + ) + +280 #ià +defšed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +281  + #__»¡riù_¬r + +»¡riù + + + ) + +284  + #__»¡riù_¬r + + + ) + + @/usr/include/sys/resource.h + +19 #iâdef +_SYS_RESOURCE_H + + +20  + #_SYS_RESOURCE_H + 1 + + ) + +22  + ~<ã©u»s.h +> + +25  + ~ + +27 #iâdeà +__id_t_defšed + + +28  +__id_t + + tid_t +; + +29  + #__id_t_defšed + + + ) + +32 + g__BEGIN_DECLS + + +38 #ià +defšed + +__USE_GNU + && !defšed +__ýlu¥lus + + +39  +__¾im™_»sourû + + t__¾im™_»sourû_t +; + +40  +__ru§ge_who + + t__ru§ge_who_t +; + +41  +__´iܙy_which + + t__´iܙy_which_t +; + +43  + t__¾im™_»sourû_t +; + +44  + t__ru§ge_who_t +; + +45  + t__´iܙy_which_t +; + +50 #iâdeà +__USE_FILE_OFFSET64 + + +51  + $g‘¾im™ + ( +__¾im™_»sourû_t + +__»sourû +, + +52  +¾im™ + * +__¾im™s +è +__THROW +; + +54 #ifdeà +__REDIRECT_NTH + + +55  + `__REDIRECT_NTH + ( +g‘¾im™ +, ( +__¾im™_»sourû_t + +__»sourû +, + +56  +¾im™ + * +__¾im™s +), +g‘¾im™64 +); + +58  + #g‘¾im™ + +g‘¾im™64 + + + ) + +61 #ifdeà +__USE_LARGEFILE64 + + +62  + $g‘¾im™64 + ( +__¾im™_»sourû_t + +__»sourû +, + +63  +¾im™64 + * +__¾im™s +è +__THROW +; + +69 #iâdeà +__USE_FILE_OFFSET64 + + +70  + $£Œlim™ + ( +__¾im™_»sourû_t + +__»sourû +, + +71 +__cÚ¡ +  +¾im™ + * +__¾im™s +è +__THROW +; + +73 #ifdeà +__REDIRECT_NTH + + +74  + `__REDIRECT_NTH + ( +£Œlim™ +, ( +__¾im™_»sourû_t + +__»sourû +, + +75 +__cÚ¡ +  +¾im™ + * +__¾im™s +), + +76 +£Œlim™64 +); + +78  + #£Œlim™ + +£Œlim™64 + + + ) + +81 #ifdeà +__USE_LARGEFILE64 + + +82  + $£Œlim™64 + ( +__¾im™_»sourû_t + +__»sourû +, + +83 +__cÚ¡ +  +¾im™64 + * +__¾im™s +è +__THROW +; + +88  + $g‘ru§ge + ( +__ru§ge_who_t + +__who +,  +ru§ge + * +__u§ge +è +__THROW +; + +94  + $g‘´iܙy + ( +__´iܙy_which_t + +__which +, +id_t + +__who +è +__THROW +; + +98  + $£riܙy + ( +__´iܙy_which_t + +__which +, +id_t + +__who +,  +__´io +) + +99 +__THROW +; + +101 +__END_DECLS + + + @/usr/include/asm-i386/errno.h + +1 #iâdeà +_I386_ERRNO_H + + +2  + #_I386_ERRNO_H + + + ) + +4 #iâdeà +_LINUX_ERRNO_H + + +5  + ~ + + @/usr/include/asm-i386/posix_types.h + +1 #iâdeà +__ARCH_I386_POSIX_TYPES_H + + +2  + #__ARCH_I386_POSIX_TYPES_H + + + ) + +10  + t__k”Ãl_šo_t +; + +11  + t__k”Ãl_mode_t +; + +12  + t__k”Ãl_ƚk_t +; + +13  + t__k”Ãl_off_t +; + +14  + t__k”Ãl_pid_t +; + +15  + t__k”Ãl_c_pid_t +; + +16  + t__k”Ãl_uid_t +; + +17  + t__k”Ãl_gid_t +; + +18  + t__k”Ãl_size_t +; + +19  + t__k”Ãl_ssize_t +; + +20  + t__k”Ãl_±rdiff_t +; + +21  + t__k”Ãl_time_t +; + +22  + t__k”Ãl_su£cÚds_t +; + +23  + t__k”Ãl_þock_t +; + +24  + t__k”Ãl_tim”_t +; + +25  + t__k”Ãl_þockid_t +; + +26  + t__k”Ãl_daddr_t +; + +27 * + t__k”Ãl_ÿddr_t +; + +28  + t__k”Ãl_uid16_t +; + +29  + t__k”Ãl_gid16_t +; + +30  + t__k”Ãl_uid32_t +; + +31  + t__k”Ãl_gid32_t +; + +33  + t__k”Ãl_Þd_uid_t +; + +34  + t__k”Ãl_Þd_gid_t +; + +35  + t__k”Ãl_Þd_dev_t +; + +37 #ià( +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +)è|| ( +__STDC_VERSION__ + >= 199901L) + +38  + t__k”Ãl_loff_t +; + +42 #ià +defšed +( +__KERNEL__ +è|| defšed( +__USE_ALL +) + +43  + mv® +[2]; + +45  + m__v® +[2]; + +47 } + t__k”Ãl_fsid_t +; + +49 #ià +defšed +( +__KERNEL__ +è|| !defšed( +__GLIBC__ +) || (__GLIBC__ < 2) + +51 #undeà +__FD_SET + + +52  + #__FD_SET +( +fd +, +fd£ +) \ + +53 +__asm__ + + `__vÞ©že__ +("btsl %1,%0": \ + +54 "=m" (*( +__k”Ãl_fd_£t + *è( +fd£ +)):"r" ((è( +fd +))) + + ) + +56 #undeà +__FD_CLR + + +57  + #__FD_CLR +( +fd +, +fd£ +) \ + +58 +__asm__ + + `__vÞ©že__ +("btrl %1,%0": \ + +59 "=m" (*( +__k”Ãl_fd_£t + *è( +fd£ +)):"r" ((è( +fd +))) + + ) + +61 #undeà +__FD_ISSET + + +62  + #__FD_ISSET +( +fd +, +fd£ +è( + `__ex‹nsiÚ__ + ({ \ + +63  +__»suÉ +; \ + +64 +__asm__ + + `__vÞ©že__ +("btl %1,%2 ; setb %0" \ + +65 :"=q" ( +__»suÉ +è:"r" ((è( +fd +)), \ + +66 "m" (*( +__k”Ãl_fd_£t + *è( +fd£ +))); \ + +67 +__»suÉ +; })) + + ) + +69 #undeà +__FD_ZERO + + +70  + #__FD_ZERO +( +fd£ +) \ + +72  +__d0 +, +__d1 +; \ + +73 +__asm__ + + `__vÞ©že__ +("cld ;„ep ; stosl" \ + +74 :"=m" (*( +__k”Ãl_fd_£t + *è( +fd£ +)), \ + +75 "=&c" ( +__d0 +), "=&D" ( +__d1 +) \ + +76 :"a" (0), "1" ( +__FDSET_LONGS +), \ + +77 "2" (( +__k”Ãl_fd_£t + *è( +fd£ +)) : "memory"); \ + +78 } 0) + + ) + + @/usr/include/asm-x86_64/errno.h + +1 #iâdeà +_X8664_ERRNO_H + + +2  + #_X8664_ERRNO_H + + + ) + +4 #iâdeà +_LINUX_ERRNO_H + + +5  + ~ + + @/usr/include/asm-x86_64/posix_types.h + +1 #iâdeà +_ASM_X86_64_POSIX_TYPES_H + + +2  + #_ASM_X86_64_POSIX_TYPES_H + + + ) + +10  + t__k”Ãl_šo_t +; + +11  + t__k”Ãl_mode_t +; + +12  + t__k”Ãl_ƚk_t +; + +13  + t__k”Ãl_off_t +; + +14  + t__k”Ãl_pid_t +; + +15  + t__k”Ãl_c_pid_t +; + +16  + t__k”Ãl_uid_t +; + +17  + t__k”Ãl_gid_t +; + +18  + t__k”Ãl_size_t +; + +19  + t__k”Ãl_ssize_t +; + +20  + t__k”Ãl_±rdiff_t +; + +21  + t__k”Ãl_time_t +; + +22  + t__k”Ãl_su£cÚds_t +; + +23  + t__k”Ãl_þock_t +; + +24  + t__k”Ãl_tim”_t +; + +25  + t__k”Ãl_þockid_t +; + +26  + t__k”Ãl_daddr_t +; + +27 * + t__k”Ãl_ÿddr_t +; + +28  + t__k”Ãl_uid16_t +; + +29  + t__k”Ãl_gid16_t +; + +31 #ià( +defšed +( +__GNUC__ +è&& !defšed( +__STRICT_ANSI__ +)è|| ( +__STDC_VERSION__ + >= 199901L) + +32  + t__k”Ãl_loff_t +; + +36  + mv® +[2]; + +37 } + t__k”Ãl_fsid_t +; + +39  + t__k”Ãl_Þd_uid_t +; + +40  + t__k”Ãl_Þd_gid_t +; + +41  +__k”Ãl_uid_t + + t__k”Ãl_uid32_t +; + +42  +__k”Ãl_gid_t + + t__k”Ãl_gid32_t +; + +44  + t__k”Ãl_Þd_dev_t +; + + @/usr/include/bits/libc-lock.h + +21 #iâdeà +_BITS_LIBC_LOCK_H + + +22  + #_BITS_LIBC_LOCK_H + 1 + + ) + +24  + ~<±h»ad.h +> + +26 #ià +defšed + +_LIBC + && !defšed +NOT_IN_libc + + +27  + ~ + +31 #ià +defšed +( +_LIBC +è|| defšed( +_IO_MTSAFE_IO +) + +32  +±h»ad_mu‹x_t + + t__libc_lock_t +; + +33 ¡ruù { +±h»ad_mu‹x_t + + mmu‹x +; } + t__libc_lock_»cursive_t +; + +34 #ifdeà +__USE_UNIX98 + + +35  +±h»ad_rwlock_t + + t__libc_rwlock_t +; + +37  +__libc_rwlock_Ýaque__ + + t__libc_rwlock_t +; + +39  +__libc_lock_»cursive_t + + t__¹ld_lock_»cursive_t +; + +41  +__libc_lock_Ýaque__ + + t__libc_lock_t +; + +42  +__libc_lock_»cursive_Ýaque__ + + t__libc_lock_»cursive_t +; + +43  +__libc_rwlock_Ýaque__ + + t__libc_rwlock_t +; + +47  +±h»ad_key_t + + t__libc_key_t +; + +56  + #__libc_lock_defše +( +CLASS +, +NAME +) \ + +57 +CLASS + +__libc_lock_t + +NAME +; + + ) + +58  + #__libc_rwlock_defše +( +CLASS +, +NAME +) \ + +59 +CLASS + +__libc_rwlock_t + +NAME +; + + ) + +60  + #__libc_lock_defše_»cursive +( +CLASS +, +NAME +) \ + +61 +CLASS + +__libc_lock_»cursive_t + +NAME +; + + ) + +62  + #__¹ld_lock_defše_»cursive +( +CLASS +, +NAME +) \ + +63 +CLASS + +__¹ld_lock_»cursive_t + +NAME +; + + ) + +74 #ifdeà +__LT_INITIALIZER_NOT_ZERO + + +75  + #__libc_lock_defše_š™Ÿlized +( +CLASS +, +NAME +) \ + +76 +CLASS + +__libc_lock_t + +NAME + = +PTHREAD_MUTEX_INITIALIZER +; + + ) + +78  + #__libc_lock_defše_š™Ÿlized +( +CLASS +, +NAME +) \ + +79 +CLASS + +__libc_lock_t + +NAME +; + + ) + +82  + #__libc_rwlock_defše_š™Ÿlized +( +CLASS +, +NAME +) \ + +83 +CLASS + +__libc_rwlock_t + +NAME + = +PTHREAD_RWLOCK_INITIALIZER +; + + ) + +87  + #__libc_lock_defše_š™Ÿlized_»cursive +( +CLASS +, +NAME +) \ + +88 +CLASS + +__libc_lock_»cursive_t + +NAME + = +_LIBC_LOCK_RECURSIVE_INITIALIZER +; + + ) + +89  + #_LIBC_LOCK_RECURSIVE_INITIALIZER + \ + +90 { +PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +} + + ) + +92  + #__¹ld_lock_defše_š™Ÿlized_»cursive +( +CLASS +, +NAME +) \ + +93 +CLASS + +__¹ld_lock_»cursive_t + +NAME + = +_RTLD_LOCK_RECURSIVE_INITIALIZER +; + + ) + +94  + #_RTLD_LOCK_RECURSIVE_INITIALIZER + \ + +95 { +PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +} + + ) + +97 #ià +defšed + +_LIBC + && defšed +IS_IN_lib±h»ad + + +98  + #__libc_maybe_ÿÎ +( +FUNC +, +ARGS +, +ELSE +èFUNC + ) +ARGS + +100 #ià +defšed + +__PIC__ + || (defšed +_LIBC + && defšed +SHARED +) + +101  + #__libc_maybe_ÿÎ +( +FUNC +, +ARGS +, +ELSE +) \ + +102 ( + `__ex‹nsiÚ__ + ({ + `__ty³of + ( +FUNC +è* +_â + = (FUNC); \ + +103 +_â + !ð +NULL + ? (*_âè +ARGS + : +ELSE +; })) + + ) + +105  + #__libc_maybe_ÿÎ +( +FUNC +, +ARGS +, +ELSE +) \ + +106 ( +FUNC + !ð +NULL + ? FUNC +ARGS + : +ELSE +) + + ) + +109 #ià +defšed + +_LIBC + && !defšed +NOT_IN_libc + && defšed +SHARED + + +110  + #__libc_maybe_ÿÎ2 +( +FUNC +, +ARGS +, +ELSE +) \ + +111 ({ + `__bužtš_ex³ù + ( +__libc_±h»ad_funùiÚs +. +±r_ +## +FUNC + !ð +NULL +, 0) \ + +112 ? +__libc_±h»ad_funùiÚs +. +±r_ +## +FUNC + +ARGS + : +ELSE +; }) + + ) + +114  + #__libc_maybe_ÿÎ2 +( +FUNC +, +ARGS +, +ELSE +è + `__libc_maybe_ÿÎ + ( +__ +##FUNC, ARGS, ELSE) + + ) + +119 #ià +defšed + +_LIBC + && !defšed +NOT_IN_libc + && defšed +SHARED + + +120  + #__libc_lock_š™ +( +NAME +) \ + +122 ( +NAME +). +__m_couÁ + = 0; \ + +123 ( +NAME +). +__m_owÃr + = +NULL +; \ + +124 ( +NAME +). +__m_kšd + = +PTHREAD_MUTEX_TIMED_NP +; \ + +125 ( +NAME +). +__m_lock +. +__¡©us + = 0; \ + +126 ( +NAME +). +__m_lock +. +__¥šlock + = +__LT_SPINLOCK_INIT +; \ + +127 0; }) + + ) + +129  + #__libc_lock_š™ +( +NAME +) \ + +130 ( + `__libc_maybe_ÿÎ2 + ( +±h»ad_mu‹x_š™ +, (&( +NAME +), +NULL +), 0)) + + ) + +132  + #__libc_rwlock_š™ +( +NAME +) \ + +133 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_rwlock_š™ +, (&( +NAME +), +NULL +), 0)); + + ) + +136 #ià +defšed + +_LIBC + && !defšed +NOT_IN_libc + && defšed +SHARED + + +137  + #__libc_lock_š™_»cursive +( +NAME +) \ + +139 ( +NAME +). +mu‹x +. +__m_couÁ + = 0; \ + +140 ( +NAME +). +mu‹x +. +__m_owÃr + = +NULL +; \ + +141 ( +NAME +). +mu‹x +. +__m_kšd + = +PTHREAD_MUTEX_RECURSIVE_NP +; \ + +142 ( +NAME +). +mu‹x +. +__m_lock +. +__¡©us + = 0; \ + +143 ( +NAME +). +mu‹x +. +__m_lock +. +__¥šlock + = +__LT_SPINLOCK_INIT +; \ + +144 0; }) + + ) + +146  + #__libc_lock_š™_»cursive +( +NAME +) \ + +148 ià( +__±h»ad_mu‹x_š™ + !ð +NULL +) \ + +150 +±h»ad_mu‹x©Œ_t + +__©Œ +; \ + +151 + `__±h»ad_mu‹x©Œ_š™ + (& +__©Œ +); \ + +152 + `__±h»ad_mu‹x©Œ_£‰y³ + (& +__©Œ +, +PTHREAD_MUTEX_RECURSIVE_NP +); \ + +153 + `__±h»ad_mu‹x_š™ + (&( +NAME +). +mu‹x +, & +__©Œ +); \ + +154 + `__±h»ad_mu‹x©Œ_de¡roy + (& +__©Œ +); \ + +156 } 0); + + ) + +158  + #__¹ld_lock_š™_»cursive +( +NAME +) \ + +159 + `__libc_lock_š™_»cursive + ( +NAME +) + + ) + +164  + #__libc_lock_fši +( +NAME +) \ + +165 ( + `__libc_maybe_ÿÎ2 + ( +±h»ad_mu‹x_de¡roy +, (&( +NAME +)), 0)); + + ) + +166  + #__libc_rwlock_fši +( +NAME +) \ + +167 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_rwlock_de¡roy +, (&( +NAME +)), 0)); + + ) + +170  + #__libc_lock_fši_»cursive +( +NAME +è + `__libc_lock_fši + ((NAME). +mu‹x +) + + ) + +171  + #__¹ld_lock_fši_»cursive +( +NAME +è + `__libc_lock_fši_»cursive + (NAME) + + ) + +174  + #__libc_lock_lock +( +NAME +) \ + +175 ( + `__libc_maybe_ÿÎ2 + ( +±h»ad_mu‹x_lock +, (&( +NAME +)), 0)); + + ) + +176  + #__libc_rwlock_rdlock +( +NAME +) \ + +177 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_rwlock_rdlock +, (&( +NAME +)), 0)); + + ) + +178  + #__libc_rwlock_w¾ock +( +NAME +) \ + +179 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_rwlock_w¾ock +, (&( +NAME +)), 0)); + + ) + +182  + #__libc_lock_lock_»cursive +( +NAME +è + `__libc_lock_lock + ((NAME). +mu‹x +) + + ) + +185  + #__libc_lock_Œylock +( +NAME +) \ + +186 ( + `__libc_maybe_ÿÎ2 + ( +±h»ad_mu‹x_Œylock +, (&( +NAME +)), 0)) + + ) + +187  + #__libc_rwlock_Œyrdlock +( +NAME +) \ + +188 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_rwlock_Œyrdlock +, (&( +NAME +)), 0)) + + ) + +189  + #__libc_rwlock_Œyw¾ock +( +NAME +) \ + +190 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_rwlock_Œyw¾ock +, (&( +NAME +)), 0)) + + ) + +193  + #__libc_lock_Œylock_»cursive +( +NAME +è + `__libc_lock_Œylock + ((NAME). +mu‹x +) + + ) + +194  + #__¹ld_lock_Œylock_»cursive +( +NAME +) \ + +195 + `__libc_lock_Œylock_»cursive + ( +NAME +) + + ) + +198  + #__libc_lock_uÆock +( +NAME +) \ + +199 ( + `__libc_maybe_ÿÎ2 + ( +±h»ad_mu‹x_uÆock +, (&( +NAME +)), 0)); + + ) + +200  + #__libc_rwlock_uÆock +( +NAME +) \ + +201 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_rwlock_uÆock +, (&( +NAME +)), 0)); + + ) + +204  + #__libc_lock_uÆock_»cursive +( +NAME +è + `__libc_lock_uÆock + ((NAME). +mu‹x +) + + ) + +206 #ià +defšed + +_LIBC + && defšed +SHARED + + +207  + #__¹ld_lock_deçuÉ_lock_»cursive +( +lock +) \ + +208 ++(( +±h»ad_mu‹x_t + *)( +lock +))-> +__m_couÁ +; + + ) + +210  + #__¹ld_lock_deçuÉ_uÆock_»cursive +( +lock +) \ + +211 --(( +±h»ad_mu‹x_t + *)( +lock +))-> +__m_couÁ +; + + ) + +213  + #__¹ld_lock_lock_»cursive +( +NAME +) \ + +214 + `GL +( +dl_¹ld_lock_»cursive +è(&( +NAME +). +mu‹x +) + + ) + +216  + #__¹ld_lock_uÆock_»cursive +( +NAME +) \ + +217 + `GL +( +dl_¹ld_uÆock_»cursive +è(&( +NAME +). +mu‹x +) + + ) + +219  + #__¹ld_lock_lock_»cursive +( +NAME +è + `__libc_lock_lock_»cursive + (NAME) + + ) + +220  + #__¹ld_lock_uÆock_»cursive +( +NAME +è + `__libc_lock_uÆock_»cursive + (NAME) + + ) + +224 #ià +PTHREAD_ONCE_INIT + == 0 + +227  + #__libc_Úû_defše +( +CLASS +, +NAME +) \ + +228 +CLASS + +±h»ad_Úû_t + +NAME + + + ) + +230  + #__libc_Úû_defše +( +CLASS +, +NAME +) \ + +231 +CLASS + +±h»ad_Úû_t + +NAME + = +PTHREAD_ONCE_INIT + + + ) + +235  + #__libc_Úû +( +ONCE_CONTROL +, +INIT_FUNCTION +) \ + +237 ià( +__±h»ad_Úû + !ð +NULL +) \ + +238 + `__±h»ad_Úû + (&( +ONCE_CONTROL +), ( +INIT_FUNCTION +)); \ + +239 ià(( +ONCE_CONTROL +è=ð +PTHREAD_ONCE_INIT +) { \ + +240 + `INIT_FUNCTION + (); \ + +241 ( +ONCE_CONTROL +) = 2; \ + +243 } 0) + + ) + +247  + #__libc_þ—nup_»giÚ_¡¬t +( +DOIT +, +FCT +, +ARG +) \ + +248 {  +_±h»ad_þ—nup_bufãr + +_bufãr +; \ + +249  +_avaž + = ( +DOIT +è&& +_±h»ad_þ—nup_push_deãr + !ð +NULL +; \ + +250 ià( +_avaž +) { \ + +251 + `_±h»ad_þ—nup_push_deãr + (& +_bufãr +, ( +FCT +), ( +ARG +)); \ + +252 } + + ) + +255  + #__libc_þ—nup_»giÚ_’d +( +DOIT +) \ + +256 ià( +_avaž +) { \ + +257 + `_±h»ad_þ—nup_pÝ_»¡Üe + (& +_bufãr +, ( +DOIT +)); \ + +259 } + + ) + +262  + #__libc_þ—nup_’d +( +DOIT +) \ + +263 ià( +_avaž +) { \ + +264 + `_±h»ad_þ—nup_pÝ_»¡Üe + (& +_bufãr +, ( +DOIT +)); \ + +265 } + + ) + +267  + #__libc_þ—nup_push +( +fù +, +¬g +) \ + +268 {  +_±h»ad_þ—nup_bufãr + +_bufãr +; \ + +269 + `__libc_maybe_ÿÎ + ( +_±h»ad_þ—nup_push +, (& +_bufãr +, ( +fù +), ( +¬g +)), 0) + + ) + +271  + #__libc_þ—nup_pÝ +( +execu‹ +) \ + +272 + `__libc_maybe_ÿÎ + ( +_±h»ad_þ—nup_pÝ +, (& +_bufãr +, +execu‹ +), 0); \ + +273 } + + ) + +276  + #__libc_key_ü—‹ +( +KEY +, +DESTRUCTOR +) \ + +277 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_key_ü—‹ +, ( +KEY +, +DESTRUCTOR +), 1)) + + ) + +280  + #__libc_g‘¥ecific +( +KEY +) \ + +281 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_g‘¥ecific +, ( +KEY +), +NULL +)) + + ) + +284  + #__libc_£t¥ecific +( +KEY +, +VALUE +) \ + +285 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_£t¥ecific +, ( +KEY +, +VALUE +), 0)) + + ) + +289  + #__libc_©fÜk +( +PREPARE +, +PARENT +, +CHILD +) \ + +290 ( + `__libc_maybe_ÿÎ + ( +__±h»ad_©fÜk +, ( +PREPARE +, +PARENT +, +CHILD +), 0)) + + ) + +295  +__±h»ad_mu‹x_š™ + ( +±h»ad_mu‹x_t + * +__mu‹x +, + +296 +__cÚ¡ + +±h»ad_mu‹x©Œ_t + * +__mu‹x_©Œ +); + +298  +__±h»ad_mu‹x_de¡roy + ( +±h»ad_mu‹x_t + * +__mu‹x +); + +300  +__±h»ad_mu‹x_Œylock + ( +±h»ad_mu‹x_t + * +__mu‹x +); + +302  +__±h»ad_mu‹x_lock + ( +±h»ad_mu‹x_t + * +__mu‹x +); + +304  +__±h»ad_mu‹x_uÆock + ( +±h»ad_mu‹x_t + * +__mu‹x +); + +306  +__±h»ad_mu‹x©Œ_š™ + ( +±h»ad_mu‹x©Œ_t + * +__©Œ +); + +308  +__±h»ad_mu‹x©Œ_de¡roy + ( +±h»ad_mu‹x©Œ_t + * +__©Œ +); + +310  +__±h»ad_mu‹x©Œ_£‰y³ + ( +±h»ad_mu‹x©Œ_t + * +__©Œ +, + +311  +__kšd +); + +313 #ifdeà +__USE_UNIX98 + + +314  +__±h»ad_rwlock_š™ + ( +±h»ad_rwlock_t + * +__rwlock +, + +315 +__cÚ¡ + +±h»ad_rwlock©Œ_t + * +__©Œ +); + +317  +__±h»ad_rwlock_de¡roy + ( +±h»ad_rwlock_t + * +__rwlock +); + +319  +__±h»ad_rwlock_rdlock + ( +±h»ad_rwlock_t + * +__rwlock +); + +321  +__±h»ad_rwlock_Œyrdlock + ( +±h»ad_rwlock_t + * +__rwlock +); + +323  +__±h»ad_rwlock_w¾ock + ( +±h»ad_rwlock_t + * +__rwlock +); + +325  +__±h»ad_rwlock_Œyw¾ock + ( +±h»ad_rwlock_t + * +__rwlock +); + +327  +__±h»ad_rwlock_uÆock + ( +±h»ad_rwlock_t + * +__rwlock +); + +330  +__±h»ad_key_ü—‹ + ( +±h»ad_key_t + * +__key +, + +331 (* +__de¡r_funùiÚ +) (*)); + +333  + `__±h»ad_£t¥ecific + ( +±h»ad_key_t + +__key +, + +334 +__cÚ¡ + * +__poš‹r +); + +336 * + `__±h»ad_g‘¥ecific + ( +±h»ad_key_t + +__key +); + +338  + `__±h»ad_Úû + ( +±h»ad_Úû_t + * +__Úû_cÚŒÞ +, + +339 (* +__š™_routše +) ()); + +341  + `__±h»ad_©fÜk + ((* +__´•¬e +) (), + +342 (* +__·»Á +) (), + +343 (* +__chžd +) ()); + +349 #iâdeà +__NO_WEAK_PTHREAD_ALIASES + + +350 #ifdeà +w—k_ex‹º + + +351 #ià +_LIBC + + +352  + ~ + +354  + #BP_SYM + ( +sym +è + ) +sym + +356 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x_š™ +)) + +357 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x_de¡roy +)) + +358 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x_lock +)) + +359 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x_Œylock +)) + +360 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x_uÆock +)) + +361 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x©Œ_š™ +)) + +362 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x©Œ_de¡roy +)) + +363 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_mu‹x©Œ_£‰y³ +)) + +364 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_rwlock_š™ +)) + +365 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_rwlock_de¡roy +)) + +366 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_rwlock_rdlock +)) + +367 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_rwlock_Œyrdlock +)) + +368 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_rwlock_w¾ock +)) + +369 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_rwlock_Œyw¾ock +)) + +370 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_rwlock_uÆock +)) + +371 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_key_ü—‹ +)) + +372 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_£t¥ecific +)) + +373 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_g‘¥ecific +)) + +374 + `w—k_ex‹º + ( + $BP_SYM + ( +__±h»ad_Úû +)) + +375 + $w—k_ex‹º + ( +__±h»ad_š™Ÿlize +) + +376 + $w—k_ex‹º + ( +__±h»ad_©fÜk +) + +377 + `w—k_ex‹º + ( + $BP_SYM + ( +_±h»ad_þ—nup_push +)) + +378 + `w—k_ex‹º + ( + $BP_SYM + ( +_±h»ad_þ—nup_pÝ +)) + +379 + `w—k_ex‹º + ( + $BP_SYM + ( +_±h»ad_þ—nup_push_deãr +)) + +380 + `w—k_ex‹º + ( + $BP_SYM + ( +_±h»ad_þ—nup_pÝ_»¡Üe +)) + +382 #´agm¨ +w—k + +__±h»ad_mu‹x_š™ + + +383 #´agm¨ +w—k + +__±h»ad_mu‹x_de¡roy + + +384 #´agm¨ +w—k + +__±h»ad_mu‹x_lock + + +385 #´agm¨ +w—k + +__±h»ad_mu‹x_Œylock + + +386 #´agm¨ +w—k + +__±h»ad_mu‹x_uÆock + + +387 #´agm¨ +w—k + +__±h»ad_mu‹x©Œ_š™ + + +388 #´agm¨ +w—k + +__±h»ad_mu‹x©Œ_de¡roy + + +389 #´agm¨ +w—k + +__±h»ad_mu‹x©Œ_£‰y³ + + +390 #´agm¨ +w—k + +__±h»ad_rwlock_de¡roy + + +391 #´agm¨ +w—k + +__±h»ad_rwlock_rdlock + + +392 #´agm¨ +w—k + +__±h»ad_rwlock_Œyrdlock + + +393 #´agm¨ +w—k + +__±h»ad_rwlock_w¾ock + + +394 #´agm¨ +w—k + +__±h»ad_rwlock_Œyw¾ock + + +395 #´agm¨ +w—k + +__±h»ad_rwlock_uÆock + + +396 #´agm¨ +w—k + +__±h»ad_key_ü—‹ + + +397 #´agm¨ +w—k + +__±h»ad_£t¥ecific + + +398 #´agm¨ +w—k + +__±h»ad_g‘¥ecific + + +399 #´agm¨ +w—k + +__±h»ad_Úû + + +400 #´agm¨ +w—k + +__±h»ad_š™Ÿlize + + +401 #´agm¨ +w—k + +__±h»ad_©fÜk + + +402 #´agm¨ +w—k + +_±h»ad_þ—nup_push_deãr + + +403 #´agm¨ +w—k + +_±h»ad_þ—nup_pÝ_»¡Üe + + +404 #´agm¨ +w—k + +_±h»ad_þ—nup_push + + +405 #´agm¨ +w—k + +_±h»ad_þ—nup_pÝ + + +411  + #__libc_mu‹x_uÆock + +__±h»ad_mu‹x_uÆock + + + ) + + @/usr/include/bits/resource.h + +21 #iâdeà +_SYS_RESOURCE_H + + +25  + ~ + +33 + e__¾im™_»sourû + + +36 + mRLIMIT_CPU + = 0, + +37  + #RLIMIT_CPU + +RLIMIT_CPU + + + ) + +40 + mRLIMIT_FSIZE + = 1, + +41  + #RLIMIT_FSIZE + +RLIMIT_FSIZE + + + ) + +44 + mRLIMIT_DATA + = 2, + +45  + #RLIMIT_DATA + +RLIMIT_DATA + + + ) + +48 + mRLIMIT_STACK + = 3, + +49  + #RLIMIT_STACK + +RLIMIT_STACK + + + ) + +52 + mRLIMIT_CORE + = 4, + +53  + #RLIMIT_CORE + +RLIMIT_CORE + + + ) + +59 + m__RLIMIT_RSS + = 5, + +60  + #RLIMIT_RSS + +__RLIMIT_RSS + + + ) + +63 + mRLIMIT_NOFILE + = 7, + +64 + m__RLIMIT_OFILE + = +RLIMIT_NOFILE +, + +65  + #RLIMIT_NOFILE + +RLIMIT_NOFILE + + + ) + +66  + #RLIMIT_OFILE + +__RLIMIT_OFILE + + + ) + +69 + mRLIMIT_AS + = 9, + +70  + #RLIMIT_AS + +RLIMIT_AS + + + ) + +73 + m__RLIMIT_NPROC + = 6, + +74  + #RLIMIT_NPROC + +__RLIMIT_NPROC + + + ) + +77 + m__RLIMIT_MEMLOCK + = 8, + +78  + #RLIMIT_MEMLOCK + +__RLIMIT_MEMLOCK + + + ) + +81 + m__RLIMIT_LOCKS + = 10, + +82  + #RLIMIT_LOCKS + +__RLIMIT_LOCKS + + + ) + +85 + m__RLIMIT_SIGPENDING + = 11, + +86  + #RLIMIT_SIGPENDING + +__RLIMIT_SIGPENDING + + + ) + +89 + m__RLIMIT_MSGQUEUE + = 12, + +90  + #RLIMIT_MSGQUEUE + +__RLIMIT_MSGQUEUE + + + ) + +95 + m__RLIMIT_NICE + = 13, + +96  + #RLIMIT_NICE + +__RLIMIT_NICE + + + ) + +100 + m__RLIMIT_RTPRIO + = 14, + +101  + #RLIMIT_RTPRIO + +__RLIMIT_RTPRIO + + + ) + +103 + m__RLIMIT_NLIMITS + = 15, + +104 + m__RLIM_NLIMITS + = +__RLIMIT_NLIMITS + + +105  + #RLIMIT_NLIMITS + +__RLIMIT_NLIMITS + + + ) + +106  + #RLIM_NLIMITS + +__RLIM_NLIMITS + + + ) + +110 #iâdeà +__USE_FILE_OFFSET64 + + +111  + #RLIM_INFINITY + (()(~0UL)) + + ) + +113  + #RLIM_INFINITY + 0xffffffffffffffffuLL + + ) + +116 #ifdeà +__USE_LARGEFILE64 + + +117  + #RLIM64_INFINITY + 0xffffffffffffffffuLL + + ) + +121  + #RLIM_SAVED_MAX + +RLIM_INFINITY + + + ) + +122  + #RLIM_SAVED_CUR + +RLIM_INFINITY + + + ) + +126 #iâdeà +__USE_FILE_OFFSET64 + + +127  +__¾im_t + + t¾im_t +; + +129  +__¾im64_t + + t¾im_t +; + +131 #ifdeà +__USE_LARGEFILE64 + + +132  +__¾im64_t + + t¾im64_t +; + +135  + s¾im™ + + +138 +¾im_t + + m¾im_cur +; + +140 +¾im_t + + m¾im_max +; + +143 #ifdeà +__USE_LARGEFILE64 + + +144  + s¾im™64 + + +147 +¾im64_t + + m¾im_cur +; + +149 +¾im64_t + + m¾im_max +; + +154 + e__ru§ge_who + + +157 + mRUSAGE_SELF + = 0, + +158  + #RUSAGE_SELF + +RUSAGE_SELF + + + ) + +161 + mRUSAGE_CHILDREN + = -1 + +162  + #RUSAGE_CHILDREN + +RUSAGE_CHILDREN + + + ) + +165  + #__Ãed_timev® + + + ) + +166  + ~ + +169  + sru§ge + + +172  +timev® + + mru_utime +; + +174  +timev® + + mru_¡ime +; + +176  + mru_maxrss +; + +179  + mru_ixrss +; + +181  + mru_idrss +; + +183  + mru_i¤ss +; + +186  + mru_mšæt +; + +188  + mru_majæt +; + +190  + mru_nsw­ +; + +193  + mru_šblock +; + +195  + mru_oublock +; + +197  + mru_msg¢d +; + +199  + mru_msgrcv +; + +201  + mru_nsigÇls +; + +205  + mru_nvcsw +; + +208  + mru_nivcsw +; + +212  + #PRIO_MIN + -20 + + ) + +213  + #PRIO_MAX + 20 + + ) + +217 + e__´iܙy_which + + +219 + mPRIO_PROCESS + = 0, + +220  + #PRIO_PROCESS + +PRIO_PROCESS + + + ) + +221 + mPRIO_PGRP + = 1, + +222  + #PRIO_PGRP + +PRIO_PGRP + + + ) + +223 + mPRIO_USER + = 2 + +224  + #PRIO_USER + +PRIO_USER + + + ) + + @/usr/include/bits/sigaction.h + +20 #iâdeà +_SIGNAL_H + + +25  + ssigaùiÚ + + +28 #ifdeà +__USE_POSIX199309 + + +32 +__sighªdËr_t + + m§_hªdËr +; + +34 (* + m§_sigaùiÚ +è(, + msigšfo_t + *, *); + +36 + m__sigaùiÚ_hªdËr +; + +37  + #§_hªdËr + +__sigaùiÚ_hªdËr +. +§_hªdËr + + + ) + +38  + #§_sigaùiÚ + +__sigaùiÚ_hªdËr +. +§_sigaùiÚ + + + ) + +40 +__sighªdËr_t + + m§_hªdËr +; + +44 +__sig£t_t + + m§_mask +; + +47  + m§_æags +; + +50 (* + m§_»¡Ü” +) (); + +54  + #SA_NOCLDSTOP + 1 + + ) + +55  + #SA_NOCLDWAIT + 2 + + ) + +56  + #SA_SIGINFO + 4 + + ) + +58 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_MISC + + +59  + #SA_ONSTACK + 0x08000000 + + ) + +60  + #SA_RESTART + 0x10000000 + + ) + +61  + #SA_NODEFER + 0x40000000 + + ) + +63  + #SA_RESETHAND + 0x80000000 + + ) + +65 #ifdeà +__USE_MISC + + +66  + #SA_INTERRUPT + 0x20000000 + + ) + +69  + #SA_NOMASK + +SA_NODEFER + + + ) + +70  + #SA_ONESHOT + +SA_RESETHAND + + + ) + +71  + #SA_STACK + +SA_ONSTACK + + + ) + +75  + #SIG_BLOCK + 0 + + ) + +76  + #SIG_UNBLOCK + 1 + + ) + +77  + #SIG_SETMASK + 2 + + ) + + @/usr/include/bits/sigcontext.h + +19 #ià! +defšed + +_SIGNAL_H + && !defšed +_SYS_UCONTEXT_H + + +23 #iâdeà +sigcڋxt_¡ruù + + +26  + #sigcڋxt_¡ruù + +sigcڋxt + + + ) + +28  + ~ + + @/usr/include/bits/signum.h + +20 #ifdef +_SIGNAL_H + + +23  + #SIG_ERR + (( +__sighªdËr_t +è-1è + + ) + +24  + #SIG_DFL + (( +__sighªdËr_t +è0è + + ) + +25  + #SIG_IGN + (( +__sighªdËr_t +è1è + + ) + +27 #ifdeà +__USE_UNIX98 + + +28  + #SIG_HOLD + (( +__sighªdËr_t +è2è + + ) + +33  + #SIGHUP + 1 + + ) + +34  + #SIGINT + 2 + + ) + +35  + #SIGQUIT + 3 + + ) + +36  + #SIGILL + 4 + + ) + +37  + #SIGTRAP + 5 + + ) + +38  + #SIGABRT + 6 + + ) + +39  + #SIGIOT + 6 + + ) + +40  + #SIGBUS + 7 + + ) + +41  + #SIGFPE + 8 + + ) + +42  + #SIGKILL + 9 + + ) + +43  + #SIGUSR1 + 10 + + ) + +44  + #SIGSEGV + 11 + + ) + +45  + #SIGUSR2 + 12 + + ) + +46  + #SIGPIPE + 13 + + ) + +47  + #SIGALRM + 14 + + ) + +48  + #SIGTERM + 15 + + ) + +49  + #SIGSTKFLT + 16 + + ) + +50  + #SIGCLD + +SIGCHLD + + + ) + +51  + #SIGCHLD + 17 + + ) + +52  + #SIGCONT + 18 + + ) + +53  + #SIGSTOP + 19 + + ) + +54  + #SIGTSTP + 20 + + ) + +55  + #SIGTTIN + 21 + + ) + +56  + #SIGTTOU + 22 + + ) + +57  + #SIGURG + 23 + + ) + +58  + #SIGXCPU + 24 + + ) + +59  + #SIGXFSZ + 25 + + ) + +60  + #SIGVTALRM + 26 + + ) + +61  + #SIGPROF + 27 + + ) + +62  + #SIGWINCH + 28 + + ) + +63  + #SIGPOLL + +SIGIO + + + ) + +64  + #SIGIO + 29 + + ) + +65  + #SIGPWR + 30 + + ) + +66  + #SIGSYS + 31 + + ) + +67  + #SIGUNUSED + 31 + + ) + +69  + #_NSIG + 65 + + ) + +72  + #SIGRTMIN + ( + `__libc_cu¼’t_sig¹mš + ()) + + ) + +73  + #SIGRTMAX + ( + `__libc_cu¼’t_sig¹max + ()) + + ) + +77  + #__SIGRTMIN + 32 + + ) + +78  + #__SIGRTMAX + ( +_NSIG + - 1) + + ) + + @/usr/include/bits/sigstack.h + +20 #iâdeà +_SIGNAL_H + + +26  + ssig¡ack + + +28 * + mss_¥ +; + +29  + mss_Ú¡ack +; + +36 + mSS_ONSTACK + = 1, + +37  + #SS_ONSTACK + +SS_ONSTACK + + + ) + +38 + mSS_DISABLE + + +39  + #SS_DISABLE + +SS_DISABLE + + + ) + +43  + #MINSIGSTKSZ + 2048 + + ) + +46  + #SIGSTKSZ + 8192 + + ) + +50  + ssig®t¡ack + + +52 * + mss_¥ +; + +53  + mss_æags +; + +54 +size_t + + mss_size +; + +55 } + t¡ack_t +; + + @/usr/include/bits/sigthread.h + +20 #iâdeà +_BITS_SIGTHREAD_H + + +21  + #_BITS_SIGTHREAD_H + 1 + + ) + +23 #ià! +defšed + +_SIGNAL_H + && !defšed +_PTHREAD_H + + +31  + $±h»ad_sigmask + ( +__how +, + +32 +__cÚ¡ + +__sig£t_t + * +__»¡riù + +__Ãwmask +, + +33 +__sig£t_t + * +__»¡riù + +__Þdmask +) +__THROW +; + +36  + $±h»ad_kžl + ( +±h»ad_t + +__th»adid +,  +__signo +è +__THROW +; + + @/usr/include/gconv.h + +23 #iâdeà +_GCONV_H + + +24  + #_GCONV_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +27  + #__Ãed_mb¡©e_t + + + ) + +28  + ~ + +29  + #__Ãed_size_t + + + ) + +30  + #__Ãed_wch¬_t + + + ) + +31  + ~<¡ddef.h +> + +34  + #__UNKNOWN_10646_CHAR + (( +wch¬_t +è0xfffd) + + ) + +39 + m__GCONV_OK + = 0, + +40 + m__GCONV_NOCONV +, + +41 + m__GCONV_NODB +, + +42 + m__GCONV_NOMEM +, + +44 + m__GCONV_EMPTY_INPUT +, + +45 + m__GCONV_FULL_OUTPUT +, + +46 + m__GCONV_ILLEGAL_INPUT +, + +47 + m__GCONV_INCOMPLETE_INPUT +, + +49 + m__GCONV_ILLEGAL_DESCRIPTOR +, + +50 + m__GCONV_INTERNAL_ERROR + + +57 + m__GCONV_IS_LAST + = 0x0001, + +58 + m__GCONV_IGNORE_ERRORS + = 0x0002 + +63  + g__gcÚv_¡• +; + +64  + g__gcÚv_¡•_d©a +; + +65  + g__gcÚv_lßded_objeù +; + +66  + g__gcÚv_Œªs_d©a +; + +70 (* + t__gcÚv_fù +è( + t__gcÚv_¡• + *,  + t__gcÚv_¡•_d©a + *, + +71 + t__cÚ¡ + **, __const *, + +72 **, + tsize_t + *, , ); + +75  + $wšt_t + (* + t__gcÚv_btowc_fù +è( + t__gcÚv_¡• + *, ); + +78 (* + t__gcÚv_š™_fù +è( + t__gcÚv_¡• + *); + +79 (* + t__gcÚv_’d_fù +è( + t__gcÚv_¡• + *); + +83 (* + t__gcÚv_Œªs_fù +è( + t__gcÚv_¡• + *, + +84  + t__gcÚv_¡•_d©a + *, *, + +85 + t__cÚ¡ + *, + +86 + t__cÚ¡ + **, + +87 + t__cÚ¡ + *, **, + +88 + tsize_t + *); + +91 (* + t__gcÚv_Œªs_cڋxt_fù +è(*, + t__cÚ¡ + *, + +92 + t__cÚ¡ + *, + +96 (* + t__gcÚv_Œªs_qu”y_fù +è( + t__cÚ¡ + *, __const ***, + +97 + tsize_t + *); + +100 (* + t__gcÚv_Œªs_š™_fù +) (**, const *); + +101 (* + t__gcÚv_Œªs_’d_fù +) (*); + +103  + s__gcÚv_Œªs_d©a + + +106 +__gcÚv_Œªs_fù + +__Œªs_fù +; + +107 +__gcÚv_Œªs_cڋxt_fù + +__Œªs_cڋxt_fù +; + +108 +__gcÚv_Œªs_’d_fù + +__Œªs_’d_fù +; + +109 * +__d©a +; + +110  +__gcÚv_Œªs_d©a + * +__Ãxt +; + +115  + s__gcÚv_¡• + + +117  +__gcÚv_lßded_objeù + * +__shlib_hªdË +; + +118 +__cÚ¡ + * +__modÇme +; + +120  +__couÁ” +; + +122 * +__äom_Çme +; + +123 * +__to_Çme +; + +125 +__gcÚv_fù + +__fù +; + +126 +__gcÚv_btowc_fù + +__btowc_fù +; + +127 +__gcÚv_š™_fù + +__š™_fù +; + +128 +__gcÚv_’d_fù + +__’d_fù +; + +132  +__mš_Ãeded_äom +; + +133  +__max_Ãeded_äom +; + +134  +__mš_Ãeded_to +; + +135  +__max_Ãeded_to +; + +138  +__¡©eful +; + +140 * +__d©a +; + +145  + s__gcÚv_¡•_d©a + + +147 * +__outbuf +; + +148 * +__outbuãnd +; + +152  +__æags +; + +156  +__švoÿtiÚ_couÁ” +; + +160  +__š‹º®_u£ +; + +162 +__mb¡©e_t + * +__¡©• +; + +163 +__mb¡©e_t + +__¡©e +; + +167  +__gcÚv_Œªs_d©a + * +__Œªs +; + +172  + s__gcÚv_šfo + + +174 +size_t + +__n¡•s +; + +175  +__gcÚv_¡• + * +__¡•s +; + +176 +__ex‹nsiÚ__ +  +__gcÚv_¡•_d©a + +__d©a + +__æex¬r +; + +177 } * + t__gcÚv_t +; + + @/usr/include/linux/byteorder/generic.h + +1 #iâdeà +_LINUX_BYTEORDER_GENERIC_H + + +2  + #_LINUX_BYTEORDER_GENERIC_H + + + ) + + @/usr/include/linux/byteorder/swab.h + +1 #iâdeà +_LINUX_BYTEORDER_SWAB_H + + +2  + #_LINUX_BYTEORDER_SWAB_H + + + ) + +18 #ià +defšed +( +__GLIBC__ +) + +22  + ~ + +26 #iâdeà +__bsw­_cÚ¡ªt_16 + + +27  + #__bsw­_cÚ¡ªt_16 +( +x +) \ + +28 (((( +x +è>> 8è& 0xffè| (((xè& 0xffè<< 8)) + + ) + +30 #iâdeà +__bsw­_cÚ¡ªt_32 + + +31  + #__bsw­_cÚ¡ªt_32 +( +x +) \ + +32 (((( +x +) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ + +33 ((( +x +è& 0x0000ff00è<< 8è| (((xè& 0x000000ffè<< 24)) + + ) + +35 #ià(! +defšed +( +__bsw­_cÚ¡ªt_64 +)è&& defšed +__GNUC__ + && __GNUC__ >= 2 + +37  + #__bsw­_cÚ¡ªt_64 +( +x +) \ + +38 (((( +x +) & 0xff00000000000000ull) >> 56) \ + +39 | ((( +x +) & 0x00ff000000000000ull) >> 40) \ + +40 | ((( +x +) & 0x0000ff0000000000ull) >> 24) \ + +41 | ((( +x +) & 0x000000ff00000000ull) >> 8) \ + +42 | ((( +x +) & 0x00000000ff000000ull) << 8) \ + +43 | ((( +x +) & 0x0000000000ff0000ull) << 24) \ + +44 | ((( +x +) & 0x000000000000ff00ull) << 40) \ + +45 | ((( +x +è& 0x00000000000000ffuÎè<< 56)) + + ) + +48  + #___cÚ¡ªt_swab16 +( +x +è + `__bsw­_cÚ¡ªt_16 +(x) + + ) + +49  + #___cÚ¡ªt_swab32 +( +x +è + `__bsw­_cÚ¡ªt_32 +(x) + + ) + +50  + #___cÚ¡ªt_swab64 +( +x +è + `__bsw­_cÚ¡ªt_64 +(x) + + ) + +52  + #__swab16 +( +x +è + `bsw­_16 +(x) + + ) + +53  + #__swab32 +( +x +è + `bsw­_32 +(x) + + ) + +54  + #__swab64 +( +x +è + `bsw­_64 +(x) + + ) + +56  + #__swab16p +( +x +è + `__swab16 +(*(x)) + + ) + +57  + #__swab32p +( +x +è + `__swab32 +(*(x)) + + ) + +58  + #__swab64p +( +x +è + `__swab64 +(*(x)) + + ) + +60  + #__swab16s +( +x +èdØ{ *(xèð + `__swab16p +((x)); } 0) + + ) + +61  + #__swab32s +( +x +èdØ{ *(xèð + `__swab32p +((x)); } 0) + + ) + +62  + #__swab64s +( +x +èdØ{ *(xèð + `__swab64p +((x)); } 0) + + ) + + @/usr/include/sys/ucontext.h + +19 #iâdeà +_SYS_UCONTEXT_H + + +20  + #_SYS_UCONTEXT_H + 1 + + ) + +22  + ~<ã©u»s.h +> + +23  + ~ + +27  + ~ + +31  + tg»g_t +; + +34  + #NGREG + 19 + + ) + +37  +g»g_t + + tg»g£t_t +[ +NGREG +]; + +39 #ifdeà +__USE_GNU + + +43 + mREG_GS + = 0, + +44  + #REG_GS + +REG_GS + + + ) + +45 + mREG_FS +, + +46  + #REG_FS + +REG_FS + + + ) + +47 + mREG_ES +, + +48  + #REG_ES + +REG_ES + + + ) + +49 + mREG_DS +, + +50  + #REG_DS + +REG_DS + + + ) + +51 + mREG_EDI +, + +52  + #REG_EDI + +REG_EDI + + + ) + +53 + mREG_ESI +, + +54  + #REG_ESI + +REG_ESI + + + ) + +55 + mREG_EBP +, + +56  + #REG_EBP + +REG_EBP + + + ) + +57 + mREG_ESP +, + +58  + #REG_ESP + +REG_ESP + + + ) + +59 + mREG_EBX +, + +60  + #REG_EBX + +REG_EBX + + + ) + +61 + mREG_EDX +, + +62  + #REG_EDX + +REG_EDX + + + ) + +63 + mREG_ECX +, + +64  + #REG_ECX + +REG_ECX + + + ) + +65 + mREG_EAX +, + +66  + #REG_EAX + +REG_EAX + + + ) + +67 + mREG_TRAPNO +, + +68  + #REG_TRAPNO + +REG_TRAPNO + + + ) + +69 + mREG_ERR +, + +70  + #REG_ERR + +REG_ERR + + + ) + +71 + mREG_EIP +, + +72  + #REG_EIP + +REG_EIP + + + ) + +73 + mREG_CS +, + +74  + #REG_CS + +REG_CS + + + ) + +75 + mREG_EFL +, + +76  + #REG_EFL + +REG_EFL + + + ) + +77 + mREG_UESP +, + +78  + #REG_UESP + +REG_UESP + + + ) + +79 + mREG_SS + + +80  + #REG_SS + +REG_SS + + + ) + +85  + s_libc_å»g + + +87  + msignifiÿnd +[4]; + +88  + mexpڒt +; + +91  + s_libc_å¡©e + + +93  + mcw +; + +94  + msw +; + +95  + mg +; + +96  + moff +; + +97  + mcs£l +; + +98  + md©aoff +; + +99  + md©a£l +; + +100  +_libc_å»g + + m_¡ +[8]; + +101  + m¡©us +; + +105  +_libc_å¡©e + * + tå»g£t_t +; + +110 +g»g£t_t + + mg»gs +; + +113 +å»g£t_t + + må»gs +; + +114  + mÞdmask +; + +115  + mü2 +; + +116 } + tmcڋxt_t +; + +119  + sucڋxt + + +121  + muc_æags +; + +122  +ucڋxt + * + muc_lšk +; + +123 +¡ack_t + + muc_¡ack +; + +124 +mcڋxt_t + + muc_mcڋxt +; + +125 +__sig£t_t + + muc_sigmask +; + +126  +_libc_å¡©e + + m__å»gs_mem +; + +127 } + tucڋxt_t +; + + @/usr/include/wchar.h + +24 #iâdeà +_WCHAR_H + + +26 #iâdeà +__Ãed_mb¡©e_t + + +27  + #_WCHAR_H + 1 + + ) + +28  + ~<ã©u»s.h +> + +31 #ifdeà +_WCHAR_H + + +33  + #__Ãed___FILE + + + ) + +34 #ifdeà +__USE_UNIX98 + + +35  + #__Ãed_FILE + + + ) + +37  + ~<¡dio.h +> + +39  + #__Ãed___va_li¡ + + + ) + +40  + ~<¡d¬g.h +> + +43  + #__Ãed_size_t + + + ) + +44  + #__Ãed_wch¬_t + + + ) + +45  + #__Ãed_NULL + + + ) + +47  + #__Ãed_wšt_t + + + ) + +48  + ~<¡ddef.h +> + +50  + ~ + +54 #iâdeà +_WINT_T + + +59  + #_WINT_T + + + ) + +60  + twšt_t +; + +64 #ià +defšed + +__ýlu¥lus + && defšed +_GLIBCPP_USE_NAMESPACES + \ + +65 && +defšed + +__WINT_TYPE__ + + +66 +__BEGIN_NAMESPACE_STD + + +67  +__WINT_TYPE__ + + twšt_t +; + +68 + g__END_NAMESPACE_STD + + +73 #iâdeà +__mb¡©e_t_defšed + + +74  + #__mb¡©e_t_defšed + 1 + + ) + +78  + m__couÁ +; + +81 +wšt_t + + m__wch +; + +82  + m__wchb +[4]; + +83 } + m__v®ue +; + +84 } + t__mb¡©e_t +; + +86 #undeà +__Ãed_mb¡©e_t + + +91 #ifdeà +_WCHAR_H + + +93 +__BEGIN_NAMESPACE_C99 + + +95  +__mb¡©e_t + + tmb¡©e_t +; + +96 + g__END_NAMESPACE_C99 + + +97 #ifdeà +__USE_GNU + + +98 + $__USING_NAMESPACE_C99 +( +mb¡©e_t +) + +101 #iâdeà +WCHAR_MIN + + +103  + #WCHAR_MIN + +__WCHAR_MIN + + + ) + +104  + #WCHAR_MAX + +__WCHAR_MAX + + + ) + +107 #iâdeà +WEOF + + +108  + #WEOF + (0xffffffffu) + + ) + +113 #ià +defšed + +__USE_XOPEN + && !defšed +__USE_UNIX98 + + +114  + ~ + +118 +__BEGIN_DECLS + + +120 +__BEGIN_NAMESPACE_STD + + +123  +tm +; + +127 + $__USING_NAMESPACE_STD +( +tm +) + +128 +__END_NAMESPACE_STD + + +131 +__BEGIN_NAMESPACE_C99 + + +133 +wch¬_t + * + $wcsýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +134 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__¤c +è +__THROW +; + +136 +wch¬_t + * + $wc¢ýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +137 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__¤c +, +size_t + +__n +) + +138 +__THROW +; + +141 +wch¬_t + * + $wcsÿt + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +142 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__¤c +è +__THROW +; + +144 +wch¬_t + * + $wc¢ÿt + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +145 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__¤c +, +size_t + +__n +) + +146 +__THROW +; + +149  + $wcscmp + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +) + +150 +__THROW + +__©Œibu‹_pu»__ +; + +152  + $wc¢cmp + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +, +size_t + +__n +) + +153 +__THROW + +__©Œibu‹_pu»__ +; + +154 +__END_NAMESPACE_C99 + + +156 #ifdeà +__USE_GNU + + +158  + $wcsÿ£cmp + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +è +__THROW +; + +161  + $wc¢ÿ£cmp + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +, + +162 +size_t + +__n +è +__THROW +; + +166  + ~ + +168  + $wcsÿ£cmp_l + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +, + +169 +__loÿË_t + +__loc +è +__THROW +; + +171  + $wc¢ÿ£cmp_l + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +, + +172 +size_t + +__n +, +__loÿË_t + +__loc +è +__THROW +; + +175 +__BEGIN_NAMESPACE_C99 + + +178  + $wcscÞl + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +è +__THROW +; + +182 +size_t + + $wcsxäm + ( +wch¬_t + * +__»¡riù + +__s1 +, + +183 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +è +__THROW +; + +184 +__END_NAMESPACE_C99 + + +186 #ifdeà +__USE_GNU + + +192  + $wcscÞl_l + ( +__cÚ¡ + +wch¬_t + * +__s1 +, __cÚ¡ wch¬_ˆ* +__s2 +, + +193 +__loÿË_t + +__loc +è +__THROW +; + +198 +size_t + + $wcsxäm_l + ( +wch¬_t + * +__s1 +, +__cÚ¡ + wch¬_ˆ* +__s2 +, + +199 +size_t + +__n +, +__loÿË_t + +__loc +è +__THROW +; + +202 +wch¬_t + * + $wcsdup + ( +__cÚ¡ + +wch¬_t + * +__s +è +__THROW + +__©Œibu‹_m®loc__ +; + +205 +__BEGIN_NAMESPACE_C99 + + +207 +wch¬_t + * + $wcschr + ( +__cÚ¡ + +wch¬_t + * +__wcs +, wch¬_ˆ +__wc +) + +208 +__THROW + +__©Œibu‹_pu»__ +; + +210 +wch¬_t + * + $wc¤chr + ( +__cÚ¡ + +wch¬_t + * +__wcs +, wch¬_ˆ +__wc +) + +211 +__THROW + +__©Œibu‹_pu»__ +; + +212 +__END_NAMESPACE_C99 + + +214 #ifdeà +__USE_GNU + + +217 +wch¬_t + * + $wcschºul + ( +__cÚ¡ + +wch¬_t + * +__s +, wch¬_ˆ +__wc +) + +218 +__THROW + +__©Œibu‹_pu»__ +; + +221 +__BEGIN_NAMESPACE_C99 + + +224 +size_t + + $wcsc¥n + ( +__cÚ¡ + +wch¬_t + * +__wcs +, __cÚ¡ wch¬_ˆ* +__»jeù +) + +225 +__THROW + +__©Œibu‹_pu»__ +; + +228 +size_t + + $wcs¥n + ( +__cÚ¡ + +wch¬_t + * +__wcs +, __cÚ¡ wch¬_ˆ* +__acû± +) + +229 +__THROW + +__©Œibu‹_pu»__ +; + +231 +wch¬_t + * + $wc¥brk + ( +__cÚ¡ + +wch¬_t + * +__wcs +, __cÚ¡ wch¬_ˆ* +__acû± +) + +232 +__THROW + +__©Œibu‹_pu»__ +; + +234 +wch¬_t + * + $wcs¡r + ( +__cÚ¡ + +wch¬_t + * +__hay¡ack +, __cÚ¡ wch¬_ˆ* +__ÃedË +) + +235 +__THROW + +__©Œibu‹_pu»__ +; + +238 +wch¬_t + * + $wc¡ok + ( +wch¬_t + * +__»¡riù + +__s +, + +239 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__d–im +, + +240 +wch¬_t + ** +__»¡riù + +__±r +è +__THROW +; + +243 +size_t + + $wc¦’ + ( +__cÚ¡ + +wch¬_t + * +__s +è +__THROW + +__©Œibu‹_pu»__ +; + +244 +__END_NAMESPACE_C99 + + +246 #ifdeà +__USE_XOPEN + + +248 +wch¬_t + * + $wcswcs + ( +__cÚ¡ + +wch¬_t + * +__hay¡ack +, __cÚ¡ wch¬_ˆ* +__ÃedË +) + +249 +__THROW + +__©Œibu‹_pu»__ +; + +252 #ifdeà +__USE_GNU + + +254 +size_t + + $wc¢Ën + ( +__cÚ¡ + +wch¬_t + * +__s +, +size_t + +__maxËn +) + +255 +__THROW + +__©Œibu‹_pu»__ +; + +259 +__BEGIN_NAMESPACE_C99 + + +261 +wch¬_t + * + $wmemchr + ( +__cÚ¡ + +wch¬_t + * +__s +, wch¬_ˆ +__c +, +size_t + +__n +) + +262 +__THROW + +__©Œibu‹_pu»__ +; + +265  + $wmemcmp + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__s1 +, + +266 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +) + +267 +__THROW + +__©Œibu‹_pu»__ +; + +270 +wch¬_t + * + $wmemýy + ( +wch¬_t + * +__»¡riù + +__s1 +, + +271 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +è +__THROW +; + +275 +wch¬_t + * + $wmemmove + ( +wch¬_t + * +__s1 +, +__cÚ¡ + wch¬_ˆ* +__s2 +, +size_t + +__n +) + +276 +__THROW +; + +279 +wch¬_t + * + $wmem£t + ( +wch¬_t + * +__s +, wch¬_ˆ +__c +, +size_t + +__n +è +__THROW +; + +280 +__END_NAMESPACE_C99 + + +282 #ifdeà +__USE_GNU + + +285 +wch¬_t + * + $wmempýy + ( +wch¬_t + * +__»¡riù + +__s1 +, + +286 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +) + +287 +__THROW +; + +291 +__BEGIN_NAMESPACE_C99 + + +294 +wšt_t + + $btowc + ( +__c +è +__THROW +; + +298  + $wùob + ( +wšt_t + +__c +è +__THROW +; + +302  + $mbsš™ + ( +__cÚ¡ + +mb¡©e_t + * +__ps +è +__THROW + +__©Œibu‹_pu»__ +; + +306 +size_t + + $mb¹owc + ( +wch¬_t + * +__»¡riù + +__pwc +, + +307 +__cÚ¡ + * +__»¡riù + +__s +, +size_t + +__n +, + +308 +mb¡©e_t + * +__p +è +__THROW +; + +311 +size_t + + $wütomb + (* +__»¡riù + +__s +, +wch¬_t + +__wc +, + +312 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +315 +size_t + + $__mb¾’ + ( +__cÚ¡ + * +__»¡riù + +__s +, +size_t + +__n +, + +316 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +317 +size_t + + $mb¾’ + ( +__cÚ¡ + * +__»¡riù + +__s +, +size_t + +__n +, + +318 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +319 +__END_NAMESPACE_C99 + + +321 #ifdeà +__USE_EXTERN_INLINES + + +323 +__šlše + +size_t + + +324 + `__NTH + ( + $mb¾’ + ( +__cÚ¡ + * +__»¡riù + +__s +, +size_t + +__n +, + +325 +mb¡©e_t + * +__»¡riù + +__ps +)) + +326 {  ( +__ps + !ð +NULL + + +327 ? + `mb¹owc + ( +NULL +, +__s +, +__n +, +__ps +è: + `__mb¾’ + (__s, __n, NULL)); + } +} + +330 +__BEGIN_NAMESPACE_C99 + + +333 +size_t + + $mb¤towcs + ( +wch¬_t + * +__»¡riù + +__d¡ +, + +334 +__cÚ¡ + ** +__»¡riù + +__¤c +, +size_t + +__Ën +, + +335 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +339 +size_t + + $wc¤tombs + (* +__»¡riù + +__d¡ +, + +340 +__cÚ¡ + +wch¬_t + ** +__»¡riù + +__¤c +, +size_t + +__Ën +, + +341 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +342 +__END_NAMESPACE_C99 + + +345 #ifdef +__USE_GNU + + +348 +size_t + + $mb¢¹owcs + ( +wch¬_t + * +__»¡riù + +__d¡ +, + +349 +__cÚ¡ + ** +__»¡riù + +__¤c +, +size_t + +__nmc +, + +350 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +354 +size_t + + $wc¢¹ombs + (* +__»¡riù + +__d¡ +, + +355 +__cÚ¡ + +wch¬_t + ** +__»¡riù + +__¤c +, + +356 +size_t + +__nwc +, size_ˆ +__Ën +, + +357 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +362 #ifdeà +__USE_XOPEN + + +364  + $wcwidth + ( +wch¬_t + +__c +è +__THROW +; + +368  + $wcswidth + ( +__cÚ¡ + +wch¬_t + * +__s +, +size_t + +__n +è +__THROW +; + +372 +__BEGIN_NAMESPACE_C99 + + +375  + $wc¡od + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +376 +wch¬_t + ** +__»¡riù + +__’d±r +è +__THROW +; + +378 #ifdeà +__USE_ISOC99 + + +380  + $wc¡of + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +381 +wch¬_t + ** +__»¡riù + +__’d±r +è +__THROW +; + +382  + $wc¡Þd + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +383 +wch¬_t + ** +__»¡riù + +__’d±r +è +__THROW +; + +389  + $wc¡Þ + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +390 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +è +__THROW +; + +394  + $wc¡oul + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +395 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +396 +__THROW +; + +398 #ià +defšed + +__USE_ISOC99 + || (defšed +__GNUC__ + && defšed +__USE_GNU +) + +401 +__ex‹nsiÚ__ + + +402  + $wc¡Þl + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +403 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +404 +__THROW +; + +408 +__ex‹nsiÚ__ + + +409  + $wc¡ouÎ + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +410 +wch¬_t + ** +__»¡riù + +__’d±r +, + +411  +__ba£ +è +__THROW +; + +413 +__END_NAMESPACE_C99 + + +415 #ià +defšed + +__GNUC__ + && defšed +__USE_GNU + + +418 +__ex‹nsiÚ__ + + +419  + $wc¡oq + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +420 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +421 +__THROW +; + +425 +__ex‹nsiÚ__ + + +426  + $wc¡ouq + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +427 +wch¬_t + ** +__»¡riù + +__’d±r +, + +428  +__ba£ +è +__THROW +; + +431 #ifdeà +__USE_GNU + + +445  + ~ + +449  + $wc¡Þ_l + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +450 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +, + +451 +__loÿË_t + +__loc +è +__THROW +; + +453  + $wc¡oul_l + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +454 +wch¬_t + ** +__»¡riù + +__’d±r +, + +455  +__ba£ +, +__loÿË_t + +__loc +è +__THROW +; + +457 +__ex‹nsiÚ__ + + +458  + $wc¡Þl_l + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +459 +wch¬_t + ** +__»¡riù + +__’d±r +, + +460  +__ba£ +, +__loÿË_t + +__loc +è +__THROW +; + +462 +__ex‹nsiÚ__ + + +463  + $wc¡ouÎ_l + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +464 +wch¬_t + ** +__»¡riù + +__’d±r +, + +465  +__ba£ +, +__loÿË_t + +__loc +) + +466 +__THROW +; + +468  + $wc¡od_l + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +469 +wch¬_t + ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +470 +__THROW +; + +472  + $wc¡of_l + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +473 +wch¬_t + ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +474 +__THROW +; + +476  + $wc¡Þd_l + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +477 +wch¬_t + ** +__»¡riù + +__’d±r +, + +478 +__loÿË_t + +__loc +è +__THROW +; + +484  + $__wc¡od_š‹º® + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +485 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__group +) + +486 +__THROW +; + +487  + $__wc¡of_š‹º® + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +488 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__group +) + +489 +__THROW +; + +490  + $__wc¡Þd_š‹º® + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +491 +wch¬_t + ** +__»¡riù + +__’d±r +, + +492  +__group +è +__THROW +; + +494 #iâdeà +__wc¡Þ_š‹º®_defšed + + +495  + $__wc¡Þ_š‹º® + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +496 +wch¬_t + ** +__»¡riù + +__’d±r +, + +497  +__ba£ +,  +__group +è +__THROW +; + +498  + #__wc¡Þ_š‹º®_defšed + 1 + + ) + +500 #iâdeà +__wc¡oul_š‹º®_defšed + + +501  + $__wc¡oul_š‹º® + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Åt +, + +502 +wch¬_t + ** +__»¡riù + +__’d±r +, + +503  +__ba£ +,  +__group +è +__THROW +; + +504  + #__wc¡oul_š‹º®_defšed + 1 + + ) + +506 #iâdeà +__wc¡Þl_š‹º®_defšed + + +507 +__ex‹nsiÚ__ + + +508  + $__wc¡Þl_š‹º® + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +509 +wch¬_t + ** +__»¡riù + +__’d±r +, + +510  +__ba£ +,  +__group +è +__THROW +; + +511  + #__wc¡Þl_š‹º®_defšed + 1 + + ) + +513 #iâdeà +__wc¡ouÎ_š‹º®_defšed + + +514 +__ex‹nsiÚ__ + + +515  + $__wc¡ouÎ_š‹º® + ( +__cÚ¡ + +wch¬_t + * + +516 +__»¡riù + +__Ō +, + +517 +wch¬_t + ** + +518 +__»¡riù + +__’d±r +, + +519  +__ba£ +, + +520  +__group +è +__THROW +; + +521  + #__wc¡ouÎ_š‹º®_defšed + 1 + + ) + +525 #ià +defšed + +__OPTIMIZE__ + && +__GNUC__ + >= 2 + +527 +__BEGIN_NAMESPACE_C99 + + +529 +__šlše +  + +530 + `__NTH + ( + $wc¡od + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +531 +wch¬_t + ** +__»¡riù + +__’d±r +)) + +532 {  + `__wc¡od_š‹º® + ( +__Ō +, +__’d±r +, 0); + } +} + +533 +__šlše +  + +534 +__NTH + ( + $wc¡Þ + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +535 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +)) + +536 {  + `__wc¡Þ_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + } +} + +537 +__šlše +  + +538 +__NTH + ( + $wc¡oul + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +539 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +)) + +540 {  + `__wc¡oul_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + } +} + +541 +__END_NAMESPACE_C99 + + +543 #ifdeà +__USE_GNU + + +544 +__šlše +  + +545 +__NTH + ( + $wc¡of + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +546 +wch¬_t + ** +__»¡riù + +__’d±r +)) + +547 {  + `__wc¡of_š‹º® + ( +__Ō +, +__’d±r +, 0); + } +} + +548 +__šlše +  + +549 +__NTH + ( + $wc¡Þd + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +550 +wch¬_t + ** +__»¡riù + +__’d±r +)) + +551 {  + `__wc¡Þd_š‹º® + ( +__Ō +, +__’d±r +, 0); + } +} + +554 +__ex‹nsiÚ__ + + +555 +__šlše +  + +556 +__NTH + ( + $wc¡oq + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +557 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +)) + +558 {  + `__wc¡Þl_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + } +} + +559 +__ex‹nsiÚ__ + + +560 +__šlše +  + +561 +__NTH + ( + $wc¡ouq + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__Ō +, + +562 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +)) + +563 {  + `__wc¡ouÎ_š‹º® + ( +__Ō +, +__’d±r +, +__ba£ +, 0); + } +} + +568 #ifdef +__USE_GNU + + +571 +wch¬_t + * + $wýýy + ( +wch¬_t + * +__de¡ +, +__cÚ¡ + wch¬_ˆ* +__¤c +è +__THROW +; + +575 +wch¬_t + * + $wýnýy + ( +wch¬_t + * +__de¡ +, +__cÚ¡ + wch¬_ˆ* +__¤c +, +size_t + +__n +) + +576 +__THROW +; + +581 #ià +defšed + +__USE_ISOC99 + || defšed +__USE_UNIX98 + + +582 +__BEGIN_NAMESPACE_C99 + + +585  + $fwide + ( +__FILE + * +__å +,  +__mode +è +__THROW +; + +592  + `fw´štf + ( +__FILE + * +__»¡riù + +__¡»am +, + +593 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +599  + `w´štf + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +602  + $sw´štf + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +603 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +604 +__THROW + ; + +610  + `vfw´štf + ( +__FILE + * +__»¡riù + +__s +, + +611 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +612 +__gnuc_va_li¡ + +__¬g +) + +618  + `vw´štf + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +619 +__gnuc_va_li¡ + +__¬g +) + +623  + $vsw´štf + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +624 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +625 +__gnuc_va_li¡ + +__¬g +) + +626 +__THROW + ; + +633  + `fwsÿnf + ( +__FILE + * +__»¡riù + +__¡»am +, + +634 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +640  + `wsÿnf + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +643  + $swsÿnf + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__s +, + +644 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +645 +__THROW + ; + +647 +__END_NAMESPACE_C99 + + +650 #ifdeà +__USE_ISOC99 + + +651 +__BEGIN_NAMESPACE_C99 + + +657  + `vfwsÿnf + ( +__FILE + * +__»¡riù + +__s +, + +658 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +659 +__gnuc_va_li¡ + +__¬g +) + +665  + `vwsÿnf + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +666 +__gnuc_va_li¡ + +__¬g +) + +669  + $vswsÿnf + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__s +, + +670 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +671 +__gnuc_va_li¡ + +__¬g +) + +672 +__THROW + ; + +674 +__END_NAMESPACE_C99 + + +678 +__BEGIN_NAMESPACE_C99 + + +683 +wšt_t + + `fg‘wc + ( +__FILE + * +__¡»am +); + +684 +wšt_t + + `g‘wc + ( +__FILE + * +__¡»am +); + +690 +wšt_t + + `g‘wch¬ + (); + +697 +wšt_t + + `åutwc + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +698 +wšt_t + + `putwc + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +704 +wšt_t + + `putwch¬ + ( +wch¬_t + +__wc +); + +712 +wch¬_t + * + `fg‘ws + (wch¬_ˆ* +__»¡riù + +__ws +,  +__n +, + +713 +__FILE + * +__»¡riù + +__¡»am +); + +719  + `åutws + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__ws +, + +720 +__FILE + * +__»¡riù + +__¡»am +); + +727 +wšt_t + + `ung‘wc + (wšt_ˆ +__wc +, +__FILE + * +__¡»am +); + +728 +__END_NAMESPACE_C99 + + +731 #ifdeà +__USE_GNU + + +739 +wšt_t + + `g‘wc_uÆocked + ( +__FILE + * +__¡»am +); + +740 +wšt_t + + `g‘wch¬_uÆocked + (); + +748 +wšt_t + + `fg‘wc_uÆocked + ( +__FILE + * +__¡»am +); + +756 +wšt_t + + `åutwc_uÆocked + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +765 +wšt_t + + `putwc_uÆocked + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +766 +wšt_t + + `putwch¬_uÆocked + ( +wch¬_t + +__wc +); + +775 +wch¬_t + * + `fg‘ws_uÆocked + (wch¬_ˆ* +__»¡riù + +__ws +,  +__n +, + +776 +__FILE + * +__»¡riù + +__¡»am +); + +784  + `åutws_uÆocked + ( +__cÚ¡ + +wch¬_t + * +__»¡riù + +__ws +, + +785 +__FILE + * +__»¡riù + +__¡»am +); + +789 +__BEGIN_NAMESPACE_C99 + + +793 +size_t + + $wcsáime + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__maxsize +, + +794 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +795 +__cÚ¡ +  +tm + * +__»¡riù + +__ +è +__THROW +; + +796 +__END_NAMESPACE_C99 + + +798 #ifdeà +__USE_GNU + + +799  + ~ + +803 +size_t + + $wcsáime_l + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__maxsize +, + +804 +__cÚ¡ + +wch¬_t + * +__»¡riù + +__fÜm© +, + +805 +__cÚ¡ +  +tm + * +__»¡riù + +__ +, + +806 +__loÿË_t + +__loc +è +__THROW +; + +815 #ià +defšed + +__USE_UNIX98 + && !defšed +__USE_GNU + + +816  + #__Ãed_iswxxx + + + ) + +817  + ~ + +820 +__END_DECLS + + + @/usr/include/asm/sigcontext.h + +5 #iâdeà +__i386STUB__SIGCONTEXT_H__ + + +6  + #__i386STUB__SIGCONTEXT_H__ + + + ) + +8 #ifdeà +__x86_64__ + + +9  + ~ + +11  + ~ + + @/usr/include/byteswap.h + +19 #iâdeà +_BYTESWAP_H + + +20  + #_BYTESWAP_H + 1 + + ) + +23  + ~ + +30  + #bsw­_16 +( +x +è + `__bsw­_16 + (x) + + ) + +33  + #bsw­_32 +( +x +è + `__bsw­_32 + (x) + + ) + +35 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +37  + #bsw­_64 +( +x +è + `__bsw­_64 + (x) + + ) + + @/usr/include/pthread.h + +15 #iâdeà +_PTHREAD_H + + +16  + #_PTHREAD_H + 1 + + ) + +18  + ~<ã©u»s.h +> + +20  + ~ + +21  + ~ + +23  + #__Ãed_sig£t_t + + + ) + +24  + ~ + +25  + ~ + +26  + ~ + +29 + g__BEGIN_DECLS + + +33  + #PTHREAD_MUTEX_INITIALIZER + \ + +34 {0, 0, 0, +PTHREAD_MUTEX_TIMED_NP +, +__LOCK_ALT_INITIALIZER +} + + ) + +35 #ifdeà +__USE_GNU + + +36  + #PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + \ + +37 {0, 0, 0, +PTHREAD_MUTEX_RECURSIVE_NP +, +__LOCK_ALT_INITIALIZER +} + + ) + +38  + #PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP + \ + +39 {0, 0, 0, +PTHREAD_MUTEX_ERRORCHECK_NP +, +__LOCK_ALT_INITIALIZER +} + + ) + +40  + #PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP + \ + +41 {0, 0, 0, +PTHREAD_MUTEX_ADAPTIVE_NP +, +__LOCK_ALT_INITIALIZER +} + + ) + +44  + #PTHREAD_COND_INITIALIZER + { +__LOCK_ALT_INITIALIZER +, 0, "", 0} + + ) + +46 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +47  + #PTHREAD_RWLOCK_INITIALIZER + \ + +48 { +__LOCK_ALT_INITIALIZER +, 0, +NULL +, NULL, NULL, \ + +49 +PTHREAD_RWLOCK_DEFAULT_NP +, +PTHREAD_PROCESS_PRIVATE + } + + ) + +51 #ifdeà +__USE_GNU + + +52  + #PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP + \ + +53 { +__LOCK_ALT_INITIALIZER +, 0, +NULL +, NULL, NULL, \ + +54 +PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP +, +PTHREAD_PROCESS_PRIVATE + } + + ) + +61 + mPTHREAD_CREATE_JOINABLE +, + +62  + #PTHREAD_CREATE_JOINABLE + +PTHREAD_CREATE_JOINABLE + + + ) + +63 + mPTHREAD_CREATE_DETACHED + + +64  + #PTHREAD_CREATE_DETACHED + +PTHREAD_CREATE_DETACHED + + + ) + +69 + mPTHREAD_INHERIT_SCHED +, + +70  + #PTHREAD_INHERIT_SCHED + +PTHREAD_INHERIT_SCHED + + + ) + +71 + mPTHREAD_EXPLICIT_SCHED + + +72  + #PTHREAD_EXPLICIT_SCHED + +PTHREAD_EXPLICIT_SCHED + + + ) + +77 + mPTHREAD_SCOPE_SYSTEM +, + +78  + #PTHREAD_SCOPE_SYSTEM + +PTHREAD_SCOPE_SYSTEM + + + ) + +79 + mPTHREAD_SCOPE_PROCESS + + +80  + #PTHREAD_SCOPE_PROCESS + +PTHREAD_SCOPE_PROCESS + + + ) + +85 + mPTHREAD_MUTEX_TIMED_NP +, + +86 + mPTHREAD_MUTEX_RECURSIVE_NP +, + +87 + mPTHREAD_MUTEX_ERRORCHECK_NP +, + +88 + mPTHREAD_MUTEX_ADAPTIVE_NP + + +89 #ifdeà +__USE_UNIX98 + + +91 + mPTHREAD_MUTEX_NORMAL + = +PTHREAD_MUTEX_TIMED_NP +, + +92 + mPTHREAD_MUTEX_RECURSIVE + = +PTHREAD_MUTEX_RECURSIVE_NP +, + +93 + mPTHREAD_MUTEX_ERRORCHECK + = +PTHREAD_MUTEX_ERRORCHECK_NP +, + +94 + mPTHREAD_MUTEX_DEFAULT + = +PTHREAD_MUTEX_NORMAL + + +96 #ifdeà +__USE_GNU + + +98 , + mPTHREAD_MUTEX_FAST_NP + = +PTHREAD_MUTEX_ADAPTIVE_NP + + +104 + mPTHREAD_PROCESS_PRIVATE +, + +105  + #PTHREAD_PROCESS_PRIVATE + +PTHREAD_PROCESS_PRIVATE + + + ) + +106 + mPTHREAD_PROCESS_SHARED + + +107  + #PTHREAD_PROCESS_SHARED + +PTHREAD_PROCESS_SHARED + + + ) + +110 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +113 + mPTHREAD_RWLOCK_PREFER_READER_NP +, + +114 + mPTHREAD_RWLOCK_PREFER_WRITER_NP +, + +115 + mPTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP +, + +116 + mPTHREAD_RWLOCK_DEFAULT_NP + = +PTHREAD_RWLOCK_PREFER_WRITER_NP + + +120  + #PTHREAD_ONCE_INIT + 0 + + ) + +124 #ifdeà +__USE_XOPEN2K + + +126  + #PTHREAD_BARRIER_SERIAL_THREAD + -1 + + ) + +131  + s_±h»ad_þ—nup_bufãr + + +133 (* + m__routše +) (*); + +134 * + m__¬g +; + +135  + m__ÿnûÉy³ +; + +136  +_±h»ad_þ—nup_bufãr + * + m__´ev +; + +143 + mPTHREAD_CANCEL_ENABLE +, + +144  + #PTHREAD_CANCEL_ENABLE + +PTHREAD_CANCEL_ENABLE + + + ) + +145 + mPTHREAD_CANCEL_DISABLE + + +146  + #PTHREAD_CANCEL_DISABLE + +PTHREAD_CANCEL_DISABLE + + + ) + +150 + mPTHREAD_CANCEL_DEFERRED +, + +151  + #PTHREAD_CANCEL_DEFERRED + +PTHREAD_CANCEL_DEFERRED + + + ) + +152 + mPTHREAD_CANCEL_ASYNCHRONOUS + + +153  + #PTHREAD_CANCEL_ASYNCHRONOUS + +PTHREAD_CANCEL_ASYNCHRONOUS + + + ) + +155  + #PTHREAD_CANCELED + ((*è-1) + + ) + +163  +±h»ad_ü—‹ + ( +±h»ad_t + * +__»¡riù + +__th»adp +, + +164 +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + +__©Œ +, + +165 *(* +__¡¬t_routše +) (*), + +166 * +__»¡riù + +__¬g +è +__THROW +; + +169 +±h»ad_t + + $±h»ad_£lf + (è +__THROW +; + +172  + $±h»ad_equ® + ( +±h»ad_t + +__th»ad1 +,…th»ad_ˆ +__th»ad2 +è +__THROW +; + +175  + $±h»ad_ex™ + (* +__»tv® +è + `__©Œibu‹__ + (( +__nܑuº__ +)); + +180  + `±h»ad_još + ( +±h»ad_t + +__th +, ** +__th»ad_»tuº +); + +186  + $±h»ad_d‘ach + ( +±h»ad_t + +__th +è +__THROW +; + +194  + $±h»ad_©Œ_š™ + ( +±h»ad_©Œ_t + * +__©Œ +è +__THROW +; + +197  + $±h»ad_©Œ_de¡roy + ( +±h»ad_©Œ_t + * +__©Œ +è +__THROW +; + +200  + $±h»ad_©Œ_£td‘ach¡©e + ( +±h»ad_©Œ_t + * +__©Œ +, + +201  +__d‘ach¡©e +è +__THROW +; + +204  + $±h»ad_©Œ_g‘d‘ach¡©e + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__©Œ +, + +205 * +__d‘ach¡©e +è +__THROW +; + +208  + $±h»ad_©Œ_£tsched·¿m + ( +±h»ad_©Œ_t + * +__»¡riù + +__©Œ +, + +209 +__cÚ¡ +  +sched_·¿m + * +__»¡riù + + +210 +__·¿m +è +__THROW +; + +213  + $±h»ad_©Œ_g‘sched·¿m + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + + +214 +__©Œ +, + +215  +sched_·¿m + * +__»¡riù + +__·¿m +) + +216 +__THROW +; + +219  + $±h»ad_©Œ_£tschedpÞicy + ( +±h»ad_©Œ_t + * +__©Œ +,  +__pÞicy +) + +220 +__THROW +; + +223  + $±h»ad_©Œ_g‘schedpÞicy + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + + +224 +__©Œ +, * +__»¡riù + +__pÞicy +) + +225 +__THROW +; + +228  + $±h»ad_©Œ_£tšh”™sched + ( +±h»ad_©Œ_t + * +__©Œ +, + +229  +__šh”™ +è +__THROW +; + +232  + $±h»ad_©Œ_g‘šh”™sched + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + + +233 +__©Œ +, * +__»¡riù + +__šh”™ +) + +234 +__THROW +; + +237  + $±h»ad_©Œ_£tscÝe + ( +±h»ad_©Œ_t + * +__©Œ +,  +__scÝe +) + +238 +__THROW +; + +241  + $±h»ad_©Œ_g‘scÝe + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + +__©Œ +, + +242 * +__»¡riù + +__scÝe +è +__THROW +; + +244 #ifdeà +__USE_UNIX98 + + +246  + $±h»ad_©Œ_£tgu¬dsize + ( +±h»ad_©Œ_t + * +__©Œ +, + +247 +size_t + +__gu¬dsize +è +__THROW +; + +250  + $±h»ad_©Œ_g‘gu¬dsize + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + + +251 +__©Œ +, +size_t + * +__»¡riù + +__gu¬dsize +) + +252 +__THROW +; + +259  + $±h»ad_©Œ_£t¡ackaddr + ( +±h»ad_©Œ_t + * +__©Œ +, + +260 * +__¡ackaddr +è +__THROW +; + +263  + $±h»ad_©Œ_g‘¡ackaddr + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + + +264 +__©Œ +, ** +__»¡riù + +__¡ackaddr +) + +265 +__THROW +; + +267 #ifdeà +__USE_XOPEN2K + + +271  + $±h»ad_©Œ_£t¡ack + ( +±h»ad_©Œ_t + * +__©Œ +, * +__¡ackaddr +, + +272 +size_t + +__¡acksize +è +__THROW +; + +275  + $±h»ad_©Œ_g‘¡ack + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + +__©Œ +, + +276 ** +__»¡riù + +__¡ackaddr +, + +277 +size_t + * +__»¡riù + +__¡acksize +è +__THROW +; + +283  + $±h»ad_©Œ_£t¡acksize + ( +±h»ad_©Œ_t + * +__©Œ +, + +284 +size_t + +__¡acksize +è +__THROW +; + +287  + $±h»ad_©Œ_g‘¡acksize + ( +__cÚ¡ + +±h»ad_©Œ_t + * +__»¡riù + + +288 +__©Œ +, +size_t + * +__»¡riù + +__¡acksize +) + +289 +__THROW +; + +291 #ifdeà +__USE_GNU + + +295  + $±h»ad_g‘©Œ_Å + ( +±h»ad_t + +__th +, +±h»ad_©Œ_t + * +__©Œ +è +__THROW +; + +302  + $±h»ad_£tsched·¿m + ( +±h»ad_t + +__rg‘_th»ad +,  +__pÞicy +, + +303 +__cÚ¡ +  +sched_·¿m + * +__·¿m +) + +304 +__THROW +; + +307  + $±h»ad_g‘sched·¿m + ( +±h»ad_t + +__rg‘_th»ad +, + +308 * +__»¡riù + +__pÞicy +, + +309  +sched_·¿m + * +__»¡riù + +__·¿m +) + +310 +__THROW +; + +312 #ifdeà +__USE_UNIX98 + + +314  + $±h»ad_g‘cÚcu¼’cy + (è +__THROW +; + +317  + $±h»ad_£tcÚcu¼’cy + ( +__Ëv– +è +__THROW +; + +320 #ifdeà +__USE_GNU + + +325  + $±h»ad_y›ld + (è +__THROW +; + +332  + $±h»ad_mu‹x_š™ + ( +±h»ad_mu‹x_t + * +__»¡riù + +__mu‹x +, + +333 +__cÚ¡ + +±h»ad_mu‹x©Œ_t + * +__»¡riù + + +334 +__mu‹x_©Œ +è +__THROW +; + +337  + $±h»ad_mu‹x_de¡roy + ( +±h»ad_mu‹x_t + * +__mu‹x +è +__THROW +; + +340  + $±h»ad_mu‹x_Œylock + ( +±h»ad_mu‹x_t + * +__mu‹x +è +__THROW +; + +343  + $±h»ad_mu‹x_lock + ( +±h»ad_mu‹x_t + * +__mu‹x +è +__THROW +; + +345 #ifdeà +__USE_XOPEN2K + + +347  + $±h»ad_mu‹x_timedlock + ( +±h»ad_mu‹x_t + * +__»¡riù + +__mu‹x +, + +348 +__cÚ¡ +  +time¥ec + * +__»¡riù + + +349 +__ab¡ime +è +__THROW +; + +353  + $±h»ad_mu‹x_uÆock + ( +±h»ad_mu‹x_t + * +__mu‹x +è +__THROW +; + +360  + $±h»ad_mu‹x©Œ_š™ + ( +±h»ad_mu‹x©Œ_t + * +__©Œ +è +__THROW +; + +363  + $±h»ad_mu‹x©Œ_de¡roy + ( +±h»ad_mu‹x©Œ_t + * +__©Œ +è +__THROW +; + +366  + $±h»ad_mu‹x©Œ_g‘psh¬ed + ( +__cÚ¡ + +±h»ad_mu‹x©Œ_t + * + +367 +__»¡riù + +__©Œ +, + +368 * +__»¡riù + +__psh¬ed +è +__THROW +; + +371  + $±h»ad_mu‹x©Œ_£sh¬ed + ( +±h»ad_mu‹x©Œ_t + * +__©Œ +, + +372  +__psh¬ed +è +__THROW +; + +374 #ifdeà +__USE_UNIX98 + + +378  + $±h»ad_mu‹x©Œ_£‰y³ + ( +±h»ad_mu‹x©Œ_t + * +__©Œ +,  +__kšd +) + +379 +__THROW +; + +382  + $±h»ad_mu‹x©Œ_g‘ty³ + ( +__cÚ¡ + +±h»ad_mu‹x©Œ_t + * +__»¡riù + + +383 +__©Œ +, * +__»¡riù + +__kšd +è +__THROW +; + +391  + $±h»ad_cÚd_š™ + ( +±h»ad_cÚd_t + * +__»¡riù + +__cÚd +, + +392 +__cÚ¡ + +±h»ad_cÚd©Œ_t + * +__»¡riù + + +393 +__cÚd_©Œ +è +__THROW +; + +396  + $±h»ad_cÚd_de¡roy + ( +±h»ad_cÚd_t + * +__cÚd +è +__THROW +; + +399  + $±h»ad_cÚd_sigÇl + ( +±h»ad_cÚd_t + * +__cÚd +è +__THROW +; + +402  + $±h»ad_cÚd_brßdÿ¡ + ( +±h»ad_cÚd_t + * +__cÚd +è +__THROW +; + +406  + `±h»ad_cÚd_wa™ + ( +±h»ad_cÚd_t + * +__»¡riù + +__cÚd +, + +407 +±h»ad_mu‹x_t + * +__»¡riù + +__mu‹x +); + +413  + `±h»ad_cÚd_timedwa™ + ( +±h»ad_cÚd_t + * +__»¡riù + +__cÚd +, + +414 +±h»ad_mu‹x_t + * +__»¡riù + +__mu‹x +, + +415 +__cÚ¡ +  +time¥ec + * +__»¡riù + + +416 +__ab¡ime +); + +421  + $±h»ad_cÚd©Œ_š™ + ( +±h»ad_cÚd©Œ_t + * +__©Œ +è +__THROW +; + +424  + $±h»ad_cÚd©Œ_de¡roy + ( +±h»ad_cÚd©Œ_t + * +__©Œ +è +__THROW +; + +427  + $±h»ad_cÚd©Œ_g‘psh¬ed + ( +__cÚ¡ + +±h»ad_cÚd©Œ_t + * + +428 +__»¡riù + +__©Œ +, + +429 * +__»¡riù + +__psh¬ed +è +__THROW +; + +432  + $±h»ad_cÚd©Œ_£sh¬ed + ( +±h»ad_cÚd©Œ_t + * +__©Œ +, + +433  +__psh¬ed +è +__THROW +; + +436 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +441  + $±h»ad_rwlock_š™ + ( +±h»ad_rwlock_t + * +__»¡riù + +__rwlock +, + +442 +__cÚ¡ + +±h»ad_rwlock©Œ_t + * +__»¡riù + + +443 +__©Œ +è +__THROW +; + +446  + $±h»ad_rwlock_de¡roy + ( +±h»ad_rwlock_t + * +__rwlock +è +__THROW +; + +449  + $±h»ad_rwlock_rdlock + ( +±h»ad_rwlock_t + * +__rwlock +è +__THROW +; + +452  + $±h»ad_rwlock_Œyrdlock + ( +±h»ad_rwlock_t + * +__rwlock +è +__THROW +; + +454 #ifdeà +__USE_XOPEN2K + + +456  + $±h»ad_rwlock_timedrdlock + ( +±h»ad_rwlock_t + * +__»¡riù + +__rwlock +, + +457 +__cÚ¡ +  +time¥ec + * +__»¡riù + + +458 +__ab¡ime +è +__THROW +; + +462  + $±h»ad_rwlock_w¾ock + ( +±h»ad_rwlock_t + * +__rwlock +è +__THROW +; + +465  + $±h»ad_rwlock_Œyw¾ock + ( +±h»ad_rwlock_t + * +__rwlock +è +__THROW +; + +467 #ifdeà +__USE_XOPEN2K + + +469  + $±h»ad_rwlock_timedw¾ock + ( +±h»ad_rwlock_t + * +__»¡riù + +__rwlock +, + +470 +__cÚ¡ +  +time¥ec + * +__»¡riù + + +471 +__ab¡ime +è +__THROW +; + +475  + $±h»ad_rwlock_uÆock + ( +±h»ad_rwlock_t + * +__rwlock +è +__THROW +; + +481  + $±h»ad_rwlock©Œ_š™ + ( +±h»ad_rwlock©Œ_t + * +__©Œ +è +__THROW +; + +484  + $±h»ad_rwlock©Œ_de¡roy + ( +±h»ad_rwlock©Œ_t + * +__©Œ +è +__THROW +; + +487  + $±h»ad_rwlock©Œ_g‘psh¬ed + ( +__cÚ¡ + +±h»ad_rwlock©Œ_t + * + +488 +__»¡riù + +__©Œ +, + +489 * +__»¡riù + +__psh¬ed +è +__THROW +; + +492  + $±h»ad_rwlock©Œ_£sh¬ed + ( +±h»ad_rwlock©Œ_t + * +__©Œ +, + +493  +__psh¬ed +è +__THROW +; + +496  + $±h»ad_rwlock©Œ_g‘kšd_Å + ( +__cÚ¡ + +±h»ad_rwlock©Œ_t + * +__©Œ +, + +497 * +__´ef +è +__THROW +; + +500  + $±h»ad_rwlock©Œ_£tkšd_Å + ( +±h»ad_rwlock©Œ_t + * +__©Œ +, + +501  +__´ef +è +__THROW +; + +504 #ifdeà +__USE_XOPEN2K + + +510  + $±h»ad_¥š_š™ + ( +±h»ad_¥šlock_t + * +__lock +,  +__psh¬ed +) + +511 +__THROW +; + +514  + $±h»ad_¥š_de¡roy + ( +±h»ad_¥šlock_t + * +__lock +è +__THROW +; + +517  + $±h»ad_¥š_lock + ( +±h»ad_¥šlock_t + * +__lock +è +__THROW +; + +520  + $±h»ad_¥š_Œylock + ( +±h»ad_¥šlock_t + * +__lock +è +__THROW +; + +523  + $±h»ad_¥š_uÆock + ( +±h»ad_¥šlock_t + * +__lock +è +__THROW +; + +528  + $±h»ad_b¬r›r_š™ + ( +±h»ad_b¬r›r_t + * +__»¡riù + +__b¬r›r +, + +529 +__cÚ¡ + +±h»ad_b¬r›¿‰r_t + * +__»¡riù + + +530 +__©Œ +,  +__couÁ +è +__THROW +; + +532  + $±h»ad_b¬r›r_de¡roy + ( +±h»ad_b¬r›r_t + * +__b¬r›r +è +__THROW +; + +534  + $±h»ad_b¬r›¿‰r_š™ + ( +±h»ad_b¬r›¿‰r_t + * +__©Œ +è +__THROW +; + +536  + $±h»ad_b¬r›¿‰r_de¡roy + ( +±h»ad_b¬r›¿‰r_t + * +__©Œ +è +__THROW +; + +538  + $±h»ad_b¬r›¿‰r_g‘psh¬ed + ( +__cÚ¡ + +±h»ad_b¬r›¿‰r_t + * + +539 +__»¡riù + +__©Œ +, + +540 * +__»¡riù + +__psh¬ed +è +__THROW +; + +542  + $±h»ad_b¬r›¿‰r_£sh¬ed + ( +±h»ad_b¬r›¿‰r_t + * +__©Œ +, + +543  +__psh¬ed +è +__THROW +; + +545  + $±h»ad_b¬r›r_wa™ + ( +±h»ad_b¬r›r_t + * +__b¬r›r +è +__THROW +; + +557  + `±h»ad_key_ü—‹ + ( +±h»ad_key_t + * +__key +, + +558 (* +__de¡r_funùiÚ +è(*)è +__THROW +; + +561  + $±h»ad_key_d–‘e + ( +±h»ad_key_t + +__key +è +__THROW +; + +564  + $±h»ad_£t¥ecific + ( +±h»ad_key_t + +__key +, + +565 +__cÚ¡ + * +__poš‹r +è +__THROW +; + +568 * + $±h»ad_g‘¥ecific + ( +±h»ad_key_t + +__key +è +__THROW +; + +580  + `±h»ad_Úû + ( +±h»ad_Úû_t + * +__Úû_cÚŒÞ +, + +581 (* +__š™_routše +) ()); + +588  + `±h»ad_£tÿnûl¡©e + ( +__¡©e +, * +__Þd¡©e +); + +592  + `±h»ad_£tÿnûÉy³ + ( +__ty³ +, * +__Þdty³ +); + +595  + `±h»ad_ÿnûl + ( +±h»ad_t + +__ÿnûÉh»ad +); + +600  + `±h»ad_‹¡ÿnûl + (); + +610  + #±h»ad_þ—nup_push +( +routše +, +¬g +) \ + +611 {  +_±h»ad_þ—nup_bufãr + +_bufãr +; \ + +612 + `_±h»ad_þ—nup_push + (& +_bufãr +, ( +routše +), ( +¬g +)); + + ) + +614  + `_±h»ad_þ—nup_push + ( +_±h»ad_þ—nup_bufãr + * +__bufãr +, + +615 (* +__routše +) (*), + +616 * +__¬g +è +__THROW +; + +621  + #±h»ad_þ—nup_pÝ +( +execu‹ +) \ + +622 + `_±h»ad_þ—nup_pÝ + (& +_bufãr +, ( +execu‹ +)); + } + + ) +} + +624  + $_±h»ad_þ—nup_pÝ + ( +_±h»ad_þ—nup_bufãr + * +__bufãr +, + +625  +__execu‹ +è +__THROW +; + +630 #ifdeà +__USE_GNU + + +631  + #±h»ad_þ—nup_push_deãr_Å +( +routše +, +¬g +) \ + +632 {  +_±h»ad_þ—nup_bufãr + +_bufãr +; \ + +633 + `_±h»ad_þ—nup_push_deãr + (& +_bufãr +, ( +routše +), ( +¬g +)); + + ) + +635  + `_±h»ad_þ—nup_push_deãr + ( +_±h»ad_þ—nup_bufãr + * +__bufãr +, + +636 (* +__routše +) (*), + +637 * +__¬g +è +__THROW +; + +643  + #±h»ad_þ—nup_pÝ_»¡Üe_Å +( +execu‹ +) \ + +644 + `_±h»ad_þ—nup_pÝ_»¡Üe + (& +_bufãr +, ( +execu‹ +)); + } + + ) +} + +646  + $_±h»ad_þ—nup_pÝ_»¡Üe + ( +_±h»ad_þ—nup_bufãr + * +__bufãr +, + +647  +__execu‹ +è +__THROW +; + +651 #ifdeà +__USE_XOPEN2K + + +653  + $±h»ad_g‘ýuþockid + ( +±h»ad_t + +__th»ad_id +, + +654 +__þockid_t + * +__þock_id +è +__THROW +; + +659  + ~ + +675  + `±h»ad_©fÜk + ((* +__´•¬e +) (), + +676 (* +__·»Á +) (), + +677 (* +__chžd +è()è +__THROW +; + +682  + $±h»ad_kžl_Ùh”_th»ads_Å + (è +__THROW +; + +684 +__END_DECLS + + + @/usr/include/wctype.h + +24 #iâdeà +_WCTYPE_H + + +26  + ~<ã©u»s.h +> + +27  + ~ + +29 #iâdeà +__Ãed_iswxxx + + +30  + #_WCTYPE_H + 1 + + ) + +34  + #__Ãed_wšt_t + + + ) + +35  + ~<¡ddef.h +> + +36 #iâdeà +_WINT_T + + +41  + #_WINT_T + + + ) + +42  + twšt_t +; + +44 #ifdeà +__USE_ISOC99 + + +45 + $__USING_NAMESPACE_C99 +( +wšt_t +) + +47 +__END_NAMESPACE_C99 + + +52 #iâdeà +WEOF + + +53  + #WEOF + (0xffffffffu) + + ) + +56 #undeà +__Ãed_iswxxx + + +61 #iâdeà +__iswxxx_defšed + + +62  + #__iswxxx_defšed + 1 + + ) + +64 +__BEGIN_NAMESPACE_C99 + + +67  + twùy³_t +; + +68 +__END_NAMESPACE_C99 + + +70 #iâdeà +_ISwb™ + + +75  + ~<’dŸn.h +> + +76 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +77  + #_ISwb™ +( +b™ +è(1 << (b™)) + + ) + +79  + #_ISwb™ +( +b™ +) \ + +80 (( +b™ +) < 8 ? () ((1UL << (bit)) << 24) \ + +81 : (( +b™ +) < 16 ? () ((1UL << (bit)) << 8) \ + +82 : (( +b™ +) < 24 ? () ((1UL << (bit)) >> 8) \ + +83 : (è((1UL << ( +b™ +)è>> 24)))) + + ) + +88 +__ISwuµ” + = 0, + +89 +__ISwlow” + = 1, + +90 +__ISw®pha + = 2, + +91 +__ISwdig™ + = 3, + +92 +__ISwxdig™ + = 4, + +93 +__ISw¥aû + = 5, + +94 +__ISw´št + = 6, + +95 +__ISwg¿ph + = 7, + +96 +__ISwbÏnk + = 8, + +97 +__ISwúŒl + = 9, + +98 +__ISwpunù + = 10, + +99 +__ISw®num + = 11, + +101 +_ISwuµ” + = + `_ISwb™ + ( +__ISwuµ” +), + +102 +_ISwlow” + = + `_ISwb™ + ( +__ISwlow” +), + +103 +_ISw®pha + = + `_ISwb™ + ( +__ISw®pha +), + +104 +_ISwdig™ + = + `_ISwb™ + ( +__ISwdig™ +), + +105 +_ISwxdig™ + = + `_ISwb™ + ( +__ISwxdig™ +), + +106 +_ISw¥aû + = + `_ISwb™ + ( +__ISw¥aû +), + +107 +_ISw´št + = + `_ISwb™ + ( +__ISw´št +), + +108 +_ISwg¿ph + = + `_ISwb™ + ( +__ISwg¿ph +), + +109 +_ISwbÏnk + = + `_ISwb™ + ( +__ISwbÏnk +), + +110 +_ISwúŒl + = + `_ISwb™ + ( +__ISwúŒl +), + +111 +_ISwpunù + = + `_ISwb™ + ( +__ISwpunù +), + +112 +_ISw®num + = + `_ISwb™ + ( +__ISw®num +) + +117 +__BEGIN_DECLS + + +119 +__BEGIN_NAMESPACE_C99 + + +126  + $isw®num + ( +wšt_t + +__wc +è +__THROW +; + +132  + $isw®pha + ( +wšt_t + +__wc +è +__THROW +; + +135  + $iswúŒl + ( +wšt_t + +__wc +è +__THROW +; + +139  + $iswdig™ + ( +wšt_t + +__wc +è +__THROW +; + +143  + $iswg¿ph + ( +wšt_t + +__wc +è +__THROW +; + +148  + $iswlow” + ( +wšt_t + +__wc +è +__THROW +; + +151  + $isw´št + ( +wšt_t + +__wc +è +__THROW +; + +156  + $iswpunù + ( +wšt_t + +__wc +è +__THROW +; + +161  + $isw¥aû + ( +wšt_t + +__wc +è +__THROW +; + +166  + $iswuµ” + ( +wšt_t + +__wc +è +__THROW +; + +171  + $iswxdig™ + ( +wšt_t + +__wc +è +__THROW +; + +176 #ifdeà +__USE_ISOC99 + + +177  + $iswbÏnk + ( +wšt_t + +__wc +è +__THROW +; + +186 +wùy³_t + + $wùy³ + ( +__cÚ¡ + * +__´Ý”ty +è +__THROW +; + +190  + $iswùy³ + ( +wšt_t + +__wc +, +wùy³_t + +__desc +è +__THROW +; + +191 +__END_NAMESPACE_C99 + + +198 +__BEGIN_NAMESPACE_C99 + + +201  +__cÚ¡ + + t__št32_t + * + twù¿ns_t +; + +202 +__END_NAMESPACE_C99 + + +203 #ifdeà +__USE_GNU + + +204 + $__USING_NAMESPACE_C99 +( +wù¿ns_t +) + +207 +__BEGIN_NAMESPACE_C99 + + +209 +wšt_t + + $towlow” + ( +wšt_t + +__wc +è +__THROW +; + +212 +wšt_t + + $towuµ” + ( +wšt_t + +__wc +è +__THROW +; + +213 +__END_NAMESPACE_C99 + + +215 +__END_DECLS + + +222 #ifdeà +_WCTYPE_H + + +228 +__BEGIN_DECLS + + +230 +__BEGIN_NAMESPACE_C99 + + +233 +wù¿ns_t + + $wù¿ns + ( +__cÚ¡ + * +__´Ý”ty +è +__THROW +; + +236 +wšt_t + + $towù¿ns + ( +wšt_t + +__wc +, +wù¿ns_t + +__desc +è +__THROW +; + +237 +__END_NAMESPACE_C99 + + +239 #ifdeà +__USE_GNU + + +241  + ~ + +245  + $isw®num_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +251  + $isw®pha_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +254  + $iswúŒl_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +258  + $iswdig™_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +262  + $iswg¿ph_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +267  + $iswlow”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +270  + $isw´št_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +275  + $iswpunù_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +280  + $isw¥aû_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +285  + $iswuµ”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +290  + $iswxdig™_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +295  + $iswbÏnk_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +299 +wùy³_t + + $wùy³_l + ( +__cÚ¡ + * +__´Ý”ty +, +__loÿË_t + +__loÿË +) + +300 +__THROW +; + +304  + $iswùy³_l + ( +wšt_t + +__wc +, +wùy³_t + +__desc +, +__loÿË_t + +__loÿË +) + +305 +__THROW +; + +313 +wšt_t + + $towlow”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +316 +wšt_t + + $towuµ”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +320 +wù¿ns_t + + $wù¿ns_l + ( +__cÚ¡ + * +__´Ý”ty +, +__loÿË_t + +__loÿË +) + +321 +__THROW +; + +324 +wšt_t + + $towù¿ns_l + ( +wšt_t + +__wc +, +wù¿ns_t + +__desc +, + +325 +__loÿË_t + +__loÿË +è +__THROW +; + +329 +__END_DECLS + + + @/usr/include/asm-i386/sigcontext.h + +1 #iâdeà +_ASMi386_SIGCONTEXT_H + + +2  + #_ASMi386_SIGCONTEXT_H + + + ) + +19  + s_å»g + { + +20  + msignifiÿnd +[4]; + +21  + mexpڒt +; + +24  + s_åx»g + { + +25  + msignifiÿnd +[4]; + +26  + mexpڒt +; + +27  + m·ddšg +[3]; + +30  + s_xmm»g + { + +31  + m–em’t +[4]; + +34  + s_å¡©e + { + +36  + mcw +; + +37  + msw +; + +38  + mg +; + +39  + moff +; + +40  + mcs£l +; + +41  + md©aoff +; + +42  + md©a£l +; + +43  +_å»g + + m_¡ +[8]; + +44  + m¡©us +; + +45  + mmagic +; + +48  + m_fx¤_’v +[6]; + +49  + mmxc¤ +; + +50  + m»£rved +; + +51  +_åx»g + + m_fx¤_¡ +[8]; + +52  +_xmm»g + + m_xmm +[8]; + +53  + m·ddšg +[56]; + +56  + #X86_FXSR_MAGIC + 0x0000 + + ) + +58  + ssigcڋxt + { + +59  + mgs +, + m__gsh +; + +60  + mfs +, + m__fsh +; + +61  + mes +, + m__esh +; + +62  + mds +, + m__dsh +; + +63  + medi +; + +64  + mesi +; + +65  + mebp +; + +66  + me¥ +; + +67  + mebx +; + +68  + medx +; + +69  + mecx +; + +70  + m—x +; + +71  + mŒ­no +; + +72  + m”r +; + +73  + me +; + +74  + mcs +, + m__csh +; + +75  + meæags +; + +76  + me¥_©_sigÇl +; + +77  + mss +, + m__ssh +; + +78  +_å¡©e + * + må¡©e +; + +79  + mÞdmask +; + +80  + mü2 +; + + @/usr/include/asm-x86_64/sigcontext.h + +1 #iâdeà +_ASM_X86_64_SIGCONTEXT_H + + +2  + #_ASM_X86_64_SIGCONTEXT_H + + + ) + +4  + ~ + +6 #iâdeà +_BITS_SIGCONTEXT_H + + +11  + s_å¡©e + { + +12 +__u16 + + mcwd +; + +13 +__u16 + + mswd +; + +14 +__u16 + + mtwd +; + +15 +__u16 + + mfÝ +; + +16 +__u64 + + mr +; + +17 +__u64 + + mrdp +; + +18 +__u32 + + mmxc¤ +; + +19 +__u32 + + mmxc¤_mask +; + +20 +__u32 + + m¡_¥aû +[32]; + +21 +__u32 + + mxmm_¥aû +[64]; + +22 +__u32 + + m»£rved2 +[24]; + +25  + ssigcڋxt + { + +26  + mr8 +; + +27  + mr9 +; + +28  + mr10 +; + +29  + mr11 +; + +30  + mr12 +; + +31  + mr13 +; + +32  + mr14 +; + +33  + mr15 +; + +34  + mrdi +; + +35  + mrsi +; + +36  + mrbp +; + +37  + mrbx +; + +38  + mrdx +; + +39  + m¿x +; + +40  + mrcx +; + +41  + mr¥ +; + +42  + mr +; + +43  + meæags +; + +44  + mcs +; + +45  + mgs +; + +46  + mfs +; + +47  + m__·d0 +; + +48  + m”r +; + +49  + mŒ­no +; + +50  + mÞdmask +; + +51  + mü2 +; + +52  +_å¡©e + * + må¡©e +; + +53  + m»£rved1 +[8]; + + @/usr/include/bits/byteswap.h + +20 #ià! +defšed + +_BYTESWAP_H + && !defšed +_NETINET_IN_H + + +24 #iâdeà +_BITS_BYTESWAP_H + + +25  + #_BITS_BYTESWAP_H + 1 + + ) + +28  + #__bsw­_cÚ¡ªt_16 +( +x +) \ + +29 (((( +x +è>> 8è& 0xffè| (((xè& 0xffè<< 8)) + + ) + +31 #ifdeà +__GNUC__ + + +32 #ià +__GNUC__ + >= 2 + +33  + #__bsw­_16 +( +x +) \ + +34 ( +__ex‹nsiÚ__ + \ + +35 ({  +__v +, +__x + = ( +x +); \ + +36 ià( + `__bužtš_cÚ¡ªt_p + ( +__x +)) \ + +37 +__v + = + `__bsw­_cÚ¡ªt_16 + ( +__x +); \ + +39 + `__asm__ + ("rorw $8, %w0" \ + +40 : "ô" ( +__v +) \ + +41 : "0" ( +__x +) \ + +43 +__v +; })) + + ) + +46  + #__bsw­_16 +( +x +) \ + +47 ( +__ex‹nsiÚ__ + \ + +48 ({  +__x + = ( +x +); + `__bsw­_cÚ¡ªt_16 + (__x); })) + + ) + +51  +__šlše +  + +52 + $__bsw­_16 + ( +__bsx +) + +54  + `__bsw­_cÚ¡ªt_16 + ( +__bsx +); + +55 + } +} + +59  + #__bsw­_cÚ¡ªt_32 +( +x +) \ + +60 (((( +x +) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ + +61 ((( +x +è& 0x0000ff00è<< 8è| (((xè& 0x000000ffè<< 24)) + + ) + +63 #ifdeà +__GNUC__ + + +64 #ià +__GNUC__ + >= 2 + +67 #ià! +defšed + +__i486__ + && !defšed +__³Áium__ + && !defšed +__³Áium´o__ + \ + +68 && ! +defšed + + g__³Áium4__ + + +69  + #__bsw­_32 +( +x +) \ + +70 ( +__ex‹nsiÚ__ + \ + +71 ({  +__v +, +__x + = ( +x +); \ + +72 ià( + `__bužtš_cÚ¡ªt_p + ( +__x +)) \ + +73 +__v + = + `__bsw­_cÚ¡ªt_32 + ( +__x +); \ + +75 + `__asm__ + ("rorw $8, %w0;" \ + +78 : "ô" ( +__v +) \ + +79 : "0" ( +__x +) \ + +81 +__v +; })) + + ) + +83  + #__bsw­_32 +( +x +) \ + +84 ( +__ex‹nsiÚ__ + \ + +85 ({  +__v +, +__x + = ( +x +); \ + +86 ià( + `__bužtš_cÚ¡ªt_p + ( +__x +)) \ + +87 +__v + = + `__bsw­_cÚ¡ªt_32 + ( +__x +); \ + +89 + `__asm__ + ("bsw­ %0" : "ô" ( +__v +è: "0" ( +__x +)); \ + +90 +__v +; })) + + ) + +93  + #__bsw­_32 +( +x +) \ + +94 ( +__ex‹nsiÚ__ + \ + +95 ({  +__x + = ( +x +); + `__bsw­_cÚ¡ªt_32 + (__x); })) + + ) + +98  +__šlše +  + +99 + $__bsw­_32 + ( +__bsx +) + +101  + `__bsw­_cÚ¡ªt_32 + ( +__bsx +); + +102 + } +} + +106 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +108  + #__bsw­_cÚ¡ªt_64 +( +x +) \ + +109 (((( +x +) & 0xff00000000000000ull) >> 56) \ + +110 | ((( +x +) & 0x00ff000000000000ull) >> 40) \ + +111 | ((( +x +) & 0x0000ff0000000000ull) >> 24) \ + +112 | ((( +x +) & 0x000000ff00000000ull) >> 8) \ + +113 | ((( +x +) & 0x00000000ff000000ull) << 8) \ + +114 | ((( +x +) & 0x0000000000ff0000ull) << 24) \ + +115 | ((( +x +) & 0x000000000000ff00ull) << 40) \ + +116 | ((( +x +è& 0x00000000000000ffuÎè<< 56)) + + ) + +118  + #__bsw­_64 +( +x +) \ + +119 ( +__ex‹nsiÚ__ + \ + +120 ({ uniÚ { +__ex‹nsiÚ__ +  +__Î +; \ + +121  +__l +[2]; } +__w +, +__r +; \ + +122 ià( + `__bužtš_cÚ¡ªt_p + ( +x +)) \ + +123 +__r +. +__Î + = + `__bsw­_cÚ¡ªt_64 + ( +x +); \ + +126 +__w +. +__Î + = ( +x +); \ + +127 +__r +. +__l +[0] = + `__bsw­_32 + ( +__w +.__l[1]); \ + +128 +__r +. +__l +[1] = + `__bsw­_32 + ( +__w +.__l[0]); \ + +130 +__r +. +__Î +; })) + + ) + + @/usr/include/bits/initspin.h + +23  + #__LT_SPINLOCK_INIT + 0 + + ) + +26  + #__LOCK_INITIALIZER + (( +_±h»ad_ç¡lock +){ 0, +__LT_SPINLOCK_INIT + }) + + ) + +27  + #__LOCK_ALT_INITIALIZER + { 0, +__LT_SPINLOCK_INIT + } + + ) + +28  + #__ALT_LOCK_INITIALIZER + { 0, +__LT_SPINLOCK_INIT + } + + ) + +29  + #__ATOMIC_INITIALIZER + { 0, +__LT_SPINLOCK_INIT + } + + ) + + @/usr/include/sched.h + +20 #iâdef +_SCHED_H + + +21  + #_SCHED_H + 1 + + ) + +23  + ~<ã©u»s.h +> + +26  + ~ + +28  + #__Ãed_time¥ec + + + ) + +29  + ~ + +32  + ~ + +34  + #sched_´iܙy + +__sched_´iܙy + + + ) + +37 +__BEGIN_DECLS + + +40  + $sched_£¬am + ( +__pid_t + +__pid +, +__cÚ¡ +  +sched_·¿m + * +__·¿m +) + +41 +__THROW +; + +44  + $sched_g‘·¿m + ( +__pid_t + +__pid +,  +sched_·¿m + * +__·¿m +è +__THROW +; + +47  + $sched_£tscheduËr + ( +__pid_t + +__pid +,  +__pÞicy +, + +48 +__cÚ¡ +  +sched_·¿m + * +__·¿m +è +__THROW +; + +51  + $sched_g‘scheduËr + ( +__pid_t + +__pid +è +__THROW +; + +54  + $sched_y›ld + (è +__THROW +; + +57  + $sched_g‘_´iܙy_max + ( +__®gܙhm +è +__THROW +; + +60  + $sched_g‘_´iܙy_mš + ( +__®gܙhm +è +__THROW +; + +63  + $sched_¼_g‘_š‹rv® + ( +__pid_t + +__pid +,  +time¥ec + * +__t +è +__THROW +; + +66 #ifdeà +__USE_GNU + + +68  + #CPU_SETSIZE + +__CPU_SETSIZE + + + ) + +69  + #CPU_SET +( +ýu +, +ýu£ +è + `__CPU_SET + (ýu, cpu£) + + ) + +70  + #CPU_CLR +( +ýu +, +ýu£ +è + `__CPU_CLR + (ýu, cpu£) + + ) + +71  + #CPU_ISSET +( +ýu +, +ýu£ +è + `__CPU_ISSET + (ýu, cpu£) + + ) + +72  + #CPU_ZERO +( +ýu£ +è + `__CPU_ZERO + (ýu£) + + ) + +76  + $sched_£ffš™y + ( +__pid_t + +__pid +, +size_t + +__ýu£tsize +, + +77 +__cÚ¡ + +ýu_£t_t + * +__ýu£t +è +__THROW +; + +80  + $sched_g‘affš™y + ( +__pid_t + +__pid +, +size_t + +__ýu£tsize +, + +81 +ýu_£t_t + * +__ýu£t +è +__THROW +; + +84 +__END_DECLS + + + @ +1 +. +1 +/usr/include +211 +4897 +alloc.c +alternate.c +bootparams.c +chooser.c +chooser.h +choosers/simple.c +choosers/simple.h +choosers/textmenu.c +choosers/textmenu.h +config.c +config.h +devschemes/simple.c +elf.h +elilo.c +elilo.h +elilo_debug.h +fileops.c +fileops.h +fs/ext2_fs.h +fs/ext2_fs_i.h +fs/ext2_fs_sb.h +fs/ext2_private.h +fs/ext2fs.c +fs/ext2fs.h +fs/fs.h +fs/localfs.c +fs/localfs.h +fs/netfs.c +fs/netfs.h +getopt.c +getopt.h +glue_ext2fs.c +glue_ext2fs.h +glue_localfs.c +glue_localfs.h +glue_netfs.c +glue_netfs.h +gunzip.c +gzip.h +ia32/bin_to_h.c +ia32/bzimage.c +ia32/config.c +ia32/gzip.c +ia32/gzip_loader.c +ia32/plain_loader.c +ia32/private.h +ia32/sysdeps.h +ia32/system.c +ia64/config.c +ia64/fpswa.c +ia64/gzip.c +ia64/gzip_loader.c +ia64/plain_loader.c +ia64/private.h +ia64/setjmp.h +ia64/sysdeps.h +ia64/system.c +inflate.c +initrd.c +loader.c +loader.h +strops.c +strops.h +sysdeps.h +tools/eliloalt.c +util.c +vars.c +vars.h +/usr/include/asm/atomic.h +/usr/include/asm/bitops.h +/usr/include/asm/byteorder.h +/usr/include/asm/semaphore.h +/usr/include/dirent.h +/usr/include/errno.h +/usr/include/fcntl.h +/usr/include/linux/adfs_fs_sb.h +/usr/include/linux/cache.h +/usr/include/linux/config.h +/usr/include/linux/efs_fs_i.h +/usr/include/linux/efs_fs_sb.h +/usr/include/linux/fcntl.h +/usr/include/linux/ioctl.h +/usr/include/linux/iso_fs_i.h +/usr/include/linux/iso_fs_sb.h +/usr/include/linux/kdev_t.h +/usr/include/linux/limits.h +/usr/include/linux/linkage.h +/usr/include/linux/list.h +/usr/include/linux/mount.h +/usr/include/linux/net.h +/usr/include/linux/nfs_fs_i.h +/usr/include/linux/nfs_fs_sb.h +/usr/include/linux/pipe_fs_i.h +/usr/include/linux/quota.h +/usr/include/linux/stat.h +/usr/include/linux/stddef.h +/usr/include/linux/types.h +/usr/include/linux/udf_fs_i.h +/usr/include/linux/udf_fs_sb.h +/usr/include/linux/wait.h +/usr/include/setjmp.h +/usr/include/stdint.h +/usr/include/stdio.h +/usr/include/stdlib.h +/usr/include/string.h +/usr/include/sys/types.h +/usr/include/unistd.h +/usr/include/alloca.h +/usr/include/asm-i386/atomic.h +/usr/include/asm-i386/bitops.h +/usr/include/asm-i386/byteorder.h +/usr/include/asm-i386/semaphore.h +/usr/include/asm-x86_64/atomic.h +/usr/include/asm-x86_64/bitops.h +/usr/include/asm-x86_64/byteorder.h +/usr/include/asm-x86_64/semaphore.h +/usr/include/asm/cache.h +/usr/include/asm/fcntl.h +/usr/include/asm/ioctl.h +/usr/include/asm/linkage.h +/usr/include/asm/types.h +/usr/include/bits/confname.h +/usr/include/bits/dirent.h +/usr/include/bits/environments.h +/usr/include/bits/errno.h +/usr/include/bits/fcntl.h +/usr/include/bits/posix1_lim.h +/usr/include/bits/posix_opt.h +/usr/include/bits/pthreadtypes.h +/usr/include/bits/setjmp.h +/usr/include/bits/sigset.h +/usr/include/bits/stdio.h +/usr/include/bits/stdio2.h +/usr/include/bits/stdio_lim.h +/usr/include/bits/string.h +/usr/include/bits/string2.h +/usr/include/bits/string3.h +/usr/include/bits/sys_errlist.h +/usr/include/bits/types.h +/usr/include/bits/waitflags.h +/usr/include/bits/waitstatus.h +/usr/include/bits/wchar.h +/usr/include/bits/wordsize.h +/usr/include/endian.h +/usr/include/features.h +/usr/include/libio.h +/usr/include/linux/backing-dev.h +/usr/include/linux/err_kernel_only.h +/usr/include/linux/errno.h +/usr/include/linux/fs.h +/usr/include/linux/kernel.h +/usr/include/linux/nfs.h +/usr/include/linux/posix_types.h +/usr/include/sys/select.h +/usr/include/sys/stat.h +/usr/include/sys/sysmacros.h +/usr/include/sys/wait.h +/usr/include/time.h +/usr/include/xlocale.h +/usr/include/_G_config.h +/usr/include/asm-i386/cache.h +/usr/include/asm-i386/fcntl.h +/usr/include/asm-i386/ioctl.h +/usr/include/asm-i386/linkage.h +/usr/include/asm-i386/types.h +/usr/include/asm-x86_64/cache.h +/usr/include/asm-x86_64/fcntl.h +/usr/include/asm-x86_64/ioctl.h +/usr/include/asm-x86_64/linkage.h +/usr/include/asm-x86_64/types.h +/usr/include/asm/errno.h +/usr/include/asm/posix_types.h +/usr/include/bits/endian.h +/usr/include/bits/local_lim.h +/usr/include/bits/sched.h +/usr/include/bits/select.h +/usr/include/bits/siginfo.h +/usr/include/bits/stat.h +/usr/include/bits/stdio-lock.h +/usr/include/bits/time.h +/usr/include/bits/typesizes.h +/usr/include/gnu/stubs.h +/usr/include/linux/byteorder/little_endian.h +/usr/include/signal.h +/usr/include/sys/cdefs.h +/usr/include/sys/resource.h +/usr/include/asm-i386/errno.h +/usr/include/asm-i386/posix_types.h +/usr/include/asm-x86_64/errno.h +/usr/include/asm-x86_64/posix_types.h +/usr/include/bits/libc-lock.h +/usr/include/bits/resource.h +/usr/include/bits/sigaction.h +/usr/include/bits/sigcontext.h +/usr/include/bits/signum.h +/usr/include/bits/sigstack.h +/usr/include/bits/sigthread.h +/usr/include/gconv.h +/usr/include/linux/byteorder/generic.h +/usr/include/linux/byteorder/swab.h +/usr/include/sys/ucontext.h +/usr/include/wchar.h +/usr/include/asm/sigcontext.h +/usr/include/byteswap.h +/usr/include/pthread.h +/usr/include/wctype.h +/usr/include/asm-i386/sigcontext.h +/usr/include/asm-x86_64/sigcontext.h +/usr/include/bits/byteswap.h +/usr/include/bits/initspin.h +/usr/include/sched.h diff --git a/docs/elilo.txt b/docs/elilo.txt index fdc1131..3de7501 100644 --- a/docs/elilo.txt +++ b/docs/elilo.txt @@ -1,18 +1,20 @@ -------------------------------------------------------------------- - ELILO.EFI: Linux boot loader for EFI/IA-64 and EFI/IA-32 based systems + ELILO.EFI: Linux boot loader for + EFI/IA-64,EFI/IA-32 and EFI/x86_64 based systems -------------------------------------------------------------------- Stephane Eranian August 2003 Copyright (C) 2000-2003 Hewlett-Packard Co. + Copyright (C) 2006-2010 Intel Co. I/ Introduction ------------ -This document describes how to use ELILO on for both IA-64 and IA-32 EFI-based platforms. -This document describes ELILO version 3.4. +This document describes how to use ELILO on for IA-64, IA-32 and x86_64 EFI-based platforms. +This document describes ELILO version 3.7. II/ Command line options -------------------- @@ -81,6 +83,9 @@ II/ Command line options for more information on device naming schemes. The slash character '/' can be used as a directory separator on any file systems including the EFI file system (FAT32). + For x86_64: + ---------- + No new options. III/ Configuration File ------------------ @@ -94,7 +99,7 @@ III/ Configuration File where AABBCCDD is the hexadecimal representation of the IP address assigned during the DHCP phase. - 2/ elilo-ia64.conf or elilo-ia32.conf + 2/ elilo-ia64.conf or elilo-ia32.conf or elilo-x86_64.conf The choice depends on the client platform. This step allows the same DHCP/PXE server to provide files for both types of clients. @@ -236,6 +241,9 @@ III/ Configuration File the user can also specify a kernel file that is not specified in the config file. In any case, some of the global options (such as append) are always concatenated to whatever the user type. + x86_64 specific options: + ----------------------- + None yet. IV/ Booting from the local system ----------------------------- @@ -447,6 +455,29 @@ XII/ Booting on EFI/ia32 platforms be booted (plain vmlinux will not work). Similarly, existing initial ramdisks can be used without modifications. +XIII/ Booting on EFI/x86_64 platforms + ----------------------------- + + To use elilo on x86_64, you can put it on a floppy and + on a FAT32 partition (msdos partition). You can also + netboot if your network adapter has support for UNDI/PXE. + + Elilo/x86_64 requires efi64 enabled linux kernel (> 2.6.21). + You need to compile the kernel with CONFIG_EFI option. + x86_64 platforms with UEFI 2.0 firmware deprecate UGA protocol + and therefore only the Graphics Output Protocol (GOP) is supported. For + such platforms, the kernel must be configured with EFI_FB option. This + will enable early boot messages on the console. The elilo for x86_64 + attempts to query the firmware for GOP and if it fails it defaults to + text mode. Elilo ONLY takes compressed kernel image which are + typically obtained via a 'make bzImage'. Plain elf/x86_64 kernel can't + be booted (plain vmlinux will not work). Similarly, existing initial + ramdisks can be used without modifications. + + The x86_64 implementation converts the EFI memory map into E820 map and + passes it in the bootparameter supplied to the OS. For details on + bootparameter, see x86_64/sysdeps.h. + IX/ Credits ------- @@ -457,6 +488,9 @@ IX/ Credits Richard Hirst Chris Ahna Mike Johnston + Fenghua Yu + Bibo Mao + Chandramouli Narayanan X/ Bug reports ----------- @@ -468,6 +502,10 @@ X/ Bug reports XIII/ Reference --------- + UEFI 2.0 specifications are available from the following web site: + + http://www.uefi.org/home + EFI v1.02 specifications are available from the following web site: http://developer.intel.com/technology/efi/ diff --git a/elf.h b/elf.h index ad367f5..8289e0d 100644 --- a/elf.h +++ b/elf.h @@ -103,6 +103,7 @@ typedef UINT64 Elf64_Word; #define EM_IA_64 50 /* HP/Intel IA-64 */ +#define EM_X86_64 62 /* Intel/AMD x86-64 */ /* * This is an interim value that we will use until the committee comes * up with a final number. diff --git a/elilo.c b/elilo.c index 6bdd6bd..2773f3f 100644 --- a/elilo.c +++ b/elilo.c @@ -1,5 +1,5 @@ /* - * elilo.c - IA-64/IA-32 EFI Linux loader + * elilo.c - IA-64/IA-32/x86_64 EFI Linux loader * * Copyright (C) 1999-2003 Hewlett-Packard Co. * Contributed by David Mosberger . @@ -8,6 +8,11 @@ * Copyright (C) 1999-2000 VA Linux Systems * Contributed by Johannes Erdfelt . * + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * * This file is part of the ELILO, the EFI Linux boot loader. * * ELILO is free software; you can redistribute it and/or modify @@ -41,7 +46,7 @@ #include "loader.h" #include "config.h" /* for config_init() */ -#define ELILO_VERSION L"3.4" +#define ELILO_VERSION L"3.7" #define ELILO_SHARED_CMDLINE_OPTS L"pPMC:aDhd:i:vVc:E" elilo_config_t elilo_opt; @@ -244,7 +249,7 @@ do_launch: if ((bp=create_boot_params(cmdline, &imem, &mmem, &cookie)) == 0) goto error; /* terminate bootservices */ - status = BS->ExitBootServices(image, cookie); + status = uefi_call_wrapper(BS->ExitBootServices, 2, image, cookie); if (EFI_ERROR(status)) goto bad_exit; start_kernel(kd.kentry, bp); @@ -307,7 +312,7 @@ fixupargs(EFI_LOADED_IMAGE *info) #define FAKE_ELILONAME L"elilo-forced" - status = BS->HandleProtocol (info->DeviceHandle, &PxeBaseCodeProtocol, (VOID **)&pxe); + status = uefi_call_wrapper(BS->HandleProtocol, 3, info->DeviceHandle, &PxeBaseCodeProtocol, (VOID **)&pxe); if (EFI_ERROR(status)) return; default_load_options = info->LoadOptions; @@ -365,7 +370,7 @@ check_edd30(VOID) UINT8 bool = FALSE; INTN ret = -1; - status = RT->GetVariable(L"EDD30", &edd30_guid, NULL, &l, &bool); + status = uefi_call_wrapper(RT->GetVariable, 5, L"EDD30", &edd30_guid, NULL, &l, &bool); if (status == EFI_BUFFER_TOO_SMALL || (bool != TRUE && bool != FALSE)) { ERR_PRT((L"Warning: EDD30 EFI variable is not boolean value: forcing it to TRUE")); return -1; @@ -395,7 +400,7 @@ force_edd30(VOID) UINT8 bool; bool = TRUE; - status = RT->SetVariable(L"EDD30", &edd30_guid, EDD30_ATTR, l, &bool); + status = uefi_call_wrapper(RT->SetVariable, 5, L"EDD30", &edd30_guid, EDD30_ATTR, l, &bool); if (EFI_ERROR(status)) { ERR_PRT((L"can't set EDD30 variable: ignoring it")); return -1; @@ -439,19 +444,18 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *system_tab) * mode. * XXX: clean this up ! */ - BS->SetWatchdogTimer(0, 0x0, 0, NULL); + uefi_call_wrapper(BS->SetWatchdogTimer, 4, 0, 0x0, 0, NULL); /* initialize memory allocator */ if (alloc_init() == -1) return EFI_LOAD_ERROR; - status = BS->HandleProtocol(image, &LoadedImageProtocol, (VOID **) &info); + status = uefi_call_wrapper(BS->HandleProtocol, 3, image, &LoadedImageProtocol, (VOID **) &info); if (EFI_ERROR(status)) { ERR_PRT((L"image handle does not support LOADED_IMAGE protocol")); return EFI_LOAD_ERROR; } VERB_PRT(5,Print(L"Loaded at 0x%lx size=%d bytes code=%d data=%d\n", info->ImageBase, info->ImageSize, info->ImageCodeType, info->ImageDataType)); - /* * verify EDD3.0 status. Users may have to reboot */ diff --git a/fileops.c b/fileops.c index 85f3485..1a43479 100644 --- a/fileops.c +++ b/fileops.c @@ -1,6 +1,9 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -135,7 +138,7 @@ glue_filesystem(EFI_GUID *proto, EFI_HANDLE dev, fops_fs_glue_t glue) VOID *intf = NULL; EFI_STATUS status; - status = BS->HandleProtocol(dev, proto, &intf); + status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, proto, &intf); if (EFI_ERROR(status)) { ERR_PRT((L"unable to locate %g: should not happen", proto)); return NULL; /* should not happen */ @@ -358,6 +361,8 @@ fops_setdefaults(struct config_file *defconf, CHAR16 *kname, UINTN maxlen, CHAR1 #define FILEOPS_ARCH_DEFAULT_CONFIG L"elilo-ia64.conf" #elif defined (CONFIG_ia32) #define FILEOPS_ARCH_DEFAULT_CONFIG L"elilo-ia32.conf" +#elif defined (CONFIG_x86_64) +#define FILEOPS_ARCH_DEFAULT_CONFIG L"elilo-x86_64.conf" #else #error "You need to specfy your default arch config file" #endif @@ -455,7 +460,7 @@ add_dev_tab(EFI_GUID *proto, EFI_HANDLE boot_handle, UINTN size, fops_fs_glue_t /* * get the actual device handles now */ - status = BS->LocateHandle(ByProtocol, proto, NULL, &size, tab); + status = uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, proto, NULL, &size, tab); if (status != EFI_SUCCESS) { ERR_PRT((L"failed to get handles for proto %g size=%d: %r", proto, size, status)); free(tab); @@ -536,7 +541,7 @@ find_filesystems(EFI_HANDLE boot_handle) */ for(fs = fs_tab; *fs; fs++) { size = 0; - BS->LocateHandle(ByProtocol, &(*fs)->proto, NULL, &size, NULL); + uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &(*fs)->proto, NULL, &size, NULL); total += size; } if (total == 0) { @@ -560,7 +565,7 @@ find_filesystems(EFI_HANDLE boot_handle) for(fs = fs_tab; *fs; fs++) { size = 0; - BS->LocateHandle(ByProtocol, &(*fs)->proto, NULL, &size, NULL); + uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &(*fs)->proto, NULL, &size, NULL); if (size == 0) continue; add_dev_tab(&(*fs)->proto, boot_handle, size, (*fs)->glue); diff --git a/fs/ext2fs.c b/fs/ext2fs.c index 4eaea27..bec47fe 100644 --- a/fs/ext2fs.c +++ b/fs/ext2fs.c @@ -144,7 +144,7 @@ read_bytes(EFI_BLOCK_IO *blkio, UINT32 mediaid, UINTN offset, VOID *addr, UINTN DBG_PRT((L"readblock(%x, %d, %d, %d, %x)", blkio, mediaid, base, buffer_size, buffer)); - status = blkio->ReadBlocks(blkio, mediaid, base, buffer_size, buffer); + status = uefi_call_wrapper(blkio->ReadBlocks, 5, blkio, mediaid, base, buffer_size, buffer); if (EFI_ERROR(status)) { ERR_PRT((L"readblock(%d,%d)=%r", base, buffer_size, status)); goto error; @@ -866,13 +866,13 @@ ext2fs_install_one(EFI_HANDLE dev, VOID **intf) EFI_BLOCK_IO *blkio; ext2fs_t *ext2fs; - status = BS->HandleProtocol (dev, &Ext2FsProtocol, (VOID **)&ext2fs); + status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &Ext2FsProtocol, (VOID **)&ext2fs); if (status == EFI_SUCCESS) { ERR_PRT((L"Warning: found existing %s protocol on device", FS_NAME)); goto found; } - status = BS->HandleProtocol(dev, &BlockIoProtocol, (VOID **)&blkio); + status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &BlockIoProtocol, (VOID **)&blkio); if (EFI_ERROR(status)) return EFI_INVALID_PARAMETER; VERB_PRT(5, @@ -944,7 +944,7 @@ ext2fs_install(VOID) EFI_STATUS status; VOID *intf; - BS->LocateHandle(ByProtocol, &BlockIoProtocol, NULL, &size, NULL); + uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &BlockIoProtocol, NULL, &size, NULL); if (size == 0) return EFI_UNSUPPORTED; /* no device found, oh well */ DBG_PRT((L"size=%d", size)); @@ -955,7 +955,8 @@ ext2fs_install(VOID) return EFI_OUT_OF_RESOURCES; } - status = BS->LocateHandle(ByProtocol, &BlockIoProtocol, NULL, &size, (VOID **)dev_tab); + status = uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &BlockIoProtocol, NULL, + &size, (VOID **)dev_tab); if (status != EFI_SUCCESS) { ERR_PRT((L"failed to get handles: %r", status)); free(dev_tab); @@ -984,7 +985,7 @@ ext2fs_uninstall(VOID) for(i=0; i < ndev; i++) { if (dev_tab[i].intf == NULL) continue; e2fs = FS_PRIVATE(dev_tab[i].intf); - status = BS->UninstallProtocolInterface(e2fs->dev, &Ext2FsProtocol, dev_tab[i].intf); + status = uefi_call_wrapper(BS->UninstallProtocolInterface, 3, e2fs->dev, &Ext2FsProtocol, dev_tab[i].intf); if (EFI_ERROR(status)) { ERR_PRT((L"Uninstall %s error: %r", FS_NAME, status)); continue; diff --git a/fs/localfs.c b/fs/localfs.c index 4fdc99f..fe1333f 100644 --- a/fs/localfs.c +++ b/fs/localfs.c @@ -1,6 +1,10 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -61,7 +65,7 @@ static EFI_GUID LocalFsProtocol = LOCALFS_PROTOCOL; * let's be clean here */ typedef union { - EFI_HANDLE *dev; + EFI_HANDLE dev; localfs_t *intf; } dev_tab_t; @@ -94,7 +98,7 @@ localfs_open(localfs_interface_t *this, CHAR16 *name, UINTN *fd) DBG_PRT((L"localfs_open on %s\n", name)); - status = lfs->volume->Open(lfs->volume, &fh, name, EFI_FILE_MODE_READ, 0); + status = uefi_call_wrapper(lfs->volume->Open, 5, lfs->volume, &fh, name, EFI_FILE_MODE_READ, 0); if (status == EFI_SUCCESS) { *fd = LOCALFS_F2FD(fh); } @@ -110,7 +114,7 @@ localfs_read(localfs_interface_t *this, UINTN fd, VOID *buf, UINTN *size) lfs = FS_PRIVATE(this); - return lfs->volume->Read(LOCALFS_FD2F(fd), size, buf); + return uefi_call_wrapper(lfs->volume->Read, 3, LOCALFS_FD2F(fd), size, buf); } static EFI_STATUS @@ -122,7 +126,7 @@ localfs_close(localfs_interface_t *this, UINTN fd) lfs = FS_PRIVATE(this); - return lfs->volume->Close(LOCALFS_FD2F(fd)); + return uefi_call_wrapper(lfs->volume->Close, 1, LOCALFS_FD2F(fd)); } static EFI_STATUS @@ -140,7 +144,7 @@ localfs_infosize(localfs_interface_t *this, UINTN fd, UINT64 *sz) *sz = info->FileSize; - FreePool(info); + uefi_call_wrapper(BS->FreePool, 1, info); return EFI_SUCCESS; } @@ -154,7 +158,7 @@ localfs_seek(localfs_interface_t *this, UINTN fd, UINT64 newpos) lfs = FS_PRIVATE(this); - return lfs->volume->SetPosition(LOCALFS_FD2F(fd), newpos); + return uefi_call_wrapper(lfs->volume->SetPosition, 2, LOCALFS_FD2F(fd), newpos); } static VOID @@ -185,16 +189,16 @@ localfs_install_one(EFI_HANDLE dev, VOID **intf) EFI_FILE_IO_INTERFACE *volume; EFI_FILE_HANDLE volume_fh; - status = BS->HandleProtocol (dev, &LocalFsProtocol, (VOID **)&localfs); + status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &LocalFsProtocol, (VOID **)&localfs); if (status == EFI_SUCCESS) { ERR_PRT((L"Warning: found existing %s protocol on device", FS_NAME)); goto found; } - status = BS->HandleProtocol (dev, &FileSystemProtocol, (VOID **)&volume); + status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &FileSystemProtocol, (VOID **)&volume); if (EFI_ERROR(status)) return EFI_INVALID_PARAMETER; - status = volume->OpenVolume(volume, &volume_fh); + status = uefi_call_wrapper(volume->OpenVolume, 2, volume, &volume_fh); if (EFI_ERROR(status)) { ERR_PRT((L"cannot open volume")); return status; @@ -221,7 +225,7 @@ found: dp = DevicePathFromHandle(dev); str = DevicePathToStr(dp); Print(L"attached %s to %s\n", FS_NAME, str); - FreePool(str); + uefi_call_wrapper(BS->FreePool, 1, str); }); return EFI_SUCCESS; @@ -235,7 +239,7 @@ localfs_install(VOID) EFI_STATUS status; VOID *intf; - BS->LocateHandle(ByProtocol, &FileSystemProtocol, NULL, &size, NULL); + uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &FileSystemProtocol, NULL, &size, NULL); if (size == 0) return EFI_UNSUPPORTED; /* no device found, oh well */ DBG_PRT((L"size=%d", size)); @@ -245,8 +249,7 @@ localfs_install(VOID) ERR_PRT((L"failed to allocate handle table")); return EFI_OUT_OF_RESOURCES; } - - status = BS->LocateHandle(ByProtocol, &FileSystemProtocol, NULL, &size, (VOID **)dev_tab); + status = uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &FileSystemProtocol, NULL, &size, (VOID **)dev_tab); if (status != EFI_SUCCESS) { ERR_PRT((L"failed to get handles: %r", status)); free(dev_tab); @@ -275,7 +278,7 @@ localfs_uninstall(VOID) for(i=0; i < ndev; i++) { if (dev_tab[i].intf == NULL) continue; lfs = FS_PRIVATE(dev_tab[i].intf); - status = BS->UninstallProtocolInterface(lfs->dev, &LocalFsProtocol, dev_tab[i].intf); + status = uefi_call_wrapper(BS->UninstallProtocolInterface, 3, lfs->dev, &LocalFsProtocol, dev_tab[i].intf); if (EFI_ERROR(status)) { ERR_PRT((L"Uninstall %s error: %r", FS_NAME, status)); continue; @@ -285,7 +288,7 @@ localfs_uninstall(VOID) dp = DevicePathFromHandle(lfs->dev); str = DevicePathToStr(dp); Print(L"uninstalled %s on %s\n", FS_NAME, str); - FreePool(str); + uefi_call_wrapper(BS->FreePool, 1, str); }); free(dev_tab[i].intf); } diff --git a/fs/netfs.c b/fs/netfs.c index 4913785..063f4e5 100644 --- a/fs/netfs.c +++ b/fs/netfs.c @@ -1,6 +1,10 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -262,7 +266,7 @@ netfs_start(EFI_PXE_BASE_CODE *pxe) { EFI_STATUS status; - status = pxe->Start(pxe, FALSE); + status = uefi_call_wrapper(pxe->Start, 2, pxe, FALSE); if (EFI_ERROR(status)) return status; return pxe->Dhcp(pxe, FALSE); @@ -337,7 +341,7 @@ retry: */ prev_netbufsize = f->netbuf_size; - status = nfs->pxe->Mtftp(nfs->pxe, EFI_PXE_BASE_CODE_TFTP_READ_FILE, f->netbuf, FALSE, + status = uefi_call_wrapper(nfs->pxe->Mtftp, 10, nfs->pxe, EFI_PXE_BASE_CODE_TFTP_READ_FILE, f->netbuf, FALSE, &(f->netbuf_size), blocksize > 0 ? &blocksize : NULL, &nfs->srv_ip, @@ -627,7 +631,7 @@ netfs_query_layer(netfs_interface_t *this, UINT16 server_type, UINT16 layer, UIN if (server_type == 0) server_type = find_pxe_server_type(nfs->pxe); - status = nfs->pxe->Discover(nfs->pxe, server_type, &layer, FALSE, 0); + status = uefi_call_wrapper(nfs->pxe->Discover, 5, nfs->pxe, server_type, &layer, FALSE, 0); if(status == EFI_SUCCESS) { ascii2U(nfs->pxe->Mode->PxeReply.Dhcpv4.BootpBootFile, str, maxlen); } @@ -680,13 +684,13 @@ netfs_install_one(EFI_HANDLE dev, VOID **intf) netfs_t *netfs; EFI_PXE_BASE_CODE *pxe; - status = BS->HandleProtocol (dev, &NetFsProtocol, (VOID **)&netfs); + status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &NetFsProtocol, (VOID **)&netfs); if (status == EFI_SUCCESS) { ERR_PRT((L"Warning: found existing %s protocol on device", FS_NAME)); goto found; } - status = BS->HandleProtocol (dev, &PxeBaseCodeProtocol, (VOID **)&pxe); + status = uefi_call_wrapper(BS->HandleProtocol, 3, dev, &PxeBaseCodeProtocol, (VOID **)&pxe); if (EFI_ERROR(status)) return EFI_INVALID_PARAMETER; @@ -727,7 +731,7 @@ netfs_install(VOID) EFI_STATUS status; VOID *intf; - BS->LocateHandle(ByProtocol, &PxeBaseCodeProtocol, NULL, &size, NULL); + uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &PxeBaseCodeProtocol, NULL, &size, NULL); if (size == 0) return EFI_UNSUPPORTED; /* no device found, oh well */ DBG_PRT((L"size=%d", size)); @@ -738,7 +742,7 @@ netfs_install(VOID) return EFI_OUT_OF_RESOURCES; } - status = BS->LocateHandle(ByProtocol, &PxeBaseCodeProtocol, NULL, &size, (VOID **)dev_tab); + status = uefi_call_wrapper(BS->LocateHandle, 5, ByProtocol, &PxeBaseCodeProtocol, NULL, &size, (VOID **)dev_tab); if (status != EFI_SUCCESS) { ERR_PRT((L"failed to get handles: %r", status)); free(dev_tab); @@ -767,7 +771,7 @@ netfs_uninstall(VOID) for(i=0; i < ndev; i++) { if (dev_tab[i].intf == NULL) continue; nfs = FS_PRIVATE(dev_tab[i].intf); - status = BS->UninstallProtocolInterface(nfs->dev, &NetFsProtocol, dev_tab[i].intf); + status = uefi_call_wrapper(BS->UninstallProtocolInterface, 3, nfs->dev, &NetFsProtocol, dev_tab[i].intf); if (EFI_ERROR(status)) { ERR_PRT((L"Uninstall %s error: %r", FS_NAME, status)); continue; @@ -780,7 +784,8 @@ netfs_uninstall(VOID) FreePool(str); }); - if (nfs->pxe->Mode->Started == TRUE) nfs->pxe->Stop(nfs->pxe); + if (nfs->pxe->Mode->Started == TRUE) + uefi_call_wrapper(nfs->pxe->Stop, 1, nfs->pxe); free(dev_tab[i].intf); } diff --git a/getopt.c b/getopt.c index 8a70616..03a17d8 100644 --- a/getopt.c +++ b/getopt.c @@ -25,7 +25,6 @@ * 02111-1307, USA. */ - #include #include @@ -36,7 +35,7 @@ #define BADCH (INTN)'?' #define BADARG (INTN)':' -extern CHAR16 * StrChr(IN const CHAR16 *s, INT16 c); +extern CHAR16 * StrChr(IN const CHAR16 *s, CHAR16 c); CHAR16 *Optarg; INTN Optind = 1; diff --git a/glue_netfs.c b/glue_netfs.c index 5de3629..51a38ce 100644 --- a/glue_netfs.c +++ b/glue_netfs.c @@ -1,6 +1,10 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -167,6 +171,8 @@ netfs_setdefaults(VOID *intf, config_file_t *config, CHAR16 *kname, UINTN maxlen # define CONFIG_ARCH_EXTENSION L"-ia64.conf\0" # elif defined (CONFIG_ia32) # define CONFIG_ARCH_EXTENSION L"-ia64.conf\0" +# elif defined (CONFIG_x86_64) +# define CONFIG_ARCH_EXTENSION L"-x86_64.conf\0" # else # error "You need to specfy your default arch config file" # endif diff --git a/sysdeps.h b/sysdeps.h index b72d106..898854f 100644 --- a/sysdeps.h +++ b/sysdeps.h @@ -1,6 +1,10 @@ /* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan * * This file is part of the ELILO, the EFI Linux boot loader. * @@ -30,6 +34,8 @@ #include "ia64/sysdeps.h" #elif defined CONFIG_ia32 #include "ia32/sysdeps.h" +#elif defined CONFIG_x86_64 +#include "x86_64/sysdeps.h" #endif #endif /* __ELILO_SYSDEPS_H__ */ diff --git a/util.c b/util.c index 85babf4..84e76cc 100644 --- a/util.c +++ b/util.c @@ -5,6 +5,11 @@ * Copyright (C) 2001 Silicon Graphics, Inc. * Contributed by Brent Casavant * + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * * This file is part of the ELILO, the EFI Linux boot loader. * * ELILO is free software; you can redistribute it and/or modify @@ -40,7 +45,10 @@ static INTN read_keypress(EFI_INPUT_KEY *key) { - return systab->ConIn->ReadKeyStroke(systab->ConIn, key); + return uefi_call_wrapper(systab->ConIn->ReadKeyStroke, + 2, + systab->ConIn, + key); } @@ -55,7 +63,10 @@ check_abort(VOID) inline VOID reset_input(VOID) { - systab->ConIn->Reset(systab->ConIn, 1); + uefi_call_wrapper(systab->ConIn->Reset, + 2, + systab->ConIn, + 1); } #if 0 @@ -71,9 +82,9 @@ wait_keypress_abort(VOID) Print(L"Hit ENTER to continue or ANY other key to cancel"); /* cleanup buffer first */ - while (conin->ReadKeyStroke(conin, &key) == EFI_SUCCESS); + while (uefi_call_wrapper(conin->ReadKeyStroke, 2, conin, &key) == EFI_SUCCESS); - while ((status=conin->ReadKeyStroke(conin, &key)) == EFI_NOT_READY ); + while ((status=uefi_call_wrapper(conin->ReadKeyStroke,2, conin, &key)) == EFI_NOT_READY ); if (EFI_ERROR(status)) return ELILO_LOAD_ERROR; @@ -102,13 +113,13 @@ wait_timeout(UINTN timeout) if (timeout == 0) return 0; /* Create a timeout timer */ - status = BS->CreateEvent(EVT_TIMER, 0, NULL, NULL, &timer); + status = uefi_call_wrapper(BS->CreateEvent, 5, EVT_TIMER, 0, NULL, NULL, &timer); if (EFI_ERROR(status)) { ERR_PRT((L" waitkey CreateEvent failed %r", status)); return -1; } /* In 100ns increments */ - status = BS->SetTimer(timer, TimerPeriodic, TENTH_SEC); + status = uefi_call_wrapper(BS->SetTimer, 3, timer, TimerPeriodic, TENTH_SEC); if (EFI_ERROR(status)) { ERR_PRT((L"waitkey SetTimer failed %r", status)); return -1; @@ -118,7 +129,7 @@ wait_timeout(UINTN timeout) list[1] = systab->ConIn->WaitForKey; do { - status = BS->WaitForEvent(2, list, &idx); + status = uefi_call_wrapper(BS->WaitForEvent, 3, 2, list, &idx); if (EFI_ERROR(status)) { ERR_PRT((L"waitkey WaitForEvent failed %r", status)); return -1; @@ -130,13 +141,13 @@ wait_timeout(UINTN timeout) * SetTimer(timer, TimerCancel, 0) is causing problems on IA-32 and gcc3 * I do not know why it dies with EFI12.35. So let's fake a key stroke. */ - status = BS->SetTimer(timer, TimerCancel, 0); + status = uefi_call_wrapper(BS->SetTimer, 3, timer, TimerCancel, 0); if (EFI_ERROR(status)) { ERR_PRT((L"waitkey SetTimer(TimerCancel) failed %r", status)); return -1; } - BS->CloseEvent(timer); + uefi_call_wrapper(BS->CloseEvent, 1, timer); return idx ? 1 : 0; } @@ -278,7 +289,7 @@ read_file(UINTN fd, UINTN total_size, CHAR8 *buffer) INTN get_memmap(mmap_desc_t *desc) { -#define ELILO_MEMMAP_SIZE_DEFAULT EFI_PAGE_SIZE +#define ELILO_MEMMAP_SIZE_DEFAULT (EFI_PAGE_SIZE*2) #define ELILO_MEMMAP_INC (sizeof(EFI_MEMORY_DESCRIPTOR)<<1) EFI_STATUS status; @@ -292,7 +303,8 @@ get_memmap(mmap_desc_t *desc) ERR_PRT((L"failed to allocate memory map buffer")); return -1; } - status = (*BS->GetMemoryMap)(&desc->map_size, desc->md, &desc->cookie, &desc->desc_size, &desc->desc_version); + status = uefi_call_wrapper(BS->GetMemoryMap, 5, &desc->map_size, desc->md, + &desc->cookie, &desc->desc_size, &desc->desc_version); if (status == EFI_SUCCESS) break; free(desc->md); diff --git a/x86_64/Makefile b/x86_64/Makefile new file mode 100644 index 0000000..4af4b8d --- /dev/null +++ b/x86_64/Makefile @@ -0,0 +1,52 @@ +# +# Copyright (C) 2001-2003 Hewlett-Packard Co. +# Contributed by Stephane Eranian +# +# This file is part of the ELILO, the EFI Linux boot loader. +# +# ELILO is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# ELILO is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with ELILO; see the file COPYING. If not, write to the Free +# Software Foundation, 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# +# Please check out the elilo.txt for complete documentation on how +# to use this program. +# + +include ../Make.defaults +include ../Make.rules + +TOPDIR=$(CDIR)/.. + +FILES=system.o config.o bzimage.o plain_loader.o gzip_loader.o gzip.o +#FILES=system.o config.o plain_loader.o + +TARGET=sysdeps.o + +all: $(TARGET) + +system.o: rmswitch.h + +rmswitch.h: bin_to_h.c rmswitch.S + $(CC) -o bin_to_h bin_to_h.c + $(AS) -o rmswitch.o rmswitch.S + $(LD) -Ttext 0x0 -s --oformat binary -o rmswitch rmswitch.o + ./bin_to_h rmswitch.h + +$(TARGET): $(FILES) + $(LD) -r -o $@ $(FILES) + +clean: + $(RM) -f $(TARGET) $(FILES) + $(RM) -f bin_to_h.o bin_to_h + $(RM) -f rmswitch.h rmswitch.o rmswitch diff --git a/x86_64/bin_to_h.c b/x86_64/bin_to_h.c new file mode 100644 index 0000000..2d1dd1b --- /dev/null +++ b/x86_64/bin_to_h.c @@ -0,0 +1,27 @@ +#include +#include + +int +main(void) +{ + unsigned n = 0; + int c; + + printf("UINT8 rmswitch_image[] = {\n"); + + while ((c = getchar()) != EOF) { + printf("0x%02x,%s", + c & 0xFF, + (++n & 0x07) ? " " : "\n"); + } + + if (n & 0x07) { + printf("\n"); + } + + printf( + "};\n" + "UINTN rmswitch_size = sizeof rmswitch_image;\n"); + + return 0; +} diff --git a/x86_64/bzimage.c b/x86_64/bzimage.c new file mode 100644 index 0000000..2eb4f46 --- /dev/null +++ b/x86_64/bzimage.c @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2001-2003 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * Contributed by Mike Johnston + * Contributed by Chris Ahna + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +#include +#include + +#include "elilo.h" +#include "loader.h" + +boot_params_t *param_start = NULL; +UINTN param_size = 0; + +UINTN kernel_size = 0x400000; /* 4M (largest x86 bzImage kernel image) */ + +static INTN +bzImage_probe(CHAR16 *kname) +{ + EFI_STATUS efi_status; + UINTN size; + fops_fd_t fd; + UINT8 bootsect[512]; + + DBG_PRT((L"probe_bzImage_boot()\n")); + + if (!kname) { + ERR_PRT((L"kname == %xh", kname)); + free_kmem(); + return -1; + } + + /* + * Open kernel image. + */ + DBG_PRT((L"opening %s...\n", kname)); + + efi_status = fops_open(kname, &fd); + if (EFI_ERROR(efi_status)) { + ERR_PRT((L"Could not open %s.", kname)); + free_kmem(); + return -1; + } + /* + * Read boot sector. + */ + + DBG_PRT((L"\nreading boot sector...\n")); + + size = sizeof bootsect; + efi_status = fops_read(fd, bootsect, &size); + if (EFI_ERROR(efi_status) || size != sizeof bootsect) { + ERR_PRT((L"Could not read boot sector from %s.", kname)); + fops_close(fd); + free_kmem(); + return -1; + } + /* + * Verify boot sector signature. + */ + + if (bootsect[0x1FE] != 0x55 || bootsect[0x1FF] != 0xAA) { + ERR_PRT((L"%s is not a bzImage kernel image.\n", kname)); + fops_close(fd); + free_kmem(); + return -1; + } + /* + * Check for out of range setup data size. + * Will almost always be 7, but we will accept 1 to 64. + */ + + DBG_PRT((L"bootsect[1F1h] == %d setup sectors\n", bootsect[0x1F1])); + + if (bootsect[0x1F1] < 1 || bootsect[0x1F1] > 64) { + ERR_PRT((L"%s is not a valid bzImage kernel image.", + kname)); + fops_close(fd); + free_kmem(); + return -1; + } + /* + * Allocate and read setup data. + */ + + DBG_PRT((L"reading setup data...\n")); + + param_size = (bootsect[0x1F1] + 1) * 512; + param_start = alloc(param_size, EfiLoaderData); + + DBG_PRT((L"param_size=%d param_start=%x", param_size, param_start)); + + if (!param_start) { + ERR_PRT((L"Could not allocate %d bytes of setup data.", + param_size)); + fops_close(fd); + free_kmem(); + return -1; + } + + CopyMem(param_start, bootsect, sizeof bootsect); + + size = param_size - 512; + efi_status = fops_read(fd, ((UINT8 *)param_start) + 512, &size); + + if (EFI_ERROR(efi_status) || size != param_size - 512) { + ERR_PRT((L"Could not read %d bytes of setup data.", + param_size - 512)); + free(param_start); + param_start = NULL; + param_size = 0; + fops_close(fd); + free_kmem(); + return -1; + } + /* + * Check for setup data signature. + */ + + { + UINT8 *c = ((UINT8 *)param_start)+514; + DBG_PRT((L"param_start(c=%x): %c-%c-%c-%c", + c, (CHAR16)c[0],(CHAR16) c[1], (CHAR16)c[2], (CHAR16)c[3])); + } + if (CompareMem(((UINT8 *)param_start) + 514, "HdrS", 4)) { + ERR_PRT((L"%s does not have a setup signature.", + kname)); + free(param_start); + param_start = NULL; + param_size = 0; + fops_close(fd); + free_kmem(); + return -1; + } + /* + * Allocate memory for kernel. + */ + + if (alloc_kmem(kernel_start, EFI_SIZE_TO_PAGES(kernel_size))) { + ERR_PRT((L"Could not allocate kernel memory.")); + return -1; + } else { + VERB_PRT(3, Print(L"kernel_start: 0x%x kernel_size: %d\n", + kernel_start, kernel_size)); + } + /* + * Now read the rest of the kernel image into memory. + */ + + DBG_PRT((L"reading kernel image...\n")); + + size = kernel_size; + efi_status = fops_read(fd, kernel_start, &size); + if (EFI_ERROR(efi_status) || size < 0x10000) { + ERR_PRT((L"Error reading kernel image %s.", kname)); + free(param_start); + param_start = NULL; + param_size = 0; + fops_close(fd); + free_kmem(); + return -1; + } + + DBG_PRT((L"kernel image read: %d bytes, %d Kbytes\n", size, size / 1024)); + + /* + * Boot sector, setup data and kernel image loaded. + */ + + fops_close(fd); + return 0; +} + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +static INTN +bzImage_load(CHAR16 *kname, kdesc_t *kd) +{ + DBG_PRT((L"load_bzImage_boot()\n")); + + if (!kname || !kd) { + ERR_PRT((L"kname=0x%x kd=0x%x", kname, kd)); + free(param_start); + param_start = NULL; + param_size = 0; + free_kmem(); + return -1; + } + kd->kstart = kd->kentry = kernel_start; + kd->kend = ((UINT8 *)kd->kstart) + kernel_size; + + DBG_PRT((L"kstart=0x%x kentry=0x%x kend=0x%x\n", kd->kstart, kd->kentry, kd->kend)); + + return 0; +} + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +loader_ops_t bzimage_loader = { + NULL, + L"bzImage_loader", + &bzImage_probe, + &bzImage_load +}; diff --git a/x86_64/config.c b/x86_64/config.c new file mode 100644 index 0000000..e8d4620 --- /dev/null +++ b/x86_64/config.c @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2001-2003 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * Contributed by Chris Ahna + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +#include +#include + +#include "elilo.h" +#include "config.h" +#include "private.h" + +typedef struct { + UINTN legacy_free_boot; +} x86_64_global_config_t; + + +static x86_64_global_config_t x86_64_gconf; + +static config_option_t sysdeps_global_options[]={ + {OPT_BOOL, OPT_GLOBAL, L"legacy-free", NULL, NULL, &x86_64_gconf.legacy_free_boot} +}; + +/* + * X86_64 operations that need to be done only once and just before + * entering the main loop of the loader + * Return: + * 0 if sucessful + * -1 otherwise (will abort execution) + */ +INTN +sysdeps_preloop_actions(EFI_HANDLE dev, CHAR16 **argv, INTN argc, INTN index, EFI_HANDLE image) +{ + return 0; +} + +#define X86_64_CMDLINE_OPTIONS L"" + +CHAR16 * +sysdeps_get_cmdline_opts(VOID) +{ + return X86_64_CMDLINE_OPTIONS; +} + +INTN +sysdeps_getopt(INTN c, INTN optind, CHAR16 *optarg) +{ + return -1; +} + +VOID +sysdeps_print_cmdline_opts(VOID) +{ +} + + +INTN +x86_64_use_legacy_free_boot(VOID) +{ + return x86_64_gconf.legacy_free_boot ? 1 : 0; +} + +INTN +sysdeps_register_options(VOID) +{ + INTN ret; + + ret = register_config_options(sysdeps_global_options, + sizeof(sysdeps_global_options)/sizeof(config_option_t), + OPTIONS_GROUP_GLOBAL); +#if 0 + /* no per image options yet */ + if (ret == -1 ) return ret; + + ret = register_config_options(sysdeps_image_options, + sizeof(sysdeps_image_options)/sizeof(config_option_t), + OPTIONS_GROUP_IMAGE); +#endif + + return ret; +} diff --git a/x86_64/gzip.c b/x86_64/gzip.c new file mode 100644 index 0000000..fdac155 --- /dev/null +++ b/x86_64/gzip.c @@ -0,0 +1,557 @@ +/* + * Copyright (C) 2001-2002 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * + * Copyright (C) 2001 Silicon Graphics, Inc. + * Contributed by Brent Casavant + * + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +#include +#include + +#include "elf.h" +#include "elilo.h" +#include "gzip.h" +#include "private.h" + +#define memzero(s, n) Memset((VOID *)(s), 0, (n)) +#define memcpy(a,b,n) Memcpy((VOID *)(a),(b),(n)) + +/* size of output buffer */ +#define WSIZE 0x8000 /* Window size must be at least 32k, */ + /* and a power of two */ +/* size of input buffer */ +#define INBUFSIZE 0x8000 + +/* + * gzip declarations + */ + +#define OF(args) args +#define FUNC_STATIC static + +typedef unsigned char uch; +typedef unsigned short ush; +typedef unsigned long ulg; + + +typedef struct segment { + unsigned long addr; /* start address */ + unsigned long offset; /* file offset */ + unsigned long size; /* file size */ + unsigned long bss_sz; /* BSS size */ + UINT8 flags; /* indicates whether to load or not */ +} segment_t; + +#define CHUNK_FL_VALID 0x1 +#define CHUNK_FL_LOAD 0x2 + +#define CHUNK_CAN_LOAD(n) chunks[(n)].flags |= CHUNK_FL_LOAD +#define CHUNK_NO_LOAD(n) chunks[(n)].flags &= ~CHUNK_FL_LOAD +#define CHUNK_IS_LOAD(n) (chunks[(n)].flags & CHUNK_FL_LOAD) + +#define CHUNK_VALIDATE(n) chunks[(n)].flags |= CHUNK_FL_VALID +#define CHUNK_INVALIDATE(n) chunks[(n)].flags = 0 +#define CHUNK_IS_VALID(n) (chunks[(n)].flags & CHUNK_FL_VALID) + +/* + * static parameters to gzip helper functions + * we cannot use paramters because API was not + * designed that way + */ +static segment_t *chunks; /* holds the list of segments */ +static segment_t *cur_chunk; +static UINTN nchunks; +static UINTN chunk; /* current segment */ +static UINTN input_fd; +static VOID *kernel_entry, *kernel_base, *kernel_end; + +static uch *inbuf; /* input buffer (compressed data) */ +static uch *window; /* output buffer (uncompressed data) */ +static unsigned long file_offset; /* position in the file */ + +static unsigned insize = 0; /* valid bytes in inbuf */ +static unsigned inptr = 0; /* index of next byte to be processed in inbuf */ +static unsigned outcnt = 0; /* bytes in output buffer */ + +/* gzip flag byte */ +#define ASCII_FLAG 0x01 /* bit 0 set: file probably ASCII text */ +#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */ +#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */ +#define ORIG_NAME 0x08 /* bit 3 set: original file name present */ +#define COMMENT 0x10 /* bit 4 set: file comment present */ +#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */ +#define RESERVED 0xC0 /* bit 6,7: reserved */ + +#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf()) + +/* Diagnostic functions */ +#ifdef INFLATE_DEBUG +# define Assert(cond,msg) {if(!(cond)) error(msg);} +int stderr; +# define Trace(x) Print(L"line %d:\n", __LINE__); +# define Tracev(x) {if (verbose) Print(L"line %d:\n", __LINE__) ;} +# define Tracevv(x) {if (verbose>1) Print(L"line %d:\n", __LINE__) ;} +# define Tracec(c,x) {if (verbose && (c)) Print(L"line %d:\n", __LINE__) ;} +# define Tracecv(c,x) {if (verbose>1 && (c)) Print(L"line %d:\n", __LINE__) ;} +#else +# define Assert(cond,msg) +# define Trace(x) +# define Tracev(x) +# define Tracevv(x) +# define Tracec(c,x) +# define Tracecv(c,x) +#endif + +static int fill_inbuf(void); +static void flush_window(void); +static void error(char *m); +static long bytes_out; +static void error(char *m); +static int error_return; + +static void * +gzip_malloc(int size) +{ + return (void *)alloc(size, 0); +} + +static void +gzip_free(void *where) +{ + return free(where); +} + +#include "inflate.c" + +/* + * Fill the input buffer and return the first byte in it. This is called + * only when the buffer is empty and at least one byte is really needed. + */ +int +fill_inbuf(void) +{ + INTN expected, nread; + EFI_STATUS status; + + expected = nread = INBUFSIZE; + + status = fops_read(input_fd, inbuf, &nread); + if (EFI_ERROR(status)) { + error("elilo: Read failed"); + } + DBG_PRT((L"%s : read %d bytes of %d bytes\n", LD_NAME, nread, expected)); + + insize = nread; + inptr = 1; + + return inbuf[0]; +} + +/* =========================================================================== + * Write the output window window[0..outcnt-1] and update crc and bytes_out. + * (Used for the decompressed data only.) + */ + +/* + * Run a set of bytes through the crc shift register. If s is a NULL + * pointer, then initialize the crc shift register contents instead. + * Return the current crc in either case. + * + * Input: + * S pointer to bytes to pump through. + * N number of bytes in S[]. + */ +unsigned long +updcrc(unsigned char *s, unsigned n) +{ + register unsigned long c; + /* crc is defined in inflate.c */ + + if (!s) { + c = 0xffffffffL; + } else { + c = crc; + while (n--) { + c = crc_32_tab[((int)c ^ (*s++)) & 0xff] ^ (c >> 8); + } + } + crc = c; + return c ^ 0xffffffffUL; /* (instead of ~c for 64-bit machines) */ +} + + +/* + * Clear input and output buffers + */ +void +clear_bufs(void) +{ + outcnt = 0; + inptr = 0; + chunk = 0; + cur_chunk = NULL; + file_offset = 0; +} + + +static INTN +is_valid_header(Elf64_Ehdr *ehdr) +{ + UINT16 type, machine; + + type = ehdr->e_type; + machine = ehdr->e_machine; + + VERB_PRT(3, Print(L"class=%d type=%d data=%d machine=%d\n", + ehdr->e_ident[EI_CLASS], + type, + ehdr->e_ident[EI_DATA], + machine)); + + return ehdr->e_ident[EI_MAG0] == 0x7f + && ehdr->e_ident[EI_MAG1] == 'E' + && ehdr->e_ident[EI_MAG2] == 'L' + && ehdr->e_ident[EI_MAG3] == 'F' + && ehdr->e_ident[EI_CLASS] == ELFCLASS64 + && type == ET_EXEC /* must be executable */ + && machine == EM_X86_64 ? 0 : -1; +} + +/* + * will invalidate loadble segments which overlap with others + */ +void +check_overlap(int i) +{ + int j; + unsigned long iend = chunks[i].addr + chunks[i].size; + + for(j=0; j < nchunks; j++) { + if (j ==i) continue; + if (chunks[i].addr >= chunks[j].addr && iend < (chunks[j].addr + chunks[j].size)) { + DBG_PRT((L"%s : segment %d fully included in segment %d\n", LD_NAME, i, j)); + CHUNK_INVALIDATE(i); /* nullyify segment */ + break; + } + } +} + +void +analyze_chunks(void) +{ + INTN i; + + for (i=0; i < nchunks; i++) { + if (CHUNK_IS_VALID(i) && !CHUNK_IS_LOAD(i)) + check_overlap(i); + } +} + + +/* + * The decompression code calls this function after decompressing the + * first block of the object file. The first block must contain all + * the relevant header information. + */ +int +first_block (const char *buf, long blocksize) +{ + Elf64_Ehdr *elf; + Elf64_Phdr *phdrs; + UINTN total_size, pages; + UINTN low_addr, max_addr; + UINTN offs = 0; + UINT16 phnum; + UINTN paddr, memsz; + INTN i; + + elf = (Elf64_Ehdr *)buf; + + if (is_valid_header(elf) == -1) + return -1; + + offs = elf->e_phoff; + phnum = elf->e_phnum; + + VERB_PRT(3, { + Print(L"Entry point 0x%lx\n", elf->e_entry); + Print(L"%d program headers\n", phnum); + Print(L"%d segment headers\n", elf->e_shnum); + }); + + if (offs + phnum * sizeof(*phdrs) > (unsigned) blocksize) { + ERR_PRT((L"%s : ELF program headers not in first block (%ld)\n", LD_NAME, offs)); + return -1; + } + + kernel_entry = (VOID *)(elf->e_entry & PADDR_MASK); + + phdrs = (Elf64_Phdr *) (buf + offs); + low_addr = ~0; + max_addr = 0; + + /* + * allocate chunk table + * Convention: a segment that does not need loading will + * have chunk[].addr = 0. + */ + chunks = (void *)alloc(sizeof(struct segment)*phnum, 0); + if (chunks == NULL) { + ERR_PRT((L"%s : failed alloc chunks %r\n", LD_NAME)); + return -1; + } + nchunks = phnum; + /* + * find lowest and higest virtual addresses + * don't assume FULLY sorted ! + */ + for (i = 0; i < phnum; ++i) { + /* + * record chunk no matter what because no load may happen + * anywhere in archive, not just as the last segment + */ + paddr = (phdrs[i].p_paddr & PADDR_MASK); + memsz = phdrs[i].p_memsz, + + chunks[i].addr = paddr; + chunks[i].offset = phdrs[i].p_offset; + chunks[i].size = phdrs[i].p_filesz; + chunks[i].bss_sz = phdrs[i].p_memsz - phdrs[i].p_filesz; + + CHUNK_VALIDATE(i); + + if (phdrs[i].p_type != PT_LOAD) { + CHUNK_NO_LOAD(i); /* mark no load chunk */ + DBG_PRT((L"%s : skipping segment %ld\n", LD_NAME, i)); + continue; + } + + CHUNK_CAN_LOAD(i); /* mark no load chunk */ + + VERB_PRT(3, + Print(L"\n%s : segment %ld vaddr [0x%lx-0x%lx] offset %ld filesz %ld " + "memsz=%ld bss_sz=%ld\n", + LD_NAME, 1+i, chunks[i].addr, chunks[i].addr+phdrs[i].p_filesz, + chunks[i].offset, chunks[i].size, memsz, chunks[i].bss_sz)); + + if (paddr < low_addr) + low_addr = paddr; + if (paddr + memsz > max_addr) + max_addr = paddr + memsz; + } + + if (low_addr & (EFI_PAGE_SIZE - 1)) { + ERR_PRT((L"%s : low_addr not page aligned 0x%lx\n", LD_NAME, low_addr)); + goto error; + } + analyze_chunks(); + + DBG_PRT((L"%s : %d program headers entry=0x%lx\nlowest_addr=0x%lx highest_addr=0x%lx\n", + LD_NAME, + phnum, kernel_entry, low_addr, max_addr)); + + total_size = (UINTN)max_addr - (UINTN)low_addr; + pages = EFI_SIZE_TO_PAGES(total_size); + + /* + * Record end of kernel for initrd + */ + kernel_base = (void *)low_addr; + kernel_end = (void *)(low_addr + (pages << EFI_PAGE_SHIFT)); + + /* allocate memory for the kernel */ + if (alloc_kmem((void *)low_addr, pages) == -1) { + ERR_PRT((L"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", + LD_NAME, pages, low_addr)); + ERR_PRT((L"%s : Could not load kernel at 0x%lx\n", LD_NAME, low_addr)); + ERR_PRT((L"%s : Bailing\n", LD_NAME)); + goto error; + } + return 0; +error: + if (chunks) + free(chunks); + return -1; +} + +/* + * Determine which chunk in the Elf file will be coming out of the expand + * code next. + */ +static void +nextchunk(void) +{ + int i; + segment_t *cp; + + cp = NULL; + for(i=0; i < nchunks; i++) { + + if (!CHUNK_IS_VALID(i) || !CHUNK_IS_LOAD(i)) continue; + + if (file_offset > chunks[i].offset) continue; + + if (cp == NULL || chunks[i].offset < cp->offset) cp = &chunks[i]; + } + cur_chunk = cp; +} + + +/* + * Write the output window window[0..outcnt-1] holding uncompressed + * data and update crc. + */ +void +flush_window(void) +{ + static const CHAR8 helicopter[4] = { '|' , '/' , '-' , '\\' }; + static UINTN heli_count; + struct segment *cp; + char *src, *dst; + long cnt; + + if (!outcnt) return; + + DBG_PRT((L"%s : flush_window outnct=%d file_offset=%ld\n", LD_NAME, outcnt, file_offset)); + + Print(L"%c\b",helicopter[heli_count++%4]); + + updcrc(window, outcnt); + + /* first time, we extract the headers */ + if (!bytes_out) { + if (first_block(window, outcnt) < 0) + error("invalid exec header"); + nextchunk(); + } + + bytes_out += outcnt; + src = window; +tail: + /* check if user wants to abort */ + if (check_abort() == EFI_SUCCESS) goto load_abort; + + cp = cur_chunk; + if (cp == NULL || file_offset + outcnt <= cp->offset) { + file_offset += outcnt; + return; + } + + /* Does this window begin before the current chunk? */ + if (file_offset < cp->offset) { + unsigned long skip = cp->offset - file_offset; + + src += skip; + file_offset += skip; + outcnt -= skip; + } + dst = (char *)cp->addr + (file_offset - cp->offset); + cnt = cp->offset + cp->size - file_offset; + if (cnt > outcnt) + cnt = outcnt; + + Memcpy(dst, src, cnt); + + file_offset += cnt; + outcnt -= cnt; + src += cnt; + + /* See if we are at the end of this chunk */ + if (file_offset == cp->offset + cp->size) { + if (cp->bss_sz) { + dst = (char *)cp->addr + cp->size; + Memset(dst, 0, cp->bss_sz); + } + nextchunk(); + /* handle remaining bytes */ + if (outcnt) + goto tail; + } + return; +load_abort: + free_kmem(); + error_return = ELILO_LOAD_ABORTED; +} + +static void +error(char *x) +{ + ERR_PRT((L"%s : %a", LD_NAME, x)); + /* will eventually exit with error from gunzip() */ +} + +INT32 +decompress_kernel(VOID) +{ + INT32 ret; + + clear_bufs(); + makecrc(); + Print(L"Uncompressing Linux... "); + ret = gunzip(); + if (ret == 0) + Print(L"done\n"); + return ret == 0 ? 0 : -1; +} + +int +gunzip_kernel(fops_fd_t fd, kdesc_t *kd) +{ + int ret = -1; + + error_return = ELILO_LOAD_ERROR; + + window = (void *)alloc(WSIZE, 0); + if (window == NULL) { + ERR_PRT((L"%s : allocate output window failed\n", LD_NAME)); + return -1; + } + + inbuf = (void *)alloc(INBUFSIZE, 0); + if (inbuf == NULL) { + ERR_PRT((L"%s : allocate input window failedr\n", LD_NAME)); + goto error; + } + input_fd = fd; + insize = 0; + bytes_out = 0; + + ret = decompress_kernel(); +error: + if (window) free(window); + if (inbuf) free(inbuf); + + if (ret == 0) { + kd->kentry = kernel_entry; + kd->kend = kernel_end; + kd->kstart = kernel_base; + error_return = ELILO_LOAD_SUCCESS; + } + return error_return; +} diff --git a/x86_64/gzip.h b/x86_64/gzip.h new file mode 100644 index 0000000..cdf4614 --- /dev/null +++ b/x86_64/gzip.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2001-2002 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +#ifndef __GZIP_H__ +#define __GZIP_H__ + + +int gzip_probe(unsigned char *, unsigned long); +int gunzip_kernel(fops_fd_t, kdesc_t *); + +#define LD_NAME L"gzip_x86_64" + +#endif /* __GZIP_H__ */ diff --git a/x86_64/gzip_loader.c b/x86_64/gzip_loader.c new file mode 100644 index 0000000..5bf97c7 --- /dev/null +++ b/x86_64/gzip_loader.c @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2001-2002 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +#include +#include + +#include "elilo.h" +#include "loader.h" +#include "gzip.h" + +static INTN +gzip_probe_format(CHAR16 *kname) +{ + UINT8 buf[4]; + EFI_STATUS status; + INTN ret = -1; + UINTN size; + fops_fd_t fd; + + status = fops_open(kname, &fd); + if (EFI_ERROR(status)) return -1; + + size = sizeof(buf); + status = fops_read(fd, buf, &size); + + if (EFI_ERROR(status) || size != sizeof(buf)) goto error; + + ret = gzip_probe(buf, sizeof(buf)); +error: + fops_close(fd); + return ret; +} + + +static INTN +gzip_load_kernel(CHAR16 *kname, kdesc_t *kd) +{ + EFI_STATUS status; + INT32 ret; + fops_fd_t fd; + + status = fops_open(kname, &fd); + if (EFI_ERROR(status)) return ELILO_LOAD_ERROR; + + ret = gunzip_kernel(fd, kd); + + fops_close(fd); + + return ret; /* could be success, error, or abort */ +} + +loader_ops_t gzip_loader={ + NULL, + LD_NAME, + gzip_probe_format, + gzip_load_kernel +}; diff --git a/x86_64/inflate.c b/x86_64/inflate.c new file mode 100644 index 0000000..5532250 --- /dev/null +++ b/x86_64/inflate.c @@ -0,0 +1,1205 @@ +#define DEBG(x) +#define DEBG1(x) +/* inflate.c -- Not copyrighted 1992 by Mark Adler + version c10p1, 10 January 1993 */ + +/* + * Adapted for booting Linux by Hannu Savolainen 1993 + * based on gzip-1.0.3 + * + * Nicolas Pitre , 1999/04/14 : + * Little mods for all variable to reside either into rodata or bss segments + * by marking constant variables with 'const' and initializing all the others + * at run-time only. This allows for the kernel uncompressor to run + * directly from Flash or ROM memory on embeded systems. + */ + +/* + Inflate deflated (PKZIP's method 8 compressed) data. The compression + method searches for as much of the current string of bytes (up to a + length of 258) in the previous 32 K bytes. If it doesn't find any + matches (of at least length 3), it codes the next byte. Otherwise, it + codes the length of the matched string and its distance backwards from + the current position. There is a single Huffman code that codes both + single bytes (called "literals") and match lengths. A second Huffman + code codes the distance information, which follows a length code. Each + length or distance code actually represents a base value and a number + of "extra" (sometimes zero) bits to get to add to the base value. At + the end of each deflated block is a special end-of-block (EOB) literal/ + length code. The decoding process is basically: get a literal/length + code; if EOB then done; if a literal, emit the decoded byte; if a + length then get the distance and emit the referred-to bytes from the + sliding window of previously emitted data. + + There are (currently) three kinds of inflate blocks: stored, fixed, and + dynamic. The compressor deals with some chunk of data at a time, and + decides which method to use on a chunk-by-chunk basis. A chunk might + typically be 32 K or 64 K. If the chunk is incompressible, then the + "stored" method is used. In this case, the bytes are simply stored as + is, eight bits per byte, with none of the above coding. The bytes are + preceded by a count, since there is no longer an EOB code. + + If the data is compressible, then either the fixed or dynamic methods + are used. In the dynamic method, the compressed data is preceded by + an encoding of the literal/length and distance Huffman codes that are + to be used to decode this block. The representation is itself Huffman + coded, and so is preceded by a description of that code. These code + descriptions take up a little space, and so for small blocks, there is + a predefined set of codes, called the fixed codes. The fixed method is + used if the block codes up smaller that way (usually for quite small + chunks), otherwise the dynamic method is used. In the latter case, the + codes are customized to the probabilities in the current block, and so + can code it much better than the pre-determined fixed codes. + + The Huffman codes themselves are decoded using a multi-level table + lookup, in order to maximize the speed of decoding plus the speed of + building the decoding tables. See the comments below that precede the + lbits and dbits tuning parameters. + */ + + +/* + Notes beyond the 1.93a appnote.txt: + + 1. Distance pointers never point before the beginning of the output + stream. + 2. Distance pointers can point back across blocks, up to 32k away. + 3. There is an implied maximum of 7 bits for the bit length table and + 15 bits for the actual data. + 4. If only one code exists, then it is encoded using one bit. (Zero + would be more efficient, but perhaps a little confusing.) If two + codes exist, they are coded using one bit each (0 and 1). + 5. There is no way of sending zero distance codes--a dummy must be + sent if there are none. (History: a pre 2.0 version of PKZIP would + store blocks with no distance codes, but this was discovered to be + too harsh a criterion.) Valid only for 1.93a. 2.04c does allow + zero distance codes, which is sent as one code of zero bits in + length. + 6. There are up to 286 literal/length codes. Code 256 represents the + end-of-block. Note however that the static length tree defines + 288 codes just to fill out the Huffman codes. Codes 286 and 287 + cannot be used though, since there is no length base or extra bits + defined for them. Similarly, there are up to 30 distance codes. + However, static trees define 32 codes (all 5 bits) to fill out the + Huffman codes, but the last two had better not show up in the data. + 7. Unzip can check dynamic Huffman blocks for complete code sets. + The exception is that a single code would not be complete (see #4). + 8. The five bits following the block type is really the number of + literal codes sent minus 257. + 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits + (1+6+6). Therefore, to output three times the length, you output + three codes (1+1+1), whereas to output four times the same length, + you only need two codes (1+3). Hmm. + 10. In the tree reconstruction algorithm, Code = Code + Increment + only if BitLength(i) is not zero. (Pretty obvious.) + 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19) + 12. Note: length code 284 can represent 227-258, but length code 285 + really is 258. The last length deserves its own, short code + since it gets used a lot in very redundant files. The length + 258 is special since 258 - 3 (the min match length) is 255. + 13. The literal/length and distance code bit lengths are read as a + single stream of lengths. It is possible (and advantageous) for + a repeat code (16, 17, or 18) to go across the boundary between + the two sets of lengths. + */ + +#ifdef RCSID +static char rcsid[] = "#Id: inflate.c,v 0.14 1993/06/10 13:27:04 jloup Exp #"; +#endif + +#ifndef FUNC_STATIC + +#if defined(STDC_HEADERS) || defined(HAVE_STDLIB_H) +# include +# include +#endif + +#include "gzip.h" +#define FUNC_STATIC +#endif /* !FUNC_STATIC */ + +#define slide window + +/* Huffman code lookup table entry--this entry is four bytes for machines + that have 16-bit pointers (e.g. PC's in the small or medium model). + Valid extra bits are 0..13. e == 15 is EOB (end of block), e == 16 + means that v is a literal, 16 < e < 32 means that v is a pointer to + the next table, which codes e - 16 bits, and lastly e == 99 indicates + an unused code. If a code with e == 99 is looked up, this implies an + error in the data. */ +struct huft { + uch e; /* number of extra bits or operation */ + uch b; /* number of bits in this code or subcode */ + union { + ush n; /* literal, length base, or distance base */ + struct huft *t; /* pointer to next level of table */ + } v; +}; + + +/* Function prototypes */ +FUNC_STATIC int huft_build OF((unsigned *, unsigned, unsigned, + const ush *, const ush *, struct huft **, int *)); +FUNC_STATIC int huft_free OF((struct huft *)); +FUNC_STATIC int inflate_codes OF((struct huft *, struct huft *, int, int)); +FUNC_STATIC int inflate_stored OF((void)); +FUNC_STATIC int inflate_fixed OF((void)); +FUNC_STATIC int inflate_dynamic OF((void)); +FUNC_STATIC int inflate_block OF((int *)); +FUNC_STATIC int inflate OF((void)); + + +/* The inflate algorithm uses a sliding 32 K byte window on the uncompressed + stream to find repeated byte strings. This is implemented here as a + circular buffer. The index is updated simply by incrementing and then + ANDing with 0x7fff (32K-1). */ +/* It is left to other modules to supply the 32 K area. It is assumed + to be usable as if it were declared "uch slide[32768];" or as just + "uch *slide;" and then malloc'ed in the latter case. The definition + must be in unzip.h, included above. */ +/* unsigned wp; current position in slide */ +#define wp outcnt +#define flush_output(w) (wp=(w),flush_window()) + +/* Tables for deflate from PKZIP's appnote.txt. */ +static const unsigned border[] = { /* Order of the bit length code lengths */ + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; +static const ush cplens[] = { /* Copy lengths for literal codes 257..285 */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; + /* note: see note #13 above about the 258 in this list. */ +static const ush cplext[] = { /* Extra bits for literal codes 257..285 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99}; /* 99==invalid */ +static const ush cpdist[] = { /* Copy offsets for distance codes 0..29 */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577}; +static const ush cpdext[] = { /* Extra bits for distance codes */ + 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, + 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, + 12, 12, 13, 13}; + + + +/* Macros for inflate() bit peeking and grabbing. + The usage is: + + NEEDBITS(j) + x = b & mask_bits[j]; + DUMPBITS(j) + + where NEEDBITS makes sure that b has at least j bits in it, and + DUMPBITS removes the bits from b. The macros use the variable k + for the number of bits in b. Normally, b and k are register + variables for speed, and are initialized at the beginning of a + routine that uses these macros from a global bit buffer and count. + + If we assume that EOB will be the longest code, then we will never + ask for bits with NEEDBITS that are beyond the end of the stream. + So, NEEDBITS should not read any more bytes than are needed to + meet the request. Then no bytes need to be "returned" to the buffer + at the end of the last block. + + However, this assumption is not true for fixed blocks--the EOB code + is 7 bits, but the other literal/length codes can be 8 or 9 bits. + (The EOB code is shorter than other codes because fixed blocks are + generally short. So, while a block always has an EOB, many other + literal/length codes have a significantly lower probability of + showing up at all.) However, by making the first table have a + lookup of seven bits, the EOB code will be found in that first + lookup, and so will not require that too many bits be pulled from + the stream. + */ + +FUNC_STATIC ulg bb; /* bit buffer */ +FUNC_STATIC unsigned bk; /* bits in bit buffer */ + +FUNC_STATIC const ush mask_bits[] = { + 0x0000, + 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, + 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff +}; + +#define NEXTBYTE() (uch)get_byte() +#define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE())<>=(n);k-=(n);} + + +/* + Huffman code decoding is performed using a multi-level table lookup. + The fastest way to decode is to simply build a lookup table whose + size is determined by the longest code. However, the time it takes + to build this table can also be a factor if the data being decoded + is not very long. The most common codes are necessarily the + shortest codes, so those codes dominate the decoding time, and hence + the speed. The idea is you can have a shorter table that decodes the + shorter, more probable codes, and then point to subsidiary tables for + the longer codes. The time it costs to decode the longer codes is + then traded against the time it takes to make longer tables. + + This results of this trade are in the variables lbits and dbits + below. lbits is the number of bits the first level table for literal/ + length codes can decode in one step, and dbits is the same thing for + the distance codes. Subsequent tables are also less than or equal to + those sizes. These values may be adjusted either when all of the + codes are shorter than that, in which case the longest code length in + bits is used, or when the shortest code is *longer* than the requested + table size, in which case the length of the shortest code in bits is + used. + + There are two different values for the two tables, since they code a + different number of possibilities each. The literal/length table + codes 286 possible values, or in a flat code, a little over eight + bits. The distance table codes 30 possible values, or a little less + than five bits, flat. The optimum values for speed end up being + about one bit more than those, so lbits is 8+1 and dbits is 5+1. + The optimum values may differ though from machine to machine, and + possibly even between compilers. Your mileage may vary. + */ + + +FUNC_STATIC const int lbits = 9; /* bits in base literal/length lookup table */ +FUNC_STATIC const int dbits = 6; /* bits in base distance lookup table */ + + +/* If BMAX needs to be larger than 16, then h and x[] should be ulg. */ +#define BMAX 16 /* maximum bit length of any code (16 for explode) */ +#define N_MAX 288 /* maximum number of codes in any set */ + + +FUNC_STATIC unsigned hufts; /* track memory usage */ + + +FUNC_STATIC int huft_build(b, n, s, d, e, t, m) +unsigned *b; /* code lengths in bits (all assumed <= BMAX) */ +unsigned n; /* number of codes (assumed <= N_MAX) */ +unsigned s; /* number of simple-valued codes (0..s-1) */ +const ush *d; /* list of base values for non-simple codes */ +const ush *e; /* list of extra bits for non-simple codes */ +struct huft **t; /* result: starting table */ +int *m; /* maximum lookup bits, returns actual */ +/* Given a list of code lengths and a maximum table size, make a set of + tables to decode that set of codes. Return zero on success, one if + the given code set is incomplete (the tables are still built in this + case), two if the input is invalid (all zero length codes or an + oversubscribed set of lengths), and three if not enough memory. */ +{ + unsigned a; /* counter for codes of length k */ + unsigned c[BMAX+1]; /* bit length count table */ + unsigned f; /* i repeats in table every f entries */ + int g; /* maximum code length */ + int h; /* table level */ + register unsigned i; /* counter, current code */ + register unsigned j; /* counter */ + register int k; /* number of bits in current code */ + int l; /* bits per table (returned in m) */ + register unsigned *p; /* pointer into c[], b[], or v[] */ + register struct huft *q; /* points to current table */ + struct huft r; /* table entry for structure assignment */ + struct huft *u[BMAX]; /* table stack */ + unsigned v[N_MAX]; /* values in order of bit length */ + register int w; /* bits before this table == (l * h) */ + unsigned x[BMAX+1]; /* bit offsets, then code stack */ + unsigned *xp; /* pointer into x */ + int y; /* number of dummy codes added */ + unsigned z; /* number of entries in current table */ + +DEBG("huft1 "); + + /* Generate counts for each bit length */ + memzero(c, sizeof(c)); + + p = b; i = n; + do { + Tracecv(*p, (stderr, (n-i >= ' ' && n-i <= '~' ? "%c %d\n" : "0x%x %d\n"), + n-i, *p)); + c[*p]++; /* assume all entries <= BMAX */ + p++; /* Can't combine with above line (Solaris bug) */ + } while (--i); + if (c[0] == n) /* null input--all zero length codes */ + { + *t = (struct huft *)NULL; + *m = 0; + return 0; + } + +DEBG("huft2 "); + + /* Find minimum and maximum length, bound *m by those */ + l = *m; + for (j = 1; j <= BMAX; j++) + if (c[j]) + break; + k = j; /* minimum code length */ + if ((unsigned)l < j) + l = j; + for (i = BMAX; i; i--) + if (c[i]) + break; + g = i; /* maximum code length */ + if ((unsigned)l > i) + l = i; + *m = l; + +DEBG("huft3 "); + + /* Adjust last length count to fill out codes, if needed */ + for (y = 1 << j; j < i; j++, y <<= 1) + if ((y -= c[j]) < 0) + return 2; /* bad input: more codes than bits */ + if ((y -= c[i]) < 0) + return 2; + c[i] += y; + +DEBG("huft4 "); + + /* Generate starting offsets into the value table for each length */ + x[1] = j = 0; + p = c + 1; xp = x + 2; + while (--i) { /* note that i == g from above */ + *xp++ = (j += *p++); + } + +DEBG("huft5 "); + + /* Make a table of values in order of bit lengths */ + p = b; i = 0; + do { + if ((j = *p++) != 0) + v[x[j]++] = i; + } while (++i < n); + +DEBG("h6 "); + + /* Generate the Huffman codes and for each, make the table entries */ + x[0] = i = 0; /* first Huffman code is zero */ + p = v; /* grab values in bit order */ + h = -1; /* no tables yet--level -1 */ + w = -l; /* bits decoded == (l * h) */ + u[0] = (struct huft *)NULL; /* just to keep compilers happy */ + q = (struct huft *)NULL; /* ditto */ + z = 0; /* ditto */ +DEBG("h6a "); + + /* go through the bit lengths (k already is bits in shortest code) */ + for (; k <= g; k++) + { +DEBG("h6b "); + a = c[k]; + while (a--) + { +DEBG("h6b1 "); + /* here i is the Huffman code of length k bits for value *p */ + /* make tables up to required level */ + while (k > w + l) + { +DEBG1("1 "); + h++; + w += l; /* previous table always l bits */ + + /* compute minimum size table less than or equal to l bits */ + z = (z = g - w) > (unsigned)l ? l : z; /* upper limit on table size */ + if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */ + { /* too few codes for k-w bit table */ +DEBG1("2 "); + f -= a + 1; /* deduct codes from patterns left */ + xp = c + k; + while (++j < z) /* try smaller tables up to z bits */ + { + if ((f <<= 1) <= *++xp) + break; /* enough codes to use up j bits */ + f -= *xp; /* else deduct codes from patterns */ + } + } +DEBG1("3 "); + z = 1 << j; /* table entries for j-bit table */ + + /* allocate and link in new table */ + if ((q = (struct huft *)gzip_malloc((z + 1)*sizeof(struct huft))) == + (struct huft *)NULL) + { + if (h) + huft_free(u[0]); + return 3; /* not enough memory */ + } +DEBG1("4 "); + hufts += z + 1; /* track memory usage */ + *t = q + 1; /* link to list for huft_free() */ + *(t = &(q->v.t)) = (struct huft *)NULL; + u[h] = ++q; /* table starts after link */ + +DEBG1("5 "); + /* connect to last table, if there is one */ + if (h) + { + x[h] = i; /* save pattern for backing up */ + r.b = (uch)l; /* bits to dump before this table */ + r.e = (uch)(16 + j); /* bits in this table */ + r.v.t = q; /* pointer to this table */ + j = i >> (w - l); /* (get around Turbo C bug) */ + u[h-1][j] = r; /* connect to last table */ + } +DEBG1("6 "); + } +DEBG("h6c "); + + /* set up table entry in r */ + r.b = (uch)(k - w); + if (p >= v + n) + r.e = 99; /* out of values--invalid code */ + else if (*p < s) + { + r.e = (uch)(*p < 256 ? 16 : 15); /* 256 is end-of-block code */ + r.v.n = (ush)(*p); /* simple code is just the value */ + p++; /* one compiler does not like *p++ */ + } + else + { + r.e = (uch)e[*p - s]; /* non-simple--look up in lists */ + r.v.n = d[*p++ - s]; + } +DEBG("h6d "); + + /* fill code-like entries with r */ + f = 1 << (k - w); + for (j = i >> w; j < z; j += f) + q[j] = r; + + /* backwards increment the k-bit code i */ + for (j = 1 << (k - 1); i & j; j >>= 1) + i ^= j; + i ^= j; + + /* backup over finished tables */ + while ((i & ((1 << w) - 1)) != x[h]) + { + h--; /* don't need to update q */ + w -= l; + } +DEBG("h6e "); + } +DEBG("h6f "); + } + +DEBG("huft7 "); + + /* Return true (1) if we were given an incomplete table */ + return y != 0 && g != 1; +} + + + +FUNC_STATIC int huft_free(t) +struct huft *t; /* table to free */ +/* Free the malloc'ed tables built by huft_build(), which makes a linked + list of the tables it made, with the links in a dummy first entry of + each table. */ +{ + register struct huft *p, *q; + + + /* Go through linked list, freeing from the malloced (t[-1]) address. */ + p = t; + while (p != (struct huft *)NULL) + { + q = (--p)->v.t; + gzip_free((char*)p); + p = q; + } + return 0; +} + + +FUNC_STATIC int inflate_codes(tl, td, bl, bd) +struct huft *tl, *td; /* literal/length and distance decoder tables */ +int bl, bd; /* number of bits decoded by tl[] and td[] */ +/* inflate (decompress) the codes in a deflated (compressed) block. + Return an error code or zero if it all goes ok. */ +{ + register unsigned e; /* table entry flag/number of extra bits */ + unsigned n, d; /* length and index for copy */ + unsigned w; /* current window position */ + struct huft *t; /* pointer to table entry */ + unsigned ml, md; /* masks for bl and bd bits */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + + /* make local copies of globals */ + b = bb; /* initialize bit buffer */ + k = bk; + w = wp; /* initialize window position */ + + /* inflate the coded data */ + ml = mask_bits[bl]; /* precompute masks for speed */ + md = mask_bits[bd]; + for (;;) /* do until end of block */ + { + NEEDBITS((unsigned)bl) + if ((e = (t = tl + ((unsigned)b & ml))->e) > 16) + do { + if (e == 99) + return 1; + DUMPBITS(t->b) + e -= 16; + NEEDBITS(e) + } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16); + DUMPBITS(t->b) + if (e == 16) /* then it's a literal */ + { + slide[w++] = (uch)t->v.n; + Tracevv((stderr, "%c", slide[w-1])); + if (w == WSIZE) + { + flush_output(w); + w = 0; + } + } + else /* it's an EOB or a length */ + { + /* exit if end of block */ + if (e == 15) + break; + + /* get length of block to copy */ + NEEDBITS(e) + n = t->v.n + ((unsigned)b & mask_bits[e]); + DUMPBITS(e); + + /* decode distance of block to copy */ + NEEDBITS((unsigned)bd) + if ((e = (t = td + ((unsigned)b & md))->e) > 16) + do { + if (e == 99) + return 1; + DUMPBITS(t->b) + e -= 16; + NEEDBITS(e) + } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16); + DUMPBITS(t->b) + NEEDBITS(e) + d = w - t->v.n - ((unsigned)b & mask_bits[e]); + DUMPBITS(e) + Tracevv((stderr,"\\[%d,%d]", w-d, n)); + + /* do the copy */ + do { + n -= (e = (e = WSIZE - ((d &= WSIZE-1) > w ? d : w)) > n ? n : e); +#if !defined(NOMEMCPY) && !defined(INFLATE_DEBUG) + if (w - d >= e) /* (this test assumes unsigned comparison) */ + { + memcpy(slide + w, slide + d, e); + w += e; + d += e; + } + else /* do it slow to avoid memcpy() overlap */ +#endif /* !NOMEMCPY */ + do { + slide[w++] = slide[d++]; + Tracevv((stderr, "%c", slide[w-1])); + } while (--e); + if (w == WSIZE) + { + flush_output(w); + w = 0; + } + } while (n); + } + } + + + /* restore the globals from the locals */ + wp = w; /* restore global window pointer */ + bb = b; /* restore global bit buffer */ + bk = k; + + /* done */ + return 0; +} + + + +FUNC_STATIC int inflate_stored() +/* "decompress" an inflated type 0 (stored) block. */ +{ + unsigned n; /* number of bytes in block */ + unsigned w; /* current window position */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + +DEBG(""); + return 0; +} + + + +FUNC_STATIC int inflate_fixed() +/* decompress an inflated type 1 (fixed Huffman codes) block. We should + either replace this with a custom decoder, or at least precompute the + Huffman tables. */ +{ + int i; /* temporary variable */ + struct huft *tl; /* literal/length code table */ + struct huft *td; /* distance code table */ + int bl; /* lookup bits for tl */ + int bd; /* lookup bits for td */ + unsigned l[288]; /* length list for huft_build */ + +DEBG(" 1) + { + huft_free(tl); + + DEBG(">"); + return i; + } + + + /* decompress until an end-of-block code */ + if (inflate_codes(tl, td, bl, bd)) + return 1; + + + /* free the decoding tables, return */ + huft_free(tl); + huft_free(td); + return 0; +} + + + +FUNC_STATIC int inflate_dynamic() +/* decompress an inflated type 2 (dynamic Huffman codes) block. */ +{ + int i; /* temporary variables */ + unsigned j; + unsigned l; /* last length */ + unsigned m; /* mask for bit lengths table */ + unsigned n; /* number of lengths to get */ + struct huft *tl; /* literal/length code table */ + struct huft *td; /* distance code table */ + int bl; /* lookup bits for tl */ + int bd; /* lookup bits for td */ + unsigned nb; /* number of bit length codes */ + unsigned nl; /* number of literal/length codes */ + unsigned nd; /* number of distance codes */ +#ifdef PKZIP_BUG_WORKAROUND + unsigned ll[288+32]; /* literal/length and distance code lengths */ +#else + unsigned ll[286+30]; /* literal/length and distance code lengths */ +#endif + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + +DEBG(" 288 || nd > 32) +#else + if (nl > 286 || nd > 30) +#endif + return 1; /* bad lengths */ + +DEBG("dyn1 "); + + /* read in bit-length-code lengths */ + for (j = 0; j < nb; j++) + { + NEEDBITS(3) + ll[border[j]] = (unsigned)b & 7; + DUMPBITS(3) + } + for (; j < 19; j++) + ll[border[j]] = 0; + +DEBG("dyn2 "); + + /* build decoding table for trees--single level, 7 bit lookup */ + bl = 7; + if ((i = huft_build(ll, 19, 19, NULL, NULL, &tl, &bl)) != 0) + { + if (i == 1) + huft_free(tl); + return i; /* incomplete code set */ + } + +DEBG("dyn3 "); + + /* read in literal and distance code lengths */ + n = nl + nd; + m = mask_bits[bl]; + i = l = 0; + while ((unsigned)i < n) + { + NEEDBITS((unsigned)bl) + j = (td = tl + ((unsigned)b & m))->b; + DUMPBITS(j) + j = td->v.n; + if (j < 16) /* length of code in bits (0..15) */ + ll[i++] = l = j; /* save last length in l */ + else if (j == 16) /* repeat last length 3 to 6 times */ + { + NEEDBITS(2) + j = 3 + ((unsigned)b & 3); + DUMPBITS(2) + if ((unsigned)i + j > n) + return 1; + while (j--) + ll[i++] = l; + } + else if (j == 17) /* 3 to 10 zero length codes */ + { + NEEDBITS(3) + j = 3 + ((unsigned)b & 7); + DUMPBITS(3) + if ((unsigned)i + j > n) + return 1; + while (j--) + ll[i++] = 0; + l = 0; + } + else /* j == 18: 11 to 138 zero length codes */ + { + NEEDBITS(7) + j = 11 + ((unsigned)b & 0x7f); + DUMPBITS(7) + if ((unsigned)i + j > n) + return 1; + while (j--) + ll[i++] = 0; + l = 0; + } + } + +DEBG("dyn4 "); + + /* free decoding table for trees */ + huft_free(tl); + +DEBG("dyn5 "); + + /* restore the global bit buffer */ + bb = b; + bk = k; + +DEBG("dyn5a "); + + /* build the decoding tables for literal/length and distance codes */ + bl = lbits; + if ((i = huft_build(ll, nl, 257, cplens, cplext, &tl, &bl)) != 0) + { +DEBG("dyn5b "); + if (i == 1) { + error(" incomplete literal tree\n"); + huft_free(tl); + } + return i; /* incomplete code set */ + } +DEBG("dyn5c "); + bd = dbits; + if ((i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0) + { +DEBG("dyn5d "); + if (i == 1) { + error(" incomplete distance tree\n"); +#ifdef PKZIP_BUG_WORKAROUND + i = 0; + } +#else + huft_free(td); + } + huft_free(tl); + return i; /* incomplete code set */ +#endif + } + +DEBG("dyn6 "); + + /* decompress until an end-of-block code */ + if (inflate_codes(tl, td, bl, bd)) + return 1; + +DEBG("dyn7 "); + + /* free the decoding tables, return */ + huft_free(tl); + huft_free(td); + + DEBG(">"); + return 0; +} + + + +FUNC_STATIC int inflate_block(e) +int *e; /* last block flag */ +/* decompress an inflated block */ +{ + unsigned t; /* block type */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + DEBG(""); + + /* bad block type */ + return 2; +} + + + +FUNC_STATIC int inflate() +/* decompress an inflated entry */ +{ + int e; /* last block flag */ + int r; /* result code */ + unsigned h; /* maximum struct huft's malloc'ed */ + + /* initialize window, bit buffer */ + wp = 0; + bk = 0; + bb = 0; + + + /* decompress until the last block */ + h = 0; + do { + hufts = 0; + if ((r = inflate_block(&e)) != 0) { + return r; + } + if (hufts > h) + h = hufts; + } while (!e); + + /* Undo too much lookahead. The next read will be byte aligned so we + * can discard unused bits in the last meaningful byte. + */ + while (bk >= 8) { + bk -= 8; + inptr--; + } + + /* flush out slide */ + flush_output(wp); + + + /* return success */ +#ifdef INFLATE_DEBUG +#ifdef EFI_COMPILE + Print(L"<%d> ", h); +#else + printf("<%d> ", h); +#endif +#endif /* INFLATE_DEBUG */ + return 0; +} + +/********************************************************************** + * + * The following are support routines for inflate.c + * + **********************************************************************/ + +static ulg crc_32_tab[256]; +static ulg crc; /* initialized in makecrc() so it'll reside in bss */ +#define CRC_VALUE (crc ^ 0xffffffffUL) + +/* + * Code to compute the CRC-32 table. Borrowed from + * gzip-1.0.3/makecrc.c. + */ + +static void +makecrc(void) +{ +/* Not copyrighted 1990 Mark Adler */ + + unsigned long c; /* crc shift register */ + unsigned long e; /* polynomial exclusive-or pattern */ + int i; /* counter for all possible eight bit values */ + int k; /* byte being shifted into crc apparatus */ + + /* terms of polynomial defining this crc (except x^32): */ + static const int p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + + /* Make exclusive-or pattern from polynomial */ + e = 0; + for (i = 0; i < sizeof(p)/sizeof(int); i++) + e |= 1L << (31 - p[i]); + + crc_32_tab[0] = 0; + + for (i = 1; i < 256; i++) + { + c = 0; + for (k = i | 256; k != 1; k >>= 1) + { + c = c & 1 ? (c >> 1) ^ e : c >> 1; + if (k & 1) + c ^= e; + } + crc_32_tab[i] = c; + } + + /* this is initialized here so this code could reside in ROM */ + crc = (ulg)0xffffffffUL; /* shift register contents */ +} + +/* gzip flag byte */ +#define ASCII_FLAG 0x01 /* bit 0 set: file probably ASCII text */ +#define CONTINUATION 0x02 /* bit 1 set: continuation of multi-part gzip file */ +#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */ +#define ORIG_NAME 0x08 /* bit 3 set: original file name present */ +#define COMMENT 0x10 /* bit 4 set: file comment present */ +#define ENCRYPTED 0x20 /* bit 5 set: file is encrypted */ +#define RESERVED 0xC0 /* bit 6,7: reserved */ + +/* + * check for valid gzip signature + * return: + * 0 : valid gzip archive + * -1: invalid gzip archive + */ +int +gzip_probe(uch *buf, unsigned long size) +{ + /* FIXME this is wrong here! FIXME!!!!*/ + if (size < 4) return -1; + + if (buf[0] != 037 || + ((buf[1] != 0213) && (buf[1] != 0236))) return -1; + + /* We only support method #8, DEFLATED */ + if (buf[2] != 8) return -1; + + if ((buf[3] & ENCRYPTED) != 0) return -1; + + if ((buf[3] & CONTINUATION) != 0) return -1; + + if ((buf[3] & RESERVED) != 0) return -1; + + return 0; +} + + +/* + * Do the uncompression! + */ +static int gunzip(void) +{ + uch flags; + unsigned char magic[2]; /* magic header */ + char method; + ulg orig_crc = 0; /* original crc */ + ulg orig_len = 0; /* original uncompressed length */ + int res; + + magic[0] = (unsigned char)get_byte(); + magic[1] = (unsigned char)get_byte(); + method = (unsigned char)get_byte(); + + if (magic[0] != 037 || + ((magic[1] != 0213) && (magic[1] != 0236))) { + error("bad gzip magic numbers"); + return -1; + } + + /* We only support method #8, DEFLATED */ + if (method != 8) { + error("internal error, invalid method"); + return -1; + } + + flags = (uch)get_byte(); + if ((flags & ENCRYPTED) != 0) { + error("Input is encrypted\n"); + return -1; + } + if ((flags & CONTINUATION) != 0) { + error("Multi part input\n"); + return -1; + } + if ((flags & RESERVED) != 0) { + error("Input has invalid flags\n"); + return -1; + } + (ulg)get_byte(); /* Get timestamp */ + ((ulg)get_byte()) << 8; + ((ulg)get_byte()) << 16; + ((ulg)get_byte()) << 24; + + (void)get_byte(); /* Ignore extra flags for the moment */ + (void)get_byte(); /* Ignore OS type for the moment */ + + if ((flags & EXTRA_FIELD) != 0) { + unsigned len = (unsigned)get_byte(); + len |= ((unsigned)get_byte())<<8; + while (len--) (void)get_byte(); + } + + /* Get original file name if it was truncated */ + if ((flags & ORIG_NAME) != 0) { + /* Discard the old name */ + while (get_byte() != 0) /* null */ ; + } + + /* Discard file comment if any */ + if ((flags & COMMENT) != 0) { + while (get_byte() != 0) /* null */ ; + } + + /* Decompress */ + if ((res = inflate())) { + switch (res) { + case 0: + break; + case 1: + error("invalid compressed format (err=1)"); + break; + case 2: + error("invalid compressed format (err=2)"); + break; + case 3: + error("out of memory"); + break; + default: + error("invalid compressed format (other)"); + } + return -1; + } + + /* Get the crc and original length */ + /* crc32 (see algorithm.doc) + * uncompressed input size modulo 2^32 + */ + orig_crc = (ulg) get_byte(); + orig_crc |= (ulg) get_byte() << 8; + orig_crc |= (ulg) get_byte() << 16; + orig_crc |= (ulg) get_byte() << 24; + + orig_len = (ulg) get_byte(); + orig_len |= (ulg) get_byte() << 8; + orig_len |= (ulg) get_byte() << 16; + orig_len |= (ulg) get_byte() << 24; + + /* Validate decompression */ + if (orig_crc != CRC_VALUE) { + error("crc error"); + return -1; + } + if (orig_len != bytes_out) { + error("length error"); + return -1; + } + return 0; +} + + diff --git a/x86_64/plain_loader.c b/x86_64/plain_loader.c new file mode 100644 index 0000000..13cc9e5 --- /dev/null +++ b/x86_64/plain_loader.c @@ -0,0 +1,302 @@ +/* + * Copyright (C) 2001-2002 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * + * Copyright (C) 2001 Silicon Graphics, Inc. + * Contributed by Brent Casavant + * + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +#include +#include + +#include "elilo.h" +#include "loader.h" +#include "elf.h" +#include "private.h" + +#define LD_NAME L"plain_elf64" + +static INTN +is_valid_header(Elf64_Ehdr *ehdr) +{ + UINT16 type, machine; + + type = ehdr->e_type; + machine = ehdr->e_machine; + + DBG_PRT((L"class=%d type=%d data=%d machine=%d\n", + ehdr->e_ident[EI_CLASS], + type, + ehdr->e_ident[EI_DATA], + machine)); + + return ehdr->e_ident[EI_MAG0] == 0x7f + && ehdr->e_ident[EI_MAG1] == 'E' + && ehdr->e_ident[EI_MAG2] == 'L' + && ehdr->e_ident[EI_MAG3] == 'F' + && ehdr->e_ident[EI_CLASS] == ELFCLASS64 + && type == ET_EXEC /* must be executable */ + && machine == EM_X86_64? 0 : -1; +} + +static INTN +plain_probe(CHAR16 *kname) +{ + Elf64_Ehdr ehdr; + EFI_STATUS status; + INTN ret = -1; + fops_fd_t fd; + UINTN size = sizeof(ehdr); + + status = fops_open(kname, &fd); + if (EFI_ERROR(status)) + return -1; + + VERB_PRT(3, { + Print(L"plain_probe: kname=%s\n", kname); + }); + status = fops_read(fd, &ehdr, &size); + if (EFI_ERROR(status) || size != sizeof(ehdr)) + goto error; + + ret = is_valid_header(&ehdr); +error: + fops_close(fd); + return ret; +} + + +static INTN +load_elf(fops_fd_t fd, kdesc_t *kd) +{ + Elf64_Ehdr ehdr; + Elf64_Phdr *phdrs; + EFI_STATUS status; + INTN ret = ELILO_LOAD_ERROR; + UINTN i, total_size = 0; + UINTN pages, size, bss_sz, osize; + VOID *low_addr = (VOID *)~0; + VOID *max_addr = (VOID *)0; + UINTN paddr, memsz, filesz; + UINT16 phnum; + + Print(L"Loading Linux... "); + + size = sizeof(ehdr); + + status = fops_read(fd, &ehdr, &size); + if (EFI_ERROR(status) || size < sizeof(ehdr)) + return ELILO_LOAD_ERROR; + + if (is_valid_header(&ehdr) == -1) { + ERR_PRT((L"%s : not a 64-bit ELF image\n", LD_NAME)); + return ELILO_LOAD_ERROR; + } + VERB_PRT(3, { + Print(L"ELF Header information: \n"); + Print(L"\tEntry point 0x%x\n", (ehdr.e_entry & PADDR_MASK)); + Print(L"\t%d program headers\n", ehdr.e_phnum); + Print(L"\t%d segment headers\n", ehdr.e_shnum); + }); + + phnum = ehdr.e_phnum; + + if (fops_seek(fd, ehdr.e_phoff) < 0) { + ERR_PRT((L"%s : seek to %d for phdrs failed", LD_NAME, ehdr.e_phoff)); + return ELILO_LOAD_ERROR; + } + size = osize = (phnum * sizeof(Elf64_Phdr)); + + DBG_PRT((L"%s : allocate %d bytes for %d pheaders each of size:%d phentsize=%d\n", + LD_NAME, size, phnum, sizeof(Elf64_Phdr), ehdr.e_phentsize)); + + phdrs = (Elf64_Phdr *)alloc(size, 0); + if (phdrs == NULL) { + ERR_PRT((L"%s : allocate for phdrs failed", LD_NAME)); + return ELILO_LOAD_ERROR; + } + status = fops_read(fd, phdrs, &size); + if (EFI_ERROR(status) || size != osize) { + ERR_PRT((L"%s : phdr load failed", LD_NAME, status)); + goto out; + } + /* + * First pass to figure out total memory footprint + */ + for (i = 0; i < phnum; i++) { + + paddr = (phdrs[i].p_paddr & PADDR_MASK); + memsz = phdrs[i].p_memsz; + + DBG_PRT((L"Phdr %d paddr [0x%x-0x%x] offset 0x%x" + " filesz 0x%x memsz=0x%x bss_sz=0x%x p_type=0x%x\n", + 1+i, paddr, paddr+phdrs[i].p_filesz, phdrs[i].p_offset, + phdrs[i].p_filesz, memsz, + (memsz - phdrs[i].p_filesz), phdrs[i].p_type)); + + if (phdrs[i].p_type != PT_LOAD) + continue; + if (paddr < (UINTN)low_addr) + low_addr = (VOID *)paddr; + if (paddr + memsz > (UINTN)max_addr) + max_addr = (VOID *)paddr + memsz; + } + + if ((UINTN)low_addr & (EFI_PAGE_SIZE - 1)) { + ERR_PRT((L"%s : kernel low address 0x%x not page aligned\n", + LD_NAME, low_addr)); + goto out; + } + /* how many bytes are needed to hold the kernel? */ + total_size = (UINTN)max_addr - (UINTN)low_addr; + + /* round up to get required number of pages */ + pages = EFI_SIZE_TO_PAGES(total_size); + + /* keep track of location where kernel starts and ends */ + kd->kstart = low_addr; + kd->kend = (low_addr + (pages << EFI_PAGE_SHIFT)); + kd->kentry = (VOID *)(ehdr.e_entry & PADDR_MASK); + + VERB_PRT(3, { + Print(L"Lowest PhysAddr: 0x%x\nTotalMemSize:%d bytes (%d pages)\n", + low_addr, total_size, pages); + Print(L"Kernel entry @ 0x%x\n", kd->kentry); + }); + + /* now allocate memory for the kernel at the exact requested spot */ + if (alloc_kmem(low_addr, pages) == -1) { + ERR_PRT((L"%s : AllocatePages(%d, 0x%lx) for kernel failed\n", + LD_NAME, pages, low_addr)); + ERR_PRT((L"%s : Could not alloc %d pages for the kernel at 0x%lx " + " and relocation is not not been implemented!\n", + LD_NAME, pages, low_addr)); + goto load_abort; + } + /* Pure paranoia. Clear the memory first. Just in case... */ + Memset(low_addr, 0, (pages << EFI_PAGE_SHIFT)); + + VERB_PRT(1, Print(L"Press any key to interrupt\n")); + + /* + * Walk through the program headers + * and actually load data into physical memory + */ + + for (i = 0; i < phnum; i++) { + /* Check for pure loadable segment; ignore if not loadable */ + if (phdrs[i].p_type != PT_LOAD) + continue; + + VERB_PRT(3, Print(L"poffs: 0x%x (phdrs[%d].p_offset)\n", + phdrs[i].p_offset, i)); + + filesz = phdrs[i].p_filesz; + low_addr = (VOID *)((UINTN) phdrs[i].p_paddr & PADDR_MASK); + + /* Move to the right position */ + if (fops_seek(fd, phdrs[i].p_offset) < 0) + goto out_kernel; + + /* How many BSS bytes to clear */ + bss_sz = phdrs[i].p_memsz - filesz; + + VERB_PRT(4, { + Print(L"\nHeader #%d\n", i); + Print(L"Offset in file 0x%x\n", phdrs[i].p_offset); + Print(L"Physical addr 0x%x\n", low_addr); + Print(L"BSS size 0x%x bytes\n", bss_sz); + }); + + /* + * Read actual segment into memory + */ + ret = fops_read(fd, low_addr, &filesz); + if (ret == ELILO_LOAD_ABORTED) goto load_abort; + if (ret == ELILO_LOAD_ERROR) goto out; + + /* + * Clear bss section + */ + if (bss_sz) + Memset((VOID *)low_addr+filesz, 0, bss_sz); + } + + free(phdrs); + return ELILO_LOAD_SUCCESS; + +load_abort: + Print(L"..Aborted\n"); + ret = ELILO_LOAD_ABORTED; +out_kernel: + /* free kernel memory */ + free_kmem(); +out: + free(phdrs); + return ret; +} + +static INTN +plain_load_kernel(CHAR16 *kname, kdesc_t *kd) +{ + INTN ret; + fops_fd_t fd; + EFI_STATUS status; + + /* + * Moving the open here simplifies the load_elf() error handling + */ + status = fops_open(kname, &fd); + if (EFI_ERROR(status)) return ELILO_LOAD_ERROR; + + Print(L"Loading %s...", kname); + + ret = load_elf(fd, kd); + + fops_close(fd); + return ret; +} + +loader_ops_t plain_loader={ + NULL, + LD_NAME, + plain_probe, + plain_load_kernel +}; + +/*void plain_loader_init() +{ + loader_ops_t plain={ + NULL, + LD_NAME, + plain_probe, + plain_load_kernel + }; + *plain_loader=*plain; +}*/ + diff --git a/x86_64/private.h b/x86_64/private.h new file mode 100644 index 0000000..ddb1d52 --- /dev/null +++ b/x86_64/private.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2001-2003 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * + * Copyright (C) 2006-2009 Intel Corporation + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +#ifndef __ELILO_PRIVATE_X86_64_H__ +#define __ELILO_PRIVATE_X86_64_H__ + +#endif /* __ELILO_PRIVATE_X86_64_H__ */ + diff --git a/x86_64/rmswitch.S b/x86_64/rmswitch.S new file mode 100644 index 0000000..24fd402 --- /dev/null +++ b/x86_64/rmswitch.S @@ -0,0 +1,118 @@ +# +# Switch from protected mode to real mode and jump to setup.S +# image located at %cx:0. +# +# This module must be placed into physical memory at 0:7C00h. +# EFI has some real mode thunking code at 2000:0h. +# +# Processor and non-maskable interrupts should be disabled +# before control is passed to this module. +# + +.global _start + +.code32 +.text +_start: + # + # Load identity mapped GDT & real mode IDT. + # Add 7C00h to the addresses since this is linked to start + # at 0h and it is being placed at 7C00h. + # + + lgdt %cs:gdt_48 + 0x7C00 + lidt %cs:idt_48 + 0x7C00 + + # + # Turn off PG bit in CR0 and set CR3 to zero. + # + + movl %cr0, %eax + andl $0x7FFFFFFF, %eax + movl %eax, %cr0 + + xorl %eax, %eax + movl %eax, %cr3 + + # + # Reload CS. + # Now we add 7B00h because we need to force the segment + # address and selector to be the same. + # + + .byte 0xEA + .long pm_reload + 0x7B00 + .word 0x10 + +pm_reload: + +.code16 + + # + # Reload DS, ES, FS, GS & SS. + # + + movw $0x18, %ax + movw %ax, %ds + movw %ax, %es + movw %ax, %fs + movw %ax, %gs + movw %ax, %ss + + # + # Switch to real mode. Clear PE bit in CR0. + # + + movl %cr0, %eax + andl $0xFFFFFFFE, %eax + movl %eax, %cr0 + + # + # Reload CS. + # + + .byte 0xEA + .word rm_reload + 0x7C00 + .word 0 + +rm_reload: + + # + # Reload SS & SP. + # + + xorw %ax, %ax + movw %ax, %ss + movw $0x7BFE, %sp + + # + # Start running setup.S + # + + .byte 0xEA + .word 0 + .word 0x9020 + + # + # GDT & IDT stuff for switching into real mode. + # + +gdt: .word 0, 0, 0, 0 # unused (00h) + .word 0, 0, 0, 0 # dummy (08h) + .word 0xFFFF, 0x100 # code (10h) + .word 0x9A00, 0 + .word 0xFFFF, 0x180 # data (18h) + .word 0x9200, 0 + +gdt_48: .word 0x08 * 0x400 + .long gdt + 0x7C00 + +idt_48: .word 0x400 + .long 0 + + # + # Be careful not to exceed 1F0h or the the bootsect.S + # parameters will be lost! + # + +.end diff --git a/x86_64/sysdeps.h b/x86_64/sysdeps.h new file mode 100644 index 0000000..df86f44 --- /dev/null +++ b/x86_64/sysdeps.h @@ -0,0 +1,451 @@ +/* + * Copyright (C) 2001-2003 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * Contributed by Mike Johnston + * Contributed by Chris Ahna + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by Chandramouli Narayanan + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +/* + * This file is used to define all the x86_64-specific data structures + * and constant used by the generic ELILO + */ +#ifndef __ELILO_SYSDEPS_X86_64_H__ +#define __ELILO_SYSDEPS_X86_64_H__ + +#define ELILO_ARCH "x86_64" /* ASCII string */ +#define PADDR_MASK 0xfffffff + +/* for now use library versions */ +#define Memset(a,v,n) SetMem((a),(n),(v)) +#define Memcpy(a,b,n) CopyMem((a),(b),(n)) + +/* Put initrd to far away from kernel image to avoid conflict. + * May need to adjust this number if it is not big enough. + */ +#define INITRD_START (50*1024*1024) + +/* + * This version must match the one in the kernel. + * + * This table was put together using information from the + * following Linux kernel source files: + * linux/include/tty.h + * linux/arch/i386/kernel/setup.c + * linux/arch/i386/boot/bootsect.S + * linux/arch/i386/boot/setup.S + * linux/arch/i386/boot/video.S + * + * New fields in this structure for EFI and ELILO are: + * efi_loader_sig + * efi_st_addr + * + * A new bit, LDRFLAG_BOOT_PARAM_RELOC, in the loader_flags + * field is also defined in this file. + */ + +#pragma pack(1) + +/* Definitions for converting EFI memory map to E820 map for Linux + * These definitions are from include/linux/asm-x86_64/e820.h + * The structure x86_64_boot_params below is updated to accommodate E820 map + * EFI memory map is converted to E820 map in this structure and passed + * to Linux. This way the OS does not need to do the conversion. + */ +#define E820_RAM 1 +#define E820_RESERVED 2 +#define E820_ACPI 3 +#define E820_NVS 4 +#define E820_EXEC_CODE 5 +#define E820_MAX 128 + +struct e820entry { + UINT64 addr; /* start of memory segment */ + UINT64 size; /* size of memory segment */ + UINT32 type; /* type of memory segment */ +} __attribute__((packed)); + + +typedef union x86_64_boot_params { + UINT8 raw[0x2000]; + struct { +/* Cursor position before passing control to kernel. */ +/* 0x00 */ UINT8 orig_cursor_col; /* LDR */ +/* 0x01 */ UINT8 orig_cursor_row; /* LDR */ + +/* Available contiguous extended memory in KB. */ +/* 0x02 */ UINT16 ext_mem_k; /* LDR */ + +/* Video page, mode and screen width before passing control to kernel. */ +/* 0x04 */ UINT16 orig_video_page; /* LDR */ +/* 0x06 */ UINT8 orig_video_mode; /* LDR */ +/* 0x07 */ UINT8 orig_video_cols; /* LDR */ + +/* 0x08 */ UINT16 unused_1; /* unused */ + +/* %%TBD */ +/* 0x0A */ UINT16 orig_ega_bx; /* LDR */ + +/* 0x0C */ UINT16 unused_2; /* unused */ + +/* Screen height before passing control to kernel. */ +/* 0x0E */ UINT8 orig_video_rows; /* LDR */ + +/* %%TBD */ +/* 0x0F */ UINT8 is_vga; /* LDR */ +/* 0x10 */ UINT16 orig_video_points; /* LDR */ + +/* %%TBD */ +/* 0x12 */ UINT16 lfb_width; /* LDR */ +/* 0x14 */ UINT16 lfb_height; /* LDR */ +/* 0x16 */ UINT16 lfb_depth; /* LDR */ +/* 0x18 */ UINT32 lfb_base; /* LDR */ +/* 0x1C */ UINT32 lfb_size; /* LDR */ + +/* Offset of command line (from start of ia32_boot_param struct). */ +/* The command line magik number must be set for the kernel setup */ +/* code to use the command line offset. */ +/* 0x20 */ UINT16 cmdline_magik; /* LDR */ +#define CMDLINE_MAGIK 0xA33F +/* 0x22 */ UINT16 cmdline_offset; /* LDR */ + +/* %%TBD */ +/* 0x24 */ UINT16 lfb_line_len; /* LDR */ + +/* %%TBD */ +/* 0x26 */ UINT8 lfb_red_size; /* LDR */ +/* 0x27 */ UINT8 lfb_red_pos; /* LDR */ +/* 0x28 */ UINT8 lfb_green_size; /* LDR */ +/* 0x29 */ UINT8 lfb_green_pos; /* LDR */ +/* 0x2A */ UINT8 lfb_blue_size; /* LDR */ +/* 0x2B */ UINT8 lfb_blue_pos; /* LDR */ +/* 0x2C */ UINT8 lfb_rsvd_size; /* LDR */ +/* 0x2D */ UINT8 lfb_rsvd_pos; /* LDR */ + +/* %%TBD */ +/* 0x2E */ UINT16 vesa_seg; /* LDR */ +/* 0x30 */ UINT16 vesa_off; /* LDR */ + +/* %%TBD */ +/* 0x32 */ UINT16 lfb_pages; /* LDR */ +/* 0x34 */ UINT8 lfb_reserved[0x0C]; /* reserved */ + +/* %%TBD */ +/* 0x40 */ UINT16 apm_bios_ver; /* LDR */ +#define NO_APM_BIOS 0x0000 + +/* %%TBD */ +/* 0x42 */ UINT16 bios_code_seg; /* LDR */ +/* 0x44 */ UINT32 bios_entry_point; /* LDR */ +/* 0x48 */ UINT16 bios_code_seg16; /* LDR */ +/* 0x4A */ UINT16 bios_data_seg; /* LDR */ + +/* %%TBD */ +/* 0x4C */ UINT16 apm_bios_flags; /* LDR */ +#define NO_32BIT_APM_MASK 0xFFFD + +/* %%TBD */ +/* 0x4E */ UINT32 bios_code_len; /* LDR */ +/* 0x52 */ UINT16 bios_data_len; /* LDR */ + +/* 0x54 */ UINT8 unused_3[0x2C]; /* unused */ + +/* %%TBD */ +/* 0x80 */ UINT8 hd0_info[0x10]; /* LDR */ +/* 0x90 */ UINT8 hd1_info[0x10]; /* LDR */ + +/* %%TBD */ +/* 0xA0 */ UINT16 mca_info_len; /* LDR */ +/* 0xA2 */ UINT8 mca_info_buf[0x10]; /* LDR */ + +/* 0xB2 */ UINT8 unused_4[0x106]; /* unused */ + +/* Address of the EFI system table. */ +/* 0x1B8 */ UINT64 efi_sys_tbl; /* LDR */ + +/* EFI boot loader signature. */ +/* 0x1C0 */ UINT8 efi_loader_sig[4]; /* LDR */ +#define EFI_LOADER_SIG "EFIL" + +/* EFI memory descriptor size. */ +/* 0x1C4 */ UINT32 efi_mem_desc_size; /* LDR */ + +/* EFI memory descriptor version. */ +/* 0x1C8 */ UINT32 efi_mem_desc_ver; /* LDR */ + +/* Address & size of EFI memory map. */ +/* 0x1CC */ UINT32 efi_mem_map_size; /* LDR */ +/* 0x1D0 */ UINT64 efi_mem_map; /* LDR */ + +/* Address & size of loader. */ +/* 0x1D8 */ UINT32 loader_start; /* LDR */ +/* 0x1DC */ UINT32 loader_size; /* LDR */ + +/* Available contiguous extended memory in KB. */ +/* 0x1E0 */ UINT32 alt_mem_k; /* LDR */ + +/* 0x1E4 */ UINT32 unused_51; /* unused */ +/* 0x1E8 */ UINT8 e820_nrmap; +/* 0x1E9 */ UINT32 unused_52[2]; /* unused */ + +/* Size of setup code in sectors (1 sector == 512 bytes). */ +/* 0x1F1 */ UINT8 setup_sectors; /* BLD */ + +/* %%TBD */ +/* 0x1F2 */ UINT16 mount_root_rdonly; /* BLD */ + +/* %%TBD */ +/* 0x1F4 */ UINT16 sys_size; /* BLD */ + +/* %%TBD */ +/* 0x1F6 */ UINT16 swap_dev; /* BLD */ + +/* %%TBD */ +/* 0x1F8 */ UINT16 ramdisk_flags; /* BLD */ +#define RAMDISK_PROMPT 0x8000 +#define RAMDISK_LOAD 0x4000 + +/* %%TBD */ +/* 0x1FA */ UINT16 video_mode_flag; /* BLD */ + +/* %%TBD */ +/* 0x1FC */ UINT16 orig_root_dev; /* BLD */ + +/* 0x1FE */ UINT8 unused_6; /* unused */ + +/* %%TBD */ +/* 0x1FF */ UINT8 aux_dev_info; /* LDR */ +#define NO_MOUSE 0x00 +#define FOUND_MOUSE 0xAA + +/* Jump past setup data (not used in EFI). */ +/* 0x200 */ UINT16 jump; /* BLD */ + +/* Setup data signature. */ +/* 0x202 */ UINT8 setup_sig[4]; /* BLD */ +#define SETUP_SIG "HdrS" + +/* %%TBD */ +/* 0x206 */ UINT8 hdr_minor; /* BLD */ +/* 0x207 */ UINT8 hdr_major; /* BLD */ + +/* %%TBD */ +/* 0x208 */ UINT32 rm_switch; /* LDD */ + +/* %%TBD */ +/* 0x20C */ UINT16 start_sys_seg; /* BLD */ + +/* %%TBD */ +/* 0x20E */ UINT16 kernel_verstr_offset; /* BLD */ + +/* Loader type & version. */ +/* 0x210 */ UINT8 loader_type; /* LDR */ +#define LDRTYPE_ELILO 0x50 /* 5?h == elilo */ + /* ?0h == revision */ + +/* 0x211 */ UINT8 loader_flags; /* BLD and LDR */ +#define LDRFLAG_CAN_USE_HEAP 0x80 +#define LDRFLAG_BOOT_PARAM_RELOC 0x40 + +/* %%TBD */ +/* 0x212 */ UINT16 setup_move_size; /* BLD */ + +/* %%TBD */ +/* 0x214 */ UINT32 kernel_start; /* LDR */ + +/* %%TBD */ +/* 0x218 */ UINT32 initrd_start; /* LDR */ +/* 0x21C */ UINT32 initrd_size; /* LDR */ + +/* %%TBD */ +/* 0x220 */ UINT32 bootsect_helper; /* BLD */ + +/* %%TBD */ +/* 0x224 */ UINT16 heap_end_ptr; /* LDR */ + +/* %%TBD */ +/* 0x226 */ UINT16 unused_7; /* LDR */ + +/* 0x228 */ UINT32 cmdline_addr; /* LDR */ +/* 0x22C */ UINT32 unused_8[41]; +/* 0x2D0 */ UINT8 e820_map[2560]; + } s; +} boot_params_t; +#pragma pack() + +/* + * The stuff below here is for jumping to the kernel. + */ + +/* + * Some macros to copy and set memory after EFI has been + * stopped. + */ + +#define MEMCPY(to, from, cnt) { \ + UINT8 *t = (UINT8 *)(to); \ + UINT8 *f = (UINT8 *)(from); \ + UINTN n = cnt; \ + if (t && f && n) { \ + while (n--) { \ + *t++ = *f++; \ + } \ + } \ +} + +#define MEMSET(ptr, size, val) { \ + UINT8 *p = (UINT8 *)(ptr); \ + UINTN n = (UINTN)(size); \ + UINT8 v = (UINT8)(val); \ + if (p && n) { \ + while (n--) { \ + *p++ = v; \ + } \ + } \ +} + +/* + * Descriptor table pointer format. + */ +#pragma pack(1) +typedef struct { + UINT16 limit; + UINT64 base; +} dt_addr_t; +#pragma pack() + +extern UINTN high_base_mem; +extern UINTN high_ext_mem; + +extern boot_params_t *param_start; +extern UINTN param_size; + +extern VOID *kernel_start; +extern UINTN kernel_size; + +extern VOID *initrd_start; +extern UINTN initrd_size; + +extern dt_addr_t gdt_addr; +extern dt_addr_t idt_addr; + +extern UINT16 init_gdt[]; +extern UINTN sizeof_init_gdt; + +extern UINT8 rmswitch_image[]; +extern UINTN rmswitch_size; + +extern INTN x86_64_use_legacy_free_boot(); + +/* + * How to jump to kernel code + */ + + +static inline void +start_kernel(VOID *kentry, boot_params_t *bp) +{ + struct { + UINT32 kernel_entry; + UINT16 kernel_cs; + } jumpvector; + UINTN njump; + VOID *jump_start; + + /* + * Disable interrupts. + */ + asm volatile ( "cli" : : ); + + /* + * Relocate initrd, if present. + */ + + if (bp->s.initrd_start) { + MEMCPY(INITRD_START, bp->s.initrd_start, bp->s.initrd_size); + bp->s.initrd_start = INITRD_START; + } + /* + * Copy boot sector, setup data and command line + * to final resting place. We need to copy + * BOOT_PARAM_MEMSIZE bytes. + */ + + MEMCPY(high_base_mem, bp, 0x4000); + + /* + * Initialize Linux GDT. + */ + + MEMSET(gdt_addr.base, gdt_addr.limit, 0); + MEMCPY(gdt_addr.base, init_gdt, sizeof_init_gdt); + +// fixme: why x86_64_use_legacy_free_boot() goes to _relocate? +#if 0 + if (! x86_64_use_legacy_free_boot()) { + + /* + * Copy our real mode transition code to 0x7C00. + */ + + MEMCPY(0x7C00, rmswitch_image, rmswitch_size); + + asm volatile ( "mov $0x7C00, %%rbx" : : ); + asm volatile ( "jmp *%%rbx" : : ); + } +#endif + + /* + * Load descriptor table pointers. + */ + + asm volatile ( "lidt %0" : : "m" (idt_addr) ); + asm volatile ( "lgdt %0" : : "m" (gdt_addr) ); + + /* + * rsi := address of boot sector and setup data + */ + + asm volatile ( "mov %0, %%rsi" : : "m" (high_base_mem) ); + + /* + * Jump to kernel entry point. + */ + jumpvector.kernel_entry=kentry; + jumpvector.kernel_cs=0x10; + njump = &jumpvector; + jump_start = (VOID *)&jumpvector; + //asm volatile ( "mov %0, %%rcx" : : "m" (&jumpvector) ); + asm volatile ( "mov %0, %%rcx" : : "m" (jump_start) ); + //asm volatile ( "mov %0, %%rcx" : : "m" (njump) ); + asm volatile ( "ljmp *(%%rcx)" : :); + /* Never come back to here. */ +} + +typedef struct sys_img_options { + UINT8 nothing_yet; +} sys_img_options_t; + +#endif /* __ELILO_SYSDEPS_X86_64_H__ */ diff --git a/x86_64/system.c b/x86_64/system.c new file mode 100644 index 0000000..0755ff4 --- /dev/null +++ b/x86_64/system.c @@ -0,0 +1,772 @@ +/* + * Copyright (C) 2001-2003 Hewlett-Packard Co. + * Contributed by Stephane Eranian + * Contributed by Mike Johnston + * Contributed by Chris Ahna + * Contributed by Fenghua Yu + * Contributed by Bibo Mao + * Contributed by chandramouli narayanan + * Edgar Hucek + * + * Updated with code to fill bootparam converting EFI memory map to E820 + * based on a Linux kernel patch provided by Edgar Hucek + * - mouli 06/20/2007 + * + * This file is part of the ELILO, the EFI Linux boot loader. + * + * ELILO is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * ELILO is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ELILO; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * Please check out the elilo.txt for complete documentation on how + * to use this program. + */ + +/* + * This file contains all the x86_64 specific code expected by generic loader + */ +#include +#include + +#include "elilo.h" +#include "loader.h" +#include "rmswitch.h" + +extern loader_ops_t bzimage_loader, plain_loader, gzip_loader; + +/* + * Descriptor table base addresses & limits for Linux startup. + */ + +dt_addr_t gdt_addr = { 0x800, 0x94000 }; +dt_addr_t idt_addr = { 0, 0 }; + +/* + * Initial GDT layout for Linux startup. + */ + +UINT16 init_gdt[] = { + /* gdt[0]: dummy */ + 0, 0, 0, 0, + + /* gdt[1]: unused */ + 0, 0, 0, 0, + + /* gdt[2]: code */ + 0xFFFF, /* 4Gb - (0x100000*0x1000 = 4Gb) */ + 0x0000, /* base address=0 */ + 0x9A00, /* code read/exec */ + 0x00CF, /* granularity=4096, 386 (+5th nibble of limit) */ + + /* gdt[3]: data */ + 0xFFFF, /* 4Gb - (0x100000*0x1000 = 4Gb) */ + 0x0000, /* base address=0 */ + 0x9200, /* data read/write */ + 0x00CF, /* granularity=4096, 386 (+5th nibble of limit) */ +}; + +UINTN sizeof_init_gdt = sizeof init_gdt; + +/* + * Highest available base memory address. + * + * For traditional kernels and loaders this is always at 0x90000. + * For updated kernels and loaders this is computed by taking the + * highest available base memory address and rounding down to the + * nearest 64 kB boundary and then subtracting 64 kB. + * + * A non-compressed kernel is automatically assumed to be an updated + * kernel. A compressed kernel that has bit 6 (0x40) set in the + * loader_flags field is also assumed to be an updated kernel. + */ + +UINTN high_base_mem = 0x90000; + +/* + * Highest available extended memory address. + * + * This is computed by taking the highest available extended memory + * address and rounding down to the nearest EFI_PAGE_SIZE (usually + * 4 kB) boundary. + * This is only used for backward compatibility. + */ + +UINTN high_ext_mem = 32 * 1024 * 1024; + +/* This starting address will hold true for all of the loader types for now */ +VOID *kernel_start = (VOID *)0x100000; /* 1M */ + +VOID *initrd_start = NULL; +UINTN initrd_size = 0; + +INTN +sysdeps_init(EFI_HANDLE dev) +{ + DBG_PRT((L"sysdeps_init()\n")); + + /* + * Register our loader(s)... + */ + + loader_register(&bzimage_loader); + loader_register(&plain_loader); + loader_register(&gzip_loader); + return 0; +} + +/* + * initrd_get_addr() + * Compute a starting address for the initial RAMdisk image. + * For now, this image is placed immediately after the end of + * the kernel memory. Inside the start_kernel() code, the + * RAMdisk image will be relocated to the top of available + * extended memory. + */ +INTN +sysdeps_initrd_get_addr(kdesc_t *kd, memdesc_t *imem) +{ + DBG_PRT((L"initrd_get_addr()\n")); + + if (!kd || !imem) { + ERR_PRT((L"kd=0x%x imem=0x%x", kd, imem)); + return -1; + } + + VERB_PRT(3, Print(L"kstart=0x%x kentry=0x%x kend=0x%x\n", + kd->kstart, kd->kentry, kd->kend)); + + imem->start_addr = kd->kend; + + VERB_PRT(3, Print(L"initrd start_addr=0x%x pgcnt=%d\n", + imem->start_addr, imem->pgcnt)); + + return 0; +} + +VOID +sysdeps_free_boot_params(boot_params_t *bp) +{ + mmap_desc_t md; + + ZeroMem(&md, sizeof md); + md.md = (VOID *)bp->s.efi_mem_map; + free_memmap(&md); +} + +static VOID find_bits(unsigned long mask, UINT8 *first, UINT8* len) { + unsigned char bit_pos = 0, bit_len = 0; + *first =0; + *len = 0; + if (mask == 0) + return; + while (!(mask & 0x1)) { + mask = mask >> 1; + bit_pos++; + } + while (mask & 0x1) { + mask = mask >> 1; + bit_len++; + } + *first = bit_pos; + *len = bit_len; +} + +/* + * Get video information. + */ +static INTN get_video_info(boot_params_t * bp) { + EFI_GUID GopProtocol = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID; + EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop_interface; + EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Gop_info; + EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Gop_mode; + EFI_HANDLE *Gop_handle; + EFI_STATUS efi_status; + UINTN size, size1; + UINT8 i; + + efi_status = uefi_call_wrapper( + BS->LocateHandle, + 5, + ByProtocol, + &GopProtocol, + NULL, + &size, + (VOID **)Gop_handle); + + if (EFI_ERROR(efi_status) && efi_status != EFI_BUFFER_TOO_SMALL) { + ERR_PRT((L"LocateHandle GopProtocol failed.")); + return -1; + } + Gop_handle = alloc(size, 0); + efi_status = uefi_call_wrapper( + BS->LocateHandle, + 5, + ByProtocol, + &GopProtocol, + NULL, + &size, + (VOID **)Gop_handle); + if (EFI_ERROR(efi_status)) { + ERR_PRT((L"LocateHandle GopProtocol failed.")); + free(Gop_handle); + return -1; + } + + for (i=0; i < size/sizeof(EFI_HANDLE); i++) { + Gop_handle += i; + efi_status = uefi_call_wrapper( + BS->HandleProtocol, + 3, + *Gop_handle, + &GopProtocol, + &Gop_interface); + + if (EFI_ERROR(efi_status)) { + continue; + } + Gop_mode = Gop_interface->Mode; + efi_status = uefi_call_wrapper( + Gop_interface->QueryMode, + 4, + Gop_interface, + Gop_mode->Mode, + &size1, + &Gop_info); + if (!EFI_ERROR(efi_status)) + break; + if (EFI_ERROR(efi_status)) { + continue; + } + } + if (EFI_ERROR(efi_status) || i > (size/sizeof(EFI_HANDLE))) { + ERR_PRT((L"HandleProtocol GopProtocol failed.")); + free(Gop_handle); + return -1; + } + + bp->s.is_vga = 0x24; + bp->s.orig_cursor_col = 0; + bp->s.orig_cursor_row = 0; + bp->s.orig_video_page = 0; + bp->s.orig_video_mode = 0; + bp->s.orig_video_cols = 0; + bp->s.orig_video_rows = 0; + bp->s.orig_ega_bx = 0; + bp->s.orig_video_points = 0; + + bp->s.lfb_width = Gop_info->HorizontalResolution; + bp->s.lfb_height = Gop_info->VerticalResolution; + bp->s.lfb_base = Gop_mode->FrameBufferBase; + bp->s.lfb_size = Gop_mode->FrameBufferSize; + bp->s.lfb_pages = 1; + bp->s.vesa_seg = 0; + bp->s.vesa_off = 0; + if (Gop_info->PixelFormat == PixelRedGreenBlueReserved8BitPerColor) { + bp->s.lfb_depth = 32; + bp->s.lfb_red_size = 8; + bp->s.lfb_red_pos = 0; + bp->s.lfb_green_size = 8; + bp->s.lfb_green_pos = 8; + bp->s.lfb_blue_size = 8; + bp->s.lfb_blue_pos = 16; + bp->s.lfb_rsvd_size = 8; + bp->s.lfb_rsvd_pos = 24; + bp->s.lfb_line_len = Gop_info->PixelsPerScanLine * 4; + + } else if (Gop_info->PixelFormat == PixelBlueGreenRedReserved8BitPerColor) { + bp->s.lfb_depth = 32; + bp->s.lfb_red_size = 8; + bp->s.lfb_red_pos = 16; + bp->s.lfb_green_size = 8; + bp->s.lfb_green_pos = 8; + bp->s.lfb_blue_size = 8; + bp->s.lfb_blue_pos = 0; + bp->s.lfb_rsvd_size = 8; + bp->s.lfb_rsvd_pos = 24; + bp->s.lfb_line_len = Gop_info->PixelsPerScanLine * 4; + } else if (Gop_info->PixelFormat == PixelBitMask) { + find_bits(Gop_info->PixelInformation.RedMask, + &bp->s.lfb_red_pos, &bp->s.lfb_red_size); + find_bits(Gop_info->PixelInformation.GreenMask, + &bp->s.lfb_green_pos, &bp->s.lfb_green_size); + find_bits(Gop_info->PixelInformation.BlueMask, + &bp->s.lfb_blue_pos, &bp->s.lfb_blue_size); + find_bits(Gop_info->PixelInformation.ReservedMask, + &bp->s.lfb_rsvd_pos, &bp->s.lfb_rsvd_size); + bp->s.lfb_depth = bp->s.lfb_red_size + bp->s.lfb_green_size + + bp->s.lfb_blue_size + bp->s.lfb_rsvd_size; + bp->s.lfb_line_len = (Gop_info->PixelsPerScanLine * bp->s.lfb_depth) / 8; + } else { + bp->s.lfb_depth = 4; + bp->s.lfb_red_size = 0; + bp->s.lfb_red_pos = 0; + bp->s.lfb_green_size = 0; + bp->s.lfb_green_pos = 0; + bp->s.lfb_blue_size = 0; + bp->s.lfb_blue_pos = 0; + bp->s.lfb_rsvd_size = 0; + bp->s.lfb_rsvd_pos = 0; + bp->s.lfb_line_len = bp->s.lfb_width / 2; + } + return 0; +} + +/* Convert EFI memory map to E820 map for the operating system + * This code is based on a Linux kernel patch submitted by Edgar Hucek + */ + +void fill_e820map(boot_params_t *bp, mmap_desc_t *mdesc) +{ + int nr_map, i; + UINT64 start, end, size; + EFI_MEMORY_DESCRIPTOR *md, *p; + struct e820entry *e820_map; + + nr_map = mdesc->map_size/mdesc->desc_size; + e820_map = (struct e820entry *)bp->s.e820_map; + bp->s.e820_nrmap = nr_map; + + for (i = 0, p = mdesc->md; i < nr_map; i++) + { + md = p; + switch (md->Type) { + case EfiACPIReclaimMemory: + e820_map->addr = md->PhysicalStart; + e820_map->size = md->NumberOfPages << EFI_PAGE_SHIFT; + e820_map->type = E820_ACPI; + break; + case EfiRuntimeServicesCode: + e820_map->addr = md->PhysicalStart; + e820_map->size = md->NumberOfPages << EFI_PAGE_SHIFT; + e820_map->type = E820_EXEC_CODE; + break; + case EfiRuntimeServicesData: + case EfiReservedMemoryType: + case EfiMemoryMappedIO: + case EfiMemoryMappedIOPortSpace: + case EfiUnusableMemory: + case EfiPalCode: + e820_map->addr = md->PhysicalStart; + e820_map->size = md->NumberOfPages << EFI_PAGE_SHIFT; + e820_map->type = E820_RESERVED; + break; + case EfiLoaderCode: + case EfiLoaderData: + case EfiBootServicesCode: + case EfiBootServicesData: + case EfiConventionalMemory: + start = md->PhysicalStart; + size = md->NumberOfPages << EFI_PAGE_SHIFT; + end = start + size; + /* Fix up for BIOS that claims RAM in 640K-1MB region */ + if (start < 0x100000ULL && end > 0xA0000ULL) { + if (start < 0xA0000ULL) { + /* start < 640K + * set memory map from start to 640K + */ + e820_map->addr = start; + e820_map->size = 0xA0000ULL-start; + e820_map->type = E820_RAM; + e820_map++; + } + if (end <= 0x100000ULL) + continue; + /* end > 1MB + * set memory map avoiding 640K to 1MB hole + */ + start = 0x100000ULL; + size = end - start; + } + e820_map->addr = start; + e820_map->size = size; + e820_map->type = E820_RAM; + break; + case EfiACPIMemoryNVS: + e820_map->addr = md->PhysicalStart; + e820_map->size = md->NumberOfPages << EFI_PAGE_SHIFT; + e820_map->type = E820_NVS; + break; + default: + /* We should not hit this case */ + e820_map->addr = md->PhysicalStart; + size = md->NumberOfPages << EFI_PAGE_SHIFT; + e820_map->type = E820_RESERVED; + break; + } + e820_map++; + p = NextMemoryDescriptor(p, mdesc->desc_size); + } + +} +/* + * x86_64 specific boot parameters initialization routine + */ +INTN +sysdeps_create_boot_params( + boot_params_t *bp, + CHAR8 *cmdline, + memdesc_t *initrd, + memdesc_t *vmcode, + UINTN *cookie) +{ + mmap_desc_t mdesc; + EFI_STATUS efi_status; + UINTN rows, cols; + UINT8 row, col; + UINT8 mode; + UINT16 hdr_version; + + DBG_PRT((L"fill_boot_params()\n")); + + if (!bp || !cmdline || !initrd || !cookie) { + ERR_PRT((L"bp=0x%x cmdline=0x%x initrd=0x%x cookie=0x%x", + bp, cmdline, initrd, cookie)); + + if (param_start != NULL) { + free(param_start); + param_start = NULL; + param_size = 0; + } + free_kmem(); + return -1; + } + + /* + * Copy temporary boot sector and setup data storage to + * elilo allocated boot parameter storage. We only need + * the first two sectors (1K). The rest of the storage + * can be used by the command line. + */ + if (param_start != NULL) { + CopyMem(bp, param_start, 0x2000); + free(param_start); + param_start = NULL; + param_size = 0; + } + /* + * Save off our header revision information. + */ + hdr_version = (bp->s.hdr_major << 8) | bp->s.hdr_minor; + + /* + * Clear out unused memory in boot sector image. + */ + bp->s.unused_1 = 0; + bp->s.unused_2 = 0; + ZeroMem(bp->s.unused_3, sizeof bp->s.unused_3); + ZeroMem(bp->s.unused_4, sizeof bp->s.unused_4); + ZeroMem(bp->s.unused_51, sizeof bp->s.unused_51); + ZeroMem(bp->s.unused_52, sizeof bp->s.unused_52); + bp->s.unused_6 = 0; + bp->s.unused_7 = 0; + ZeroMem(bp->s.unused_8, sizeof bp->s.unused_8); + + /* + * Tell kernel this was loaded by an advanced loader type. + * If this field is zero, the initrd_start and initrd_size + * fields are ignored by the kernel. + */ + + bp->s.loader_type = LDRTYPE_ELILO; + + /* + * Setup command line information. + */ + + bp->s.cmdline_magik = CMDLINE_MAGIK; + bp->s.cmdline_offset = (UINT8 *)cmdline - (UINT8 *)bp; + + /* + * Clear out the cmdline_addr field so the kernel can find + * the cmdline. + */ + bp->s.cmdline_addr = 0x0; + + /* + * Setup hard drive parameters. + * %%TBD - It should be okay to zero fill the hard drive + * info buffers. The kernel should do its own detection. + */ + + ZeroMem(bp->s.hd0_info, sizeof bp->s.hd0_info); + ZeroMem(bp->s.hd1_info, sizeof bp->s.hd1_info); + + /* + * Memory info. + */ + + bp->s.alt_mem_k = high_ext_mem / 1024; + + if (bp->s.alt_mem_k <= 65535) + bp->s.ext_mem_k = (UINT16)bp->s.alt_mem_k; + else + bp->s.ext_mem_k = 65535; + + /* + * Initial RAMdisk and root device stuff. + */ + + DBG_PRT((L"initrd->start_addr=0x%x initrd->pgcnt=%d\n", + initrd->start_addr, initrd->pgcnt)); + + /* These RAMdisk flags are not needed, just zero them. */ + bp->s.ramdisk_flags = 0; + + if (initrd->start_addr && initrd->pgcnt) { + /* %%TBD - This will probably have to be changed. */ + bp->s.initrd_start = (UINT32)initrd->start_addr; + bp->s.initrd_size = (UINT32)(initrd->size); + /* + * This is the RAMdisk root device for RedHat 2.2.x + * kernels (major 0x01, minor 0x00). + */ + + bp->s.orig_root_dev = 0x0100; + } else { + bp->s.initrd_start = 0; + bp->s.initrd_size = 0; + } + + /* + * APM BIOS info. + */ + bp->s.apm_bios_ver = NO_APM_BIOS; + bp->s.bios_code_seg = 0; + bp->s.bios_entry_point = 0; + bp->s.bios_code_seg16 = 0; + bp->s.bios_data_seg = 0; + bp->s.apm_bios_flags = 0; + bp->s.bios_code_len = 0; + bp->s.bios_data_len = 0; + + /* + * MCA BIOS info (misnomer). + */ + bp->s.mca_info_len = 0; + ZeroMem(bp->s.mca_info_buf, sizeof bp->s.mca_info_buf); + + /* + * Pointing device presence. The kernel will detect this. + */ + bp->s.aux_dev_info = NO_MOUSE; + + /* + * EFI loader signature + */ + CopyMem(bp->s.efi_loader_sig, EFI_LOADER_SIG, 4); + + /* + * Kernel entry point. + */ + bp->s.kernel_start = (UINT32)kernel_start; + + /* + * When changing stuff in the parameter structure compare + * the offsets of the fields with the offsets used in the + * boot sector and setup source files. + * arch/x86_64/boot/bootsect.S + * arch/x86_64/boot/setup.S + * arch/x86_64/kernel/setup.c + * include/asm-x86_64/setup.h (2.5/2.6) + */ + +#define CHECK_OFFSET(n, o, f) \ +{ \ + UINTN p = (UINT8 *)&bp->s.n - (UINT8 *)bp; \ + UINTN q = (UINTN)(o); \ + if (p != q) { \ + test |= 1; \ + Print(L"%20a: %3xh %3xh ", #n, p, q); \ + if (*f) { \ + Print(f, bp->s.n); \ + } \ + Print(L"\n"); \ + } \ +} + +#define WAIT_FOR_KEY() \ +{ \ + EFI_INPUT_KEY key; \ + while (uefi_call_wrapper(ST->ConIn->ReadKeyStroke, 2, ST->ConIn, &key) != EFI_SUCCESS) { \ + ; \ + } \ +} + { + UINTN test = 0; + + CHECK_OFFSET(orig_cursor_col, 0x00, L"%xh"); + CHECK_OFFSET(orig_cursor_row, 0x01, L"%xh"); + CHECK_OFFSET(ext_mem_k, 0x02, L"%xh"); + CHECK_OFFSET(orig_video_page, 0x04, L"%xh"); + CHECK_OFFSET(orig_video_mode, 0x06, L"%xh"); + CHECK_OFFSET(orig_video_cols, 0x07, L"%xh"); + CHECK_OFFSET(orig_ega_bx, 0x0A, L"%xh"); + CHECK_OFFSET(orig_video_rows, 0x0E, L"%xh"); + CHECK_OFFSET(is_vga, 0x0F, L"%xh"); + CHECK_OFFSET(orig_video_points, 0x10, L"%xh"); + CHECK_OFFSET(lfb_width, 0x12, L"%xh"); + CHECK_OFFSET(lfb_height, 0x14, L"%xh"); + CHECK_OFFSET(lfb_depth, 0x16, L"%xh"); + CHECK_OFFSET(lfb_base, 0x18, L"%xh"); + CHECK_OFFSET(lfb_size, 0x1C, L"%xh"); + CHECK_OFFSET(cmdline_magik, 0x20, L"%xh"); + CHECK_OFFSET(cmdline_offset, 0x22, L"%xh"); + CHECK_OFFSET(lfb_line_len, 0x24, L"%xh"); + CHECK_OFFSET(lfb_red_size, 0x26, L"%xh"); + CHECK_OFFSET(lfb_red_pos, 0x27, L"%xh"); + CHECK_OFFSET(lfb_green_size, 0x28, L"%xh"); + CHECK_OFFSET(lfb_green_pos, 0x29, L"%xh"); + CHECK_OFFSET(lfb_blue_size, 0x2A, L"%xh"); + CHECK_OFFSET(lfb_blue_pos, 0x2B, L"%xh"); + CHECK_OFFSET(lfb_rsvd_size, 0x2C, L"%xh"); + CHECK_OFFSET(lfb_rsvd_pos, 0x2D, L"%xh"); + CHECK_OFFSET(vesa_seg, 0x2E, L"%xh"); + CHECK_OFFSET(vesa_off, 0x30, L"%xh"); + CHECK_OFFSET(lfb_pages, 0x32, L"%xh"); + CHECK_OFFSET(lfb_reserved, 0x34, L""); + CHECK_OFFSET(apm_bios_ver, 0x40, L"%xh"); + CHECK_OFFSET(bios_code_seg, 0x42, L"%xh"); + CHECK_OFFSET(bios_entry_point, 0x44, L"%xh"); + CHECK_OFFSET(bios_code_seg16, 0x48, L"%xh"); + CHECK_OFFSET(bios_data_seg, 0x4A, L"%xh"); + CHECK_OFFSET(apm_bios_flags, 0x4C, L"%xh"); + CHECK_OFFSET(bios_code_len, 0x4E, L"%xh"); + CHECK_OFFSET(bios_data_len, 0x52, L"%xh"); + CHECK_OFFSET(hd0_info, 0x80, L""); + CHECK_OFFSET(hd1_info, 0x90, L""); + CHECK_OFFSET(mca_info_len, 0xA0, L"%xh"); + CHECK_OFFSET(mca_info_buf, 0xA2, L""); + CHECK_OFFSET(efi_sys_tbl, 0x1B8, L"%xh"); + CHECK_OFFSET(efi_loader_sig, 0x1C0, L"'%-4.4a'"); + CHECK_OFFSET(efi_mem_desc_size, 0x1C4, L"%xh"); + CHECK_OFFSET(efi_mem_desc_ver, 0x1C8, L"%xh"); + CHECK_OFFSET(efi_mem_map_size, 0x1CC, L"%xh"); + CHECK_OFFSET(efi_mem_map, 0x1D0, L"%xh"); + CHECK_OFFSET(loader_start, 0x1D8, L"%xh"); + CHECK_OFFSET(loader_size, 0x1DC, L"%xh"); + CHECK_OFFSET(alt_mem_k, 0x1E0, L"%xh"); + CHECK_OFFSET(setup_sectors, 0x1F1, L"%xh"); + CHECK_OFFSET(mount_root_rdonly, 0x1F2, L"%xh"); + CHECK_OFFSET(sys_size, 0x1F4, L"%xh"); + CHECK_OFFSET(swap_dev, 0x1F6, L"%xh"); + CHECK_OFFSET(ramdisk_flags, 0x1F8, L"%xh"); + CHECK_OFFSET(video_mode_flag, 0x1FA, L"%xh"); + CHECK_OFFSET(orig_root_dev, 0x1FC, L"%xh"); + CHECK_OFFSET(aux_dev_info, 0x1FF, L"%xh"); + CHECK_OFFSET(jump, 0x200, L"%xh"); + CHECK_OFFSET(setup_sig, 0x202, L"'%-4.4a'"); + CHECK_OFFSET(hdr_minor, 0x206, L"%xh"); + CHECK_OFFSET(hdr_major, 0x207, L"%xh"); + CHECK_OFFSET(rm_switch, 0x208, L"%xh"); + CHECK_OFFSET(start_sys_seg, 0x20C, L"%xh"); + CHECK_OFFSET(kernel_verstr_offset, 0x20E, L"%xh"); + CHECK_OFFSET(loader_type, 0x210, L"%xh"); + CHECK_OFFSET(loader_flags, 0x211, L"%xh"); + CHECK_OFFSET(setup_move_size, 0x212, L"%xh"); + CHECK_OFFSET(kernel_start, 0x214, L"%xh"); + CHECK_OFFSET(initrd_start, 0x218, L"%xh"); + CHECK_OFFSET(initrd_size, 0x21C, L"%xh"); + CHECK_OFFSET(bootsect_helper, 0x220, L"%xh"); + CHECK_OFFSET(heap_end_ptr, 0x224, L"%xh"); + CHECK_OFFSET(cmdline_addr, 0x228, L"%xh"); + + if (test) { + ERR_PRT((L"Boot sector and/or setup parameter alignment error.")); + free_kmem(); + return -1; + } + } + + /* + * Get video information. + * Do this last so that any other cursor positioning done + * in the fill routine gets accounted for. + */ + + if (!get_video_info(bp)) goto do_memmap; + + /* Do the old text mode */ + efi_status = uefi_call_wrapper( + ST->ConOut->QueryMode, + 4, + ST->ConOut, + ST->ConOut->Mode->Mode, + &cols, + &rows); + + if (EFI_ERROR(efi_status)) { + ERR_PRT((L"QueryMode failed. Fake it.")); + mode = 3; + rows = 25; + cols = 80; + row = 24; + col = 0; + } else { + mode = (UINT8)ST->ConOut->Mode->Mode; + col = (UINT8)ST->ConOut->Mode->CursorColumn; + row = (UINT8)ST->ConOut->Mode->CursorRow; + } + + bp->s.orig_cursor_col = col; + bp->s.orig_cursor_row = row; + bp->s.orig_video_page = 0; + bp->s.orig_video_mode = mode; + bp->s.orig_video_cols = (UINT8)cols; + bp->s.orig_video_rows = (UINT8)rows; + + bp->s.orig_ega_bx = 0; + bp->s.is_vga = 0; + bp->s.orig_video_points = 16; + + bp->s.lfb_width = 0; + bp->s.lfb_height = 0; + bp->s.lfb_depth = 0; + bp->s.lfb_base = 0; + bp->s.lfb_size = 0; + bp->s.lfb_line_len = 0; + bp->s.lfb_red_size = 0; + bp->s.lfb_red_pos = 0; + bp->s.lfb_green_size = 0; + bp->s.lfb_green_pos = 0; + bp->s.lfb_blue_size = 0; + bp->s.lfb_blue_pos = 0; + bp->s.lfb_rsvd_size = 0; + bp->s.lfb_rsvd_pos = 0; + bp->s.lfb_pages = 0; + bp->s.vesa_seg = 0; + bp->s.vesa_off = 0; + +do_memmap: + /* + * Get memory map description and cookie for ExitBootServices() + */ + + if (get_memmap(&mdesc)) { + ERR_PRT((L"Could not get memory map.")); + free_kmem(); + return -1; + } + *cookie = mdesc.cookie; + bp->s.efi_mem_map = (UINTN)mdesc.md; + bp->s.efi_mem_map_size = mdesc.map_size; + bp->s.efi_mem_desc_size = mdesc.desc_size; + bp->s.efi_mem_desc_ver = mdesc.desc_version; + bp->s.efi_sys_tbl = (UINTN)systab; + /* Now that we have EFI memory map, convert it to E820 map + * and update the bootparam accordingly + */ + fill_e820map(bp, &mdesc); + + return 0; +} -- 2.30.2