Merge branch 'feature/remove_gcc5_support' into 'master'
global: remove gcc 5.2 support Closes IDF-1131 See merge request espressif/esp-idf!6608
This commit is contained in:
commit
bc3233782b
149 changed files with 94 additions and 16603 deletions
|
@ -38,19 +38,16 @@ if(CONFIG_COMPILER_DISABLE_GCC8_WARNINGS)
|
|||
"-Wno-sizeof-pointer-memaccess"
|
||||
"-Wno-clobbered")
|
||||
|
||||
# doesn't use GCC_NOT_5_2_0 because idf_set_global_variables was not called before
|
||||
if(GCC_NOT_5_2_0)
|
||||
list(APPEND compile_options "-Wno-format-overflow"
|
||||
"-Wno-stringop-truncation"
|
||||
"-Wno-misleading-indentation"
|
||||
"-Wno-cast-function-type"
|
||||
"-Wno-implicit-fallthrough"
|
||||
"-Wno-unused-const-variable"
|
||||
"-Wno-switch-unreachable"
|
||||
"-Wno-format-truncation"
|
||||
"-Wno-memset-elt-size"
|
||||
"-Wno-int-in-bool-context")
|
||||
endif()
|
||||
list(APPEND compile_options "-Wno-format-overflow"
|
||||
"-Wno-stringop-truncation"
|
||||
"-Wno-misleading-indentation"
|
||||
"-Wno-cast-function-type"
|
||||
"-Wno-implicit-fallthrough"
|
||||
"-Wno-unused-const-variable"
|
||||
"-Wno-switch-unreachable"
|
||||
"-Wno-format-truncation"
|
||||
"-Wno-memset-elt-size"
|
||||
"-Wno-int-in-bool-context")
|
||||
endif()
|
||||
|
||||
if(CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE)
|
||||
|
|
|
@ -31,33 +31,8 @@
|
|||
#include "esp_log.h"
|
||||
const static char *TAG = "esp_gcov_rtio";
|
||||
|
||||
#if GCC_NOT_5_2_0
|
||||
void __gcov_dump(void);
|
||||
void __gcov_reset(void);
|
||||
#else
|
||||
/* The next code for old GCC */
|
||||
|
||||
static void (*s_gcov_exit)(void);
|
||||
/* Root of a program/shared-object state */
|
||||
struct gcov_root
|
||||
{
|
||||
void *list;
|
||||
unsigned dumped : 1; /* counts have been dumped. */
|
||||
unsigned run_counted : 1; /* run has been accounted for. */
|
||||
struct gcov_root *next;
|
||||
struct gcov_root *prev;
|
||||
};
|
||||
|
||||
/* Per-dynamic-object gcov state. */
|
||||
extern struct gcov_root __gcov_root;
|
||||
|
||||
static void esp_gcov_reset_status(void)
|
||||
{
|
||||
__gcov_root.dumped = 0;
|
||||
__gcov_root.run_counted = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern void __gcov_dump(void);
|
||||
extern void __gcov_reset(void);
|
||||
|
||||
static int esp_dbg_stub_gcov_dump_do(void)
|
||||
{
|
||||
|
@ -72,18 +47,9 @@ static int esp_dbg_stub_gcov_dump_do(void)
|
|||
ESP_EARLY_LOGV(TAG, "Config apptrace down buf");
|
||||
esp_apptrace_down_buffer_config(down_buf, ESP_GCOV_DOWN_BUF_SIZE);
|
||||
ESP_EARLY_LOGV(TAG, "Dump data...");
|
||||
#if GCC_NOT_5_2_0
|
||||
__gcov_dump();
|
||||
// reset dump status to allow incremental data accumulation
|
||||
__gcov_reset();
|
||||
#else
|
||||
ESP_EARLY_LOGV(TAG, "Check for dump handler %p", s_gcov_exit);
|
||||
if (s_gcov_exit) {
|
||||
s_gcov_exit();
|
||||
// reset dump status to allow incremental data accumulation
|
||||
esp_gcov_reset_status();
|
||||
}
|
||||
#endif
|
||||
ESP_EARLY_LOGV(TAG, "Free apptrace down buf");
|
||||
free(down_buf);
|
||||
ESP_EARLY_LOGV(TAG, "Finish file transfer session");
|
||||
|
@ -94,27 +60,6 @@ static int esp_dbg_stub_gcov_dump_do(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Triggers gcov info dump.
|
||||
* This function is to be called by OpenOCD, not by normal user code.
|
||||
* TODO: what about interrupted flash access (when cache disabled)???
|
||||
*
|
||||
* @return ESP_OK on success, otherwise see esp_err_t
|
||||
*/
|
||||
static int esp_dbg_stub_gcov_entry(void)
|
||||
{
|
||||
#if GCC_NOT_5_2_0
|
||||
return esp_dbg_stub_gcov_dump_do();
|
||||
#else
|
||||
int ret = ESP_OK;
|
||||
// disable IRQs on this CPU, other CPU is halted by OpenOCD
|
||||
unsigned irq_state = portENTER_CRITICAL_NESTED();
|
||||
ret = esp_dbg_stub_gcov_dump_do();
|
||||
portEXIT_CRITICAL_NESTED(irq_state);
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
|
||||
void esp_gcov_dump(void)
|
||||
{
|
||||
// disable IRQs on this CPU, other CPU is halted by OpenOCD
|
||||
|
@ -141,18 +86,6 @@ void esp_gcov_dump(void)
|
|||
portEXIT_CRITICAL_NESTED(irq_state);
|
||||
}
|
||||
|
||||
int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
|
||||
{
|
||||
#if GCC_NOT_5_2_0
|
||||
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
|
||||
#else
|
||||
ESP_EARLY_LOGV(TAG, "%s %p", __FUNCTION__, function);
|
||||
s_gcov_exit = function;
|
||||
#endif
|
||||
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *gcov_rtio_fopen(const char *path, const char *mode)
|
||||
{
|
||||
ESP_EARLY_LOGV(TAG, "%s '%s' '%s'", __FUNCTION__, path, mode);
|
||||
|
|
|
@ -541,9 +541,7 @@ idf_component_register(SRCS "${srcs}"
|
|||
REQUIRES nvs_flash soc)
|
||||
|
||||
if(CONFIG_BT_ENABLED)
|
||||
if(GCC_NOT_5_2_0)
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-implicit-fallthrough -Wno-unused-const-variable)
|
||||
endif()
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-implicit-fallthrough -Wno-unused-const-variable)
|
||||
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-L${CMAKE_CURRENT_LIST_DIR}/controller/lib")
|
||||
target_link_libraries(${COMPONENT_LIB} PUBLIC btdm_app)
|
||||
|
|
|
@ -17,10 +17,8 @@ COMPONENT_ADD_LINKER_DEPS := $(patsubst %,$(COMPONENT_PATH)/controller/lib/lib%.
|
|||
|
||||
COMPONENT_SUBMODULES += controller/lib
|
||||
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
# TODO: annotate fallthroughs in Bluedroid code with comments
|
||||
CFLAGS += -Wno-implicit-fallthrough
|
||||
endif
|
||||
|
||||
ifdef CONFIG_BT_BLUEDROID_ENABLED
|
||||
|
||||
|
@ -119,12 +117,10 @@ COMPONENT_SRCDIRS += host/bluedroid/bta/dm \
|
|||
host/bluedroid
|
||||
|
||||
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
host/bluedroid/bta/sdp/bta_sdp_act.o: CFLAGS += -Wno-unused-const-variable
|
||||
host/bluedroid/btc/core/btc_config.o: CFLAGS += -Wno-unused-const-variable
|
||||
host/bluedroid/stack/btm/btm_sec.o: CFLAGS += -Wno-unused-const-variable
|
||||
host/bluedroid/stack/smp/smp_keys.o: CFLAGS += -Wno-unused-const-variable
|
||||
endif
|
||||
|
||||
COMPONENT_PRIV_INCLUDEDIRS += common/btc/include \
|
||||
common/include
|
||||
|
|
|
@ -36,27 +36,6 @@ extern "C" void __cxx_fatal_exception_int(int i)
|
|||
abort();
|
||||
}
|
||||
|
||||
#if !GCC_NOT_5_2_0
|
||||
void std::__throw_bad_exception(void) __attribute__((alias("__cxx_fatal_exception")));
|
||||
void std::__throw_bad_alloc(void) __attribute__((alias("__cxx_fatal_exception")));
|
||||
void std::__throw_bad_cast(void) __attribute__((alias("__cxx_fatal_exception")));
|
||||
void std::__throw_bad_typeid(void) __attribute__((alias("__cxx_fatal_exception")));
|
||||
void std::__throw_logic_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_domain_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_invalid_argument(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_length_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_out_of_range(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_out_of_range_fmt(const char*, ...) __attribute__((alias("__cxx_fatal_exception_message_va")));
|
||||
void std::__throw_runtime_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_range_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_overflow_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_underflow_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_ios_failure(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
|
||||
void std::__throw_system_error(int) __attribute__((alias("__cxx_fatal_exception_int")));
|
||||
void std::__throw_bad_function_call(void) __attribute__((alias("__cxx_fatal_exception")));
|
||||
void std::__throw_future_error(int) __attribute__((alias("__cxx_fatal_exception_int")));
|
||||
#endif
|
||||
|
||||
/* The following definitions are needed because libstdc++ is also compiled with
|
||||
__throw_exception_again defined to throw, and some other exception code in a few places.
|
||||
|
||||
|
|
|
@ -40,7 +40,5 @@ idf_component_register(SRCS "${srcs}"
|
|||
PRIV_INCLUDE_DIRS "include/driver"
|
||||
REQUIRES esp_ringbuf soc) #cannot totally hide soc headers, since there are a lot arguments in the driver are chip-dependent
|
||||
|
||||
if(GCC_NOT_5_2_0)
|
||||
# uses C11 atomic feature
|
||||
set_source_files_properties(spi_master.c PROPERTIES COMPILE_FLAGS -std=gnu11)
|
||||
endif()
|
||||
# uses C11 atomic feature
|
||||
set_source_files_properties(spi_master.c PROPERTIES COMPILE_FLAGS -std=gnu11)
|
||||
|
|
|
@ -7,7 +7,5 @@ COMPONENT_ADD_INCLUDEDIRS := include $(IDF_TARGET)/include
|
|||
|
||||
COMPONENT_PRIV_INCLUDEDIRS := include/driver
|
||||
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
# uses C11 atomic feature
|
||||
spi_master.o: CFLAGS += -std=gnu11
|
||||
endif
|
||||
|
|
|
@ -15,7 +15,7 @@ idf_component_register(SRCS "default_event_loop.c"
|
|||
PRIV_REQUIRES ${priv_requires}
|
||||
LDFRAGMENTS linker.lf)
|
||||
|
||||
if(GCC_NOT_5_2_0 AND CONFIG_ESP_EVENT_LOOP_PROFILING)
|
||||
if(CONFIG_ESP_EVENT_LOOP_PROFILING)
|
||||
# uses C11 atomic feature
|
||||
set_source_files_properties(esp_event.c PROPERTIES COMPILE_FLAGS -std=gnu11)
|
||||
endif()
|
||||
|
|
|
@ -12,7 +12,7 @@ else
|
|||
PROFILING_ENABLED := 0
|
||||
endif
|
||||
|
||||
ifeq ($(and $(GCC_NOT_5_2_0),$(PROFILING_ENABLED)), 1)
|
||||
ifeq ($(PROFILING_ENABLED), 1)
|
||||
# uses C11 atomic feature
|
||||
esp_event.o: CFLAGS += -std=gnu11
|
||||
endif
|
||||
|
|
|
@ -34,10 +34,6 @@ else()
|
|||
list(APPEND scripts "esp32/ld/esp32.rom.newlib-nano.ld")
|
||||
endif()
|
||||
|
||||
if(NOT GCC_NOT_5_2_0)
|
||||
list(APPEND scripts "esp32/ld/esp32.rom.newlib-locale.ld")
|
||||
endif()
|
||||
|
||||
if(NOT CONFIG_SPI_FLASH_ROM_DRIVER_PATCH)
|
||||
list(APPEND scripts "esp32/ld/esp32.rom.spiflash.ld")
|
||||
endif()
|
||||
|
@ -45,7 +41,6 @@ else()
|
|||
elseif(target STREQUAL "esp32s2beta")
|
||||
# no SPIRAM workaround for esp32s2beta
|
||||
# no nano formatting function in ROM
|
||||
# no GCC 5.2.0 for esp32s2beta, hence not linking locale functions
|
||||
|
||||
list(APPEND scripts "esp32s2beta/ld/esp32s2beta.rom.newlib-funcs.ld"
|
||||
"esp32s2beta/ld/esp32s2beta.rom.spiflash.ld")
|
||||
|
|
|
@ -16,10 +16,6 @@ ifdef CONFIG_NEWLIB_NANO_FORMAT
|
|||
LINKER_SCRIPTS += esp32.rom.newlib-nano.ld
|
||||
endif
|
||||
|
||||
ifneq ($(GCC_NOT_5_2_0), 1)
|
||||
LINKER_SCRIPTS += esp32.rom.newlib-locale.ld
|
||||
endif
|
||||
|
||||
ifndef CONFIG_SPI_FLASH_ROM_DRIVER_PATCH
|
||||
LINKER_SCRIPTS += esp32.rom.spiflash.ld
|
||||
endif
|
||||
|
|
|
@ -50,16 +50,16 @@ a15 0x0 0
|
|||
|
||||
======================== THREADS INFO =========================
|
||||
Id Target Id Frame
|
||||
10 process 9 0x40088bb4 in xQueueGenericReceive (xQueue=0x3ffaff74, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/queue.c:1591
|
||||
9 process 8 0x40081cec in esp_crosscore_int_send_yield (core_id=1) at C:/msys32/home/alex/esp/esp-idf4/components/esp32/crosscore_int.c:112
|
||||
8 process 7 0x40088bb4 in xQueueGenericReceive (xQueue=0x3ffaeaac, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/queue.c:1591
|
||||
7 process 6 0x400893f2 in prvProcessTimerOrBlockTask (xNextExpireTime=<optimized out>, xListWasEmpty=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/timers.c:588
|
||||
6 process 5 0x40087782 in vTaskDelay (xTicksToDelay=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/tasks.c:1484
|
||||
5 process 4 0x40087782 in vTaskDelay (xTicksToDelay=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/tasks.c:1484
|
||||
4 process 3 0x400e6b22 in esp_pm_impl_waiti () at C:/msys32/home/alex/esp/esp-idf4/components/esp32/pm_esp32.c:487
|
||||
3 process 2 0x400e6b22 in esp_pm_impl_waiti () at C:/msys32/home/alex/esp/esp-idf4/components/esp32/pm_esp32.c:487
|
||||
2 process 1 0x400092e6 in ?? ()
|
||||
* 1 <main task> 0x400e2281 in recur_func () at C:/msys32/home/alex/esp/esp-idf4/components/espcoredump/test/test_core_dump.c:70
|
||||
2 process 1 0x400092e6 in ?? ()
|
||||
3 process 2 0x400e6b22 in esp_pm_impl_waiti () at C:/msys32/home/alex/esp/esp-idf4/components/esp32/pm_esp32.c:487
|
||||
4 process 3 0x400e6b22 in esp_pm_impl_waiti () at C:/msys32/home/alex/esp/esp-idf4/components/esp32/pm_esp32.c:487
|
||||
5 process 4 0x40087782 in vTaskDelay (xTicksToDelay=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/tasks.c:1484
|
||||
6 process 5 0x40087782 in vTaskDelay (xTicksToDelay=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/tasks.c:1484
|
||||
7 process 6 0x400893f2 in prvProcessTimerOrBlockTask (xNextExpireTime=<optimized out>, xListWasEmpty=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/timers.c:588
|
||||
8 process 7 0x40088bb4 in xQueueGenericReceive (xQueue=0x3ffaeaac, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/queue.c:1591
|
||||
9 process 8 0x40081cec in esp_crosscore_int_send_yield (core_id=1) at C:/msys32/home/alex/esp/esp-idf4/components/esp32/crosscore_int.c:112
|
||||
10 process 9 0x40088bb4 in xQueueGenericReceive (xQueue=0x3ffaff74, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/queue.c:1591
|
||||
|
||||
======================= ALL MEMORY REGIONS ========================
|
||||
Name Address Size Attrs
|
||||
|
|
|
@ -1,654 +0,0 @@
|
|||
espcoredump.py v0.3-dev
|
||||
===============================================================
|
||||
==================== ESP32 CORE DUMP START ====================
|
||||
|
||||
================== CURRENT THREAD REGISTERS ===================
|
||||
pc 0x400e2281 0x400e2281 <recur_func+77>
|
||||
lbeg 0x400014fd 1073747197
|
||||
lend 0x4000150d 1073747213
|
||||
lcount 0xffffffff 4294967295
|
||||
sar 0x0 0
|
||||
ps 0x60c20 396320
|
||||
threadptr <unavailable>
|
||||
br <unavailable>
|
||||
scompare1 <unavailable>
|
||||
acclo <unavailable>
|
||||
acchi <unavailable>
|
||||
m0 <unavailable>
|
||||
m1 <unavailable>
|
||||
m2 <unavailable>
|
||||
m3 <unavailable>
|
||||
expstate <unavailable>
|
||||
f64r_lo <unavailable>
|
||||
f64r_hi <unavailable>
|
||||
f64s <unavailable>
|
||||
fcr <unavailable>
|
||||
fsr <unavailable>
|
||||
a0 0x400e225c 1074668124
|
||||
a1 0x3ffb9dc0 1073454528
|
||||
a2 0x2 2
|
||||
a3 0x3f402bbd 1061170109
|
||||
a4 0x3ffb9e00 1073454592
|
||||
a5 0x3ffae964 1073408356
|
||||
a6 0x0 0
|
||||
a7 0x0 0
|
||||
a8 0x5 5
|
||||
a9 0xffffffad -83
|
||||
a10 0x20 32
|
||||
a11 0x3ffb54f4 1073435892
|
||||
a12 0x1 1
|
||||
a13 0x80 128
|
||||
a14 0x1 1
|
||||
a15 0x0 0
|
||||
|
||||
==================== CURRENT THREAD STACK =====================
|
||||
#0 0x400e2281 in recur_func () at C:/msys32/home/alex/esp/esp-idf4/components/espcoredump/test/test_core_dump.c:70
|
||||
#1 0x400e225c in recur_func () at C:/msys32/home/alex/esp/esp-idf4/components/espcoredump/test/test_core_dump.c:63
|
||||
#2 0x400e225c in recur_func () at C:/msys32/home/alex/esp/esp-idf4/components/espcoredump/test/test_core_dump.c:63
|
||||
#3 0x400e22a4 in unaligned_ptr_task (pvParameter=0x0) at C:/msys32/home/alex/esp/esp-idf4/components/espcoredump/test/test_core_dump.c:80
|
||||
#4 0x400881bc in vPortTaskWrapper (pxCode=0x400e228c <unaligned_ptr_task>, pvParameters=0x0) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/port.c:143
|
||||
|
||||
======================== THREADS INFO =========================
|
||||
Id Target Id Frame
|
||||
* 1 <main task> 0x400e2281 in recur_func () at C:/msys32/home/alex/esp/esp-idf4/components/espcoredump/test/test_core_dump.c:70
|
||||
2 process 1 0x400092e6 in ?? ()
|
||||
3 process 2 0x400e6b22 in esp_pm_impl_waiti () at C:/msys32/home/alex/esp/esp-idf4/components/esp32/pm_esp32.c:487
|
||||
4 process 3 0x400e6b22 in esp_pm_impl_waiti () at C:/msys32/home/alex/esp/esp-idf4/components/esp32/pm_esp32.c:487
|
||||
5 process 4 0x40087782 in vTaskDelay (xTicksToDelay=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/tasks.c:1484
|
||||
6 process 5 0x40087782 in vTaskDelay (xTicksToDelay=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/tasks.c:1484
|
||||
7 process 6 0x400893f2 in prvProcessTimerOrBlockTask (xNextExpireTime=<optimized out>, xListWasEmpty=<optimized out>) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/timers.c:588
|
||||
8 process 7 0x40088bb4 in xQueueGenericReceive (xQueue=0x3ffaeaac, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/queue.c:1591
|
||||
9 process 8 0x40081cec in esp_crosscore_int_send_yield (core_id=1) at C:/msys32/home/alex/esp/esp-idf4/components/esp32/crosscore_int.c:112
|
||||
10 process 9 0x40088bb4 in xQueueGenericReceive (xQueue=0x3ffaff74, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at C:/msys32/home/alex/esp/esp-idf4/components/freertos/queue.c:1591
|
||||
|
||||
======================= ALL MEMORY REGIONS ========================
|
||||
Name Address Size Attrs
|
||||
.rtc.text 0x400c0000 0x0 RW
|
||||
.rtc.dummy 0x3ff80000 0x0 RW
|
||||
.rtc.force_fast 0x3ff80000 0x0 RW
|
||||
.rtc_noinit 0x50000200 0x0 RW
|
||||
.rtc.force_slow 0x50000200 0x0 RW
|
||||
.iram0.vectors 0x40080000 0x400 R XA
|
||||
.iram0.text 0x40080400 0x9eb4 RWXA
|
||||
.dram0.data 0x3ffb0000 0x24d8 RW A
|
||||
.noinit 0x3ffb24d8 0x0 RW
|
||||
.flash.rodata 0x3f400020 0x9328 RW A
|
||||
.flash.text 0x400d0018 0x16d50 R XA
|
||||
.coredump.tasks.data 0x3ffb5474 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb9d00 0x1f4 RW
|
||||
.coredump.tasks.data 0x3ffb956c 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb9250 0x308 RW
|
||||
.coredump.tasks.data 0x3ffb690c 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb6750 0x1a8 RW
|
||||
.coredump.tasks.data 0x3ffb6170 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb5fb0 0x1ac RW
|
||||
.coredump.tasks.data 0x3ffb52e8 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb5150 0x184 RW
|
||||
.coredump.tasks.data 0x3ffb566c 0x17c RW
|
||||
.coredump.tasks.data 0x3ffba580 0x184 RW
|
||||
.coredump.tasks.data 0x3ffb73b4 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb7200 0x1a0 RW
|
||||
.coredump.tasks.data 0x3ffafb94 0x17c RW
|
||||
.coredump.tasks.data 0x3ffaf9e0 0x1a0 RW
|
||||
.coredump.tasks.data 0x3ffb40c4 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb3ef0 0x1c0 RW
|
||||
.coredump.tasks.data 0x3ffb3abc 0x17c RW
|
||||
.coredump.tasks.data 0x3ffb3900 0x1a8 RW
|
||||
|
||||
====================== CORE DUMP MEMORY CONTENTS ========================
|
||||
.coredump.tasks.data 0x3ffb5474 0x17c RW
|
||||
0x3ffb5474: 0x3ffb9d70 0x3ffb9e90 0x00001ddc 0x3ffb2f78
|
||||
0x3ffb5484: 0x3ffb2f78 0x3ffb5474 0x3ffb2f70 0x00000012
|
||||
0x3ffb5494: 0xcececece 0xcececece 0x3ffb5474 0x00000000
|
||||
0x3ffb54a4: 0x00000007 0x3ffb96f8 0x6c616e75 0x656e6769
|
||||
0x3ffb54b4: 0x74705f64 0x00745f72 0x00000001 0x3ffb9ef4
|
||||
0x3ffb54c4: 0x00000000 0x00060020 0x0000000f 0xcececece
|
||||
0x3ffb54d4: 0x00000007 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb54e4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb54f4: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb5504: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb5514: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb5524: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5534: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5544: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5554: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5564: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5574: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5584: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5594: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb55a4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb55b4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb55c4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb55d4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb55e4: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb9d00 0x1f4 RW
|
||||
0x3ffb9d00: 0x3f405364 0x400e2281 0x00060c30 0x800e225c
|
||||
0x3ffb9d10: 0x3ffb9dc0 0x00000002 0x3f402bbd 0x3ffb9e00
|
||||
0x3ffb9d20: 0x3ffae964 0x00000000 0x00000000 0x00000005
|
||||
0x3ffb9d30: 0xffffffad 0x00000020 0x3ffb54f4 0x00000001
|
||||
0x3ffb9d40: 0x00000080 0x00000001 0x00000000 0x00000000
|
||||
0x3ffb9d50: 0x0000001d 0x00000005 0x400014fd 0x4000150d
|
||||
0x3ffb9d60: 0xffffffff 0x00000001 0x00000080 0x40082060
|
||||
0x3ffb9d70: 0x3ffb0b58 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9d80: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9d90: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9da0: 0x00000001 0x00000080 0x00000001 0x00000000
|
||||
0x3ffb9db0: 0x800e225c 0x3ffb9df0 0x00000001 0x3ffae964
|
||||
0x3ffb9dc0: 0x800d2758 0x3ffb9df0 0x0000000a 0x3ffae967
|
||||
0x3ffb9dd0: 0x3ffb9e00 0x3ffae964 0x00000000 0x00000000
|
||||
0x3ffb9de0: 0x800e22a4 0x3ffb9e20 0x0000000a 0x00000001
|
||||
0x3ffb9df0: 0x3f40538c 0x0000001e 0x3f402bbc 0x00000004
|
||||
0x3ffb9e00: 0x00000020 0x80000020 0x00000008 0x00000001
|
||||
0x3ffb9e10: 0x800881bc 0x3ffb9e50 0x00000000 0x00000000
|
||||
0x3ffb9e20: 0x800881bc 0x3ffb9e50 0x00000000 0x00000003
|
||||
0x3ffb9e30: 0x3ffb0440 0x80000020 0x00060021 0x00000001
|
||||
0x3ffb9e40: 0x00000000 0x3ffb9e70 0x400e228c 0x00000000
|
||||
0x3ffb9e50: 0x00060023 0x3ffb5474 0x00000000 0x00000000
|
||||
0x3ffb9e60: 0x00000000 0x3ffb9e90 0x00000000 0x00000000
|
||||
0x3ffb9e70: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9e80: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9e90: 0x00000000 0x00000000 0x3ffb9e9c 0x00000000
|
||||
0x3ffb9ea0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9eb0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9ec0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9ed0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9ee0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9ef0: 0x00000000
|
||||
.coredump.tasks.data 0x3ffb956c 0x17c RW
|
||||
0x3ffb956c: 0x3ffb9250 0x3ffb94f0 0x000019f9 0x3ffb2f50
|
||||
0x3ffb957c: 0x3ffb2f50 0x3ffb956c 0x3ffb2f48 0x00000014
|
||||
0x3ffb958c: 0x3ffaff34 0x3ffaff34 0x3ffb956c 0x00000000
|
||||
0x3ffb959c: 0x00000005 0x3ffb755c 0x74696e75 0x73615479
|
||||
0x3ffb95ac: 0xcece006b 0x00cecece 0x00000000 0x3ffb9558
|
||||
0x3ffb95bc: 0x00000000 0x00060021 0x0000000c 0xcececece
|
||||
0x3ffb95cc: 0x00000005 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb95dc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb95ec: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb95fc: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb960c: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb961c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb962c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb963c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb964c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb965c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb966c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb967c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb968c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb969c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb96ac: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb96bc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb96cc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb96dc: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb9250 0x308 RW
|
||||
0x3ffb9250: 0x400820c4 0x400092e6 0x00060930 0x8000930f
|
||||
0x3ffb9260: 0x3ffb9310 0x3ffb938c 0x00000000 0x3ffb2e3c
|
||||
0x3ffb9270: 0x0000000a 0x00000057 0x00000037 0x00003ff4
|
||||
0x3ffb9280: 0x3ff40000 0xe000c000 0x00000000 0x3ffb2e3c
|
||||
0x3ffb9290: 0x0ccccccc 0x00000000 0x00000004 0x00000013
|
||||
0x3ffb92a0: 0x3ffb9310 0x3ffb938c 0x400014fd 0x4000150d
|
||||
0x3ffb92b0: 0xffffffff 0x400822c4 0x0ccccccc 0x40088e1c
|
||||
0x3ffb92c0: 0x3ffb01b8 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb92d0: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb92e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb92f0: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9300: 0x800e07bf 0x3ffb9330 0x3ffb938c 0x000000ff
|
||||
0x3ffb9310: 0x3ffb01b8 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9320: 0x800e0c02 0x3ffb9350 0x3ffb938c 0x000000ff
|
||||
0x3ffb9330: 0xc0046c75 0x0000ff00 0x00ff0000 0xff000000
|
||||
0x3ffb9340: 0x800e033f 0x3ffb9380 0x00000001 0x3ffb9490
|
||||
0x3ffb9350: 0x800e033f 0x3ffb9380 0x00000001 0x9619c4d6
|
||||
0x3ffb9360: 0x000000fe 0x3ffb948c 0x00000000 0x00000010
|
||||
0x3ffb9370: 0x800881bc 0x3ffb94b0 0x00000000 0x00000000
|
||||
0x3ffb9380: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0x00000000
|
||||
0x3ffb9390: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb93a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb93b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb93c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb93d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb93e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb93f0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9400: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9410: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9420: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9430: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9440: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9450: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9460: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9470: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9480: 0x00000000 0x00000000 0x00000000 0x9619c4d6
|
||||
0x3ffb9490: 0x3ffb938c 0x80000020 0x00060021 0x3ffb49e0
|
||||
0x3ffb94a0: 0x00000000 0x3ffb94d0 0x400e0334 0x00000000
|
||||
0x3ffb94b0: 0x00060023 0x3ffb956c 0x00000000 0x00000000
|
||||
0x3ffb94c0: 0x00000000 0x3ffb94f0 0x00000000 0x00000000
|
||||
0x3ffb94d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb94e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb94f0: 0x00000000 0x00000000 0x3ffb94fc 0x00000000
|
||||
0x3ffb9500: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9510: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9520: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9530: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9540: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb9550: 0x00000000 0x00000000
|
||||
.coredump.tasks.data 0x3ffb690c 0x17c RW
|
||||
0x3ffb690c: 0x3ffb6750 0x3ffb6890 0xcececece 0x3ffb2eec
|
||||
0x3ffb691c: 0x3ffb6178 0x3ffb690c 0x3ffb2ee4 0x00000019
|
||||
0x3ffb692c: 0xcececece 0xcececece 0x3ffb690c 0x00000000
|
||||
0x3ffb693c: 0x00000000 0x3ffb62fc 0x454c4449 0xcece0031
|
||||
0x3ffb694c: 0xcececece 0x00cecece 0x00000001 0x3ffb68f8
|
||||
0x3ffb695c: 0x00000000 0x00060021 0x00000007 0xcececece
|
||||
0x3ffb696c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb697c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb698c: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb699c: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb69ac: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb69bc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb69cc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb69dc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb69ec: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb69fc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a0c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a1c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a2c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a3c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a4c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a5c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a6c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6a7c: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb6750 0x1a8 RW
|
||||
0x3ffb6750: 0x400820c4 0x400e6b22 0x00060430 0x800d1102
|
||||
0x3ffb6760: 0x3ffb6810 0x00000000 0x80000001 0x00000000
|
||||
0x3ffb6770: 0x00000001 0x00000003 0x00060023 0x80087399
|
||||
0x3ffb6780: 0x3ffb6800 0x00000003 0x00060823 0x00060820
|
||||
0x3ffb6790: 0x00000001 0x00060820 0x3ffb77c0 0x00000000
|
||||
0x3ffb67a0: 0xa5a5a5a5 0xa5a5a5a5 0x4000c46c 0x4000c477
|
||||
0x3ffb67b0: 0xffffffff 0x400822c4 0x00000001 0x40088e1c
|
||||
0x3ffb67c0: 0x3ffad558 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb67d0: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb67e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb67f0: 0x00000000 0x40087990 0x00000000 0x00000000
|
||||
0x3ffb6800: 0x80087999 0x3ffb6830 0x00000008 0x00000001
|
||||
0x3ffb6810: 0x00000001 0x00000001 0x00000003 0x00060023
|
||||
0x3ffb6820: 0x800881bc 0x3ffb6850 0x00000000 0x00000000
|
||||
0x3ffb6830: 0x00000001 0x80000020 0x00060021 0x00000000
|
||||
0x3ffb6840: 0x00000000 0x3ffb6870 0x40087990 0x00000000
|
||||
0x3ffb6850: 0x00060023 0x3ffb6170 0x00000000 0x00000001
|
||||
0x3ffb6860: 0x00000000 0x3ffb6890 0x00000000 0x00000000
|
||||
0x3ffb6870: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6880: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6890: 0x00000000 0x00000000 0x3ffb689c 0x00000000
|
||||
0x3ffb68a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb68b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb68c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb68d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb68e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb68f0: 0x00000000 0x00000000
|
||||
.coredump.tasks.data 0x3ffb6170 0x17c RW
|
||||
0x3ffb6170: 0x3ffb5fb0 0x3ffb60f0 0xcececece 0x3ffb6914
|
||||
0x3ffb6180: 0x3ffb2eec 0x3ffb6170 0x3ffb2ee4 0x00000019
|
||||
0x3ffb6190: 0xcececece 0xcececece 0x3ffb6170 0x00000000
|
||||
0x3ffb61a0: 0x00000000 0x3ffb5b60 0x454c4449 0xcece0030
|
||||
0x3ffb61b0: 0xcececece 0x00cecece 0x00000000 0x3ffb615c
|
||||
0x3ffb61c0: 0x00000000 0x00060021 0x00000006 0xcececece
|
||||
0x3ffb61d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb61e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb61f0: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb6200: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb6210: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb6220: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6230: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6240: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6250: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6260: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6270: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6280: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6290: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb62a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb62b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb62c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb62d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb62e0: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb5fb0 0x1ac RW
|
||||
0x3ffb5fb0: 0x400820c4 0x400e6b22 0x00060730 0x800d1102
|
||||
0x3ffb5fc0: 0x3ffb6070 0x00000000 0x00000003 0x00000000
|
||||
0x3ffb5fd0: 0x00000001 0x00000003 0x00060123 0x00060023
|
||||
0x3ffb5fe0: 0x3ffb690c 0x00000000 0x00000001 0x800883d8
|
||||
0x3ffb5ff0: 0x3ffb8e90 0x00000000 0x3ffb5b60 0x00000000
|
||||
0x3ffb6000: 0x3ffb2d88 0x00000000 0x4000c46c 0x4000c477
|
||||
0x3ffb6010: 0xffffffff 0x400822c4 0x3ffb8e90 0x40088e1c
|
||||
0x3ffb6020: 0x3ffacdb8 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6030: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6040: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6050: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6060: 0x80087999 0x3ffb6090 0x00000008 0x00000000
|
||||
0x3ffb6070: 0x00000000 0x00000001 0x00000003 0x00060123
|
||||
0x3ffb6080: 0x800881bc 0x3ffb60b0 0x00000000 0x00000000
|
||||
0x3ffb6090: 0x00000001 0x80000020 0x00060021 0x00000000
|
||||
0x3ffb60a0: 0x00000000 0x3ffb60d0 0x40087990 0x00000000
|
||||
0x3ffb60b0: 0x00060023 0x3ffb690c 0x00000000 0x00000000
|
||||
0x3ffb60c0: 0x00000000 0x3ffb60f0 0x00000000 0x00000000
|
||||
0x3ffb60d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb60e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb60f0: 0x00000000 0x00000000 0x3ffb60fc 0x00000000
|
||||
0x3ffb6100: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6110: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6120: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6130: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6140: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb6150: 0x00000000 0x00000000 0x00000000
|
||||
.coredump.tasks.data 0x3ffb52e8 0x17c RW
|
||||
0x3ffb52e8: 0x3ffb5150 0x3ffb5270 0x000021c4 0x3ffb2ed8
|
||||
0x3ffb52f8: 0x3ffb5674 0x3ffb52e8 0x3ffb2ed0 0x00000014
|
||||
0x3ffb5308: 0x3ffb562c 0x3ffb562c 0x3ffb52e8 0x00000000
|
||||
0x3ffb5318: 0x00000005 0x3ffb4ad8 0x5f646162 0x5f727470
|
||||
0x3ffb5328: 0x6b736174 0x00cece00 0x7fffffff 0x3ffb52d4
|
||||
0x3ffb5338: 0x00000000 0x00060021 0x0000000e 0xcececece
|
||||
0x3ffb5348: 0x00000005 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5358: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5368: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb5378: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb5388: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb5398: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb53a8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb53b8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb53c8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb53d8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb53e8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb53f8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5408: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5418: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5428: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5438: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5448: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5458: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb5150 0x184 RW
|
||||
0x3ffb5150: 0x400820c4 0x40087782 0x00060730 0x800e2227
|
||||
0x3ffb5160: 0x3ffb5210 0x000021c4 0x00000000 0x3ffb0440
|
||||
0x3ffb5170: 0x80000020 0x00060021 0x00060823 0x80087782
|
||||
0x3ffb5180: 0x3ffb51f0 0x00000000 0x000021c4 0x80081cec
|
||||
0x3ffb5190: 0x3ffb3f30 0x3ff000dc 0x00000001 0x00000000
|
||||
0x3ffb51a0: 0x800d2758 0x3ffb51d0 0x400014fd 0x4000150d
|
||||
0x3ffb51b0: 0xfffffff9 0x400822c4 0x3ffb3f30 0x40088e1c
|
||||
0x3ffb51c0: 0x3ffabf38 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb51d0: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb51e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb51f0: 0x80081cec 0x3ffb3f30 0x3ff000dc 0x00000001
|
||||
0x3ffb5200: 0x800881bc 0x3ffb5230 0x00000000 0x00000000
|
||||
0x3ffb5210: 0x3ffb0440 0x80000020 0x00060021 0x00060823
|
||||
0x3ffb5220: 0x00000000 0x3ffb5250 0x400e2218 0x00000000
|
||||
0x3ffb5230: 0x00060023 0x3ffb956c 0x00000000 0x00000000
|
||||
0x3ffb5240: 0x00000000 0x3ffb5270 0x00000000 0x00000000
|
||||
0x3ffb5250: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5260: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5270: 0x00000000 0x00000000 0x3ffb527c 0x00000000
|
||||
0x3ffb5280: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb5290: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb52a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb52b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb52c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb52d0: 0x00000000
|
||||
.coredump.tasks.data 0x3ffb566c 0x17c RW
|
||||
0x3ffb566c: 0x3ffba580 0x3ffba6a0 0x000021c4 0x3ffb52f0
|
||||
0x3ffb567c: 0x3ffb2ed8 0x3ffb566c 0x3ffb2ed0 0x0000000f
|
||||
0x3ffb568c: 0xcececece 0xcececece 0x3ffb566c 0x00000000
|
||||
0x3ffb569c: 0x0000000a 0x3ffb9f08 0x6c696166 0x615f6465
|
||||
0x3ffb56ac: 0x72657373 0x00745f74 0x00000000 0x3ffba704
|
||||
0x3ffb56bc: 0x00000000 0x00060021 0x00000010 0xcececece
|
||||
0x3ffb56cc: 0x0000000a 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb56dc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb56ec: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb56fc: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb570c: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb571c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb572c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb573c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb574c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb575c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb576c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb577c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb578c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb579c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb57ac: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb57bc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb57cc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb57dc: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffba580 0x184 RW
|
||||
0x3ffba580: 0x400820c4 0x40087782 0x00060930 0x800e216b
|
||||
0x3ffba590: 0x3ffba640 0x000021c4 0x00000000 0x3ffb0440
|
||||
0x3ffba5a0: 0x80000020 0x00060021 0x00000000 0x80087782
|
||||
0x3ffba5b0: 0x3ffba620 0x00000000 0x000021c4 0x800e0678
|
||||
0x3ffba5c0: 0x3ffb92c0 0x00000800 0x3ffb1640 0x00000000
|
||||
0x3ffba5d0: 0x800d2758 0x3ffba600 0x400014fd 0x4000150d
|
||||
0x3ffba5e0: 0xfffffff8 0x400822c4 0x3ffb92c0 0x40088e1c
|
||||
0x3ffba5f0: 0x3ffb1368 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba600: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba610: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba620: 0x800e0678 0x3ffb92c0 0x00000800 0x3ffb1640
|
||||
0x3ffba630: 0x800881bc 0x3ffba660 0x00000000 0x00000000
|
||||
0x3ffba640: 0x3ffb0440 0x80000020 0x00060021 0x00000000
|
||||
0x3ffba650: 0x00000000 0x3ffba680 0x400e215c 0x00000000
|
||||
0x3ffba660: 0x00060023 0x3ffb566c 0x00000000 0x00000000
|
||||
0x3ffba670: 0x00000000 0x3ffba6a0 0x00000000 0x00000000
|
||||
0x3ffba680: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba690: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba6a0: 0x00000000 0x00000000 0x3ffba6ac 0x00000000
|
||||
0x3ffba6b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba6c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba6d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba6e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba6f0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffba700: 0x00000000
|
||||
.coredump.tasks.data 0x3ffb73b4 0x17c RW
|
||||
0x3ffb73b4: 0x3ffb7200 0x3ffb7340 0x00000000 0x3ffb2ec4
|
||||
0x3ffb73c4: 0x3ffb2ec4 0x3ffb73b4 0x3ffb2ebc 0x00000018
|
||||
0x3ffb73d4: 0x3ffb6ac4 0x3ffb6ac4 0x3ffb73b4 0x3ffb6abc
|
||||
0x3ffb73e4: 0x00000001 0x3ffb6ba4 0x20726d54 0x00637653
|
||||
0x3ffb73f4: 0xcececece 0x00cecece 0x00000000 0x3ffb73a0
|
||||
0x3ffb7404: 0x00000000 0x00060021 0x00000008 0xcececece
|
||||
0x3ffb7414: 0x00000001 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7424: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7434: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb7444: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb7454: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb7464: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7474: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7484: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7494: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb74a4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb74b4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb74c4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb74d4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb74e4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb74f4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7504: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7514: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7524: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb7200 0x1a0 RW
|
||||
0x3ffb7200: 0x400820c4 0x400893f2 0x00060a30 0x80089527
|
||||
0x3ffb7210: 0x3ffb72c0 0x3ffb3130 0x00000000 0x00000001
|
||||
0x3ffb7220: 0x80000020 0x00060021 0x00000000 0x800893f2
|
||||
0x3ffb7230: 0x3ffb72a0 0x00000000 0x3ffb2e3c 0x3ffb6aec
|
||||
0x3ffb7240: 0x00000000 0x00000000 0x00060023 0x00000000
|
||||
0x3ffb7250: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
|
||||
0x3ffb7260: 0x00000000 0x400822c4 0x00000000 0x40088e1c
|
||||
0x3ffb7270: 0x3ffae008 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7280: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7290: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb72a0: 0x00000000 0x4008950c 0x00000000 0x00000000
|
||||
0x3ffb72b0: 0x800881bc 0x3ffb72f0 0x00000000 0x00000000
|
||||
0x3ffb72c0: 0x00000000 0x00000000 0x00000000 0x9619c4d6
|
||||
0x3ffb72d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb72e0: 0x00000000 0x3ffb7320 0x4008950c 0x00000000
|
||||
0x3ffb72f0: 0x3ffae008 0x00000000 0x00000001 0x9619c4d6
|
||||
0x3ffb7300: 0x00060023 0x3ffb59d4 0x00000000 0x00000001
|
||||
0x3ffb7310: 0x00000000 0x3ffb7340 0x00000000 0x00000000
|
||||
0x3ffb7320: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7330: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7340: 0x00000000 0x00000000 0x3ffb734c 0x00000000
|
||||
0x3ffb7350: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7360: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7370: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7380: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb7390: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
.coredump.tasks.data 0x3ffafb94 0x17c RW
|
||||
0x3ffafb94: 0x3ffaf9e0 0x3ffafb20 0xcececece 0x3ffb40cc
|
||||
0x3ffafba4: 0x3ffb3ac4 0x3ffafb94 0x3ffb2e60 0x00000003
|
||||
0x3ffafbb4: 0x3ffaead8 0x3ffaead8 0x3ffafb94 0x3ffaead0
|
||||
0x3ffafbc4: 0x00000016 0x3ffaeb84 0x5f707365 0x656d6974
|
||||
0x3ffafbd4: 0xcece0072 0x00cecece 0x00000000 0x3ffafb80
|
||||
0x3ffafbe4: 0x00000000 0x00060021 0x00000001 0xcececece
|
||||
0x3ffafbf4: 0x00000016 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafc04: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafc14: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffafc24: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffafc34: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffafc44: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafc54: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafc64: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafc74: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafc84: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafc94: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafca4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafcb4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafcc4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafcd4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafce4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafcf4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafd04: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffaf9e0 0x1a0 RW
|
||||
0x3ffaf9e0: 0x400820c4 0x40088bb4 0x00060030 0x800d0f9b
|
||||
0x3ffaf9f0: 0x3ffafaa0 0x3ffaeaac 0x00000000 0x3ffaeb00
|
||||
0x3ffafa00: 0x00000000 0x00000001 0x00000000 0x80088bb4
|
||||
0x3ffafa10: 0x3ffafa80 0x00000000 0x3ffb30d8 0x3ffb30d8
|
||||
0x3ffafa20: 0x3ffb3950 0x00000003 0x00060e23 0x00000000
|
||||
0x3ffafa30: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
|
||||
0x3ffafa40: 0x00000000 0x400822c4 0x3ffb3950 0x40088e1c
|
||||
0x3ffafa50: 0x3ffa67e8 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafa60: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafa70: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafa80: 0x00000000 0x400d0f88 0x00000000 0x00000000
|
||||
0x3ffafa90: 0x800881bc 0x3ffafae0 0x00000000 0x00000000
|
||||
0x3ffafaa0: 0x00000000 0x00000000 0x00000000 0xffffffff
|
||||
0x3ffafab0: 0x00000000 0x00000000 0x00000000 0x9619c4d6
|
||||
0x3ffafac0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafad0: 0x00000000 0x3ffafb00 0x400d0f88 0x00000000
|
||||
0x3ffafae0: 0x00060023 0x3ffafb94 0x00000000 0x00000001
|
||||
0x3ffafaf0: 0x00000000 0x3ffafb20 0x00000000 0x00000000
|
||||
0x3ffafb00: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafb10: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafb20: 0x00000000 0x00000000 0x3ffafb2c 0x00000000
|
||||
0x3ffafb30: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafb40: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafb50: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafb60: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffafb70: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
.coredump.tasks.data 0x3ffb40c4 0x17c RW
|
||||
0x3ffb40c4: 0x3ffb3ef0 0x3ffb4050 0xcececece 0x3ffb2e68
|
||||
0x3ffb40d4: 0x3ffafb9c 0x3ffb40c4 0x3ffb2e60 0x00000001
|
||||
0x3ffb40e4: 0x3ffb3c74 0x3ffb3c74 0x3ffb40c4 0x3ffb3c6c
|
||||
0x3ffb40f4: 0x00000018 0x3ffb3cb4 0x31637069 0xcecece00
|
||||
0x3ffb4104: 0xcececece 0x00cecece 0x00000001 0x3ffb40b0
|
||||
0x3ffb4114: 0x00000000 0x00060021 0x00000003 0xcececece
|
||||
0x3ffb4124: 0x00000018 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4134: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4144: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb4154: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb4164: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb4174: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4184: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4194: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb41a4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb41b4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb41c4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb41d4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb41e4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb41f4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4204: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4214: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4224: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4234: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb3ef0 0x1c0 RW
|
||||
0x3ffb3ef0: 0x400820c4 0x40081cec 0x00060830 0x80088bb4
|
||||
0x3ffb3f00: 0x3ffb3fb0 0x00000001 0x3ffb30d8 0x3ffb30dc
|
||||
0x3ffb3f10: 0x0000000a 0x00800000 0x3ff4001c 0x80081cec
|
||||
0x3ffb3f20: 0x3ffb3f90 0x3ff000e0 0x00000001 0x3ffb0028
|
||||
0x3ffb3f30: 0x00000001 0x00060820 0x3ffb3cc0 0x00000000
|
||||
0x3ffb3f40: 0x3ffb3fb0 0x00000001 0x00000000 0x00000000
|
||||
0x3ffb3f50: 0x00000000 0x400822c4 0x00000001 0x40088e1c
|
||||
0x3ffb3f60: 0x3ffaad18 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3f70: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3f80: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3f90: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3fa0: 0x80081f37 0x3ffb3fd0 0x3ffb3c48 0x00000000
|
||||
0x3ffb3fb0: 0x3ffb30dc 0x0000000a 0x00800000 0x3ff4001c
|
||||
0x3ffb3fc0: 0x800881bc 0x3ffb4010 0x00000001 0x400835cc
|
||||
0x3ffb3fd0: 0x3ffb9574 0x0000000a 0x00800000 0xffffffff
|
||||
0x3ffb3fe0: 0x800881bc 0x00000000 0x000019f4 0x9619c4d6
|
||||
0x3ffb3ff0: 0x3ffb3c9c 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb4000: 0x00000000 0x3ffb4030 0x40081f08 0x00000001
|
||||
0x3ffb4010: 0x00000001 0x3ffb40c4 0x00000000 0x00000000
|
||||
0x3ffb4020: 0x00000000 0x3ffb4050 0x00000000 0x00000000
|
||||
0x3ffb4030: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4040: 0x80081044 0x3ffe7d80 0x00000028 0x00000028
|
||||
0x3ffb4050: 0x00000000 0x00000000 0x3ffb405c 0x00000000
|
||||
0x3ffb4060: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4070: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4080: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb4090: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb40a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
.coredump.tasks.data 0x3ffb3abc 0x17c RW
|
||||
0x3ffb3abc: 0x3ffb3900 0x3ffb3a40 0xcececece 0x3ffafb9c
|
||||
0x3ffb3acc: 0x3ffb2e68 0x3ffb3abc 0x3ffb2e60 0x00000001
|
||||
0x3ffb3adc: 0x3ffaffa0 0x3ffaffa0 0x3ffb3abc 0x3ffaff98
|
||||
0x3ffb3aec: 0x00000018 0x3ffb36ac 0x30637069 0xcecece00
|
||||
0x3ffb3afc: 0xcececece 0x00cecece 0x00000000 0x3ffb3aa8
|
||||
0x3ffb3b0c: 0x00000000 0x00060021 0x00000002 0xcececece
|
||||
0x3ffb3b1c: 0x00000018 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3b2c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3b3c: 0x00000000 0x3ffae8fc 0x3ffae964 0x3ffae9cc
|
||||
0x3ffb3b4c: 0x00000000 0x00000000 0x00000001 0x00000000
|
||||
0x3ffb3b5c: 0x3f403a68 0x00000000 0x40001d48 0x00000000
|
||||
0x3ffb3b6c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3b7c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3b8c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3b9c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3bac: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3bbc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3bcc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3bdc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3bec: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3bfc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3c0c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3c1c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3c2c: 0x00000000 0x00000000 0xcecece00
|
||||
.coredump.tasks.data 0x3ffb3900 0x1a8 RW
|
||||
0x3ffb3900: 0x400820c4 0x40088bb4 0x00060e30 0x80081f37
|
||||
0x3ffb3910: 0x3ffb39c0 0x3ffaff74 0x00000000 0x3ffaffc8
|
||||
0x3ffb3920: 0x00000000 0x00000001 0x00000002 0x80088bb4
|
||||
0x3ffb3930: 0x3ffb39a0 0x00000000 0x3ffb30d8 0x3ffb30d8
|
||||
0x3ffb3940: 0x0000cdcd 0x00000001 0x00000000 0x00000000
|
||||
0x3ffb3950: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
|
||||
0x3ffb3960: 0x00000000 0x400822c4 0x0000cdcd 0x40088e1c
|
||||
0x3ffb3970: 0x3ffaa708 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3980: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3990: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb39a0: 0x00000000 0x40081f08 0x00000000 0x00000000
|
||||
0x3ffb39b0: 0x800881bc 0x3ffb3a00 0x00000000 0x00000000
|
||||
0x3ffb39c0: 0x00000000 0x00000000 0x00000000 0xffffffff
|
||||
0x3ffb39d0: 0x00000000 0x00000000 0x00000000 0x9619c4d6
|
||||
0x3ffb39e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb39f0: 0x00000000 0x3ffb3a20 0x40081f08 0x00000000
|
||||
0x3ffb3a00: 0x00060323 0x3ffb3abc 0x00000001 0x00000001
|
||||
0x3ffb3a10: 0x00000000 0x3ffb3a40 0x00000000 0x00000000
|
||||
0x3ffb3a20: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3a30: 0x80080fbe 0x3ffe3b80 0x3ffb2e48 0x9619c4d6
|
||||
0x3ffb3a40: 0x00000000 0x00000000 0x3ffb3a4c 0x00000000
|
||||
0x3ffb3a50: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3a60: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3a70: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3a80: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3a90: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||
0x3ffb3aa0: 0x00000000 0x00000000
|
||||
|
||||
===================== ESP32 CORE DUMP END =====================
|
||||
===============================================================
|
||||
Done!
|
|
@ -1,16 +1,9 @@
|
|||
#! /bin/bash
|
||||
|
||||
if [ "$(xtensa-esp32-elf-gcc -dumpversion)" = "5.2.0" ]; then
|
||||
EXPECTED_OUTPUT="expected_output"
|
||||
else
|
||||
# GCC_NOT_5_2_0 just a hint to remove later
|
||||
EXPECTED_OUTPUT="expected_output_new_CT"
|
||||
fi
|
||||
|
||||
{ coverage debug sys \
|
||||
&& coverage erase \
|
||||
&& coverage run -a --source=espcoredump ../espcoredump.py info_corefile -m -t b64 -c coredump.b64 test.elf &> output \
|
||||
&& diff ${EXPECTED_OUTPUT} output \
|
||||
&& diff expected_output output \
|
||||
&& coverage run -a --source=espcoredump ./test_espcoredump.py \
|
||||
&& coverage report \
|
||||
; } || { echo 'The test for espcoredump has failed!'; exit 1; }
|
||||
|
|
|
@ -10,6 +10,4 @@ target_compile_definitions(${COMPONENT_LIB} PRIVATE HAVE_EXPAT_CONFIG_H)
|
|||
target_compile_definitions(${COMPONENT_LIB} PRIVATE HAVE_GETRANDOM)
|
||||
|
||||
# Temporary suppress "fallthrough" warnings until they are fixed in expat repo
|
||||
if(GCC_NOT_5_2_0)
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-implicit-fallthrough)
|
||||
endif()
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-implicit-fallthrough)
|
||||
|
|
|
@ -6,8 +6,7 @@ COMPONENT_ADD_INCLUDEDIRS := expat/expat/lib port/include
|
|||
COMPONENT_SRCDIRS := expat/expat/lib port
|
||||
|
||||
CFLAGS += -DHAVE_EXPAT_CONFIG_H -DHAVE_GETRANDOM
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
# Temporary suppress "fallthrough" warnings until they are fixed in expat repo
|
||||
CFLAGS += -Wno-implicit-fallthrough
|
||||
endif
|
||||
|
||||
COMPONENT_SUBMODULES += expat
|
||||
|
|
|
@ -161,14 +161,12 @@ set_source_files_properties(
|
|||
)
|
||||
|
||||
# Temporary suppress "fallthrough" warnings until they are fixed in libsodium repo
|
||||
if(GCC_NOT_5_2_0)
|
||||
set_source_files_properties(
|
||||
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c
|
||||
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c
|
||||
PROPERTIES COMPILE_FLAGS
|
||||
-Wno-implicit-fallthrough
|
||||
)
|
||||
endif()
|
||||
set_source_files_properties(
|
||||
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c
|
||||
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c
|
||||
PROPERTIES COMPILE_FLAGS
|
||||
-Wno-implicit-fallthrough
|
||||
)
|
||||
|
||||
set_source_files_properties(
|
||||
${SRC}/randombytes/randombytes.c
|
||||
|
|
|
@ -87,8 +87,6 @@ CFLAGS += -DNATIVE_LITTLE_ENDIAN -DHAVE_WEAK_SYMBOLS -D__STDC_LIMIT_MACROS -D__
|
|||
# randombytes.c needs to pull in platform-specific implementation
|
||||
$(LSRC)/randombytes/randombytes.o: CFLAGS+=-DRANDOMBYTES_DEFAULT_IMPLEMENTATION
|
||||
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
# Temporary suppress "fallthrough" warnings until they are fixed in libsodium repo
|
||||
$(LSRC)/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.o: CFLAGS += -Wno-implicit-fallthrough
|
||||
$(LSRC)/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.o: CFLAGS += -Wno-implicit-fallthrough
|
||||
endif
|
||||
|
|
|
@ -138,15 +138,13 @@ idf_component_register(SRCS "${srcs}"
|
|||
# lots of LWIP source files evaluate macros that check address of stack variables
|
||||
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-address)
|
||||
|
||||
if(GCC_NOT_5_2_0)
|
||||
set_source_files_properties(
|
||||
lwip/src/netif/ppp/ppp.c
|
||||
PROPERTIES COMPILE_FLAGS
|
||||
-Wno-uninitialized
|
||||
)
|
||||
set_source_files_properties(
|
||||
lwip/src/netif/ppp/pppos.c
|
||||
PROPERTIES COMPILE_FLAGS
|
||||
-Wno-implicit-fallthrough
|
||||
)
|
||||
endif()
|
||||
set_source_files_properties(
|
||||
lwip/src/netif/ppp/ppp.c
|
||||
PROPERTIES COMPILE_FLAGS
|
||||
-Wno-uninitialized
|
||||
)
|
||||
set_source_files_properties(
|
||||
lwip/src/netif/ppp/pppos.c
|
||||
PROPERTIES COMPILE_FLAGS
|
||||
-Wno-implicit-fallthrough
|
||||
)
|
||||
|
|
|
@ -36,9 +36,7 @@ endif
|
|||
|
||||
CFLAGS += -Wno-address # lots of LWIP source files evaluate macros that check address of stack variables
|
||||
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
lwip/src/netif/ppp/ppp.o: CFLAGS += -Wno-uninitialized
|
||||
lwip/src/netif/ppp/pppos.o: CFLAGS += -Wno-implicit-fallthrough
|
||||
endif
|
||||
|
||||
COMPONENT_ADD_LDFRAGMENTS += linker.lf
|
||||
|
|
|
@ -15,27 +15,8 @@ set(srcs
|
|||
"utime.c")
|
||||
set(include_dirs platform_include)
|
||||
|
||||
if(GCC_NOT_5_2_0)
|
||||
if(CONFIG_SPIRAM_CACHE_WORKAROUND)
|
||||
set(ldfragments esp32-spiram-rom-functions-c.lf)
|
||||
endif()
|
||||
|
||||
# Forces the linker to include locks, heap, and syscalls from this component,
|
||||
# instead of the implementations provided by newlib.
|
||||
set(EXTRA_LINK_FLAGS "-u newlib_include_locks_impl")
|
||||
list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_heap_impl")
|
||||
list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_syscalls_impl")
|
||||
list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_pthread_impl")
|
||||
else()
|
||||
# Remove this section when GCC 5.2.0 is no longer supported
|
||||
# 'include' and 'lib' directories should also be removed.
|
||||
# An if statement about LIB_PATH below should also be removed.
|
||||
list(APPEND include_dirs include)
|
||||
set(LIB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
|
||||
|
||||
if(CONFIG_SPIRAM_CACHE_WORKAROUND)
|
||||
set(ldfragments esp32-spiram-rom-functions-psram-workaround.lf)
|
||||
endif()
|
||||
if(CONFIG_SPIRAM_CACHE_WORKAROUND)
|
||||
set(ldfragments esp32-spiram-rom-functions-c.lf)
|
||||
endif()
|
||||
|
||||
list(APPEND ldfragments newlib.lf)
|
||||
|
@ -46,22 +27,18 @@ idf_component_register(SRCS "${srcs}"
|
|||
PRIV_REQUIRES soc
|
||||
LDFRAGMENTS "${ldfragments}")
|
||||
|
||||
if(LIB_PATH)
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "-L ${LIB_PATH}")
|
||||
endif()
|
||||
|
||||
if(GCC_NOT_5_2_0)
|
||||
# Toolchain libraries require code defined in this component
|
||||
add_library(extra INTERFACE)
|
||||
idf_component_get_property(newlib newlib COMPONENT_LIB)
|
||||
target_link_libraries(extra INTERFACE ${LIBC} ${LIBM} gcc "$<TARGET_FILE:${newlib}>")
|
||||
target_link_libraries(${COMPONENT_LIB} PUBLIC extra)
|
||||
else()
|
||||
target_link_libraries(${COMPONENT_LIB} PUBLIC ${LIBC} ${LIBM} gcc)
|
||||
endif()
|
||||
# Toolchain libraries require code defined in this component
|
||||
add_library(extra INTERFACE)
|
||||
idf_component_get_property(newlib newlib COMPONENT_LIB)
|
||||
target_link_libraries(extra INTERFACE ${LIBC} ${LIBM} gcc "$<TARGET_FILE:${newlib}>")
|
||||
target_link_libraries(${COMPONENT_LIB} PUBLIC extra)
|
||||
|
||||
set_source_files_properties(heap.c PROPERTIES COMPILE_FLAGS -fno-builtin)
|
||||
|
||||
if(EXTRA_LINK_FLAGS)
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "${EXTRA_LINK_FLAGS}")
|
||||
endif()
|
||||
# Forces the linker to include locks, heap, and syscalls from this component,
|
||||
# instead of the implementations provided by newlib.
|
||||
set(EXTRA_LINK_FLAGS "-u newlib_include_locks_impl")
|
||||
list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_heap_impl")
|
||||
list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_syscalls_impl")
|
||||
list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_pthread_impl")
|
||||
target_link_libraries(${COMPONENT_LIB} INTERFACE "${EXTRA_LINK_FLAGS}")
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
|
||||
ifeq ($(GCC_NOT_5_2_0), 1)
|
||||
|
||||
ifdef CONFIG_NEWLIB_NANO_FORMAT
|
||||
LIBC := c_nano
|
||||
else # CONFIG_NEWLIB_NANO_FORMAT
|
||||
|
@ -21,32 +18,6 @@ COMPONENT_ADD_LDFLAGS += -u newlib_include_locks_impl
|
|||
COMPONENT_ADD_LDFLAGS += -u newlib_include_heap_impl
|
||||
COMPONENT_ADD_LDFLAGS += -u newlib_include_syscalls_impl
|
||||
|
||||
else # GCC_NOT_5_2_0
|
||||
# Remove this section when GCC 5.2.0 is no longer supported
|
||||
|
||||
ifdef CONFIG_SPIRAM_CACHE_WORKAROUND
|
||||
LIBC_PATH := $(COMPONENT_PATH)/lib/libc-psram-workaround.a
|
||||
LIBM_PATH := $(COMPONENT_PATH)/lib/libm-psram-workaround.a
|
||||
COMPONENT_ADD_LDFRAGMENTS := esp32-spiram-rom-functions-psram-workaround.lf
|
||||
else
|
||||
|
||||
ifdef CONFIG_NEWLIB_NANO_FORMAT
|
||||
LIBC_PATH := $(COMPONENT_PATH)/lib/libc_nano.a
|
||||
else
|
||||
LIBC_PATH := $(COMPONENT_PATH)/lib/libc.a
|
||||
endif # CONFIG_NEWLIB_NANO_FORMAT
|
||||
|
||||
LIBM_PATH := $(COMPONENT_PATH)/lib/libm.a
|
||||
|
||||
endif # CONFIG_SPIRAM_CACHE_WORKAROUND
|
||||
|
||||
COMPONENT_ADD_LDFLAGS := $(LIBC_PATH) $(LIBM_PATH) -lnewlib
|
||||
|
||||
COMPONENT_ADD_LINKER_DEPS := $(LIBC_PATH) $(LIBM_PATH)
|
||||
|
||||
COMPONENT_ADD_INCLUDEDIRS := platform_include include
|
||||
endif # GCC_NOT_5_2_0
|
||||
|
||||
COMPONENT_ADD_LDFRAGMENTS += newlib.lf
|
||||
|
||||
heap.o: CFLAGS += -fno-builtin
|
||||
|
|
|
@ -1,149 +0,0 @@
|
|||
# If the Newlib functions in ROM aren't used (eg because the external SPI RAM workaround is active), these functions will
|
||||
# be linked into the application directly instead. Normally, they would end up in flash, which is undesirable because esp-idf
|
||||
# and/or applications may assume that because these functions normally are in ROM, they are accessible even when flash is
|
||||
# inaccessible. To work around this, this ld fragment places these functions in RAM instead. If the ROM functions are used,
|
||||
# these defines do nothing, so they can still be included in that situation.
|
||||
#
|
||||
#
|
||||
# Note: We currently never link libg-psram-workaround.a, so no rules
|
||||
# are generated for this library
|
||||
#
|
||||
# Note: the only difference between esp32-spiram-rom-functions-c.lf
|
||||
# and esp32-spiram-rom-functions-psram-workaround.lf is the archive name.
|
||||
|
||||
[mapping:libc_psram_workaround]
|
||||
archive: libc-psram-workaround.a
|
||||
entries:
|
||||
if SPIRAM_CACHE_WORKAROUND = y:
|
||||
lib_a-utoa (noflash)
|
||||
lib_a-longjmp (noflash)
|
||||
lib_a-setjmp (noflash)
|
||||
lib_a-abs (noflash)
|
||||
lib_a-div (noflash)
|
||||
lib_a-labs (noflash)
|
||||
lib_a-ldiv (noflash)
|
||||
lib_a-quorem (noflash)
|
||||
lib_a-utoa (noflash)
|
||||
lib_a-itoa (noflash)
|
||||
lib_a-atoi (noflash)
|
||||
lib_a-atol (noflash)
|
||||
lib_a-strtol (noflash)
|
||||
lib_a-strtoul (noflash)
|
||||
lib_a-wcrtomb (noflash)
|
||||
lib_a-fvwrite (noflash)
|
||||
lib_a-wbuf (noflash)
|
||||
lib_a-wsetup (noflash)
|
||||
lib_a-fputwc (noflash)
|
||||
lib_a-wctomb_r (noflash)
|
||||
lib_a-ungetc (noflash)
|
||||
lib_a-makebuf (noflash)
|
||||
lib_a-fflush (noflash)
|
||||
lib_a-refill (noflash)
|
||||
lib_a-s_fpclassify (noflash)
|
||||
lib_a-asctime (noflash)
|
||||
lib_a-ctime (noflash)
|
||||
lib_a-ctime_r (noflash)
|
||||
lib_a-lcltime (noflash)
|
||||
lib_a-lcltime_r (noflash)
|
||||
lib_a-gmtime (noflash)
|
||||
lib_a-gmtime_r (noflash)
|
||||
lib_a-strftime (noflash)
|
||||
lib_a-mktime (noflash)
|
||||
lib_a-syswrite (noflash)
|
||||
lib_a-tzset_r (noflash)
|
||||
lib_a-tzset (noflash)
|
||||
lib_a-toupper (noflash)
|
||||
lib_a-tolower (noflash)
|
||||
lib_a-toascii (noflash)
|
||||
lib_a-systimes (noflash)
|
||||
lib_a-time (noflash)
|
||||
lib_a-gettzinfo (noflash)
|
||||
lib_a-strupr (noflash)
|
||||
lib_a-asctime_r (noflash)
|
||||
lib_a-bzero (noflash)
|
||||
lib_a-close (noflash)
|
||||
lib_a-creat (noflash)
|
||||
lib_a-environ (noflash)
|
||||
lib_a-fclose (noflash)
|
||||
lib_a-isalnum (noflash)
|
||||
lib_a-isalpha (noflash)
|
||||
lib_a-isascii (noflash)
|
||||
lib_a-isblank (noflash)
|
||||
lib_a-iscntrl (noflash)
|
||||
lib_a-isdigit (noflash)
|
||||
lib_a-isgraph (noflash)
|
||||
lib_a-islower (noflash)
|
||||
lib_a-isprint (noflash)
|
||||
lib_a-ispunct (noflash)
|
||||
lib_a-isspace (noflash)
|
||||
lib_a-isupper (noflash)
|
||||
lib_a-memccpy (noflash)
|
||||
lib_a-memchr (noflash)
|
||||
lib_a-memcmp (noflash)
|
||||
lib_a-memcpy (noflash)
|
||||
lib_a-memmove (noflash)
|
||||
lib_a-memrchr (noflash)
|
||||
lib_a-memset (noflash)
|
||||
lib_a-open (noflash)
|
||||
lib_a-rand (noflash)
|
||||
lib_a-rand_r (noflash)
|
||||
lib_a-read (noflash)
|
||||
lib_a-rshift (noflash)
|
||||
lib_a-sbrk (noflash)
|
||||
lib_a-srand (noflash)
|
||||
lib_a-strcasecmp (noflash)
|
||||
lib_a-strcasestr (noflash)
|
||||
lib_a-strcat (noflash)
|
||||
lib_a-strchr (noflash)
|
||||
lib_a-strcmp (noflash)
|
||||
lib_a-strcoll (noflash)
|
||||
lib_a-strcpy (noflash)
|
||||
lib_a-strcspn (noflash)
|
||||
lib_a-strdup (noflash)
|
||||
lib_a-strlcat (noflash)
|
||||
lib_a-strlcpy (noflash)
|
||||
lib_a-strlen (noflash)
|
||||
lib_a-strlwr (noflash)
|
||||
lib_a-strncasecmp (noflash)
|
||||
lib_a-strncat (noflash)
|
||||
lib_a-strncmp (noflash)
|
||||
lib_a-strncpy (noflash)
|
||||
lib_a-strndup (noflash)
|
||||
lib_a-strnlen (noflash)
|
||||
lib_a-strrchr (noflash)
|
||||
lib_a-strsep (noflash)
|
||||
lib_a-strspn (noflash)
|
||||
lib_a-strstr (noflash)
|
||||
lib_a-strtok_r (noflash)
|
||||
lib_a-strupr (noflash)
|
||||
lib_a-stdio (noflash)
|
||||
lib_a-syssbrk (noflash)
|
||||
lib_a-sysclose (noflash)
|
||||
lib_a-sysopen (noflash)
|
||||
creat (noflash)
|
||||
lib_a-sysread (noflash)
|
||||
lib_a-syswrite (noflash)
|
||||
lib_a-impure (noflash)
|
||||
lib_a-tzvars (noflash)
|
||||
lib_a-sf_nan (noflash)
|
||||
lib_a-tzcalc_limits (noflash)
|
||||
lib_a-month_lengths (noflash)
|
||||
lib_a-timelocal (noflash)
|
||||
lib_a-findfp (noflash)
|
||||
lock (noflash)
|
||||
lib_a-getenv_r (noflash)
|
||||
isatty (noflash)
|
||||
lib_a-fwalk (noflash)
|
||||
lib_a-getenv_r (noflash)
|
||||
lib_a-tzlock (noflash)
|
||||
lib_a-ctype_ (noflash)
|
||||
lib_a-sccl (noflash)
|
||||
lib_a-strptime (noflash)
|
||||
lib_a-envlock (noflash)
|
||||
lib_a-raise (noflash)
|
||||
lib_a-strdup_r (noflash)
|
||||
lib_a-system (noflash)
|
||||
lib_a-strndup_r (noflash)
|
||||
else:
|
||||
* (default)
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
/* Provide support for both ANSI and non-ANSI environments. */
|
||||
|
||||
/* Some ANSI environments are "broken" in the sense that __STDC__ cannot be
|
||||
relied upon to have it's intended meaning. Therefore we must use our own
|
||||
concoction: _HAVE_STDC. Always use _HAVE_STDC instead of __STDC__ in newlib
|
||||
sources!
|
||||
|
||||
To get a strict ANSI C environment, define macro __STRICT_ANSI__. This will
|
||||
"comment out" the non-ANSI parts of the ANSI header files (non-ANSI header
|
||||
files aren't affected). */
|
||||
|
||||
#ifndef _ANSIDECL_H_
|
||||
#define _ANSIDECL_H_
|
||||
|
||||
#include <newlib.h>
|
||||
#include <sys/config.h>
|
||||
|
||||
/* First try to figure out whether we really are in an ANSI C environment. */
|
||||
/* FIXME: This probably needs some work. Perhaps sys/config.h can be
|
||||
prevailed upon to give us a clue. */
|
||||
|
||||
#ifdef __STDC__
|
||||
#define _HAVE_STDC
|
||||
#endif
|
||||
|
||||
/* ISO C++. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if !(defined(_BEGIN_STD_C) && defined(_END_STD_C))
|
||||
#ifdef _HAVE_STD_CXX
|
||||
#define _BEGIN_STD_C namespace std { extern "C" {
|
||||
#define _END_STD_C } }
|
||||
#else
|
||||
#define _BEGIN_STD_C extern "C" {
|
||||
#define _END_STD_C }
|
||||
#endif
|
||||
#if __GNUC_PREREQ (3, 3)
|
||||
#define _NOTHROW __attribute__ ((__nothrow__))
|
||||
#else
|
||||
#define _NOTHROW throw()
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define _BEGIN_STD_C
|
||||
#define _END_STD_C
|
||||
#define _NOTHROW
|
||||
#endif
|
||||
|
||||
#ifdef _HAVE_STDC
|
||||
#define _PTR void *
|
||||
#define _AND ,
|
||||
#define _NOARGS void
|
||||
#define _CONST const
|
||||
#define _VOLATILE volatile
|
||||
#define _SIGNED signed
|
||||
#define _DOTS , ...
|
||||
#define _VOID void
|
||||
#ifdef __CYGWIN__
|
||||
#define _EXFUN_NOTHROW(name, proto) __cdecl name proto _NOTHROW
|
||||
#define _EXFUN(name, proto) __cdecl name proto
|
||||
#define _EXPARM(name, proto) (* __cdecl name) proto
|
||||
#define _EXFNPTR(name, proto) (__cdecl * name) proto
|
||||
#else
|
||||
#define _EXFUN_NOTHROW(name, proto) name proto _NOTHROW
|
||||
#define _EXFUN(name, proto) name proto
|
||||
#define _EXPARM(name, proto) (* name) proto
|
||||
#define _EXFNPTR(name, proto) (* name) proto
|
||||
#endif
|
||||
#define _DEFUN(name, arglist, args) name(args)
|
||||
#define _DEFUN_VOID(name) name(_NOARGS)
|
||||
#define _CAST_VOID (void)
|
||||
#ifndef _LONG_DOUBLE
|
||||
#define _LONG_DOUBLE long double
|
||||
#endif
|
||||
#ifndef _PARAMS
|
||||
#define _PARAMS(paramlist) paramlist
|
||||
#endif
|
||||
#else
|
||||
#define _PTR char *
|
||||
#define _AND ;
|
||||
#define _NOARGS
|
||||
#define _CONST
|
||||
#define _VOLATILE
|
||||
#define _SIGNED
|
||||
#define _DOTS
|
||||
#define _VOID void
|
||||
#define _EXFUN(name, proto) name()
|
||||
#define _EXFUN_NOTHROW(name, proto) name()
|
||||
#define _DEFUN(name, arglist, args) name arglist args;
|
||||
#define _DEFUN_VOID(name) name()
|
||||
#define _CAST_VOID
|
||||
#define _LONG_DOUBLE double
|
||||
#ifndef _PARAMS
|
||||
#define _PARAMS(paramlist) ()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Support gcc's __attribute__ facility. */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define _ATTRIBUTE(attrs) __attribute__ (attrs)
|
||||
#else
|
||||
#define _ATTRIBUTE(attrs)
|
||||
#endif
|
||||
|
||||
/* The traditional meaning of 'extern inline' for GCC is not
|
||||
to emit the function body unless the address is explicitly
|
||||
taken. However this behaviour is changing to match the C99
|
||||
standard, which uses 'extern inline' to indicate that the
|
||||
function body *must* be emitted. Likewise, a function declared
|
||||
without either 'extern' or 'static' defaults to extern linkage
|
||||
(C99 6.2.2p5), and the compiler may choose whether to use the
|
||||
inline version or call the extern linkage version (6.7.4p6).
|
||||
If we are using GCC, but do not have the new behaviour, we need
|
||||
to use extern inline; if we are using a new GCC with the
|
||||
C99-compatible behaviour, or a non-GCC compiler (which we will
|
||||
have to hope is C99, since there is no other way to achieve the
|
||||
effect of omitting the function if it isn't referenced) we use
|
||||
'static inline', which c99 defines to mean more-or-less the same
|
||||
as the Gnu C 'extern inline'. */
|
||||
#if defined(__GNUC__) && !defined(__GNUC_STDC_INLINE__)
|
||||
/* We're using GCC, but without the new C99-compatible behaviour. */
|
||||
#define _ELIDABLE_INLINE extern __inline__ _ATTRIBUTE ((__always_inline__))
|
||||
#else
|
||||
/* We're using GCC in C99 mode, or an unknown compiler which
|
||||
we just have to hope obeys the C99 semantics of inline. */
|
||||
#define _ELIDABLE_INLINE static __inline__
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ (3, 1)
|
||||
#define _NOINLINE __attribute__ ((__noinline__))
|
||||
#define _NOINLINE_STATIC _NOINLINE static
|
||||
#else
|
||||
/* On non-GNU compilers and GCC prior to version 3.1 the compiler can't be
|
||||
trusted not to inline if it is static. */
|
||||
#define _NOINLINE
|
||||
#define _NOINLINE_STATIC
|
||||
#endif
|
||||
|
||||
#endif /* _ANSIDECL_H_ */
|
|
@ -1,40 +0,0 @@
|
|||
/* internal use only -- mapping of "system calls" for libraries that lose
|
||||
and only provide C names, so that we end up in violation of ANSI */
|
||||
#ifndef __SYSLIST_H
|
||||
#define __SYSLIST_H
|
||||
|
||||
#ifdef MISSING_SYSCALL_NAMES
|
||||
#define _close close
|
||||
#define _execve execve
|
||||
#define _fcntl fcntl
|
||||
#define _fork fork
|
||||
#define _fstat fstat
|
||||
#define _getpid getpid
|
||||
#define _gettimeofday gettimeofday
|
||||
#define _isatty isatty
|
||||
#define _kill kill
|
||||
#define _link link
|
||||
#define _lseek lseek
|
||||
#define _mkdir mkdir
|
||||
#define _open open
|
||||
#define _read read
|
||||
#define _sbrk sbrk
|
||||
#define _stat stat
|
||||
#define _times times
|
||||
#define _unlink unlink
|
||||
#define _wait wait
|
||||
#define _write write
|
||||
#endif /* MISSING_SYSCALL_NAMES */
|
||||
|
||||
#if defined MISSING_SYSCALL_NAMES || !defined HAVE_OPENDIR
|
||||
/* If the system call interface is missing opendir, readdir, and
|
||||
closedir, there is an implementation of these functions in
|
||||
libc/posix that is implemented using open, getdents, and close.
|
||||
Note, these functions are currently not in the libc/syscalls
|
||||
directory. */
|
||||
#define _opendir opendir
|
||||
#define _readdir readdir
|
||||
#define _closedir closedir
|
||||
#endif /* MISSING_SYSCALL_NAMES || !HAVE_OPENDIR */
|
||||
|
||||
#endif /* !__SYSLIST_H_ */
|
|
@ -1,21 +0,0 @@
|
|||
/* libc/include/alloca.h - Allocate memory on stack */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
/* Rearranged for general inclusion by stdlib.h.
|
||||
2001, Corinna Vinschen <vinschen@redhat.com> */
|
||||
|
||||
#ifndef _NEWLIB_ALLOCA_H
|
||||
#define _NEWLIB_ALLOCA_H
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <sys/reent.h>
|
||||
|
||||
#undef alloca
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define alloca(size) __builtin_alloca(size)
|
||||
#else
|
||||
void * _EXFUN(alloca,(size_t));
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,69 +0,0 @@
|
|||
/* $NetBSD: ar.h,v 1.4 1994/10/26 00:55:43 cgd Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Hugh Smith at The University of Guelph.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ar.h 8.2 (Berkeley) 1/21/94
|
||||
*/
|
||||
|
||||
#ifndef _AR_H_
|
||||
#define _AR_H_
|
||||
|
||||
/* Pre-4BSD archives had these magic numbers in them. */
|
||||
#define OARMAG1 0177555
|
||||
#define OARMAG2 0177545
|
||||
|
||||
#define ARMAG "!<arch>\n" /* ar "magic number" */
|
||||
#define SARMAG 8 /* strlen(ARMAG); */
|
||||
|
||||
#define AR_EFMT1 "#1/" /* extended format #1 */
|
||||
|
||||
struct ar_hdr {
|
||||
char ar_name[16]; /* name */
|
||||
char ar_date[12]; /* modification time */
|
||||
char ar_uid[6]; /* user id */
|
||||
char ar_gid[6]; /* group id */
|
||||
char ar_mode[8]; /* octal file permissions */
|
||||
char ar_size[10]; /* size in bytes */
|
||||
#define ARFMAG "`\n"
|
||||
char ar_fmag[2]; /* consistency check */
|
||||
};
|
||||
|
||||
#endif /* !_AR_H_ */
|
|
@ -1,33 +0,0 @@
|
|||
/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* is freely granted, provided that this notice is preserved.
|
||||
*/
|
||||
|
||||
#ifndef _ARGZ_H_
|
||||
#define _ARGZ_H_
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "_ansi.h"
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
/* The newlib implementation of these functions assumes that sizeof(char) == 1. */
|
||||
error_t argz_create (char *const argv[], char **argz, size_t *argz_len);
|
||||
error_t argz_create_sep (const char *string, int sep, char **argz, size_t *argz_len);
|
||||
size_t argz_count (const char *argz, size_t argz_len);
|
||||
void argz_extract (char *argz, size_t argz_len, char **argv);
|
||||
void argz_stringify (char *argz, size_t argz_len, int sep);
|
||||
error_t argz_add (char **argz, size_t *argz_len, const char *str);
|
||||
error_t argz_add_sep (char **argz, size_t *argz_len, const char *str, int sep);
|
||||
error_t argz_append (char **argz, size_t *argz_len, const char *buf, size_t buf_len);
|
||||
error_t argz_delete (char **argz, size_t *argz_len, char *entry);
|
||||
error_t argz_insert (char **argz, size_t *argz_len, char *before, const char *entry);
|
||||
char * argz_next (char *argz, size_t argz_len, const char *entry);
|
||||
error_t argz_replace (char **argz, size_t *argz_len, const char *str, const char *with, unsigned *replace_count);
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _ARGZ_H_ */
|
|
@ -1,50 +0,0 @@
|
|||
/*
|
||||
assert.h
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "_ansi.h"
|
||||
|
||||
#undef assert
|
||||
|
||||
#ifdef NDEBUG /* required by ANSI standard */
|
||||
# define assert(__e) ((void) sizeof(__e))
|
||||
#else
|
||||
# define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \
|
||||
__ASSERT_FUNC, #__e))
|
||||
|
||||
# ifndef __ASSERT_FUNC
|
||||
/* Use g++'s demangled names in C++. */
|
||||
# if defined __cplusplus && defined __GNUC__
|
||||
# define __ASSERT_FUNC __PRETTY_FUNCTION__
|
||||
|
||||
/* C99 requires the use of __func__. */
|
||||
# elif __STDC_VERSION__ >= 199901L
|
||||
# define __ASSERT_FUNC __func__
|
||||
|
||||
/* Older versions of gcc don't have __func__ but can use __FUNCTION__. */
|
||||
# elif __GNUC__ >= 2
|
||||
# define __ASSERT_FUNC __FUNCTION__
|
||||
|
||||
/* failed to detect __func__ support. */
|
||||
# else
|
||||
# define __ASSERT_FUNC ((char *) 0)
|
||||
# endif
|
||||
# endif /* !__ASSERT_FUNC */
|
||||
#endif /* !NDEBUG */
|
||||
|
||||
void _EXFUN(__assert, (const char *, int, const char *)
|
||||
_ATTRIBUTE ((__noreturn__)));
|
||||
void _EXFUN(__assert_func, (const char *, int, const char *, const char *)
|
||||
_ATTRIBUTE ((__noreturn__)));
|
||||
|
||||
#if __STDC_VERSION__ >= 201112L && !defined __cplusplus
|
||||
# define static_assert _Static_assert
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -1,124 +0,0 @@
|
|||
/* $NetBSD: complex.h,v 1.3 2010/09/15 16:11:30 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Written by Matthias Drochner.
|
||||
* Public domain.
|
||||
*/
|
||||
|
||||
#ifndef _COMPLEX_H
|
||||
#define _COMPLEX_H
|
||||
|
||||
#define complex _Complex
|
||||
#define _Complex_I 1.0fi
|
||||
#define I _Complex_I
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* 7.3.5 Trigonometric functions */
|
||||
/* 7.3.5.1 The cacos functions */
|
||||
double complex cacos(double complex);
|
||||
float complex cacosf(float complex);
|
||||
|
||||
/* 7.3.5.2 The casin functions */
|
||||
double complex casin(double complex);
|
||||
float complex casinf(float complex);
|
||||
|
||||
/* 7.3.5.1 The catan functions */
|
||||
double complex catan(double complex);
|
||||
float complex catanf(float complex);
|
||||
|
||||
/* 7.3.5.1 The ccos functions */
|
||||
double complex ccos(double complex);
|
||||
float complex ccosf(float complex);
|
||||
|
||||
/* 7.3.5.1 The csin functions */
|
||||
double complex csin(double complex);
|
||||
float complex csinf(float complex);
|
||||
|
||||
/* 7.3.5.1 The ctan functions */
|
||||
double complex ctan(double complex);
|
||||
float complex ctanf(float complex);
|
||||
|
||||
/* 7.3.6 Hyperbolic functions */
|
||||
/* 7.3.6.1 The cacosh functions */
|
||||
double complex cacosh(double complex);
|
||||
float complex cacoshf(float complex);
|
||||
|
||||
/* 7.3.6.2 The casinh functions */
|
||||
double complex casinh(double complex);
|
||||
float complex casinhf(float complex);
|
||||
|
||||
/* 7.3.6.3 The catanh functions */
|
||||
double complex catanh(double complex);
|
||||
float complex catanhf(float complex);
|
||||
|
||||
/* 7.3.6.4 The ccosh functions */
|
||||
double complex ccosh(double complex);
|
||||
float complex ccoshf(float complex);
|
||||
|
||||
/* 7.3.6.5 The csinh functions */
|
||||
double complex csinh(double complex);
|
||||
float complex csinhf(float complex);
|
||||
|
||||
/* 7.3.6.6 The ctanh functions */
|
||||
double complex ctanh(double complex);
|
||||
float complex ctanhf(float complex);
|
||||
|
||||
/* 7.3.7 Exponential and logarithmic functions */
|
||||
/* 7.3.7.1 The cexp functions */
|
||||
double complex cexp(double complex);
|
||||
float complex cexpf(float complex);
|
||||
|
||||
/* 7.3.7.2 The clog functions */
|
||||
double complex clog(double complex);
|
||||
float complex clogf(float complex);
|
||||
|
||||
/* 7.3.8 Power and absolute-value functions */
|
||||
/* 7.3.8.1 The cabs functions */
|
||||
/*#ifndef __LIBM0_SOURCE__ */
|
||||
/* avoid conflict with historical cabs(struct complex) */
|
||||
/* double cabs(double complex) __RENAME(__c99_cabs);
|
||||
float cabsf(float complex) __RENAME(__c99_cabsf);
|
||||
#endif
|
||||
*/
|
||||
double cabs(double complex) ;
|
||||
float cabsf(float complex) ;
|
||||
|
||||
/* 7.3.8.2 The cpow functions */
|
||||
double complex cpow(double complex, double complex);
|
||||
float complex cpowf(float complex, float complex);
|
||||
|
||||
/* 7.3.8.3 The csqrt functions */
|
||||
double complex csqrt(double complex);
|
||||
float complex csqrtf(float complex);
|
||||
|
||||
/* 7.3.9 Manipulation functions */
|
||||
/* 7.3.9.1 The carg functions */
|
||||
double carg(double complex);
|
||||
float cargf(float complex);
|
||||
|
||||
/* 7.3.9.2 The cimag functions */
|
||||
double cimag(double complex);
|
||||
float cimagf(float complex);
|
||||
/*long double cimagl(long double complex); */
|
||||
|
||||
/* 7.3.9.3 The conj functions */
|
||||
double complex conj(double complex);
|
||||
float complex conjf(float complex);
|
||||
/*long double complex conjl(long double complex); */
|
||||
|
||||
/* 7.3.9.4 The cproj functions */
|
||||
double complex cproj(double complex);
|
||||
float complex cprojf(float complex);
|
||||
/*long double complex cprojl(long double complex); */
|
||||
|
||||
/* 7.3.9.5 The creal functions */
|
||||
double creal(double complex);
|
||||
float crealf(float complex);
|
||||
/*long double creall(long double complex); */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* ! _COMPLEX_H */
|
|
@ -1,28 +0,0 @@
|
|||
#ifndef __SYS_CONFIG_H__
|
||||
#define __SYS_CONFIG_H__
|
||||
|
||||
#include <machine/ieeefp.h> /* floating point macros */
|
||||
#include <sys/features.h> /* POSIX defs */
|
||||
|
||||
#ifndef __EXPORT
|
||||
#define __EXPORT
|
||||
#endif
|
||||
|
||||
#ifndef __IMPORT
|
||||
#define __IMPORT
|
||||
#endif
|
||||
|
||||
/* Define return type of read/write routines. In POSIX, the return type
|
||||
for read()/write() is "ssize_t" but legacy newlib code has been using
|
||||
"int" for some time. If not specified, "int" is defaulted. */
|
||||
#ifndef _READ_WRITE_RETURN_TYPE
|
||||
#define _READ_WRITE_RETURN_TYPE int
|
||||
#endif
|
||||
/* Define `count' parameter of read/write routines. In POSIX, the `count'
|
||||
parameter is "size_t" but legacy newlib code has been using "int" for some
|
||||
time. If not specified, "int" is defaulted. */
|
||||
#ifndef _READ_WRITE_BUFSIZE_TYPE
|
||||
#define _READ_WRITE_BUFSIZE_TYPE int
|
||||
#endif
|
||||
|
||||
#endif /* __SYS_CONFIG_H__ */
|
|
@ -1,113 +0,0 @@
|
|||
#ifndef _CTYPE_H_
|
||||
#define _CTYPE_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
int _EXFUN(isalnum, (int __c));
|
||||
int _EXFUN(isalpha, (int __c));
|
||||
int _EXFUN(iscntrl, (int __c));
|
||||
int _EXFUN(isdigit, (int __c));
|
||||
int _EXFUN(isgraph, (int __c));
|
||||
int _EXFUN(islower, (int __c));
|
||||
int _EXFUN(isprint, (int __c));
|
||||
int _EXFUN(ispunct, (int __c));
|
||||
int _EXFUN(isspace, (int __c));
|
||||
int _EXFUN(isupper, (int __c));
|
||||
int _EXFUN(isxdigit,(int __c));
|
||||
int _EXFUN(tolower, (int __c));
|
||||
int _EXFUN(toupper, (int __c));
|
||||
|
||||
#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L
|
||||
int _EXFUN(isblank, (int __c));
|
||||
#endif
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
int _EXFUN(isascii, (int __c));
|
||||
int _EXFUN(toascii, (int __c));
|
||||
#define _tolower(__c) ((unsigned char)(__c) - 'A' + 'a')
|
||||
#define _toupper(__c) ((unsigned char)(__c) - 'a' + 'A')
|
||||
#endif
|
||||
|
||||
#define _U 01
|
||||
#define _L 02
|
||||
#define _N 04
|
||||
#define _S 010
|
||||
#define _P 020
|
||||
#define _C 040
|
||||
#define _X 0100
|
||||
#define _B 0200
|
||||
|
||||
#ifndef _MB_CAPABLE
|
||||
_CONST
|
||||
#endif
|
||||
extern __IMPORT char * _CONST __ctype_ptr__;
|
||||
|
||||
#ifndef __cplusplus
|
||||
/* These macros are intentionally written in a manner that will trigger
|
||||
a gcc -Wall warning if the user mistakenly passes a 'char' instead
|
||||
of an int containing an 'unsigned char'. Note that the sizeof will
|
||||
always be 1, which is what we want for mapping EOF to __ctype_ptr__[0];
|
||||
the use of a raw index inside the sizeof triggers the gcc warning if
|
||||
__c was of type char, and sizeof masks side effects of the extra __c.
|
||||
Meanwhile, the real index to __ctype_ptr__+1 must be cast to int,
|
||||
since isalpha(0x100000001LL) must equal isalpha(1), rather than being
|
||||
an out-of-bounds reference on a 64-bit machine. */
|
||||
#define __ctype_lookup(__c) ((__ctype_ptr__+sizeof(""[__c]))[(int)(__c)])
|
||||
|
||||
#define isalpha(__c) (__ctype_lookup(__c)&(_U|_L))
|
||||
#define isupper(__c) ((__ctype_lookup(__c)&(_U|_L))==_U)
|
||||
#define islower(__c) ((__ctype_lookup(__c)&(_U|_L))==_L)
|
||||
#define isdigit(__c) (__ctype_lookup(__c)&_N)
|
||||
#define isxdigit(__c) (__ctype_lookup(__c)&(_X|_N))
|
||||
#define isspace(__c) (__ctype_lookup(__c)&_S)
|
||||
#define ispunct(__c) (__ctype_lookup(__c)&_P)
|
||||
#define isalnum(__c) (__ctype_lookup(__c)&(_U|_L|_N))
|
||||
#define isprint(__c) (__ctype_lookup(__c)&(_P|_U|_L|_N|_B))
|
||||
#define isgraph(__c) (__ctype_lookup(__c)&(_P|_U|_L|_N))
|
||||
#define iscntrl(__c) (__ctype_lookup(__c)&_C)
|
||||
|
||||
#if defined(__GNUC__) && \
|
||||
(!defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901L)
|
||||
#define isblank(__c) \
|
||||
__extension__ ({ __typeof__ (__c) __x = (__c); \
|
||||
(__ctype_lookup(__x)&_B) || (int) (__x) == '\t';})
|
||||
#endif
|
||||
|
||||
|
||||
/* Non-gcc versions will get the library versions, and will be
|
||||
slightly slower. These macros are not NLS-aware so they are
|
||||
disabled if the system supports the extended character sets. */
|
||||
# if defined(__GNUC__)
|
||||
# if !defined (_MB_EXTENDED_CHARSETS_ISO) && !defined (_MB_EXTENDED_CHARSETS_WINDOWS)
|
||||
# define toupper(__c) \
|
||||
__extension__ ({ __typeof__ (__c) __x = (__c); \
|
||||
islower (__x) ? (int) __x - 'a' + 'A' : (int) __x;})
|
||||
# define tolower(__c) \
|
||||
__extension__ ({ __typeof__ (__c) __x = (__c); \
|
||||
isupper (__x) ? (int) __x - 'A' + 'a' : (int) __x;})
|
||||
# else /* _MB_EXTENDED_CHARSETS* */
|
||||
/* Allow a gcc warning if the user passed 'char', but defer to the
|
||||
function. */
|
||||
# define toupper(__c) \
|
||||
__extension__ ({ __typeof__ (__c) __x = (__c); \
|
||||
(void) __ctype_ptr__[__x]; (toupper) (__x);})
|
||||
# define tolower(__c) \
|
||||
__extension__ ({ __typeof__ (__c) __x = (__c); \
|
||||
(void) __ctype_ptr__[__x]; (tolower) (__x);})
|
||||
# endif /* _MB_EXTENDED_CHARSETS* */
|
||||
# endif /* __GNUC__ */
|
||||
#endif /* !__cplusplus */
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
#define isascii(__c) ((unsigned)(__c)<=0177)
|
||||
#define toascii(__c) ((__c)&0177)
|
||||
#endif
|
||||
|
||||
/* For C++ backward-compatibility only. */
|
||||
extern __IMPORT _CONST char _ctype_[];
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _CTYPE_H_ */
|
|
@ -1,15 +0,0 @@
|
|||
#ifndef _DIRENT_H_
|
||||
#define _DIRENT_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#include <sys/dirent.h>
|
||||
|
||||
#if !defined(MAXNAMLEN) && !defined(_POSIX_SOURCE)
|
||||
#define MAXNAMLEN 1024
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /*_DIRENT_H_*/
|
|
@ -1,15 +0,0 @@
|
|||
/* envlock.h -- header file for env routines. */
|
||||
|
||||
#ifndef _INCLUDE_ENVLOCK_H_
|
||||
#define _INCLUDE_ENVLOCK_H_
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <sys/reent.h>
|
||||
|
||||
#define ENV_LOCK __env_lock(reent_ptr)
|
||||
#define ENV_UNLOCK __env_unlock(reent_ptr)
|
||||
|
||||
void _EXFUN(__env_lock,(struct _reent *reent));
|
||||
void _EXFUN(__env_unlock,(struct _reent *reent));
|
||||
|
||||
#endif /* _INCLUDE_ENVLOCK_H_ */
|
|
@ -1,16 +0,0 @@
|
|||
/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* is freely granted, provided that this notice is preserved.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/* The newlib implementation of these functions assumes that sizeof(char) == 1. */
|
||||
char * envz_entry (const char *envz, size_t envz_len, const char *name);
|
||||
char * envz_get (const char *envz, size_t envz_len, const char *name);
|
||||
error_t envz_add (char **envz, size_t *envz_len, const char *name, const char *value);
|
||||
error_t envz_merge (char **envz, size_t *envz_len, const char *envz2, size_t envz2_len, int override);
|
||||
void envz_remove(char **envz, size_t *envz_len, const char *name);
|
||||
void envz_strip (char **envz, size_t *envz_len);
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef __ERRNO_H__
|
||||
#define __ERRNO_H__
|
||||
|
||||
#ifndef __error_t_defined
|
||||
typedef int error_t;
|
||||
#define __error_t_defined 1
|
||||
#endif
|
||||
|
||||
#include <sys/errno.h>
|
||||
|
||||
#endif /* !__ERRNO_H__ */
|
|
@ -1,13 +0,0 @@
|
|||
#ifndef _FASTMATH_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define _FASTMATH_H_
|
||||
|
||||
#include <math.h>
|
||||
#include <machine/fastmath.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _FASTMATH_H_ */
|
|
@ -1 +0,0 @@
|
|||
#include <sys/fcntl.h>
|
|
@ -1,88 +0,0 @@
|
|||
/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
OF THE POSSIBILITY OF SUCH DAMAGE. */
|
||||
|
||||
|
||||
#ifndef _FENV_H
|
||||
#define _FENV_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef unsigned long fenv_t;
|
||||
typedef unsigned long fexcept_t;
|
||||
|
||||
#define FE_DIVBYZERO 0x08
|
||||
#define FE_INEXACT 0x01
|
||||
#define FE_INVALID 0x10
|
||||
#define FE_OVERFLOW 0x04
|
||||
#define FE_UNDERFLOW 0x02
|
||||
|
||||
#define FE_ALL_EXCEPT \
|
||||
(FE_DIVBYZERO | \
|
||||
FE_INEXACT | \
|
||||
FE_INVALID | \
|
||||
FE_OVERFLOW | \
|
||||
FE_UNDERFLOW)
|
||||
|
||||
#define FE_DOWNWARD 0x3
|
||||
#define FE_TONEAREST 0x0
|
||||
#define FE_TOWARDZERO 0x1
|
||||
#define FE_UPWARD 0x2
|
||||
|
||||
#define FE_DFL_ENV ((const fenv_t *) 0)
|
||||
|
||||
int feclearexcept(int);
|
||||
int fegetexceptflag(fexcept_t *, int);
|
||||
int feraiseexcept(int);
|
||||
int fesetexceptflag(const fexcept_t *, int);
|
||||
int fetestexcept(int);
|
||||
int fegetround(void);
|
||||
int fesetround(int);
|
||||
int fegetenv(fenv_t *);
|
||||
int feholdexcept(fenv_t *);
|
||||
int fesetenv(const fenv_t *);
|
||||
int feupdateenv(const fenv_t *);
|
||||
|
||||
/* glibc extensions */
|
||||
int feenableexcept(int excepts);
|
||||
int fedisableexcept(int excepts);
|
||||
int fegetexcept(void);
|
||||
|
||||
#define _FE_EXCEPTION_FLAGS_OFFSET 7
|
||||
#define _FE_EXCEPTION_FLAG_MASK (FE_ALL_EXCEPT << _FE_EXCEPTION_FLAGS_OFFSET)
|
||||
#define _FE_EXCEPTION_ENABLE_OFFSET 2
|
||||
#define _FE_EXCEPTION_ENABLE_MASK (FE_ALL_EXCEPT << _FE_EXCEPTION_ENABLE_OFFSET)
|
||||
#define _FE_ROUND_MODE_OFFSET 0
|
||||
#define _FE_ROUND_MODE_MASK (0x3 << _FE_ROUND_MODE_OFFSET)
|
||||
#define _FE_FLOATING_ENV_MASK (_FE_EXCEPTION_FLAG_MASK | _FE_EXCEPTION_ENABLE_MASK | _FE_ROUND_MODE_MASK)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,55 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/include/fnmatch.h,v 1.10 2002/03/23 17:24:53 imp Exp $
|
||||
* @(#)fnmatch.h 8.1 (Berkeley) 6/2/93
|
||||
*/
|
||||
|
||||
#ifndef _FNMATCH_H_
|
||||
#define _FNMATCH_H_
|
||||
|
||||
#define FNM_NOMATCH 1 /* Match failed. */
|
||||
|
||||
#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */
|
||||
#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */
|
||||
#define FNM_PERIOD 0x04 /* Period must be matched by period. */
|
||||
|
||||
#if defined(_GNU_SOURCE) || !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
|
||||
#define FNM_LEADING_DIR 0x08 /* Ignore /<tail> after Imatch. */
|
||||
#define FNM_CASEFOLD 0x10 /* Case insensitive search. */
|
||||
#define FNM_IGNORECASE FNM_CASEFOLD
|
||||
#define FNM_FILE_NAME FNM_PATHNAME
|
||||
#endif
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
int fnmatch(const char *, const char *, int);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_FNMATCH_H_ */
|
|
@ -1,190 +0,0 @@
|
|||
/****************************************************************************
|
||||
|
||||
getopt.h - Read command line options
|
||||
|
||||
AUTHOR: Gregory Pietsch
|
||||
CREATED Thu Jan 09 22:37:00 1997
|
||||
|
||||
DESCRIPTION:
|
||||
|
||||
The getopt() function parses the command line arguments. Its arguments argc
|
||||
and argv are the argument count and array as passed to the main() function
|
||||
on program invocation. The argument optstring is a list of available option
|
||||
characters. If such a character is followed by a colon (`:'), the option
|
||||
takes an argument, which is placed in optarg. If such a character is
|
||||
followed by two colons, the option takes an optional argument, which is
|
||||
placed in optarg. If the option does not take an argument, optarg is NULL.
|
||||
|
||||
The external variable optind is the index of the next array element of argv
|
||||
to be processed; it communicates from one call to the next which element to
|
||||
process.
|
||||
|
||||
The getopt_long() function works like getopt() except that it also accepts
|
||||
long options started by two dashes `--'. If these take values, it is either
|
||||
in the form
|
||||
|
||||
--arg=value
|
||||
|
||||
or
|
||||
|
||||
--arg value
|
||||
|
||||
It takes the additional arguments longopts which is a pointer to the first
|
||||
element of an array of type GETOPT_LONG_OPTION_T, defined below. The last
|
||||
element of the array has to be filled with NULL for the name field.
|
||||
|
||||
The longind pointer points to the index of the current long option relative
|
||||
to longopts if it is non-NULL.
|
||||
|
||||
The getopt() function returns the option character if the option was found
|
||||
successfully, `:' if there was a missing parameter for one of the options,
|
||||
`?' for an unknown option character, and EOF for the end of the option list.
|
||||
|
||||
The getopt_long() function's return value is described below.
|
||||
|
||||
The function getopt_long_only() is identical to getopt_long(), except that a
|
||||
plus sign `+' can introduce long options as well as `--'.
|
||||
|
||||
Describe how to deal with options that follow non-option ARGV-elements.
|
||||
|
||||
If the caller did not specify anything, the default is REQUIRE_ORDER if the
|
||||
environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise.
|
||||
|
||||
REQUIRE_ORDER means don't recognize them as options; stop option processing
|
||||
when the first non-option is seen. This is what Unix does. This mode of
|
||||
operation is selected by either setting the environment variable
|
||||
POSIXLY_CORRECT, or using `+' as the first character of the optstring
|
||||
parameter.
|
||||
|
||||
PERMUTE is the default. We permute the contents of ARGV as we scan, so that
|
||||
eventually all the non-options are at the end. This allows options to be
|
||||
given in any order, even with programs that were not written to expect this.
|
||||
|
||||
RETURN_IN_ORDER is an option available to programs that were written to
|
||||
expect options and other ARGV-elements in any order and that care about the
|
||||
ordering of the two. We describe each non-option ARGV-element as if it were
|
||||
the argument of an option with character code 1. Using `-' as the first
|
||||
character of the optstring parameter selects this mode of operation.
|
||||
|
||||
The special argument `--' forces an end of option-scanning regardless of the
|
||||
value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause
|
||||
getopt() and friends to return EOF with optind != argc.
|
||||
|
||||
COPYRIGHT NOTICE AND DISCLAIMER:
|
||||
|
||||
Copyright (C) 1997 Gregory Pietsch
|
||||
|
||||
This file and the accompanying getopt.c implementation file are hereby
|
||||
placed in the public domain without restrictions. Just give the author
|
||||
credit, don't claim you wrote it or prevent anyone else from using it.
|
||||
|
||||
Gregory Pietsch's current e-mail address:
|
||||
gpietsch@comcast.net
|
||||
****************************************************************************/
|
||||
|
||||
/* This is a glibc-extension header file. */
|
||||
|
||||
#ifndef GETOPT_H
|
||||
#define GETOPT_H
|
||||
|
||||
#include <_ansi.h>
|
||||
|
||||
/* include files needed by this include file */
|
||||
|
||||
#define no_argument 0
|
||||
#define required_argument 1
|
||||
#define optional_argument 2
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* types defined by this include file */
|
||||
struct option
|
||||
{
|
||||
const char *name; /* the name of the long option */
|
||||
int has_arg; /* one of the above macros */
|
||||
int *flag; /* determines if getopt_long() returns a
|
||||
* value for a long option; if it is
|
||||
* non-NULL, 0 is returned as a function
|
||||
* value and the value of val is stored in
|
||||
* the area pointed to by flag. Otherwise,
|
||||
* val is returned. */
|
||||
int val; /* determines the value to return if flag is
|
||||
* NULL. */
|
||||
|
||||
};
|
||||
|
||||
/* While getopt.h is a glibc extension, the following are newlib extensions.
|
||||
* They are optionally included via the __need_getopt_newlib flag. */
|
||||
|
||||
#ifdef __need_getopt_newlib
|
||||
|
||||
/* macros defined by this include file */
|
||||
#define NO_ARG no_argument
|
||||
#define REQUIRED_ARG required_argument
|
||||
#define OPTIONAL_ARG optional_argument
|
||||
|
||||
/* The GETOPT_DATA_INITIALIZER macro is used to initialize a statically-
|
||||
allocated variable of type struct getopt_data. */
|
||||
#define GETOPT_DATA_INITIALIZER {0,0,0,0,0}
|
||||
|
||||
/* These #defines are to make accessing the reentrant functions easier. */
|
||||
#define getopt_r __getopt_r
|
||||
#define getopt_long_r __getopt_long_r
|
||||
#define getopt_long_only_r __getopt_long_only_r
|
||||
|
||||
/* The getopt_data structure is for reentrancy. Its members are similar to
|
||||
the externally-defined variables. */
|
||||
typedef struct getopt_data
|
||||
{
|
||||
char *optarg;
|
||||
int optind, opterr, optopt, optwhere;
|
||||
} getopt_data;
|
||||
|
||||
#endif /* __need_getopt_newlib */
|
||||
|
||||
/* externally-defined variables */
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
extern int opterr;
|
||||
extern int optopt;
|
||||
|
||||
/* function prototypes */
|
||||
int _EXFUN (getopt,
|
||||
(int __argc, char *const __argv[], const char *__optstring));
|
||||
|
||||
int _EXFUN (getopt_long,
|
||||
(int __argc, char *const __argv[], const char *__shortopts,
|
||||
const struct option * __longopts, int *__longind));
|
||||
|
||||
int _EXFUN (getopt_long_only,
|
||||
(int __argc, char *const __argv[], const char *__shortopts,
|
||||
const struct option * __longopts, int *__longind));
|
||||
|
||||
#ifdef __need_getopt_newlib
|
||||
int _EXFUN (__getopt_r,
|
||||
(int __argc, char *const __argv[], const char *__optstring,
|
||||
struct getopt_data * __data));
|
||||
|
||||
int _EXFUN (__getopt_long_r,
|
||||
(int __argc, char *const __argv[], const char *__shortopts,
|
||||
const struct option * __longopts, int *__longind,
|
||||
struct getopt_data * __data));
|
||||
|
||||
int _EXFUN (__getopt_long_only_r,
|
||||
(int __argc, char *const __argv[], const char *__shortopts,
|
||||
const struct option * __longopts, int *__longind,
|
||||
struct getopt_data * __data));
|
||||
#endif /* __need_getopt_newlib */
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* GETOPT_H */
|
||||
|
||||
/* END OF FILE getopt.h */
|
|
@ -1,90 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Guido van Rossum.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)glob.h 8.1 (Berkeley) 6/2/93
|
||||
* $FreeBSD: src/include/glob.h,v 1.6 2002/03/23 17:24:53 imp Exp $
|
||||
*/
|
||||
|
||||
#ifndef _GLOB_H_
|
||||
#define _GLOB_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
struct stat;
|
||||
typedef struct {
|
||||
int gl_pathc; /* Count of total paths so far. */
|
||||
int gl_matchc; /* Count of paths matching pattern. */
|
||||
int gl_offs; /* Reserved at beginning of gl_pathv. */
|
||||
int gl_flags; /* Copy of flags parameter to glob. */
|
||||
char **gl_pathv; /* List of paths matching pattern. */
|
||||
/* Copy of errfunc parameter to glob. */
|
||||
int (*gl_errfunc)(const char *, int);
|
||||
|
||||
/*
|
||||
* Alternate filesystem access methods for glob; replacement
|
||||
* versions of closedir(3), readdir(3), opendir(3), stat(2)
|
||||
* and lstat(2).
|
||||
*/
|
||||
void (*gl_closedir)(void *);
|
||||
struct dirent *(*gl_readdir)(void *);
|
||||
void *(*gl_opendir)(const char *);
|
||||
int (*gl_lstat)(const char *, struct stat *);
|
||||
int (*gl_stat)(const char *, struct stat *);
|
||||
} glob_t;
|
||||
|
||||
#define GLOB_APPEND 0x0001 /* Append to output from previous call. */
|
||||
#define GLOB_DOOFFS 0x0002 /* Use gl_offs. */
|
||||
#define GLOB_ERR 0x0004 /* Return on error. */
|
||||
#define GLOB_MARK 0x0008 /* Append / to matching directories. */
|
||||
#define GLOB_NOCHECK 0x0010 /* Return pattern itself if nothing matches. */
|
||||
#define GLOB_NOSORT 0x0020 /* Don't sort. */
|
||||
|
||||
#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */
|
||||
#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
|
||||
#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
|
||||
#define GLOB_NOMAGIC 0x0200 /* GLOB_NOCHECK without magic chars (csh). */
|
||||
#define GLOB_QUOTE 0x0400 /* Quote special chars with \. */
|
||||
#define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */
|
||||
#define GLOB_LIMIT 0x1000 /* limit number of returned paths */
|
||||
|
||||
/* backwards compatibility, this is the old name for this option */
|
||||
#define GLOB_MAXPATH GLOB_LIMIT
|
||||
|
||||
#define GLOB_NOSPACE (-1) /* Malloc call failed. */
|
||||
#define GLOB_ABEND (-2) /* Unignored error. */
|
||||
|
||||
__BEGIN_DECLS
|
||||
int glob(const char *__restrict, int, int (*)(const char *, int),
|
||||
glob_t *__restrict);
|
||||
void globfree(glob_t *);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_GLOB_H_ */
|
|
@ -1,95 +0,0 @@
|
|||
/* $NetBSD: grp.h,v 1.7 1995/04/29 05:30:40 cgd Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)grp.h 8.2 (Berkeley) 1/21/94
|
||||
*/
|
||||
|
||||
#ifndef _GRP_H_
|
||||
#define _GRP_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
#ifdef __CYGWIN__
|
||||
#include <cygwin/grp.h>
|
||||
#endif
|
||||
|
||||
#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)
|
||||
#define _PATH_GROUP "/etc/group"
|
||||
#endif
|
||||
|
||||
struct group {
|
||||
char *gr_name; /* group name */
|
||||
char *gr_passwd; /* group password */
|
||||
gid_t gr_gid; /* group id */
|
||||
char **gr_mem; /* group members */
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef __INSIDE_CYGWIN__
|
||||
struct group *getgrgid (gid_t);
|
||||
struct group *getgrnam (const char *);
|
||||
int getgrnam_r (const char *, struct group *,
|
||||
char *, size_t, struct group **);
|
||||
int getgrgid_r (gid_t, struct group *,
|
||||
char *, size_t, struct group **);
|
||||
#ifndef _POSIX_SOURCE
|
||||
struct group *getgrent (void);
|
||||
void setgrent (void);
|
||||
void endgrent (void);
|
||||
#ifndef __CYGWIN__
|
||||
void setgrfile (const char *);
|
||||
#endif /* !__CYGWIN__ */
|
||||
#ifndef _XOPEN_SOURCE
|
||||
#ifndef __CYGWIN__
|
||||
char *group_from_gid (gid_t, int);
|
||||
int setgroupent (int);
|
||||
#endif /* !__CYGWIN__ */
|
||||
int initgroups (const char *, gid_t);
|
||||
#endif /* !_XOPEN_SOURCE */
|
||||
#endif /* !_POSIX_SOURCE */
|
||||
#endif /* !__INSIDE_CYGWIN__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_GRP_H_ */
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2004, Artem B. Bityuckiy, SoftMine Corporation.
|
||||
* Rights transferred to Franklin Electronic Publishers.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef _ICONV_H_
|
||||
#define _ICONV_H_
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <reent.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/_types.h>
|
||||
|
||||
/* iconv_t: charset conversion descriptor type */
|
||||
typedef _iconv_t iconv_t;
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
iconv_t
|
||||
_EXFUN(iconv_open, (_CONST char *, _CONST char *));
|
||||
|
||||
size_t
|
||||
_EXFUN(iconv, (iconv_t, char **__restrict, size_t *__restrict,
|
||||
char **__restrict, size_t *__restrict));
|
||||
|
||||
int
|
||||
_EXFUN(iconv_close, (iconv_t));
|
||||
#endif
|
||||
|
||||
iconv_t
|
||||
_EXFUN(_iconv_open_r, (struct _reent *, _CONST char *, _CONST char *));
|
||||
|
||||
size_t
|
||||
_EXFUN(_iconv_r, (struct _reent *, iconv_t, _CONST char **,
|
||||
size_t *, char **, size_t *));
|
||||
|
||||
int
|
||||
_EXFUN(_iconv_close_r, (struct _reent *, iconv_t));
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* #ifndef _ICONV_H_ */
|
|
@ -1,256 +0,0 @@
|
|||
#ifndef _IEEE_FP_H_
|
||||
#define _IEEE_FP_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
|
||||
#include <machine/ieeefp.h>
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
/* FIXME FIXME FIXME:
|
||||
Neither of __ieee_{float,double}_shape_tape seem to be used anywhere
|
||||
except in libm/test. If that is the case, please delete these from here.
|
||||
If that is not the case, please insert documentation here describing why
|
||||
they're needed. */
|
||||
|
||||
#ifdef __IEEE_BIG_ENDIAN
|
||||
|
||||
typedef union
|
||||
{
|
||||
double value;
|
||||
struct
|
||||
{
|
||||
unsigned int sign : 1;
|
||||
unsigned int exponent: 11;
|
||||
unsigned int fraction0:4;
|
||||
unsigned int fraction1:16;
|
||||
unsigned int fraction2:16;
|
||||
unsigned int fraction3:16;
|
||||
|
||||
} number;
|
||||
struct
|
||||
{
|
||||
unsigned int sign : 1;
|
||||
unsigned int exponent: 11;
|
||||
unsigned int quiet:1;
|
||||
unsigned int function0:3;
|
||||
unsigned int function1:16;
|
||||
unsigned int function2:16;
|
||||
unsigned int function3:16;
|
||||
} nan;
|
||||
struct
|
||||
{
|
||||
unsigned long msw;
|
||||
unsigned long lsw;
|
||||
} parts;
|
||||
long aslong[2];
|
||||
} __ieee_double_shape_type;
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __IEEE_LITTLE_ENDIAN
|
||||
|
||||
typedef union
|
||||
{
|
||||
double value;
|
||||
struct
|
||||
{
|
||||
#ifdef __SMALL_BITFIELDS
|
||||
unsigned int fraction3:16;
|
||||
unsigned int fraction2:16;
|
||||
unsigned int fraction1:16;
|
||||
unsigned int fraction0: 4;
|
||||
#else
|
||||
unsigned int fraction1:32;
|
||||
unsigned int fraction0:20;
|
||||
#endif
|
||||
unsigned int exponent :11;
|
||||
unsigned int sign : 1;
|
||||
} number;
|
||||
struct
|
||||
{
|
||||
#ifdef __SMALL_BITFIELDS
|
||||
unsigned int function3:16;
|
||||
unsigned int function2:16;
|
||||
unsigned int function1:16;
|
||||
unsigned int function0:3;
|
||||
#else
|
||||
unsigned int function1:32;
|
||||
unsigned int function0:19;
|
||||
#endif
|
||||
unsigned int quiet:1;
|
||||
unsigned int exponent: 11;
|
||||
unsigned int sign : 1;
|
||||
} nan;
|
||||
struct
|
||||
{
|
||||
unsigned long lsw;
|
||||
unsigned long msw;
|
||||
} parts;
|
||||
|
||||
long aslong[2];
|
||||
|
||||
} __ieee_double_shape_type;
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __IEEE_BIG_ENDIAN
|
||||
|
||||
typedef union
|
||||
{
|
||||
float value;
|
||||
struct
|
||||
{
|
||||
unsigned int sign : 1;
|
||||
unsigned int exponent: 8;
|
||||
unsigned int fraction0: 7;
|
||||
unsigned int fraction1: 16;
|
||||
} number;
|
||||
struct
|
||||
{
|
||||
unsigned int sign:1;
|
||||
unsigned int exponent:8;
|
||||
unsigned int quiet:1;
|
||||
unsigned int function0:6;
|
||||
unsigned int function1:16;
|
||||
} nan;
|
||||
long p1;
|
||||
|
||||
} __ieee_float_shape_type;
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __IEEE_LITTLE_ENDIAN
|
||||
|
||||
typedef union
|
||||
{
|
||||
float value;
|
||||
struct
|
||||
{
|
||||
unsigned int fraction0: 7;
|
||||
unsigned int fraction1: 16;
|
||||
unsigned int exponent: 8;
|
||||
unsigned int sign : 1;
|
||||
} number;
|
||||
struct
|
||||
{
|
||||
unsigned int function1:16;
|
||||
unsigned int function0:6;
|
||||
unsigned int quiet:1;
|
||||
unsigned int exponent:8;
|
||||
unsigned int sign:1;
|
||||
} nan;
|
||||
long p1;
|
||||
|
||||
} __ieee_float_shape_type;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* FLOATING ROUNDING */
|
||||
|
||||
typedef int fp_rnd;
|
||||
#define FP_RN 0 /* Round to nearest */
|
||||
#define FP_RM 1 /* Round down */
|
||||
#define FP_RP 2 /* Round up */
|
||||
#define FP_RZ 3 /* Round to zero (trunate) */
|
||||
|
||||
fp_rnd _EXFUN(fpgetround,(void));
|
||||
fp_rnd _EXFUN(fpsetround, (fp_rnd));
|
||||
|
||||
/* EXCEPTIONS */
|
||||
|
||||
typedef int fp_except;
|
||||
#define FP_X_INV 0x10 /* Invalid operation */
|
||||
#define FP_X_DX 0x80 /* Divide by zero */
|
||||
#define FP_X_OFL 0x04 /* Overflow exception */
|
||||
#define FP_X_UFL 0x02 /* Underflow exception */
|
||||
#define FP_X_IMP 0x01 /* imprecise exception */
|
||||
|
||||
fp_except _EXFUN(fpgetmask,(void));
|
||||
fp_except _EXFUN(fpsetmask,(fp_except));
|
||||
fp_except _EXFUN(fpgetsticky,(void));
|
||||
fp_except _EXFUN(fpsetsticky, (fp_except));
|
||||
|
||||
/* INTEGER ROUNDING */
|
||||
|
||||
typedef int fp_rdi;
|
||||
#define FP_RDI_TOZ 0 /* Round to Zero */
|
||||
#define FP_RDI_RD 1 /* Follow float mode */
|
||||
|
||||
fp_rdi _EXFUN(fpgetroundtoi,(void));
|
||||
fp_rdi _EXFUN(fpsetroundtoi,(fp_rdi));
|
||||
|
||||
#undef isnan
|
||||
#undef isinf
|
||||
|
||||
int _EXFUN(isnan, (double));
|
||||
int _EXFUN(isinf, (double));
|
||||
int _EXFUN(finite, (double));
|
||||
|
||||
|
||||
|
||||
int _EXFUN(isnanf, (float));
|
||||
int _EXFUN(isinff, (float));
|
||||
int _EXFUN(finitef, (float));
|
||||
|
||||
#define __IEEE_DBL_EXPBIAS 1023
|
||||
#define __IEEE_FLT_EXPBIAS 127
|
||||
|
||||
#define __IEEE_DBL_EXPLEN 11
|
||||
#define __IEEE_FLT_EXPLEN 8
|
||||
|
||||
|
||||
#define __IEEE_DBL_FRACLEN (64 - (__IEEE_DBL_EXPLEN + 1))
|
||||
#define __IEEE_FLT_FRACLEN (32 - (__IEEE_FLT_EXPLEN + 1))
|
||||
|
||||
#define __IEEE_DBL_MAXPOWTWO ((double)(1L << 32 - 2) * (1L << (32-11) - 32 + 1))
|
||||
#define __IEEE_FLT_MAXPOWTWO ((float)(1L << (32-8) - 1))
|
||||
|
||||
#define __IEEE_DBL_NAN_EXP 0x7ff
|
||||
#define __IEEE_FLT_NAN_EXP 0xff
|
||||
|
||||
#ifndef __ieeefp_isnanf
|
||||
#define __ieeefp_isnanf(x) (((*(long *)&(x) & 0x7f800000L)==0x7f800000L) && \
|
||||
((*(long *)&(x) & 0x007fffffL)!=0000000000L))
|
||||
#endif
|
||||
#define isnanf(x) __ieeefp_isnanf(x)
|
||||
|
||||
#ifndef __ieeefp_isinff
|
||||
#define __ieeefp_isinff(x) (((*(long *)&(x) & 0x7f800000L)==0x7f800000L) && \
|
||||
((*(long *)&(x) & 0x007fffffL)==0000000000L))
|
||||
#endif
|
||||
#define isinff(x) __ieeefp_isinff(x)
|
||||
|
||||
#ifndef __ieeefp_finitef
|
||||
#define __ieeefp_finitef(x) (((*(long *)&(x) & 0x7f800000L)!=0x7f800000L))
|
||||
#endif
|
||||
#define finitef(x) __ieeefp_finitef(x)
|
||||
|
||||
#ifdef _DOUBLE_IS_32BITS
|
||||
#undef __IEEE_DBL_EXPBIAS
|
||||
#define __IEEE_DBL_EXPBIAS __IEEE_FLT_EXPBIAS
|
||||
|
||||
#undef __IEEE_DBL_EXPLEN
|
||||
#define __IEEE_DBL_EXPLEN __IEEE_FLT_EXPLEN
|
||||
|
||||
#undef __IEEE_DBL_FRACLEN
|
||||
#define __IEEE_DBL_FRACLEN __IEEE_FLT_FRACLEN
|
||||
|
||||
#undef __IEEE_DBL_MAXPOWTWO
|
||||
#define __IEEE_DBL_MAXPOWTWO __IEEE_FLT_MAXPOWTWO
|
||||
|
||||
#undef __IEEE_DBL_NAN_EXP
|
||||
#define __IEEE_DBL_NAN_EXP __IEEE_FLT_NAN_EXP
|
||||
|
||||
#undef __ieee_double_shape_type
|
||||
#define __ieee_double_shape_type __ieee_float_shape_type
|
||||
|
||||
#endif /* _DOUBLE_IS_32BITS */
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _IEEE_FP_H_ */
|
|
@ -1,319 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 2005 by
|
||||
* Ralf Corsepius, Ulm/Germany. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* is freely granted, provided that this notice is preserved.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file inttypes.h
|
||||
*/
|
||||
|
||||
#ifndef _INTTYPES_H
|
||||
#define _INTTYPES_H
|
||||
|
||||
#include <newlib.h>
|
||||
#include <sys/_intsup.h>
|
||||
#include <stdint.h>
|
||||
#define __need_wchar_t
|
||||
#include <stddef.h>
|
||||
|
||||
#define __STRINGIFY(a) #a
|
||||
|
||||
/* 8-bit types */
|
||||
#define __PRI8(x) __STRINGIFY(x)
|
||||
|
||||
/* NOTICE: scanning 8-bit types requires use of the hh specifier
|
||||
* which is only supported on newlib platforms that
|
||||
* are built with C99 I/O format support enabled. If the flag in
|
||||
* newlib.h hasn't been set during configuration to indicate this, the 8-bit
|
||||
* scanning format macros are disabled here as they result in undefined
|
||||
* behaviour which can include memory overwrite. Overriding the flag after the
|
||||
* library has been built is not recommended as it will expose the underlying
|
||||
* undefined behaviour.
|
||||
*/
|
||||
|
||||
#if defined(_WANT_IO_C99_FORMATS)
|
||||
#define __SCN8(x) __STRINGIFY(hh##x)
|
||||
#endif /* _WANT_IO_C99_FORMATS */
|
||||
|
||||
|
||||
#define PRId8 __PRI8(d)
|
||||
#define PRIi8 __PRI8(i)
|
||||
#define PRIo8 __PRI8(o)
|
||||
#define PRIu8 __PRI8(u)
|
||||
#define PRIx8 __PRI8(x)
|
||||
#define PRIX8 __PRI8(X)
|
||||
|
||||
/* Macros below are only enabled for a newlib built with C99 I/O format support. */
|
||||
#if defined(_WANT_IO_C99_FORMATS)
|
||||
|
||||
#define SCNd8 __SCN8(d)
|
||||
#define SCNi8 __SCN8(i)
|
||||
#define SCNo8 __SCN8(o)
|
||||
#define SCNu8 __SCN8(u)
|
||||
#define SCNx8 __SCN8(x)
|
||||
|
||||
#endif /* _WANT_IO_C99_FORMATS */
|
||||
|
||||
|
||||
#define PRIdLEAST8 __PRI8(d)
|
||||
#define PRIiLEAST8 __PRI8(i)
|
||||
#define PRIoLEAST8 __PRI8(o)
|
||||
#define PRIuLEAST8 __PRI8(u)
|
||||
#define PRIxLEAST8 __PRI8(x)
|
||||
#define PRIXLEAST8 __PRI8(X)
|
||||
|
||||
/* Macros below are only enabled for a newlib built with C99 I/O format support. */
|
||||
#if defined(_WANT_IO_C99_FORMATS)
|
||||
|
||||
#define SCNdLEAST8 __SCN8(d)
|
||||
#define SCNiLEAST8 __SCN8(i)
|
||||
#define SCNoLEAST8 __SCN8(o)
|
||||
#define SCNuLEAST8 __SCN8(u)
|
||||
#define SCNxLEAST8 __SCN8(x)
|
||||
|
||||
#endif /* _WANT_IO_C99_FORMATS */
|
||||
|
||||
#define PRIdFAST8 __PRI8(d)
|
||||
#define PRIiFAST8 __PRI8(i)
|
||||
#define PRIoFAST8 __PRI8(o)
|
||||
#define PRIuFAST8 __PRI8(u)
|
||||
#define PRIxFAST8 __PRI8(x)
|
||||
#define PRIXFAST8 __PRI8(X)
|
||||
|
||||
/* Macros below are only enabled for a newlib built with C99 I/O format support. */
|
||||
#if defined(_WANT_IO_C99_FORMATS)
|
||||
|
||||
#define SCNdFAST8 __SCN8(d)
|
||||
#define SCNiFAST8 __SCN8(i)
|
||||
#define SCNoFAST8 __SCN8(o)
|
||||
#define SCNuFAST8 __SCN8(u)
|
||||
#define SCNxFAST8 __SCN8(x)
|
||||
|
||||
#endif /* _WANT_IO_C99_FORMATS */
|
||||
|
||||
/* 16-bit types */
|
||||
#define __PRI16(x) __STRINGIFY(x)
|
||||
#define __SCN16(x) __STRINGIFY(h##x)
|
||||
|
||||
|
||||
#define PRId16 __PRI16(d)
|
||||
#define PRIi16 __PRI16(i)
|
||||
#define PRIo16 __PRI16(o)
|
||||
#define PRIu16 __PRI16(u)
|
||||
#define PRIx16 __PRI16(x)
|
||||
#define PRIX16 __PRI16(X)
|
||||
|
||||
#define SCNd16 __SCN16(d)
|
||||
#define SCNi16 __SCN16(i)
|
||||
#define SCNo16 __SCN16(o)
|
||||
#define SCNu16 __SCN16(u)
|
||||
#define SCNx16 __SCN16(x)
|
||||
|
||||
|
||||
#define PRIdLEAST16 __PRI16(d)
|
||||
#define PRIiLEAST16 __PRI16(i)
|
||||
#define PRIoLEAST16 __PRI16(o)
|
||||
#define PRIuLEAST16 __PRI16(u)
|
||||
#define PRIxLEAST16 __PRI16(x)
|
||||
#define PRIXLEAST16 __PRI16(X)
|
||||
|
||||
#define SCNdLEAST16 __SCN16(d)
|
||||
#define SCNiLEAST16 __SCN16(i)
|
||||
#define SCNoLEAST16 __SCN16(o)
|
||||
#define SCNuLEAST16 __SCN16(u)
|
||||
#define SCNxLEAST16 __SCN16(x)
|
||||
|
||||
|
||||
#define PRIdFAST16 __PRI16(d)
|
||||
#define PRIiFAST16 __PRI16(i)
|
||||
#define PRIoFAST16 __PRI16(o)
|
||||
#define PRIuFAST16 __PRI16(u)
|
||||
#define PRIxFAST16 __PRI16(x)
|
||||
#define PRIXFAST16 __PRI16(X)
|
||||
|
||||
#define SCNdFAST16 __SCN16(d)
|
||||
#define SCNiFAST16 __SCN16(i)
|
||||
#define SCNoFAST16 __SCN16(o)
|
||||
#define SCNuFAST16 __SCN16(u)
|
||||
#define SCNxFAST16 __SCN16(x)
|
||||
|
||||
/* 32-bit types */
|
||||
#if __have_long32
|
||||
#define __PRI32(x) __STRINGIFY(l##x)
|
||||
#define __SCN32(x) __STRINGIFY(l##x)
|
||||
#else
|
||||
#define __PRI32(x) __STRINGIFY(x)
|
||||
#define __SCN32(x) __STRINGIFY(x)
|
||||
#endif
|
||||
|
||||
#define PRId32 __PRI32(d)
|
||||
#define PRIi32 __PRI32(i)
|
||||
#define PRIo32 __PRI32(o)
|
||||
#define PRIu32 __PRI32(u)
|
||||
#define PRIx32 __PRI32(x)
|
||||
#define PRIX32 __PRI32(X)
|
||||
|
||||
#define SCNd32 __SCN32(d)
|
||||
#define SCNi32 __SCN32(i)
|
||||
#define SCNo32 __SCN32(o)
|
||||
#define SCNu32 __SCN32(u)
|
||||
#define SCNx32 __SCN32(x)
|
||||
|
||||
|
||||
#define PRIdLEAST32 __PRI32(d)
|
||||
#define PRIiLEAST32 __PRI32(i)
|
||||
#define PRIoLEAST32 __PRI32(o)
|
||||
#define PRIuLEAST32 __PRI32(u)
|
||||
#define PRIxLEAST32 __PRI32(x)
|
||||
#define PRIXLEAST32 __PRI32(X)
|
||||
|
||||
#define SCNdLEAST32 __SCN32(d)
|
||||
#define SCNiLEAST32 __SCN32(i)
|
||||
#define SCNoLEAST32 __SCN32(o)
|
||||
#define SCNuLEAST32 __SCN32(u)
|
||||
#define SCNxLEAST32 __SCN32(x)
|
||||
|
||||
|
||||
#define PRIdFAST32 __PRI32(d)
|
||||
#define PRIiFAST32 __PRI32(i)
|
||||
#define PRIoFAST32 __PRI32(o)
|
||||
#define PRIuFAST32 __PRI32(u)
|
||||
#define PRIxFAST32 __PRI32(x)
|
||||
#define PRIXFAST32 __PRI32(X)
|
||||
|
||||
#define SCNdFAST32 __SCN32(d)
|
||||
#define SCNiFAST32 __SCN32(i)
|
||||
#define SCNoFAST32 __SCN32(o)
|
||||
#define SCNuFAST32 __SCN32(u)
|
||||
#define SCNxFAST32 __SCN32(x)
|
||||
|
||||
|
||||
/* 64-bit types */
|
||||
#if __have_long64
|
||||
#define __PRI64(x) __STRINGIFY(l##x)
|
||||
#define __SCN64(x) __STRINGIFY(l##x)
|
||||
#elif __have_longlong64
|
||||
#define __PRI64(x) __STRINGIFY(ll##x)
|
||||
#define __SCN64(x) __STRINGIFY(ll##x)
|
||||
#else
|
||||
#define __PRI64(x) __STRINGIFY(x)
|
||||
#define __SCN64(x) __STRINGIFY(x)
|
||||
#endif
|
||||
|
||||
#define PRId64 __PRI64(d)
|
||||
#define PRIi64 __PRI64(i)
|
||||
#define PRIo64 __PRI64(o)
|
||||
#define PRIu64 __PRI64(u)
|
||||
#define PRIx64 __PRI64(x)
|
||||
#define PRIX64 __PRI64(X)
|
||||
|
||||
#define SCNd64 __SCN64(d)
|
||||
#define SCNi64 __SCN64(i)
|
||||
#define SCNo64 __SCN64(o)
|
||||
#define SCNu64 __SCN64(u)
|
||||
#define SCNx64 __SCN64(x)
|
||||
|
||||
#if __int64_t_defined
|
||||
#define PRIdLEAST64 __PRI64(d)
|
||||
#define PRIiLEAST64 __PRI64(i)
|
||||
#define PRIoLEAST64 __PRI64(o)
|
||||
#define PRIuLEAST64 __PRI64(u)
|
||||
#define PRIxLEAST64 __PRI64(x)
|
||||
#define PRIXLEAST64 __PRI64(X)
|
||||
|
||||
#define SCNdLEAST64 __SCN64(d)
|
||||
#define SCNiLEAST64 __SCN64(i)
|
||||
#define SCNoLEAST64 __SCN64(o)
|
||||
#define SCNuLEAST64 __SCN64(u)
|
||||
#define SCNxLEAST64 __SCN64(x)
|
||||
|
||||
|
||||
#define PRIdFAST64 __PRI64(d)
|
||||
#define PRIiFAST64 __PRI64(i)
|
||||
#define PRIoFAST64 __PRI64(o)
|
||||
#define PRIuFAST64 __PRI64(u)
|
||||
#define PRIxFAST64 __PRI64(x)
|
||||
#define PRIXFAST64 __PRI64(X)
|
||||
|
||||
#define SCNdFAST64 __SCN64(d)
|
||||
#define SCNiFAST64 __SCN64(i)
|
||||
#define SCNoFAST64 __SCN64(o)
|
||||
#define SCNuFAST64 __SCN64(u)
|
||||
#define SCNxFAST64 __SCN64(x)
|
||||
#endif
|
||||
|
||||
/* max-bit types */
|
||||
#if __have_long64
|
||||
#define __PRIMAX(x) __STRINGIFY(l##x)
|
||||
#define __SCNMAX(x) __STRINGIFY(l##x)
|
||||
#elif __have_longlong64
|
||||
#define __PRIMAX(x) __STRINGIFY(ll##x)
|
||||
#define __SCNMAX(x) __STRINGIFY(ll##x)
|
||||
#else
|
||||
#define __PRIMAX(x) __STRINGIFY(x)
|
||||
#define __SCNMAX(x) __STRINGIFY(x)
|
||||
#endif
|
||||
|
||||
#define PRIdMAX __PRIMAX(d)
|
||||
#define PRIiMAX __PRIMAX(i)
|
||||
#define PRIoMAX __PRIMAX(o)
|
||||
#define PRIuMAX __PRIMAX(u)
|
||||
#define PRIxMAX __PRIMAX(x)
|
||||
#define PRIXMAX __PRIMAX(X)
|
||||
|
||||
#define SCNdMAX __SCNMAX(d)
|
||||
#define SCNiMAX __SCNMAX(i)
|
||||
#define SCNoMAX __SCNMAX(o)
|
||||
#define SCNuMAX __SCNMAX(u)
|
||||
#define SCNxMAX __SCNMAX(x)
|
||||
|
||||
/* ptr types */
|
||||
#if defined(_UINTPTR_EQ_ULONGLONG)
|
||||
# define __PRIPTR(x) __STRINGIFY(ll##x)
|
||||
# define __SCNPTR(x) __STRINGIFY(ll##x)
|
||||
#elif defined(_UINTPTR_EQ_ULONG)
|
||||
# define __PRIPTR(x) __STRINGIFY(l##x)
|
||||
# define __SCNPTR(x) __STRINGIFY(l##x)
|
||||
#else
|
||||
# define __PRIPTR(x) __STRINGIFY(x)
|
||||
# define __SCNPTR(x) __STRINGIFY(x)
|
||||
#endif
|
||||
|
||||
#define PRIdPTR __PRIPTR(d)
|
||||
#define PRIiPTR __PRIPTR(i)
|
||||
#define PRIoPTR __PRIPTR(o)
|
||||
#define PRIuPTR __PRIPTR(u)
|
||||
#define PRIxPTR __PRIPTR(x)
|
||||
#define PRIXPTR __PRIPTR(X)
|
||||
|
||||
#define SCNdPTR __SCNPTR(d)
|
||||
#define SCNiPTR __SCNPTR(i)
|
||||
#define SCNoPTR __SCNPTR(o)
|
||||
#define SCNuPTR __SCNPTR(u)
|
||||
#define SCNxPTR __SCNPTR(x)
|
||||
|
||||
|
||||
typedef struct {
|
||||
intmax_t quot;
|
||||
intmax_t rem;
|
||||
} imaxdiv_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern intmax_t imaxabs(intmax_t j);
|
||||
extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer);
|
||||
extern intmax_t strtoimax(const char *__restrict, char **__restrict, int);
|
||||
extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
|
||||
extern intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
|
||||
extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,316 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/include/langinfo.h,v 1.5 2002/03/23 17:24:53 imp Exp $
|
||||
*/
|
||||
|
||||
#ifndef _LANGINFO_H_
|
||||
#define _LANGINFO_H_
|
||||
|
||||
#include <newlib.h>
|
||||
#include <sys/config.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
typedef int nl_item;
|
||||
|
||||
enum __nl_item
|
||||
{
|
||||
/* POSIX and BSD defined items have to stick to the original values
|
||||
to maintain backward compatibility. */
|
||||
_NL_CTYPE_CODESET_NAME = 0, /* codeset name */
|
||||
#define CODESET _NL_CTYPE_CODESET_NAME
|
||||
D_T_FMT, /* string for formatting date and time */
|
||||
#define D_T_FMT D_T_FMT
|
||||
D_FMT, /* date format string */
|
||||
#define D_FMT D_FMT
|
||||
T_FMT, /* time format string */
|
||||
#define T_FMT T_FMT
|
||||
T_FMT_AMPM, /* a.m. or p.m. time formatting string */
|
||||
#define T_FMT_AMPM T_FMT_AMPM
|
||||
AM_STR, /* Ante Meridian affix */
|
||||
#define AM_STR AM_STR
|
||||
PM_STR, /* Post Meridian affix */
|
||||
#define PM_STR PM_STR
|
||||
|
||||
/* week day names */
|
||||
DAY_1,
|
||||
#define DAY_1 DAY_1
|
||||
DAY_2,
|
||||
#define DAY_2 DAY_2
|
||||
DAY_3,
|
||||
#define DAY_3 DAY_3
|
||||
DAY_4,
|
||||
#define DAY_4 DAY_4
|
||||
DAY_5,
|
||||
#define DAY_5 DAY_5
|
||||
DAY_6,
|
||||
#define DAY_6 DAY_6
|
||||
DAY_7,
|
||||
#define DAY_7 DAY_7
|
||||
|
||||
/* abbreviated week day names */
|
||||
ABDAY_1,
|
||||
#define ABDAY_1 ABDAY_1
|
||||
ABDAY_2,
|
||||
#define ABDAY_2 ABDAY_2
|
||||
ABDAY_3,
|
||||
#define ABDAY_3 ABDAY_3
|
||||
ABDAY_4,
|
||||
#define ABDAY_4 ABDAY_4
|
||||
ABDAY_5,
|
||||
#define ABDAY_5 ABDAY_5
|
||||
ABDAY_6,
|
||||
#define ABDAY_6 ABDAY_6
|
||||
ABDAY_7,
|
||||
#define ABDAY_7 ABDAY_7
|
||||
|
||||
/* month names */
|
||||
MON_1,
|
||||
#define MON_1 MON_1
|
||||
MON_2,
|
||||
#define MON_2 MON_2
|
||||
MON_3,
|
||||
#define MON_3 MON_3
|
||||
MON_4,
|
||||
#define MON_4 MON_4
|
||||
MON_5,
|
||||
#define MON_5 MON_5
|
||||
MON_6,
|
||||
#define MON_6 MON_6
|
||||
MON_7,
|
||||
#define MON_7 MON_7
|
||||
MON_8,
|
||||
#define MON_8 MON_8
|
||||
MON_9,
|
||||
#define MON_9 MON_9
|
||||
MON_10,
|
||||
#define MON_10 MON_10
|
||||
MON_11,
|
||||
#define MON_11 MON_11
|
||||
MON_12,
|
||||
#define MON_12 MON_12
|
||||
|
||||
/* abbreviated month names */
|
||||
ABMON_1,
|
||||
#define ABMON_1 ABMON_1
|
||||
ABMON_2,
|
||||
#define ABMON_2 ABMON_2
|
||||
ABMON_3,
|
||||
#define ABMON_3 ABMON_3
|
||||
ABMON_4,
|
||||
#define ABMON_4 ABMON_4
|
||||
ABMON_5,
|
||||
#define ABMON_5 ABMON_5
|
||||
ABMON_6,
|
||||
#define ABMON_6 ABMON_6
|
||||
ABMON_7,
|
||||
#define ABMON_7 ABMON_7
|
||||
ABMON_8,
|
||||
#define ABMON_8 ABMON_8
|
||||
ABMON_9,
|
||||
#define ABMON_9 ABMON_9
|
||||
ABMON_10,
|
||||
#define ABMON_10 ABMON_10
|
||||
ABMON_11,
|
||||
#define ABMON_11 ABMON_11
|
||||
ABMON_12,
|
||||
#define ABMON_12 ABMON_12
|
||||
|
||||
ERA, /* era description segments */
|
||||
#define ERA ERA
|
||||
ERA_D_FMT, /* era date format string */
|
||||
#define ERA_D_FMT ERA_D_FMT
|
||||
ERA_D_T_FMT, /* era date and time format string */
|
||||
#define ERA_D_T_FMT ERA_D_T_FMT
|
||||
ERA_T_FMT, /* era time format string */
|
||||
#define ERA_T_FMT ERA_T_FMT
|
||||
ALT_DIGITS, /* alternative symbols for digits */
|
||||
#define ALT_DIGITS ALT_DIGITS
|
||||
|
||||
RADIXCHAR, /* radix char */
|
||||
#define RADIXCHAR RADIXCHAR
|
||||
THOUSEP, /* separator for thousands */
|
||||
#define THOUSEP THOUSEP
|
||||
|
||||
YESEXPR, /* affirmative response expression */
|
||||
#define YESEXPR YESEXPR
|
||||
NOEXPR, /* negative response expression */
|
||||
#define NOEXPR NOEXPR
|
||||
YESSTR, /* affirmative response for yes/no queries */
|
||||
#define YESSTR YESSTR
|
||||
NOSTR, /* negative response for yes/no queries */
|
||||
#define NOSTR NOSTR
|
||||
|
||||
CRNCYSTR, /* currency symbol */
|
||||
#define CRNCYSTR CRNCYSTR
|
||||
|
||||
D_MD_ORDER, /* month/day order (BSD extension) */
|
||||
#define D_MD_ORDER D_MD_ORDER
|
||||
|
||||
_NL_TIME_DATE_FMT = 84, /* date fmt used by date(1) (GNU extension) */
|
||||
#define _DATE_FMT _NL_TIME_DATE_FMT
|
||||
|
||||
#ifdef __HAVE_LOCALE_INFO__
|
||||
_NL_CTYPE_MB_CUR_MAX,
|
||||
_NL_MESSAGES_CODESET,
|
||||
|
||||
#ifdef __HAVE_LOCALE_INFO_EXTENDED__
|
||||
|
||||
/* NOTE:
|
||||
|
||||
Always maintain the order and position of existing entries!
|
||||
Always append new entry to the list, prior to the definition
|
||||
of _NL_LOCALE_EXTENDED_LAST_ENTRY. */
|
||||
|
||||
_NL_LOCALE_EXTENDED_FIRST_ENTRY,
|
||||
|
||||
_NL_CTYPE_OUTDIGITS0_MB,
|
||||
_NL_CTYPE_OUTDIGITS1_MB,
|
||||
_NL_CTYPE_OUTDIGITS2_MB,
|
||||
_NL_CTYPE_OUTDIGITS3_MB,
|
||||
_NL_CTYPE_OUTDIGITS4_MB,
|
||||
_NL_CTYPE_OUTDIGITS5_MB,
|
||||
_NL_CTYPE_OUTDIGITS6_MB,
|
||||
_NL_CTYPE_OUTDIGITS7_MB,
|
||||
_NL_CTYPE_OUTDIGITS8_MB,
|
||||
_NL_CTYPE_OUTDIGITS9_MB,
|
||||
_NL_CTYPE_OUTDIGITS0_WC,
|
||||
_NL_CTYPE_OUTDIGITS1_WC,
|
||||
_NL_CTYPE_OUTDIGITS2_WC,
|
||||
_NL_CTYPE_OUTDIGITS3_WC,
|
||||
_NL_CTYPE_OUTDIGITS4_WC,
|
||||
_NL_CTYPE_OUTDIGITS5_WC,
|
||||
_NL_CTYPE_OUTDIGITS6_WC,
|
||||
_NL_CTYPE_OUTDIGITS7_WC,
|
||||
_NL_CTYPE_OUTDIGITS8_WC,
|
||||
_NL_CTYPE_OUTDIGITS9_WC,
|
||||
|
||||
_NL_TIME_CODESET,
|
||||
_NL_TIME_WMON_1,
|
||||
_NL_TIME_WMON_2,
|
||||
_NL_TIME_WMON_3,
|
||||
_NL_TIME_WMON_4,
|
||||
_NL_TIME_WMON_5,
|
||||
_NL_TIME_WMON_6,
|
||||
_NL_TIME_WMON_7,
|
||||
_NL_TIME_WMON_8,
|
||||
_NL_TIME_WMON_9,
|
||||
_NL_TIME_WMON_10,
|
||||
_NL_TIME_WMON_11,
|
||||
_NL_TIME_WMON_12,
|
||||
_NL_TIME_WMONTH_1,
|
||||
_NL_TIME_WMONTH_2,
|
||||
_NL_TIME_WMONTH_3,
|
||||
_NL_TIME_WMONTH_4,
|
||||
_NL_TIME_WMONTH_5,
|
||||
_NL_TIME_WMONTH_6,
|
||||
_NL_TIME_WMONTH_7,
|
||||
_NL_TIME_WMONTH_8,
|
||||
_NL_TIME_WMONTH_9,
|
||||
_NL_TIME_WMONTH_10,
|
||||
_NL_TIME_WMONTH_11,
|
||||
_NL_TIME_WMONTH_12,
|
||||
_NL_TIME_WWDAY_1,
|
||||
_NL_TIME_WWDAY_2,
|
||||
_NL_TIME_WWDAY_3,
|
||||
_NL_TIME_WWDAY_4,
|
||||
_NL_TIME_WWDAY_5,
|
||||
_NL_TIME_WWDAY_6,
|
||||
_NL_TIME_WWDAY_7,
|
||||
_NL_TIME_WWEEKDAY_1,
|
||||
_NL_TIME_WWEEKDAY_2,
|
||||
_NL_TIME_WWEEKDAY_3,
|
||||
_NL_TIME_WWEEKDAY_4,
|
||||
_NL_TIME_WWEEKDAY_5,
|
||||
_NL_TIME_WWEEKDAY_6,
|
||||
_NL_TIME_WWEEKDAY_7,
|
||||
_NL_TIME_WT_FMT,
|
||||
_NL_TIME_WD_FMT,
|
||||
_NL_TIME_WD_T_FMT,
|
||||
_NL_TIME_WAM_STR,
|
||||
_NL_TIME_WPM_STR,
|
||||
_NL_TIME_WDATE_FMT,
|
||||
_NL_TIME_WT_FMT_AMPM,
|
||||
_NL_TIME_WERA,
|
||||
_NL_TIME_WERA_D_FMT,
|
||||
_NL_TIME_WERA_D_T_FMT,
|
||||
_NL_TIME_WERA_T_FMT,
|
||||
_NL_TIME_WALT_DIGITS,
|
||||
|
||||
_NL_NUMERIC_CODESET,
|
||||
_NL_NUMERIC_GROUPING,
|
||||
_NL_NUMERIC_DECIMAL_POINT_WC,
|
||||
_NL_NUMERIC_THOUSANDS_SEP_WC,
|
||||
|
||||
_NL_MONETARY_INT_CURR_SYMBOL,
|
||||
_NL_MONETARY_CURRENCY_SYMBOL,
|
||||
_NL_MONETARY_MON_DECIMAL_POINT,
|
||||
_NL_MONETARY_MON_THOUSANDS_SEP,
|
||||
_NL_MONETARY_MON_GROUPING,
|
||||
_NL_MONETARY_POSITIVE_SIGN,
|
||||
_NL_MONETARY_NEGATIVE_SIGN,
|
||||
_NL_MONETARY_INT_FRAC_DIGITS,
|
||||
_NL_MONETARY_FRAC_DIGITS,
|
||||
_NL_MONETARY_P_CS_PRECEDES,
|
||||
_NL_MONETARY_P_SEP_BY_SPACE,
|
||||
_NL_MONETARY_N_CS_PRECEDES,
|
||||
_NL_MONETARY_N_SEP_BY_SPACE,
|
||||
_NL_MONETARY_P_SIGN_POSN,
|
||||
_NL_MONETARY_N_SIGN_POSN,
|
||||
_NL_MONETARY_INT_P_CS_PRECEDES,
|
||||
_NL_MONETARY_INT_P_SEP_BY_SPACE,
|
||||
_NL_MONETARY_INT_N_CS_PRECEDES,
|
||||
_NL_MONETARY_INT_N_SEP_BY_SPACE,
|
||||
_NL_MONETARY_INT_P_SIGN_POSN,
|
||||
_NL_MONETARY_INT_N_SIGN_POSN,
|
||||
_NL_MONETARY_CODESET,
|
||||
_NL_MONETARY_WINT_CURR_SYMBOL,
|
||||
_NL_MONETARY_WCURRENCY_SYMBOL,
|
||||
_NL_MONETARY_WMON_DECIMAL_POINT,
|
||||
_NL_MONETARY_WMON_THOUSANDS_SEP,
|
||||
_NL_MONETARY_WPOSITIVE_SIGN,
|
||||
_NL_MONETARY_WNEGATIVE_SIGN,
|
||||
|
||||
_NL_MESSAGES_WYESEXPR,
|
||||
_NL_MESSAGES_WNOEXPR,
|
||||
_NL_MESSAGES_WYESSTR,
|
||||
_NL_MESSAGES_WNOSTR,
|
||||
|
||||
_NL_COLLATE_CODESET,
|
||||
|
||||
/* This MUST be the last entry since it's used to check for an array
|
||||
index in nl_langinfo(). */
|
||||
_NL_LOCALE_EXTENDED_LAST_ENTRY
|
||||
|
||||
#endif /* __HAVE_LOCALE_INFO_EXTENDED__ */
|
||||
#endif /* __HAVE_LOCALE_INFO__ */
|
||||
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
char *nl_langinfo(nl_item);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_LANGINFO_H_ */
|
|
@ -1,23 +0,0 @@
|
|||
/*
|
||||
* libgen.h - defined by XPG4
|
||||
*/
|
||||
|
||||
#ifndef _LIBGEN_H_
|
||||
#define _LIBGEN_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <sys/reent.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
char *_EXFUN(basename, (char *));
|
||||
char *_EXFUN(dirname, (char *));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LIBGEN_H_ */
|
||||
|
|
@ -1,146 +0,0 @@
|
|||
#ifndef _LIBC_LIMITS_H_
|
||||
# define _LIBC_LIMITS_H_ 1
|
||||
|
||||
#include <newlib.h>
|
||||
|
||||
# ifdef _MB_LEN_MAX
|
||||
# define MB_LEN_MAX _MB_LEN_MAX
|
||||
# else
|
||||
# define MB_LEN_MAX 1
|
||||
# endif
|
||||
|
||||
/* Maximum number of positional arguments, if _WANT_IO_POS_ARGS. */
|
||||
# ifndef NL_ARGMAX
|
||||
# define NL_ARGMAX 32
|
||||
# endif
|
||||
|
||||
/* if do not have #include_next support, then we
|
||||
have to define the limits here. */
|
||||
# if !defined __GNUC__ || __GNUC__ < 2
|
||||
|
||||
# ifndef _LIMITS_H
|
||||
# define _LIMITS_H 1
|
||||
|
||||
# include <sys/config.h>
|
||||
|
||||
/* Number of bits in a `char'. */
|
||||
# undef CHAR_BIT
|
||||
# define CHAR_BIT 8
|
||||
|
||||
/* Minimum and maximum values a `signed char' can hold. */
|
||||
# undef SCHAR_MIN
|
||||
# define SCHAR_MIN (-128)
|
||||
# undef SCHAR_MAX
|
||||
# define SCHAR_MAX 127
|
||||
|
||||
/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
|
||||
# undef UCHAR_MAX
|
||||
# define UCHAR_MAX 255
|
||||
|
||||
/* Minimum and maximum values a `char' can hold. */
|
||||
# ifdef __CHAR_UNSIGNED__
|
||||
# undef CHAR_MIN
|
||||
# define CHAR_MIN 0
|
||||
# undef CHAR_MAX
|
||||
# define CHAR_MAX 255
|
||||
# else
|
||||
# undef CHAR_MIN
|
||||
# define CHAR_MIN (-128)
|
||||
# undef CHAR_MAX
|
||||
# define CHAR_MAX 127
|
||||
# endif
|
||||
|
||||
/* Minimum and maximum values a `signed short int' can hold. */
|
||||
# undef SHRT_MIN
|
||||
/* For the sake of 16 bit hosts, we may not use -32768 */
|
||||
# define SHRT_MIN (-32767-1)
|
||||
# undef SHRT_MAX
|
||||
# define SHRT_MAX 32767
|
||||
|
||||
/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
|
||||
# undef USHRT_MAX
|
||||
# define USHRT_MAX 65535
|
||||
|
||||
/* Minimum and maximum values a `signed int' can hold. */
|
||||
# ifndef __INT_MAX__
|
||||
# define __INT_MAX__ 2147483647
|
||||
# endif
|
||||
# undef INT_MIN
|
||||
# define INT_MIN (-INT_MAX-1)
|
||||
# undef INT_MAX
|
||||
# define INT_MAX __INT_MAX__
|
||||
|
||||
/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
|
||||
# undef UINT_MAX
|
||||
# define UINT_MAX (INT_MAX * 2U + 1)
|
||||
|
||||
/* Minimum and maximum values a `signed long int' can hold.
|
||||
(Same as `int'). */
|
||||
# ifndef __LONG_MAX__
|
||||
# if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) || defined (__sparcv9)
|
||||
# define __LONG_MAX__ 9223372036854775807L
|
||||
# else
|
||||
# define __LONG_MAX__ 2147483647L
|
||||
# endif /* __alpha__ || sparc64 */
|
||||
# endif
|
||||
# undef LONG_MIN
|
||||
# define LONG_MIN (-LONG_MAX-1)
|
||||
# undef LONG_MAX
|
||||
# define LONG_MAX __LONG_MAX__
|
||||
|
||||
/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
|
||||
# undef ULONG_MAX
|
||||
# define ULONG_MAX (LONG_MAX * 2UL + 1)
|
||||
|
||||
# ifndef __LONG_LONG_MAX__
|
||||
# define __LONG_LONG_MAX__ 9223372036854775807LL
|
||||
# endif
|
||||
|
||||
# if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
/* Minimum and maximum values a `signed long long int' can hold. */
|
||||
# undef LLONG_MIN
|
||||
# define LLONG_MIN (-LLONG_MAX-1)
|
||||
# undef LLONG_MAX
|
||||
# define LLONG_MAX __LONG_LONG_MAX__
|
||||
|
||||
/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
|
||||
# undef ULLONG_MAX
|
||||
# define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
|
||||
# endif
|
||||
|
||||
# if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
|
||||
/* Minimum and maximum values a `signed long long int' can hold. */
|
||||
# undef LONG_LONG_MIN
|
||||
# define LONG_LONG_MIN (-LONG_LONG_MAX-1)
|
||||
# undef LONG_LONG_MAX
|
||||
# define LONG_LONG_MAX __LONG_LONG_MAX__
|
||||
|
||||
/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */
|
||||
# undef ULONG_LONG_MAX
|
||||
# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1)
|
||||
# endif
|
||||
|
||||
# endif /* _LIMITS_H */
|
||||
# endif /* GCC 2. */
|
||||
|
||||
#endif /* !_LIBC_LIMITS_H_ */
|
||||
|
||||
#if defined __GNUC__ && !defined _GCC_LIMITS_H_
|
||||
/* `_GCC_LIMITS_H_' is what GCC's file defines. */
|
||||
# include_next <limits.h>
|
||||
#endif /* __GNUC__ && !_GCC_LIMITS_H_ */
|
||||
|
||||
#ifndef _POSIX2_RE_DUP_MAX
|
||||
/* The maximum number of repeated occurrences of a regular expression
|
||||
* permitted when using the interval notation `\{M,N\}'. */
|
||||
#define _POSIX2_RE_DUP_MAX 255
|
||||
#endif /* _POSIX2_RE_DUP_MAX */
|
||||
|
||||
#ifndef ARG_MAX
|
||||
#define ARG_MAX 4096
|
||||
#endif
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#define PATH_MAX 1024
|
||||
#endif
|
|
@ -1,64 +0,0 @@
|
|||
/*
|
||||
locale.h
|
||||
Values appropriate for the formatting of monetary and other
|
||||
numberic quantities.
|
||||
*/
|
||||
|
||||
#ifndef _LOCALE_H_
|
||||
#define _LOCALE_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
|
||||
#define __need_NULL
|
||||
#include <stddef.h>
|
||||
|
||||
#define LC_ALL 0
|
||||
#define LC_COLLATE 1
|
||||
#define LC_CTYPE 2
|
||||
#define LC_MONETARY 3
|
||||
#define LC_NUMERIC 4
|
||||
#define LC_TIME 5
|
||||
#define LC_MESSAGES 6
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
struct lconv
|
||||
{
|
||||
char *decimal_point;
|
||||
char *thousands_sep;
|
||||
char *grouping;
|
||||
char *int_curr_symbol;
|
||||
char *currency_symbol;
|
||||
char *mon_decimal_point;
|
||||
char *mon_thousands_sep;
|
||||
char *mon_grouping;
|
||||
char *positive_sign;
|
||||
char *negative_sign;
|
||||
char int_frac_digits;
|
||||
char frac_digits;
|
||||
char p_cs_precedes;
|
||||
char p_sep_by_space;
|
||||
char n_cs_precedes;
|
||||
char n_sep_by_space;
|
||||
char p_sign_posn;
|
||||
char n_sign_posn;
|
||||
char int_n_cs_precedes;
|
||||
char int_n_sep_by_space;
|
||||
char int_n_sign_posn;
|
||||
char int_p_cs_precedes;
|
||||
char int_p_sep_by_space;
|
||||
char int_p_sign_posn;
|
||||
};
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
char *_EXFUN(setlocale,(int category, const char *locale));
|
||||
struct lconv *_EXFUN(localeconv,(void));
|
||||
#endif
|
||||
|
||||
struct _reent;
|
||||
char *_EXFUN(_setlocale_r,(struct _reent *, int category, const char *locale));
|
||||
struct lconv *_EXFUN(_localeconv_r,(struct _reent *));
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _LOCALE_H_ */
|
|
@ -1,56 +0,0 @@
|
|||
/*
|
||||
* _default_types implementation for xtensa lx106 arch
|
||||
*
|
||||
* Simplified version of generic _default_types.h, ignores gcc
|
||||
* built-in standard types.
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE__DEFAULT_TYPES_H
|
||||
#define _MACHINE__DEFAULT_TYPES_H
|
||||
|
||||
#include <sys/features.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef signed char __int8_t ;
|
||||
typedef unsigned char __uint8_t ;
|
||||
#define ___int8_t_defined 1
|
||||
|
||||
typedef signed short __int16_t;
|
||||
typedef unsigned short __uint16_t;
|
||||
#define ___int16_t_defined 1
|
||||
|
||||
typedef signed int __int32_t;
|
||||
typedef unsigned int __uint32_t;
|
||||
#define ___int32_t_defined 1
|
||||
|
||||
typedef signed long long __int64_t;
|
||||
typedef unsigned long long __uint64_t;
|
||||
#define ___int64_t_defined 1
|
||||
|
||||
typedef __int8_t __int_least8_t;
|
||||
typedef __uint8_t __uint_least8_t;
|
||||
#define ___int_least8_t_defined
|
||||
|
||||
typedef __int16_t __int_least16_t;
|
||||
typedef __uint16_t __uint_least16_t;
|
||||
#define ___int_least16_t_defined
|
||||
|
||||
typedef __int32_t __int_least32_t;
|
||||
typedef __uint32_t __uint_least32_t;
|
||||
#define ___int_least32_t_defined
|
||||
|
||||
typedef __int64_t __int_least64_t;
|
||||
typedef __uint64_t __uint_least64_t;
|
||||
#define ___int_least64_t_defined
|
||||
|
||||
typedef __INTPTR_TYPE__ __intptr_t;
|
||||
typedef __UINTPTR_TYPE__ __uintptr_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _MACHINE__DEFAULT_TYPES_H */
|
|
@ -1,8 +0,0 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE__TYPES_H
|
||||
#define _MACHINE__TYPES_H
|
||||
#include <machine/_default_types.h>
|
||||
#endif
|
|
@ -1 +0,0 @@
|
|||
/* dummy header file to support BSD compiler */
|
|
@ -1,20 +0,0 @@
|
|||
#ifndef __MACHINE_ENDIAN_H__
|
||||
|
||||
#include <sys/config.h>
|
||||
|
||||
#ifndef BIG_ENDIAN
|
||||
#define BIG_ENDIAN 4321
|
||||
#endif
|
||||
#ifndef LITTLE_ENDIAN
|
||||
#define LITTLE_ENDIAN 1234
|
||||
#endif
|
||||
|
||||
#ifndef BYTE_ORDER
|
||||
#if defined(__IEEE_LITTLE_ENDIAN) || defined(__IEEE_BYTES_LITTLE_ENDIAN)
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
#else
|
||||
#define BYTE_ORDER BIG_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* __MACHINE_ENDIAN_H__ */
|
|
@ -1,100 +0,0 @@
|
|||
#ifdef __sysvnecv70_target
|
||||
double EXFUN(fast_sin,(double));
|
||||
double EXFUN(fast_cos,(double));
|
||||
double EXFUN(fast_tan,(double));
|
||||
|
||||
double EXFUN(fast_asin,(double));
|
||||
double EXFUN(fast_acos,(double));
|
||||
double EXFUN(fast_atan,(double));
|
||||
|
||||
double EXFUN(fast_sinh,(double));
|
||||
double EXFUN(fast_cosh,(double));
|
||||
double EXFUN(fast_tanh,(double));
|
||||
|
||||
double EXFUN(fast_asinh,(double));
|
||||
double EXFUN(fast_acosh,(double));
|
||||
double EXFUN(fast_atanh,(double));
|
||||
|
||||
double EXFUN(fast_abs,(double));
|
||||
double EXFUN(fast_sqrt,(double));
|
||||
double EXFUN(fast_exp2,(double));
|
||||
double EXFUN(fast_exp10,(double));
|
||||
double EXFUN(fast_expe,(double));
|
||||
double EXFUN(fast_log10,(double));
|
||||
double EXFUN(fast_log2,(double));
|
||||
double EXFUN(fast_loge,(double));
|
||||
|
||||
|
||||
#define sin(x) fast_sin(x)
|
||||
#define cos(x) fast_cos(x)
|
||||
#define tan(x) fast_tan(x)
|
||||
#define asin(x) fast_asin(x)
|
||||
#define acos(x) fast_acos(x)
|
||||
#define atan(x) fast_atan(x)
|
||||
#define sinh(x) fast_sinh(x)
|
||||
#define cosh(x) fast_cosh(x)
|
||||
#define tanh(x) fast_tanh(x)
|
||||
#define asinh(x) fast_asinh(x)
|
||||
#define acosh(x) fast_acosh(x)
|
||||
#define atanh(x) fast_atanh(x)
|
||||
#define abs(x) fast_abs(x)
|
||||
#define sqrt(x) fast_sqrt(x)
|
||||
#define exp2(x) fast_exp2(x)
|
||||
#define exp10(x) fast_exp10(x)
|
||||
#define expe(x) fast_expe(x)
|
||||
#define log10(x) fast_log10(x)
|
||||
#define log2(x) fast_log2(x)
|
||||
#define loge(x) fast_loge(x)
|
||||
|
||||
#ifdef _HAVE_STDC
|
||||
/* These functions are in assembler, they really do take floats. This
|
||||
can only be used with a real ANSI compiler */
|
||||
|
||||
float EXFUN(fast_sinf,(float));
|
||||
float EXFUN(fast_cosf,(float));
|
||||
float EXFUN(fast_tanf,(float));
|
||||
|
||||
float EXFUN(fast_asinf,(float));
|
||||
float EXFUN(fast_acosf,(float));
|
||||
float EXFUN(fast_atanf,(float));
|
||||
|
||||
float EXFUN(fast_sinhf,(float));
|
||||
float EXFUN(fast_coshf,(float));
|
||||
float EXFUN(fast_tanhf,(float));
|
||||
|
||||
float EXFUN(fast_asinhf,(float));
|
||||
float EXFUN(fast_acoshf,(float));
|
||||
float EXFUN(fast_atanhf,(float));
|
||||
|
||||
float EXFUN(fast_absf,(float));
|
||||
float EXFUN(fast_sqrtf,(float));
|
||||
float EXFUN(fast_exp2f,(float));
|
||||
float EXFUN(fast_exp10f,(float));
|
||||
float EXFUN(fast_expef,(float));
|
||||
float EXFUN(fast_log10f,(float));
|
||||
float EXFUN(fast_log2f,(float));
|
||||
float EXFUN(fast_logef,(float));
|
||||
#define sinf(x) fast_sinf(x)
|
||||
#define cosf(x) fast_cosf(x)
|
||||
#define tanf(x) fast_tanf(x)
|
||||
#define asinf(x) fast_asinf(x)
|
||||
#define acosf(x) fast_acosf(x)
|
||||
#define atanf(x) fast_atanf(x)
|
||||
#define sinhf(x) fast_sinhf(x)
|
||||
#define coshf(x) fast_coshf(x)
|
||||
#define tanhf(x) fast_tanhf(x)
|
||||
#define asinhf(x) fast_asinhf(x)
|
||||
#define acoshf(x) fast_acoshf(x)
|
||||
#define atanhf(x) fast_atanhf(x)
|
||||
#define absf(x) fast_absf(x)
|
||||
#define sqrtf(x) fast_sqrtf(x)
|
||||
#define exp2f(x) fast_exp2f(x)
|
||||
#define exp10f(x) fast_exp10f(x)
|
||||
#define expef(x) fast_expef(x)
|
||||
#define log10f(x) fast_log10f(x)
|
||||
#define log2f(x) fast_log2f(x)
|
||||
#define logef(x) fast_logef(x)
|
||||
#endif
|
||||
/* Override the functions defined in math.h */
|
||||
#endif /* __sysvnecv70_target */
|
||||
|
|
@ -1,434 +0,0 @@
|
|||
#ifndef __IEEE_BIG_ENDIAN
|
||||
#ifndef __IEEE_LITTLE_ENDIAN
|
||||
|
||||
/* This file can define macros to choose variations of the IEEE float
|
||||
format:
|
||||
|
||||
_FLT_LARGEST_EXPONENT_IS_NORMAL
|
||||
|
||||
Defined if the float format uses the largest exponent for finite
|
||||
numbers rather than NaN and infinity representations. Such a
|
||||
format cannot represent NaNs or infinities at all, but it's FLT_MAX
|
||||
is twice the IEEE value.
|
||||
|
||||
_FLT_NO_DENORMALS
|
||||
|
||||
Defined if the float format does not support IEEE denormals. Every
|
||||
float with a zero exponent is taken to be a zero representation.
|
||||
|
||||
??? At the moment, there are no equivalent macros above for doubles and
|
||||
the macros are not fully supported by --enable-newlib-hw-fp.
|
||||
|
||||
__IEEE_BIG_ENDIAN
|
||||
|
||||
Defined if the float format is big endian. This is mutually exclusive
|
||||
with __IEEE_LITTLE_ENDIAN.
|
||||
|
||||
__IEEE_LITTLE_ENDIAN
|
||||
|
||||
Defined if the float format is little endian. This is mutually exclusive
|
||||
with __IEEE_BIG_ENDIAN.
|
||||
|
||||
Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a
|
||||
platform or error will occur.
|
||||
|
||||
__IEEE_BYTES_LITTLE_ENDIAN
|
||||
|
||||
This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation
|
||||
whereby multiple words of an IEEE floating point are in big endian order, but the
|
||||
words themselves are little endian with respect to the bytes.
|
||||
|
||||
_DOUBLE_IS_32BITS
|
||||
|
||||
This is used on platforms that support double by using the 32-bit IEEE
|
||||
float type.
|
||||
|
||||
_FLOAT_ARG
|
||||
|
||||
This represents what type a float arg is passed as. It is used when the type is
|
||||
not promoted to double.
|
||||
|
||||
*/
|
||||
|
||||
#if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__)
|
||||
/* ARM traditionally used big-endian words; and within those words the
|
||||
byte ordering was big or little endian depending upon the target.
|
||||
Modern floating-point formats are naturally ordered; in this case
|
||||
__VFP_FP__ will be defined, even if soft-float. */
|
||||
#ifdef __VFP_FP__
|
||||
# ifdef __ARMEL__
|
||||
# define __IEEE_LITTLE_ENDIAN
|
||||
# else
|
||||
# define __IEEE_BIG_ENDIAN
|
||||
# endif
|
||||
#else
|
||||
# define __IEEE_BIG_ENDIAN
|
||||
# ifdef __ARMEL__
|
||||
# define __IEEE_BYTES_LITTLE_ENDIAN
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__aarch64__)
|
||||
#if defined (__AARCH64EL__)
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#else
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __epiphany__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define Sudden_Underflow 1
|
||||
#endif
|
||||
|
||||
#ifdef __hppa__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __nds32__
|
||||
#ifdef __big_endian__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __SPU__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
|
||||
#define isfinite(__y) \
|
||||
(__extension__ ({int __cy; \
|
||||
(sizeof (__y) == sizeof (float)) ? (1) : \
|
||||
(__cy = fpclassify(__y)) != FP_INFINITE && __cy != FP_NAN;}))
|
||||
|
||||
#define isinf(__x) ((sizeof (__x) == sizeof (float)) ? (0) : __isinfd(__x))
|
||||
#define isnan(__x) ((sizeof (__x) == sizeof (float)) ? (0) : __isnand(__x))
|
||||
|
||||
/*
|
||||
* Macros for use in ieeefp.h. We can't just define the real ones here
|
||||
* (like those above) as we have name space issues when this is *not*
|
||||
* included via generic the ieeefp.h.
|
||||
*/
|
||||
#define __ieeefp_isnanf(x) 0
|
||||
#define __ieeefp_isinff(x) 0
|
||||
#define __ieeefp_finitef(x) 1
|
||||
#endif
|
||||
|
||||
#ifdef __sparc__
|
||||
#ifdef __LITTLE_ENDIAN_DATA__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#else
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__m68k__) || defined(__mc68000__)
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#ifdef __HAVE_SHORT_DOUBLE__
|
||||
# define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__)
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#define _FLOAT_ARG float
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
#if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__)
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define _FLOAT_ARG float
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __sh__
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#else
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
#if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_SINGLE_ONLY__)
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _AM29K
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __i386__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __i960__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __lm32__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __M32R__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#if defined(_C4x) || defined(_C3x)
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
#ifdef __TMS320C6X__
|
||||
#ifdef _BIG_ENDIAN
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __TIC80__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __MIPSEL__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#ifdef __MIPSEB__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __MMIX__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __D30V__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
/* necv70 was __IEEE_LITTLE_ENDIAN. */
|
||||
|
||||
#ifdef __W65__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
#if defined(__Z8001__) || defined(__Z8002__)
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __m88k__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __mn10300__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __mn10200__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
#ifdef __v800
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __v850
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __D10V__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#if __DOUBLE__ == 32
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __PPC__
|
||||
#if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX)
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32)
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __xstormy16__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __arc__
|
||||
#ifdef __big_endian__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __CRX__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __fr30__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __mcore__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __mt__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __frv__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __moxie__
|
||||
#ifdef __MOXIE_BIG_ENDIAN__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __ia64__
|
||||
#ifdef __BIG_ENDIAN__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __AVR__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
#if defined(__or1k__) || defined(__OR1K__) || defined(__OR1KND__)
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __IP2K__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#define __SMALL_BITFIELDS
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
#ifdef __iq2000__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __MAVERICK__
|
||||
#ifdef __ARMEL__
|
||||
# define __IEEE_LITTLE_ENDIAN
|
||||
#else /* must be __ARMEB__ */
|
||||
# define __IEEE_BIG_ENDIAN
|
||||
#endif /* __ARMEL__ */
|
||||
#endif /* __MAVERICK__ */
|
||||
|
||||
#ifdef __m32c__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define __SMALL_BITFIELDS
|
||||
#endif
|
||||
|
||||
#ifdef __CRIS__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __BFIN__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __x86_64__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifdef __mep__
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#else
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __MICROBLAZE__
|
||||
#ifndef __MICROBLAZEEL__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __MSP430__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define __SMALL_BITFIELDS /* 16 Bit INT */
|
||||
#endif
|
||||
|
||||
#ifdef __RL78__
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define __SMALL_BITFIELDS /* 16 Bit INT */
|
||||
#ifndef __RL78_64BIT_DOUBLES__
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __RX__
|
||||
|
||||
#ifdef __RX_BIG_ENDIAN__
|
||||
#define __IEEE_BIG_ENDIAN
|
||||
#else
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#endif
|
||||
|
||||
#ifndef __RX_64BIT_DOUBLES__
|
||||
#define _DOUBLE_IS_32BITS
|
||||
#endif
|
||||
|
||||
#ifdef __RX_16BIT_INTS__
|
||||
#define __SMALL_BITFIELDS
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__))
|
||||
#define __IEEE_LITTLE_ENDIAN
|
||||
#define __SMALL_BITFIELDS /* 16 Bit INT */
|
||||
#endif
|
||||
|
||||
#ifdef __NIOS2__
|
||||
# ifdef __nios2_big_endian__
|
||||
# define __IEEE_BIG_ENDIAN
|
||||
# else
|
||||
# define __IEEE_LITTLE_ENDIAN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if (defined(__XTENSA__))
|
||||
# ifdef __XTENSA_EB__
|
||||
# define __IEEE_BIG_ENDIAN
|
||||
# else
|
||||
# define __IEEE_LITTLE_ENDIAN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef __IEEE_BIG_ENDIAN
|
||||
#ifndef __IEEE_LITTLE_ENDIAN
|
||||
#error Endianess not declared!!
|
||||
#endif /* not __IEEE_LITTLE_ENDIAN */
|
||||
#endif /* not __IEEE_BIG_ENDIAN */
|
||||
|
||||
#endif /* not __IEEE_LITTLE_ENDIAN */
|
||||
#endif /* not __IEEE_BIG_ENDIAN */
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _MACHMALLOC_H_
|
||||
#define _MACHMALLOC_H_
|
||||
|
||||
/* place holder so platforms may add malloc.h extensions */
|
||||
|
||||
#endif /* _MACHMALLOC_H_ */
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
/* Place holder for machine-specific param.h. */
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 1991 DJ Delorie
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution, modification, and use in source and binary forms is permitted
|
||||
* provided that the above copyright notice and following paragraph are
|
||||
* duplicated in all such forms.
|
||||
*
|
||||
* This file is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
/* Modified to use SETJMP_DJ_H rather than SETJMP_H to avoid
|
||||
conflicting with setjmp.h. Ian Taylor, Cygnus support, April,
|
||||
1993. */
|
||||
|
||||
#ifndef _SETJMP_DJ_H_
|
||||
#define _SETJMP_DJ_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
unsigned long eax;
|
||||
unsigned long ebx;
|
||||
unsigned long ecx;
|
||||
unsigned long edx;
|
||||
unsigned long esi;
|
||||
unsigned long edi;
|
||||
unsigned long ebp;
|
||||
unsigned long esp;
|
||||
unsigned long eip;
|
||||
} jmp_buf[1];
|
||||
|
||||
extern int setjmp(jmp_buf);
|
||||
extern void longjmp(jmp_buf, int);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,453 +0,0 @@
|
|||
|
||||
_BEGIN_STD_C
|
||||
|
||||
#if defined(__or1k__) || defined(__or1knd__)
|
||||
#define _JBLEN 31 /* 32 GPRs - r0 */
|
||||
#define _JBTYPE unsigned long
|
||||
#endif
|
||||
|
||||
#if defined(__arm__) || defined(__thumb__)
|
||||
/*
|
||||
* All callee preserved registers:
|
||||
* v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7
|
||||
*/
|
||||
#define _JBLEN 23
|
||||
#endif
|
||||
|
||||
#if defined(__aarch64__)
|
||||
#define _JBLEN 22
|
||||
#define _JBTYPE long long
|
||||
#endif
|
||||
|
||||
#if defined(__AVR__)
|
||||
#define _JBLEN 24
|
||||
#endif
|
||||
|
||||
#ifdef __sparc__
|
||||
/*
|
||||
* onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
|
||||
* All else recovered by under/over(flow) handling.
|
||||
*/
|
||||
#define _JBLEN 13
|
||||
#endif
|
||||
|
||||
#ifdef __BFIN__
|
||||
#define _JBLEN 40
|
||||
#endif
|
||||
|
||||
#ifdef __epiphany__
|
||||
/* All callee preserved registers: r4-r10,fp, sp, lr,r15, r32-r39 */
|
||||
#define _JBTYPE long long
|
||||
#define _JBLEN 10
|
||||
#endif
|
||||
|
||||
/* necv70 was 9 as well. */
|
||||
|
||||
#if defined(__m68k__) || defined(__mc68000__)
|
||||
/*
|
||||
* onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6,
|
||||
* fp2-fp7 for 68881.
|
||||
* All else recovered by under/over(flow) handling.
|
||||
*/
|
||||
#define _JBLEN 34
|
||||
#endif
|
||||
|
||||
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
|
||||
/*
|
||||
* D, X, Y are not saved.
|
||||
* Only take into account the pseudo soft registers (max 32).
|
||||
*/
|
||||
#define _JBLEN 32
|
||||
#endif
|
||||
|
||||
#ifdef __nds32__
|
||||
/* 17 words for GPRs,
|
||||
1 word for $fpcfg.freg and 30 words for FPUs
|
||||
Reserved 2 words for aligement-adjustment. When storeing double-precision
|
||||
floating-point register into memory, the address has to be
|
||||
double-word-aligned.
|
||||
Check libc/machine/nds32/setjmp.S for more information. */
|
||||
#if __NDS32_EXT_FPU_SP__ || __NDS32_EXT_FPU_DP__
|
||||
#define _JBLEN 50
|
||||
#else
|
||||
#define _JBLEN 18
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__Z8001__) || defined(__Z8002__)
|
||||
/* 16 regs + pc */
|
||||
#define _JBLEN 20
|
||||
#endif
|
||||
|
||||
#ifdef _AM29K
|
||||
/*
|
||||
* onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
|
||||
* All else recovered by under/over(flow) handling.
|
||||
*/
|
||||
#define _JBLEN 9
|
||||
#endif
|
||||
|
||||
#ifdef __i386__
|
||||
# if defined(__CYGWIN__) && !defined (_JBLEN)
|
||||
# define _JBLEN (13 * 4)
|
||||
# elif defined(__unix__) || defined(__rtems__)
|
||||
# define _JBLEN 9
|
||||
# else
|
||||
# include "setjmp-dj.h"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __x86_64__
|
||||
# ifdef __CYGWIN__
|
||||
# define _JBTYPE long
|
||||
# define _JBLEN 32
|
||||
# else
|
||||
# define _JBTYPE long long
|
||||
# define _JBLEN 8
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __i960__
|
||||
#define _JBLEN 35
|
||||
#endif
|
||||
|
||||
#ifdef __M32R__
|
||||
/* Only 8 words are currently needed. 10 gives us some slop if we need
|
||||
to expand. */
|
||||
#define _JBLEN 10
|
||||
#endif
|
||||
|
||||
#ifdef __mips__
|
||||
# if defined(__mips64)
|
||||
# define _JBTYPE long long
|
||||
# endif
|
||||
# ifdef __mips_soft_float
|
||||
# define _JBLEN 11
|
||||
# else
|
||||
# define _JBLEN 23
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __m88000__
|
||||
#define _JBLEN 21
|
||||
#endif
|
||||
|
||||
#ifdef __H8300__
|
||||
#define _JBLEN 5
|
||||
#define _JBTYPE int
|
||||
#endif
|
||||
|
||||
#ifdef __H8300H__
|
||||
/* same as H8/300 but registers are twice as big */
|
||||
#define _JBLEN 5
|
||||
#define _JBTYPE long
|
||||
#endif
|
||||
|
||||
#if defined (__H8300S__) || defined (__H8300SX__)
|
||||
/* same as H8/300 but registers are twice as big */
|
||||
#define _JBLEN 5
|
||||
#define _JBTYPE long
|
||||
#endif
|
||||
|
||||
#ifdef __H8500__
|
||||
#define _JBLEN 4
|
||||
#endif
|
||||
|
||||
#ifdef __sh__
|
||||
#if __SH5__
|
||||
#define _JBLEN 50
|
||||
#define _JBTYPE long long
|
||||
#else
|
||||
#define _JBLEN 20
|
||||
#endif /* __SH5__ */
|
||||
#endif
|
||||
|
||||
#ifdef __v800
|
||||
#define _JBLEN 28
|
||||
#endif
|
||||
|
||||
#ifdef __PPC__
|
||||
#ifdef __ALTIVEC__
|
||||
#define _JBLEN 64
|
||||
#else
|
||||
#define _JBLEN 32
|
||||
#endif
|
||||
#define _JBTYPE double
|
||||
#endif
|
||||
|
||||
#ifdef __MICROBLAZE__
|
||||
#define _JBLEN 20
|
||||
#define _JBTYPE unsigned int
|
||||
#endif
|
||||
|
||||
#ifdef __hppa__
|
||||
/* %r30, %r2-%r18, %r27, pad, %fr12-%fr15.
|
||||
Note space exists for the FP registers, but they are not
|
||||
saved. */
|
||||
#define _JBLEN 28
|
||||
#endif
|
||||
|
||||
#if defined(__mn10300__) || defined(__mn10200__)
|
||||
#ifdef __AM33_2__
|
||||
#define _JBLEN 26
|
||||
#else
|
||||
/* A guess */
|
||||
#define _JBLEN 10
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __v850
|
||||
/* I think our setjmp is saving 15 regs at the moment. Gives us one word
|
||||
slop if we need to expand. */
|
||||
#define _JBLEN 16
|
||||
#endif
|
||||
|
||||
#if defined(_C4x)
|
||||
#define _JBLEN 10
|
||||
#endif
|
||||
#if defined(_C3x)
|
||||
#define _JBLEN 9
|
||||
#endif
|
||||
|
||||
#ifdef __TMS320C6X__
|
||||
#define _JBLEN 13
|
||||
#endif
|
||||
|
||||
#ifdef __TIC80__
|
||||
#define _JBLEN 13
|
||||
#endif
|
||||
|
||||
#ifdef __D10V__
|
||||
#define _JBLEN 8
|
||||
#endif
|
||||
|
||||
#ifdef __D30V__
|
||||
#define _JBLEN ((64 /* GPR */ + (2*2) /* ACs */ + 18 /* CRs */) / 2)
|
||||
#define _JBTYPE double
|
||||
#endif
|
||||
|
||||
#ifdef __frv__
|
||||
#define _JBLEN (68/2) /* room for 68 32-bit regs */
|
||||
#define _JBTYPE double
|
||||
#endif
|
||||
|
||||
#ifdef __moxie__
|
||||
#define _JBLEN 16
|
||||
#endif
|
||||
|
||||
#ifdef __CRX__
|
||||
#define _JBLEN 9
|
||||
#endif
|
||||
|
||||
#if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__))
|
||||
/* r6, r7, r8, r9, r10, r11, r12 (r12L, r12H),
|
||||
* r13 (r13L, r13H), ra(raL, raH), sp(spL, spH) */
|
||||
#define _JBLEN 14
|
||||
#define _JBTYPE unsigned short
|
||||
#endif
|
||||
|
||||
#ifdef __fr30__
|
||||
#define _JBLEN 10
|
||||
#endif
|
||||
|
||||
#ifdef __iq2000__
|
||||
#define _JBLEN 32
|
||||
#endif
|
||||
|
||||
#ifdef __mcore__
|
||||
#define _JBLEN 16
|
||||
#endif
|
||||
|
||||
#ifdef __MMIX__
|
||||
/* Using a layout compatible with GCC's built-in. */
|
||||
#define _JBLEN 5
|
||||
#define _JBTYPE unsigned long
|
||||
#endif
|
||||
|
||||
#ifdef __mt__
|
||||
#define _JBLEN 16
|
||||
#endif
|
||||
|
||||
#ifdef __SPU__
|
||||
#define _JBLEN 50
|
||||
#define _JBTYPE __vector signed int
|
||||
#endif
|
||||
|
||||
#ifdef __xstormy16__
|
||||
/* 4 GPRs plus SP plus PC. */
|
||||
#define _JBLEN 8
|
||||
#endif
|
||||
|
||||
#ifdef __XTENSA__
|
||||
#if __XTENSA_WINDOWED_ABI__
|
||||
|
||||
/* The jmp_buf structure for Xtensa windowed ABI holds the following
|
||||
(where "proc" is the procedure that calls setjmp): 4-12 registers
|
||||
from the window of proc, the 4 words from the save area at proc's $sp
|
||||
(in case a subsequent alloca in proc moves $sp), and the return
|
||||
address within proc. Everything else is saved on the stack in the
|
||||
normal save areas. The jmp_buf structure is:
|
||||
|
||||
struct jmp_buf {
|
||||
int regs[12];
|
||||
int save[4];
|
||||
void *return_address;
|
||||
}
|
||||
|
||||
See the setjmp code for details. */
|
||||
|
||||
#define _JBLEN 17 /* 12 + 4 + 1 */
|
||||
|
||||
#else /* __XTENSA_CALL0_ABI__ */
|
||||
|
||||
#define _JBLEN 6 /* a0, a1, a12, a13, a14, a15 */
|
||||
|
||||
#endif /* __XTENSA_CALL0_ABI__ */
|
||||
#endif /* __XTENSA__ */
|
||||
|
||||
#ifdef __mep__
|
||||
/* 16 GPRs, pc, hi, lo */
|
||||
#define _JBLEN 19
|
||||
#endif
|
||||
|
||||
#ifdef __CRIS__
|
||||
#define _JBLEN 18
|
||||
#endif
|
||||
|
||||
#ifdef __lm32__
|
||||
#define _JBLEN 19
|
||||
#endif
|
||||
|
||||
#ifdef __m32c__
|
||||
#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
|
||||
#define _JBLEN (22/2)
|
||||
#else
|
||||
#define _JBLEN (34/2)
|
||||
#endif
|
||||
#define _JBTYPE unsigned short
|
||||
#endif /* __m32c__ */
|
||||
|
||||
#ifdef __MSP430__
|
||||
#define _JBLEN 9
|
||||
|
||||
#ifdef __MSP430X_LARGE__
|
||||
#define _JBTYPE unsigned long
|
||||
#else
|
||||
#define _JBTYPE unsigned short
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __RL78__
|
||||
/* Three banks of registers, SP, CS, ES, PC */
|
||||
#define _JBLEN (8*3+8)
|
||||
#define _JBTYPE unsigned char
|
||||
#endif
|
||||
|
||||
/*
|
||||
* There are two versions of setjmp()/longjmp():
|
||||
* 1) Compiler (gcc) built-in versions.
|
||||
* 2) Function-call versions.
|
||||
*
|
||||
* The built-in versions are used most of the time. When used, gcc replaces
|
||||
* calls to setjmp()/longjmp() with inline assembly code. The built-in
|
||||
* versions save/restore a variable number of registers.
|
||||
|
||||
* _JBLEN is set to 40 to be ultra-safe with the built-in versions.
|
||||
* It only needs to be 12 for the function-call versions
|
||||
* but this data structure is used by both versions.
|
||||
*/
|
||||
#ifdef __NIOS2__
|
||||
#define _JBLEN 40
|
||||
#define _JBTYPE unsigned long
|
||||
#endif
|
||||
|
||||
#ifdef __RX__
|
||||
#define _JBLEN 0x44
|
||||
#endif
|
||||
|
||||
#ifdef _JBLEN
|
||||
#ifdef _JBTYPE
|
||||
typedef _JBTYPE jmp_buf[_JBLEN];
|
||||
#else
|
||||
typedef int jmp_buf[_JBLEN];
|
||||
#endif
|
||||
#endif
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#if defined(__CYGWIN__) || defined(__rtems__)
|
||||
#include <signal.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* POSIX sigsetjmp/siglongjmp macros */
|
||||
#ifdef _JBTYPE
|
||||
typedef _JBTYPE sigjmp_buf[_JBLEN+1+((sizeof (_JBTYPE) + sizeof (sigset_t) - 1)
|
||||
/sizeof (_JBTYPE))];
|
||||
#else
|
||||
typedef int sigjmp_buf[_JBLEN+1+(sizeof (sigset_t)/sizeof (int))];
|
||||
#endif
|
||||
|
||||
#define _SAVEMASK _JBLEN
|
||||
#define _SIGMASK (_JBLEN+1)
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
# define _CYGWIN_WORKING_SIGSETJMP
|
||||
#endif
|
||||
|
||||
#ifdef _POSIX_THREADS
|
||||
#define __SIGMASK_FUNC pthread_sigmask
|
||||
#else
|
||||
#define __SIGMASK_FUNC sigprocmask
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__)
|
||||
|
||||
#define sigsetjmp(env, savemask) \
|
||||
__extension__ \
|
||||
({ \
|
||||
sigjmp_buf *_sjbuf = &(env); \
|
||||
((*_sjbuf)[_SAVEMASK] = savemask,\
|
||||
__SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\
|
||||
setjmp (*_sjbuf)); \
|
||||
})
|
||||
|
||||
#define siglongjmp(env, val) \
|
||||
__extension__ \
|
||||
({ \
|
||||
sigjmp_buf *_sjbuf = &(env); \
|
||||
((((*_sjbuf)[_SAVEMASK]) ? \
|
||||
__SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\
|
||||
: 0), \
|
||||
longjmp (*_sjbuf, val)); \
|
||||
})
|
||||
|
||||
#else /* !__GNUC__ */
|
||||
|
||||
#define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\
|
||||
__SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
|
||||
setjmp (env))
|
||||
|
||||
#define siglongjmp(env, val) ((((env)[_SAVEMASK])?\
|
||||
__SIGMASK_FUNC (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
|
||||
longjmp (env, val))
|
||||
|
||||
#endif
|
||||
|
||||
/* POSIX _setjmp/_longjmp, maintained for XSI compatibility. These
|
||||
are equivalent to sigsetjmp/siglongjmp when not saving the signal mask.
|
||||
New applications should use sigsetjmp/siglongjmp instead. */
|
||||
#ifdef __CYGWIN__
|
||||
extern void _longjmp(jmp_buf, int);
|
||||
extern int _setjmp(jmp_buf);
|
||||
#else
|
||||
#define _setjmp(env) sigsetjmp ((env), 0)
|
||||
#define _longjmp(env, val) siglongjmp ((env), (val))
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* __CYGWIN__ or __rtems__ */
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _MACHSTDLIB_H_
|
||||
#define _MACHSTDLIB_H_
|
||||
|
||||
/* place holder so platforms may add stdlib.h extensions */
|
||||
|
||||
#endif /* _MACHSTDLIB_H_ */
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
#define __MAX_BAUD B4000000
|
|
@ -1,19 +0,0 @@
|
|||
#ifndef _MACHTIME_H_
|
||||
#define _MACHTIME_H_
|
||||
|
||||
#if defined(__rtems__)
|
||||
#define _CLOCKS_PER_SEC_ sysconf(_SC_CLK_TCK)
|
||||
#else /* !__rtems__ */
|
||||
#if defined(__aarch64__) || defined(__arm__) || defined(__thumb__)
|
||||
#define _CLOCKS_PER_SEC_ 100
|
||||
#endif
|
||||
#endif /* !__rtems__ */
|
||||
|
||||
#ifdef __SPU__
|
||||
#include <sys/types.h>
|
||||
int nanosleep (const struct timespec *, struct timespec *);
|
||||
#endif
|
||||
|
||||
#endif /* _MACHTIME_H_ */
|
||||
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#ifndef _MACHTYPES_H_
|
||||
#define _MACHTYPES_H_
|
||||
|
||||
/*
|
||||
* The following section is RTEMS specific and is needed to more
|
||||
* closely match the types defined in the BSD machine/types.h.
|
||||
* This is needed to let the RTEMS/BSD TCP/IP stack compile.
|
||||
*/
|
||||
#if defined(__rtems__)
|
||||
#include <machine/_types.h>
|
||||
#endif
|
||||
|
||||
#define _CLOCK_T_ unsigned long /* clock() */
|
||||
#define _TIME_T_ long /* time() */
|
||||
#define _CLOCKID_T_ unsigned long
|
||||
#define _TIMER_T_ unsigned long
|
||||
|
||||
#ifndef _HAVE_SYSTYPES
|
||||
typedef long int __off_t;
|
||||
typedef int __pid_t;
|
||||
#ifdef __GNUC__
|
||||
__extension__ typedef long long int __loff_t;
|
||||
#else
|
||||
typedef long int __loff_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* _MACHTYPES_H_ */
|
||||
|
||||
|
|
@ -1,169 +0,0 @@
|
|||
/* malloc.h -- header file for memory routines. */
|
||||
|
||||
#ifndef _INCLUDE_MALLOC_H_
|
||||
#define _INCLUDE_MALLOC_H_
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <sys/reent.h>
|
||||
|
||||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
/* include any machine-specific extensions */
|
||||
#include <machine/malloc.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* This version of struct mallinfo must match the one in
|
||||
libc/stdlib/mallocr.c. */
|
||||
|
||||
struct mallinfo {
|
||||
size_t arena; /* total space allocated from system */
|
||||
size_t ordblks; /* number of non-inuse chunks */
|
||||
size_t smblks; /* unused -- always zero */
|
||||
size_t hblks; /* number of mmapped regions */
|
||||
size_t hblkhd; /* total space in mmapped regions */
|
||||
size_t usmblks; /* unused -- always zero */
|
||||
size_t fsmblks; /* unused -- always zero */
|
||||
size_t uordblks; /* total allocated space */
|
||||
size_t fordblks; /* total non-inuse space */
|
||||
size_t keepcost; /* top-most, releasable (via malloc_trim) space */
|
||||
};
|
||||
|
||||
/* The routines. */
|
||||
|
||||
extern _PTR malloc _PARAMS ((size_t));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _malloc_r
|
||||
#define _malloc_r(r, s) malloc (s)
|
||||
#else
|
||||
extern _PTR _malloc_r _PARAMS ((struct _reent *, size_t));
|
||||
#endif
|
||||
|
||||
extern _VOID free _PARAMS ((_PTR));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _free_r
|
||||
#define _free_r(r, p) free (p)
|
||||
#else
|
||||
extern _VOID _free_r _PARAMS ((struct _reent *, _PTR));
|
||||
#endif
|
||||
|
||||
extern _PTR realloc _PARAMS ((_PTR, size_t));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _realloc_r
|
||||
#define _realloc_r(r, p, s) realloc (p, s)
|
||||
#else
|
||||
extern _PTR _realloc_r _PARAMS ((struct _reent *, _PTR, size_t));
|
||||
#endif
|
||||
|
||||
extern _PTR calloc _PARAMS ((size_t, size_t));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _calloc_r
|
||||
#define _calloc_r(r, s1, s2) calloc (s1, s2);
|
||||
#else
|
||||
extern _PTR _calloc_r _PARAMS ((struct _reent *, size_t, size_t));
|
||||
#endif
|
||||
|
||||
extern _PTR memalign _PARAMS ((size_t, size_t));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _memalign_r
|
||||
#define _memalign_r(r, s1, s2) memalign (s1, s2);
|
||||
#else
|
||||
extern _PTR _memalign_r _PARAMS ((struct _reent *, size_t, size_t));
|
||||
#endif
|
||||
|
||||
extern struct mallinfo mallinfo _PARAMS ((void));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _mallinfo_r
|
||||
#define _mallinfo_r(r) mallinfo ()
|
||||
#else
|
||||
extern struct mallinfo _mallinfo_r _PARAMS ((struct _reent *));
|
||||
#endif
|
||||
|
||||
extern void malloc_stats _PARAMS ((void));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _malloc_stats_r
|
||||
#define _malloc_stats_r(r) malloc_stats ()
|
||||
#else
|
||||
extern void _malloc_stats_r _PARAMS ((struct _reent *));
|
||||
#endif
|
||||
|
||||
extern int mallopt _PARAMS ((int, int));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _mallopt_r
|
||||
#define _mallopt_r(i1, i2) mallopt (i1, i2)
|
||||
#else
|
||||
extern int _mallopt_r _PARAMS ((struct _reent *, int, int));
|
||||
#endif
|
||||
|
||||
extern size_t malloc_usable_size _PARAMS ((_PTR));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _malloc_usable_size_r
|
||||
#define _malloc_usable_size_r(r, p) malloc_usable_size (p)
|
||||
#else
|
||||
extern size_t _malloc_usable_size_r _PARAMS ((struct _reent *, _PTR));
|
||||
#endif
|
||||
|
||||
/* These aren't too useful on an embedded system, but we define them
|
||||
anyhow. */
|
||||
|
||||
extern _PTR valloc _PARAMS ((size_t));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _valloc_r
|
||||
#define _valloc_r(r, s) valloc (s)
|
||||
#else
|
||||
extern _PTR _valloc_r _PARAMS ((struct _reent *, size_t));
|
||||
#endif
|
||||
|
||||
extern _PTR pvalloc _PARAMS ((size_t));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _pvalloc_r
|
||||
#define _pvalloc_r(r, s) pvalloc (s)
|
||||
#else
|
||||
extern _PTR _pvalloc_r _PARAMS ((struct _reent *, size_t));
|
||||
#endif
|
||||
|
||||
extern int malloc_trim _PARAMS ((size_t));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _malloc_trim_r
|
||||
#define _malloc_trim_r(r, s) malloc_trim (s)
|
||||
#else
|
||||
extern int _malloc_trim_r _PARAMS ((struct _reent *, size_t));
|
||||
#endif
|
||||
|
||||
/* A compatibility routine for an earlier version of the allocator. */
|
||||
|
||||
extern _VOID mstats _PARAMS ((char *));
|
||||
#ifdef __CYGWIN__
|
||||
#undef _mstats_r
|
||||
#define _mstats_r(r, p) mstats (p)
|
||||
#else
|
||||
extern _VOID _mstats_r _PARAMS ((struct _reent *, char *));
|
||||
#endif
|
||||
|
||||
/* SVID2/XPG mallopt options */
|
||||
|
||||
#define M_MXFAST 1 /* UNUSED in this malloc */
|
||||
#define M_NLBLKS 2 /* UNUSED in this malloc */
|
||||
#define M_GRAIN 3 /* UNUSED in this malloc */
|
||||
#define M_KEEP 4 /* UNUSED in this malloc */
|
||||
|
||||
/* mallopt options that actually do something */
|
||||
|
||||
#define M_TRIM_THRESHOLD -1
|
||||
#define M_TOP_PAD -2
|
||||
#define M_MMAP_THRESHOLD -3
|
||||
#define M_MMAP_MAX -4
|
||||
|
||||
#ifndef __CYGWIN__
|
||||
/* Some systems provide this, so do too for compatibility. */
|
||||
extern void cfree _PARAMS ((_PTR));
|
||||
#endif /* __CYGWIN__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _INCLUDE_MALLOC_H_ */
|
|
@ -1,615 +0,0 @@
|
|||
#ifndef _MATH_H_
|
||||
|
||||
#define _MATH_H_
|
||||
|
||||
#include <sys/reent.h>
|
||||
#include <machine/ieeefp.h>
|
||||
#include "_ansi.h"
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
/* __dmath, __fmath, and __ldmath are only here for backwards compatibility
|
||||
* in case any code used them. They are no longer used by Newlib, itself,
|
||||
* other than legacy. */
|
||||
union __dmath
|
||||
{
|
||||
double d;
|
||||
__ULong i[2];
|
||||
};
|
||||
|
||||
union __fmath
|
||||
{
|
||||
float f;
|
||||
__ULong i[1];
|
||||
};
|
||||
|
||||
#if defined(_HAVE_LONG_DOUBLE)
|
||||
union __ldmath
|
||||
{
|
||||
long double ld;
|
||||
__ULong i[4];
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Natural log of 2 */
|
||||
#define _M_LN2 0.693147180559945309417
|
||||
|
||||
#if __GNUC_PREREQ (3, 3)
|
||||
/* gcc >= 3.3 implicitly defines builtins for HUGE_VALx values. */
|
||||
|
||||
# ifndef HUGE_VAL
|
||||
# define HUGE_VAL (__builtin_huge_val())
|
||||
# endif
|
||||
|
||||
# ifndef HUGE_VALF
|
||||
# define HUGE_VALF (__builtin_huge_valf())
|
||||
# endif
|
||||
|
||||
# ifndef HUGE_VALL
|
||||
# define HUGE_VALL (__builtin_huge_vall())
|
||||
# endif
|
||||
|
||||
# ifndef INFINITY
|
||||
# define INFINITY (__builtin_inff())
|
||||
# endif
|
||||
|
||||
# ifndef NAN
|
||||
# define NAN (__builtin_nanf(""))
|
||||
# endif
|
||||
|
||||
#else /* !gcc >= 3.3 */
|
||||
|
||||
/* No builtins. Use fixed defines instead. (All 3 HUGE plus the INFINITY
|
||||
* and NAN macros are required to be constant expressions. Using a variable--
|
||||
* even a static const--does not meet this requirement, as it cannot be
|
||||
* evaluated at translation time.)
|
||||
* The infinities are done using numbers that are far in excess of
|
||||
* something that would be expected to be encountered in a floating-point
|
||||
* implementation. (A more certain way uses values from float.h, but that is
|
||||
* avoided because system includes are not supposed to include each other.)
|
||||
* This method might produce warnings from some compilers. (It does in
|
||||
* newer GCCs, but not for ones that would hit this #else.) If this happens,
|
||||
* please report details to the Newlib mailing list. */
|
||||
|
||||
#ifndef HUGE_VAL
|
||||
#define HUGE_VAL (1.0e999999999)
|
||||
#endif
|
||||
|
||||
#ifndef HUGE_VALF
|
||||
#define HUGE_VALF (1.0e999999999F)
|
||||
#endif
|
||||
|
||||
#if !defined(HUGE_VALL) && defined(_HAVE_LONG_DOUBLE)
|
||||
#define HUGE_VALL (1.0e999999999L)
|
||||
#endif
|
||||
|
||||
#if !defined(INFINITY)
|
||||
#define INFINITY (HUGE_VALF)
|
||||
#endif
|
||||
|
||||
#if !defined(NAN)
|
||||
#if defined(__GNUC__) && defined(__cplusplus)
|
||||
/* Exception: older g++ versions warn about the divide by 0 used in the
|
||||
* normal case (even though older gccs do not). This trick suppresses the
|
||||
* warning, but causes errors for plain gcc, so is only used in the one
|
||||
* special case. */
|
||||
static const union { __ULong __i[1]; float __d; } __Nanf = {0x7FC00000};
|
||||
#define NAN (__Nanf.__d)
|
||||
#else
|
||||
#define NAN (0.0F/0.0F)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* !gcc >= 3.3 */
|
||||
|
||||
/* Reentrant ANSI C functions. */
|
||||
|
||||
#ifndef __math_68881
|
||||
extern double atan _PARAMS((double));
|
||||
extern double cos _PARAMS((double));
|
||||
extern double sin _PARAMS((double));
|
||||
extern double tan _PARAMS((double));
|
||||
extern double tanh _PARAMS((double));
|
||||
extern double frexp _PARAMS((double, int *));
|
||||
extern double modf _PARAMS((double, double *));
|
||||
extern double ceil _PARAMS((double));
|
||||
extern double fabs _PARAMS((double));
|
||||
extern double floor _PARAMS((double));
|
||||
#endif /* ! defined (__math_68881) */
|
||||
|
||||
/* Non reentrant ANSI C functions. */
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
#ifndef __math_68881
|
||||
extern double acos _PARAMS((double));
|
||||
extern double asin _PARAMS((double));
|
||||
extern double atan2 _PARAMS((double, double));
|
||||
extern double cosh _PARAMS((double));
|
||||
extern double sinh _PARAMS((double));
|
||||
extern double exp _PARAMS((double));
|
||||
extern double ldexp _PARAMS((double, int));
|
||||
extern double log _PARAMS((double));
|
||||
extern double log10 _PARAMS((double));
|
||||
extern double pow _PARAMS((double, double));
|
||||
extern double sqrt _PARAMS((double));
|
||||
extern double fmod _PARAMS((double, double));
|
||||
#endif /* ! defined (__math_68881) */
|
||||
#endif /* ! defined (_REENT_ONLY) */
|
||||
|
||||
#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
|
||||
|
||||
/* ISO C99 types and macros. */
|
||||
|
||||
/* FIXME: FLT_EVAL_METHOD should somehow be gotten from float.h (which is hard,
|
||||
* considering that the standard says the includes it defines should not
|
||||
* include other includes that it defines) and that value used. (This can be
|
||||
* solved, but autoconf has a bug which makes the solution more difficult, so
|
||||
* it has been skipped for now.) */
|
||||
#if !defined(FLT_EVAL_METHOD) && defined(__FLT_EVAL_METHOD__)
|
||||
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
|
||||
#define __TMP_FLT_EVAL_METHOD
|
||||
#endif /* FLT_EVAL_METHOD */
|
||||
#if defined FLT_EVAL_METHOD
|
||||
#if FLT_EVAL_METHOD == 0
|
||||
typedef float float_t;
|
||||
typedef double double_t;
|
||||
#elif FLT_EVAL_METHOD == 1
|
||||
typedef double float_t;
|
||||
typedef double double_t;
|
||||
#elif FLT_EVAL_METHOD == 2
|
||||
typedef long double float_t;
|
||||
typedef long double double_t;
|
||||
#else
|
||||
/* Implementation-defined. Assume float_t and double_t have been
|
||||
* defined previously for this configuration (e.g. config.h). */
|
||||
#endif
|
||||
#else
|
||||
/* Assume basic definitions. */
|
||||
typedef float float_t;
|
||||
typedef double double_t;
|
||||
#endif
|
||||
#if defined(__TMP_FLT_EVAL_METHOD)
|
||||
#undef FLT_EVAL_METHOD
|
||||
#endif
|
||||
|
||||
#define FP_NAN 0
|
||||
#define FP_INFINITE 1
|
||||
#define FP_ZERO 2
|
||||
#define FP_SUBNORMAL 3
|
||||
#define FP_NORMAL 4
|
||||
|
||||
#ifndef FP_ILOGB0
|
||||
# define FP_ILOGB0 (-INT_MAX)
|
||||
#endif
|
||||
#ifndef FP_ILOGBNAN
|
||||
# define FP_ILOGBNAN INT_MAX
|
||||
#endif
|
||||
|
||||
#ifndef MATH_ERRNO
|
||||
# define MATH_ERRNO 1
|
||||
#endif
|
||||
#ifndef MATH_ERREXCEPT
|
||||
# define MATH_ERREXCEPT 2
|
||||
#endif
|
||||
#ifndef math_errhandling
|
||||
# define math_errhandling MATH_ERRNO
|
||||
#endif
|
||||
|
||||
extern int __isinff (float x);
|
||||
extern int __isinfd (double x);
|
||||
extern int __isnanf (float x);
|
||||
extern int __isnand (double x);
|
||||
extern int __fpclassifyf (float x);
|
||||
extern int __fpclassifyd (double x);
|
||||
extern int __signbitf (float x);
|
||||
extern int __signbitd (double x);
|
||||
|
||||
#define fpclassify(__x) \
|
||||
((sizeof(__x) == sizeof(float)) ? __fpclassifyf(__x) : \
|
||||
__fpclassifyd(__x))
|
||||
|
||||
#ifndef isfinite
|
||||
#define isfinite(__y) \
|
||||
(__extension__ ({int __cy = fpclassify(__y); \
|
||||
__cy != FP_INFINITE && __cy != FP_NAN;}))
|
||||
#endif
|
||||
|
||||
/* Note: isinf and isnan were once functions in newlib that took double
|
||||
* arguments. C99 specifies that these names are reserved for macros
|
||||
* supporting multiple floating point types. Thus, they are
|
||||
* now defined as macros. Implementations of the old functions
|
||||
* taking double arguments still exist for compatibility purposes
|
||||
* (prototypes for them are in <ieeefp.h>). */
|
||||
#ifndef isinf
|
||||
#define isinf(y) (fpclassify(y) == FP_INFINITE)
|
||||
#endif
|
||||
|
||||
#ifndef isnan
|
||||
#define isnan(y) (fpclassify(y) == FP_NAN)
|
||||
#endif
|
||||
|
||||
#define isnormal(y) (fpclassify(y) == FP_NORMAL)
|
||||
#define signbit(__x) \
|
||||
((sizeof(__x) == sizeof(float)) ? __signbitf(__x) : \
|
||||
__signbitd(__x))
|
||||
|
||||
#define isgreater(x,y) \
|
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x > __y);}))
|
||||
#define isgreaterequal(x,y) \
|
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x >= __y);}))
|
||||
#define isless(x,y) \
|
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x < __y);}))
|
||||
#define islessequal(x,y) \
|
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x <= __y);}))
|
||||
#define islessgreater(x,y) \
|
||||
(__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); \
|
||||
!isunordered(__x,__y) && (__x < __y || __x > __y);}))
|
||||
|
||||
#define isunordered(a,b) \
|
||||
(__extension__ ({__typeof__(a) __a = (a); __typeof__(b) __b = (b); \
|
||||
fpclassify(__a) == FP_NAN || fpclassify(__b) == FP_NAN;}))
|
||||
|
||||
/* Non ANSI double precision functions. */
|
||||
|
||||
extern double infinity _PARAMS((void));
|
||||
extern double nan _PARAMS((const char *));
|
||||
extern int finite _PARAMS((double));
|
||||
extern double copysign _PARAMS((double, double));
|
||||
extern double logb _PARAMS((double));
|
||||
extern int ilogb _PARAMS((double));
|
||||
|
||||
extern double asinh _PARAMS((double));
|
||||
extern double cbrt _PARAMS((double));
|
||||
extern double nextafter _PARAMS((double, double));
|
||||
extern double rint _PARAMS((double));
|
||||
extern double scalbn _PARAMS((double, int));
|
||||
|
||||
extern double exp2 _PARAMS((double));
|
||||
extern double scalbln _PARAMS((double, long int));
|
||||
extern double tgamma _PARAMS((double));
|
||||
extern double nearbyint _PARAMS((double));
|
||||
extern long int lrint _PARAMS((double));
|
||||
extern long long int llrint _PARAMS((double));
|
||||
extern double round _PARAMS((double));
|
||||
extern long int lround _PARAMS((double));
|
||||
extern long long int llround _PARAMS((double));
|
||||
extern double trunc _PARAMS((double));
|
||||
extern double remquo _PARAMS((double, double, int *));
|
||||
extern double fdim _PARAMS((double, double));
|
||||
extern double fmax _PARAMS((double, double));
|
||||
extern double fmin _PARAMS((double, double));
|
||||
extern double fma _PARAMS((double, double, double));
|
||||
|
||||
#ifndef __math_68881
|
||||
extern double log1p _PARAMS((double));
|
||||
extern double expm1 _PARAMS((double));
|
||||
#endif /* ! defined (__math_68881) */
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
extern double acosh _PARAMS((double));
|
||||
extern double atanh _PARAMS((double));
|
||||
extern double remainder _PARAMS((double, double));
|
||||
extern double gamma _PARAMS((double));
|
||||
extern double lgamma _PARAMS((double));
|
||||
extern double erf _PARAMS((double));
|
||||
extern double erfc _PARAMS((double));
|
||||
extern double log2 _PARAMS((double));
|
||||
#if !defined(__cplusplus)
|
||||
#define log2(x) (log (x) / _M_LN2)
|
||||
#endif
|
||||
|
||||
#ifndef __math_68881
|
||||
extern double hypot _PARAMS((double, double));
|
||||
#endif
|
||||
|
||||
#endif /* ! defined (_REENT_ONLY) */
|
||||
|
||||
/* Single precision versions of ANSI functions. */
|
||||
|
||||
extern float atanf _PARAMS((float));
|
||||
extern float cosf _PARAMS((float));
|
||||
extern float sinf _PARAMS((float));
|
||||
extern float tanf _PARAMS((float));
|
||||
extern float tanhf _PARAMS((float));
|
||||
extern float frexpf _PARAMS((float, int *));
|
||||
extern float modff _PARAMS((float, float *));
|
||||
extern float ceilf _PARAMS((float));
|
||||
extern float fabsf _PARAMS((float));
|
||||
extern float floorf _PARAMS((float));
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
extern float acosf _PARAMS((float));
|
||||
extern float asinf _PARAMS((float));
|
||||
extern float atan2f _PARAMS((float, float));
|
||||
extern float coshf _PARAMS((float));
|
||||
extern float sinhf _PARAMS((float));
|
||||
extern float expf _PARAMS((float));
|
||||
extern float ldexpf _PARAMS((float, int));
|
||||
extern float logf _PARAMS((float));
|
||||
extern float log10f _PARAMS((float));
|
||||
extern float powf _PARAMS((float, float));
|
||||
extern float sqrtf _PARAMS((float));
|
||||
extern float fmodf _PARAMS((float, float));
|
||||
#endif /* ! defined (_REENT_ONLY) */
|
||||
|
||||
/* Other single precision functions. */
|
||||
|
||||
extern float exp2f _PARAMS((float));
|
||||
extern float scalblnf _PARAMS((float, long int));
|
||||
extern float tgammaf _PARAMS((float));
|
||||
extern float nearbyintf _PARAMS((float));
|
||||
extern long int lrintf _PARAMS((float));
|
||||
extern long long int llrintf _PARAMS((float));
|
||||
extern float roundf _PARAMS((float));
|
||||
extern long int lroundf _PARAMS((float));
|
||||
extern long long int llroundf _PARAMS((float));
|
||||
extern float truncf _PARAMS((float));
|
||||
extern float remquof _PARAMS((float, float, int *));
|
||||
extern float fdimf _PARAMS((float, float));
|
||||
extern float fmaxf _PARAMS((float, float));
|
||||
extern float fminf _PARAMS((float, float));
|
||||
extern float fmaf _PARAMS((float, float, float));
|
||||
|
||||
extern float infinityf _PARAMS((void));
|
||||
extern float nanf _PARAMS((const char *));
|
||||
extern int finitef _PARAMS((float));
|
||||
extern float copysignf _PARAMS((float, float));
|
||||
extern float logbf _PARAMS((float));
|
||||
extern int ilogbf _PARAMS((float));
|
||||
|
||||
extern float asinhf _PARAMS((float));
|
||||
extern float cbrtf _PARAMS((float));
|
||||
extern float nextafterf _PARAMS((float, float));
|
||||
extern float rintf _PARAMS((float));
|
||||
extern float scalbnf _PARAMS((float, int));
|
||||
extern float log1pf _PARAMS((float));
|
||||
extern float expm1f _PARAMS((float));
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
extern float acoshf _PARAMS((float));
|
||||
extern float atanhf _PARAMS((float));
|
||||
extern float remainderf _PARAMS((float, float));
|
||||
extern float gammaf _PARAMS((float));
|
||||
extern float lgammaf _PARAMS((float));
|
||||
extern float erff _PARAMS((float));
|
||||
extern float erfcf _PARAMS((float));
|
||||
extern float log2f _PARAMS((float));
|
||||
extern float hypotf _PARAMS((float, float));
|
||||
#endif /* ! defined (_REENT_ONLY) */
|
||||
|
||||
/* On platforms where long double equals double. */
|
||||
#ifdef _LDBL_EQ_DBL
|
||||
/* Reentrant ANSI C functions. */
|
||||
#ifndef __math_68881
|
||||
extern long double atanl _PARAMS((long double));
|
||||
extern long double cosl _PARAMS((long double));
|
||||
extern long double sinl _PARAMS((long double));
|
||||
extern long double tanl _PARAMS((long double));
|
||||
extern long double tanhl _PARAMS((long double));
|
||||
extern long double frexpl _PARAMS((long double, int *));
|
||||
extern long double modfl _PARAMS((long double, long double *));
|
||||
extern long double ceill _PARAMS((long double));
|
||||
extern long double fabsl _PARAMS((long double));
|
||||
extern long double floorl _PARAMS((long double));
|
||||
extern long double log1pl _PARAMS((long double));
|
||||
extern long double expm1l _PARAMS((long double));
|
||||
#endif /* ! defined (__math_68881) */
|
||||
/* Non reentrant ANSI C functions. */
|
||||
#ifndef _REENT_ONLY
|
||||
#ifndef __math_68881
|
||||
extern long double acosl _PARAMS((long double));
|
||||
extern long double asinl _PARAMS((long double));
|
||||
extern long double atan2l _PARAMS((long double, long double));
|
||||
extern long double coshl _PARAMS((long double));
|
||||
extern long double sinhl _PARAMS((long double));
|
||||
extern long double expl _PARAMS((long double));
|
||||
extern long double ldexpl _PARAMS((long double, int));
|
||||
extern long double logl _PARAMS((long double));
|
||||
extern long double log10l _PARAMS((long double));
|
||||
extern long double powl _PARAMS((long double, long double));
|
||||
extern long double sqrtl _PARAMS((long double));
|
||||
extern long double fmodl _PARAMS((long double, long double));
|
||||
extern long double hypotl _PARAMS((long double, long double));
|
||||
#endif /* ! defined (__math_68881) */
|
||||
#endif /* ! defined (_REENT_ONLY) */
|
||||
extern long double copysignl _PARAMS((long double, long double));
|
||||
extern long double nanl _PARAMS((const char *));
|
||||
extern int ilogbl _PARAMS((long double));
|
||||
extern long double asinhl _PARAMS((long double));
|
||||
extern long double cbrtl _PARAMS((long double));
|
||||
extern long double nextafterl _PARAMS((long double, long double));
|
||||
extern float nexttowardf _PARAMS((float, long double));
|
||||
extern double nexttoward _PARAMS((double, long double));
|
||||
extern long double nexttowardl _PARAMS((long double, long double));
|
||||
extern long double logbl _PARAMS((long double));
|
||||
extern long double log2l _PARAMS((long double));
|
||||
extern long double rintl _PARAMS((long double));
|
||||
extern long double scalbnl _PARAMS((long double, int));
|
||||
extern long double exp2l _PARAMS((long double));
|
||||
extern long double scalblnl _PARAMS((long double, long));
|
||||
extern long double tgammal _PARAMS((long double));
|
||||
extern long double nearbyintl _PARAMS((long double));
|
||||
extern long int lrintl _PARAMS((long double));
|
||||
extern long long int llrintl _PARAMS((long double));
|
||||
extern long double roundl _PARAMS((long double));
|
||||
extern long lroundl _PARAMS((long double));
|
||||
extern long long int llroundl _PARAMS((long double));
|
||||
extern long double truncl _PARAMS((long double));
|
||||
extern long double remquol _PARAMS((long double, long double, int *));
|
||||
extern long double fdiml _PARAMS((long double, long double));
|
||||
extern long double fmaxl _PARAMS((long double, long double));
|
||||
extern long double fminl _PARAMS((long double, long double));
|
||||
extern long double fmal _PARAMS((long double, long double, long double));
|
||||
#ifndef _REENT_ONLY
|
||||
extern long double acoshl _PARAMS((long double));
|
||||
extern long double atanhl _PARAMS((long double));
|
||||
extern long double remainderl _PARAMS((long double, long double));
|
||||
extern long double lgammal _PARAMS((long double));
|
||||
extern long double erfl _PARAMS((long double));
|
||||
extern long double erfcl _PARAMS((long double));
|
||||
#endif /* ! defined (_REENT_ONLY) */
|
||||
#else /* !_LDBL_EQ_DBL */
|
||||
#ifdef __i386__
|
||||
/* Other long double precision functions. */
|
||||
extern _LONG_DOUBLE rintl _PARAMS((_LONG_DOUBLE));
|
||||
extern long int lrintl _PARAMS((_LONG_DOUBLE));
|
||||
extern long long int llrintl _PARAMS((_LONG_DOUBLE));
|
||||
#endif /* __i386__ */
|
||||
#endif /* !_LDBL_EQ_DBL */
|
||||
|
||||
#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) */
|
||||
|
||||
#if !defined (__STRICT_ANSI__) || defined(__cplusplus)
|
||||
|
||||
extern double drem _PARAMS((double, double));
|
||||
extern void sincos _PARAMS((double, double *, double *));
|
||||
extern double gamma_r _PARAMS((double, int *));
|
||||
extern double lgamma_r _PARAMS((double, int *));
|
||||
|
||||
extern double y0 _PARAMS((double));
|
||||
extern double y1 _PARAMS((double));
|
||||
extern double yn _PARAMS((int, double));
|
||||
extern double j0 _PARAMS((double));
|
||||
extern double j1 _PARAMS((double));
|
||||
extern double jn _PARAMS((int, double));
|
||||
|
||||
extern float dremf _PARAMS((float, float));
|
||||
extern void sincosf _PARAMS((float, float *, float *));
|
||||
extern float gammaf_r _PARAMS((float, int *));
|
||||
extern float lgammaf_r _PARAMS((float, int *));
|
||||
|
||||
extern float y0f _PARAMS((float));
|
||||
extern float y1f _PARAMS((float));
|
||||
extern float ynf _PARAMS((int, float));
|
||||
extern float j0f _PARAMS((float));
|
||||
extern float j1f _PARAMS((float));
|
||||
extern float jnf _PARAMS((int, float));
|
||||
|
||||
/* GNU extensions */
|
||||
# ifndef exp10
|
||||
extern double exp10 _PARAMS((double));
|
||||
# endif
|
||||
# ifndef pow10
|
||||
extern double pow10 _PARAMS((double));
|
||||
# endif
|
||||
# ifndef exp10f
|
||||
extern float exp10f _PARAMS((float));
|
||||
# endif
|
||||
# ifndef pow10f
|
||||
extern float pow10f _PARAMS((float));
|
||||
# endif
|
||||
|
||||
#endif /* !defined (__STRICT_ANSI__) || defined(__cplusplus) */
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
|
||||
/* The gamma functions use a global variable, signgam. */
|
||||
#ifndef _REENT_ONLY
|
||||
#define signgam (*__signgam())
|
||||
extern int *__signgam _PARAMS((void));
|
||||
#endif /* ! defined (_REENT_ONLY) */
|
||||
|
||||
#define __signgam_r(ptr) _REENT_SIGNGAM(ptr)
|
||||
|
||||
/* The exception structure passed to the matherr routine. */
|
||||
/* We have a problem when using C++ since `exception' is a reserved
|
||||
name in C++. */
|
||||
#ifdef __cplusplus
|
||||
struct __exception
|
||||
#else
|
||||
struct exception
|
||||
#endif
|
||||
{
|
||||
int type;
|
||||
char *name;
|
||||
double arg1;
|
||||
double arg2;
|
||||
double retval;
|
||||
int err;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern int matherr _PARAMS((struct __exception *e));
|
||||
#else
|
||||
extern int matherr _PARAMS((struct exception *e));
|
||||
#endif
|
||||
|
||||
/* Values for the type field of struct exception. */
|
||||
|
||||
#define DOMAIN 1
|
||||
#define SING 2
|
||||
#define OVERFLOW 3
|
||||
#define UNDERFLOW 4
|
||||
#define TLOSS 5
|
||||
#define PLOSS 6
|
||||
|
||||
#endif /* ! defined (__STRICT_ANSI__) */
|
||||
|
||||
/* Useful constants. */
|
||||
|
||||
#if !defined(__STRICT_ANSI__) || ((_XOPEN_SOURCE - 0) >= 500)
|
||||
|
||||
#define MAXFLOAT 3.40282347e+38F
|
||||
|
||||
#define M_E 2.7182818284590452354
|
||||
#define M_LOG2E 1.4426950408889634074
|
||||
#define M_LOG10E 0.43429448190325182765
|
||||
#define M_LN2 _M_LN2
|
||||
#define M_LN10 2.30258509299404568402
|
||||
#define M_PI 3.14159265358979323846
|
||||
#define M_PI_2 1.57079632679489661923
|
||||
#define M_PI_4 0.78539816339744830962
|
||||
#define M_1_PI 0.31830988618379067154
|
||||
#define M_2_PI 0.63661977236758134308
|
||||
#define M_2_SQRTPI 1.12837916709551257390
|
||||
#define M_SQRT2 1.41421356237309504880
|
||||
#define M_SQRT1_2 0.70710678118654752440
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
|
||||
#define M_TWOPI (M_PI * 2.0)
|
||||
#define M_3PI_4 2.3561944901923448370E0
|
||||
#define M_SQRTPI 1.77245385090551602792981
|
||||
#define M_LN2LO 1.9082149292705877000E-10
|
||||
#define M_LN2HI 6.9314718036912381649E-1
|
||||
#define M_SQRT3 1.73205080756887719000
|
||||
#define M_IVLN10 0.43429448190325182765 /* 1 / log(10) */
|
||||
#define M_LOG2_E _M_LN2
|
||||
#define M_INVLN2 1.4426950408889633870E0 /* 1 / log(2) */
|
||||
|
||||
/* Global control over fdlibm error handling. */
|
||||
|
||||
enum __fdlibm_version
|
||||
{
|
||||
__fdlibm_ieee = -1,
|
||||
__fdlibm_svid,
|
||||
__fdlibm_xopen,
|
||||
__fdlibm_posix
|
||||
};
|
||||
|
||||
#define _LIB_VERSION_TYPE enum __fdlibm_version
|
||||
#define _LIB_VERSION __fdlib_version
|
||||
|
||||
extern __IMPORT _LIB_VERSION_TYPE _LIB_VERSION;
|
||||
|
||||
#define _IEEE_ __fdlibm_ieee
|
||||
#define _SVID_ __fdlibm_svid
|
||||
#define _XOPEN_ __fdlibm_xopen
|
||||
#define _POSIX_ __fdlibm_posix
|
||||
|
||||
#endif /* ! defined (__STRICT_ANSI__) */
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#ifdef __FAST_MATH__
|
||||
#include <machine/fastmath.h>
|
||||
#endif
|
||||
|
||||
#endif /* _MATH_H_ */
|
|
@ -1,201 +0,0 @@
|
|||
/* newlib.h. Generated from newlib.hin by configure. */
|
||||
/* newlib.hin. Manually edited from the output of autoheader to
|
||||
remove all PACKAGE_ macros which will collide with any user
|
||||
package using newlib header files and having its own package name,
|
||||
version, etc... */
|
||||
#ifndef __NEWLIB_H__
|
||||
|
||||
#define __NEWLIB_H__ 1
|
||||
|
||||
/* EL/IX level */
|
||||
/* #undef _ELIX_LEVEL */
|
||||
|
||||
/* Newlib version */
|
||||
#define _NEWLIB_VERSION "2.2.0"
|
||||
|
||||
/* C99 formats support (such as %a, %zu, ...) in IO functions like
|
||||
* printf/scanf enabled */
|
||||
/* #undef _WANT_IO_C99_FORMATS */
|
||||
|
||||
/* long long type support in IO functions like printf/scanf enabled */
|
||||
/* #undef _WANT_IO_LONG_LONG */
|
||||
|
||||
/* Register application finalization function using atexit. */
|
||||
/* #undef _WANT_REGISTER_FINI */
|
||||
|
||||
/* long double type support in IO functions like printf/scanf enabled */
|
||||
/* #undef _WANT_IO_LONG_DOUBLE */
|
||||
|
||||
/* Positional argument support in printf functions enabled. */
|
||||
/* #undef _WANT_IO_POS_ARGS */
|
||||
|
||||
/* Optional reentrant struct support. Used mostly on platforms with
|
||||
very restricted storage. */
|
||||
#define _WANT_REENT_SMALL 1
|
||||
|
||||
/* Multibyte supported */
|
||||
/* #undef _MB_CAPABLE */
|
||||
|
||||
/* MB_LEN_MAX */
|
||||
#define _MB_LEN_MAX 1
|
||||
|
||||
/* ICONV enabled */
|
||||
/* #undef _ICONV_ENABLED */
|
||||
|
||||
/* Enable ICONV external CCS files loading capabilities */
|
||||
/* #undef _ICONV_ENABLE_EXTERNAL_CCS */
|
||||
|
||||
/* Define if the linker supports .preinit_array/.init_array/.fini_array
|
||||
* sections. */
|
||||
#define HAVE_INITFINI_ARRAY 1
|
||||
|
||||
/* True if atexit() may dynamically allocate space for cleanup
|
||||
functions. */
|
||||
#define _ATEXIT_DYNAMIC_ALLOC 1
|
||||
|
||||
/* True if long double supported. */
|
||||
#define _HAVE_LONG_DOUBLE 1
|
||||
|
||||
/* Define if compiler supports -fno-tree-loop-distribute-patterns. */
|
||||
#define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1
|
||||
|
||||
/* True if long double supported and it is equal to double. */
|
||||
#define _LDBL_EQ_DBL 1
|
||||
|
||||
/* Define if uintptr_t is unsigned long on this architecture */
|
||||
/* #undef _UINTPTR_EQ_ULONG */
|
||||
|
||||
/* Define if uintptr_t is unsigned long long on this architecture */
|
||||
/* #undef _UINTPTR_EQ_ULONGLONG */
|
||||
|
||||
/* Define if ivo supported in streamio. */
|
||||
#define _FVWRITE_IN_STREAMIO 1
|
||||
|
||||
/* Define if fseek functions support seek optimization. */
|
||||
#define _FSEEK_OPTIMIZATION 1
|
||||
|
||||
/* Define if wide char orientation is supported. */
|
||||
#define _WIDE_ORIENT 1
|
||||
|
||||
/* Define if unbuffered stream file optimization is supported. */
|
||||
#define _UNBUF_STREAM_OPT 1
|
||||
|
||||
/* Define if lite version of exit supported. */
|
||||
/* #undef _LITE_EXIT */
|
||||
|
||||
/* Define if declare atexit data as global. */
|
||||
/* #undef _REENT_GLOBAL_ATEXIT */
|
||||
|
||||
/* Define if small footprint nano-formatted-IO implementation used. */
|
||||
#define _NANO_FORMATTED_IO 1
|
||||
|
||||
/*
|
||||
* Iconv encodings enabled ("to" direction)
|
||||
*/
|
||||
/* #undef _ICONV_TO_ENCODING_BIG5 */
|
||||
/* #undef _ICONV_TO_ENCODING_CP775 */
|
||||
/* #undef _ICONV_TO_ENCODING_CP850 */
|
||||
/* #undef _ICONV_TO_ENCODING_CP852 */
|
||||
/* #undef _ICONV_TO_ENCODING_CP855 */
|
||||
/* #undef _ICONV_TO_ENCODING_CP866 */
|
||||
/* #undef _ICONV_TO_ENCODING_EUC_JP */
|
||||
/* #undef _ICONV_TO_ENCODING_EUC_TW */
|
||||
/* #undef _ICONV_TO_ENCODING_EUC_KR */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_1 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_10 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_11 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_13 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_14 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_15 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_2 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_3 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_4 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_5 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_6 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_7 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_8 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_8859_9 */
|
||||
/* #undef _ICONV_TO_ENCODING_ISO_IR_111 */
|
||||
/* #undef _ICONV_TO_ENCODING_KOI8_R */
|
||||
/* #undef _ICONV_TO_ENCODING_KOI8_RU */
|
||||
/* #undef _ICONV_TO_ENCODING_KOI8_U */
|
||||
/* #undef _ICONV_TO_ENCODING_KOI8_UNI */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_2 */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_2_INTERNAL */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_2BE */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_2LE */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_4 */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_4_INTERNAL */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_4BE */
|
||||
/* #undef _ICONV_TO_ENCODING_UCS_4LE */
|
||||
/* #undef _ICONV_TO_ENCODING_US_ASCII */
|
||||
/* #undef _ICONV_TO_ENCODING_UTF_16 */
|
||||
/* #undef _ICONV_TO_ENCODING_UTF_16BE */
|
||||
/* #undef _ICONV_TO_ENCODING_UTF_16LE */
|
||||
/* #undef _ICONV_TO_ENCODING_UTF_8 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1250 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1251 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1252 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1253 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1254 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1255 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1256 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1257 */
|
||||
/* #undef _ICONV_TO_ENCODING_WIN_1258 */
|
||||
|
||||
/*
|
||||
* Iconv encodings enabled ("from" direction)
|
||||
*/
|
||||
/* #undef _ICONV_FROM_ENCODING_BIG5 */
|
||||
/* #undef _ICONV_FROM_ENCODING_CP775 */
|
||||
/* #undef _ICONV_FROM_ENCODING_CP850 */
|
||||
/* #undef _ICONV_FROM_ENCODING_CP852 */
|
||||
/* #undef _ICONV_FROM_ENCODING_CP855 */
|
||||
/* #undef _ICONV_FROM_ENCODING_CP866 */
|
||||
/* #undef _ICONV_FROM_ENCODING_EUC_JP */
|
||||
/* #undef _ICONV_FROM_ENCODING_EUC_TW */
|
||||
/* #undef _ICONV_FROM_ENCODING_EUC_KR */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_1 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_10 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_11 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_13 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_14 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_15 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_2 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_3 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_4 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_5 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_6 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_7 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_8 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_8859_9 */
|
||||
/* #undef _ICONV_FROM_ENCODING_ISO_IR_111 */
|
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_R */
|
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_RU */
|
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_U */
|
||||
/* #undef _ICONV_FROM_ENCODING_KOI8_UNI */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2 */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2_INTERNAL */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2BE */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_2LE */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4 */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4_INTERNAL */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4BE */
|
||||
/* #undef _ICONV_FROM_ENCODING_UCS_4LE */
|
||||
/* #undef _ICONV_FROM_ENCODING_US_ASCII */
|
||||
/* #undef _ICONV_FROM_ENCODING_UTF_16 */
|
||||
/* #undef _ICONV_FROM_ENCODING_UTF_16BE */
|
||||
/* #undef _ICONV_FROM_ENCODING_UTF_16LE */
|
||||
/* #undef _ICONV_FROM_ENCODING_UTF_8 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1250 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1251 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1252 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1253 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1254 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1255 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1256 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1257 */
|
||||
/* #undef _ICONV_FROM_ENCODING_WIN_1258 */
|
||||
|
||||
#endif /* !__NEWLIB_H__ */
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
#ifndef _PATHS_H_
|
||||
#define _PATHS_H_
|
||||
|
||||
#define _PATH_DEV "/dev/"
|
||||
#define _PATH_DEVNULL "/dev/null"
|
||||
#define _PATH_DEVZERO "/dev/zero"
|
||||
#define _PATH_BSHELL "/bin/sh"
|
||||
|
||||
#endif /* _PATHS_H_ */
|
|
@ -1,431 +0,0 @@
|
|||
/* pthread.h
|
||||
*
|
||||
* Written by Joel Sherrill <joel@OARcorp.com>.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2013.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose without fee is hereby granted, provided that this entire notice
|
||||
* is included in all copies of any software which is or includes a copy
|
||||
* or modification of this software.
|
||||
*
|
||||
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
|
||||
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
|
||||
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __PTHREAD_h
|
||||
#define __PTHREAD_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#if defined(_POSIX_THREADS)
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
#include <sys/sched.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
struct _pthread_cleanup_context {
|
||||
void (*_routine)(void *);
|
||||
void *_arg;
|
||||
int _canceltype;
|
||||
struct _pthread_cleanup_context *_previous;
|
||||
};
|
||||
|
||||
/* Register Fork Handlers */
|
||||
int _EXFUN(pthread_atfork,(void (*prepare)(void), void (*parent)(void),
|
||||
void (*child)(void)));
|
||||
|
||||
/* Mutex Initialization Attributes, P1003.1c/Draft 10, p. 81 */
|
||||
|
||||
int _EXFUN(pthread_mutexattr_init, (pthread_mutexattr_t *__attr));
|
||||
int _EXFUN(pthread_mutexattr_destroy, (pthread_mutexattr_t *__attr));
|
||||
int _EXFUN(pthread_mutexattr_getpshared,
|
||||
(_CONST pthread_mutexattr_t *__attr, int *__pshared));
|
||||
int _EXFUN(pthread_mutexattr_setpshared,
|
||||
(pthread_mutexattr_t *__attr, int __pshared));
|
||||
|
||||
#if defined(_UNIX98_THREAD_MUTEX_ATTRIBUTES)
|
||||
|
||||
/* Single UNIX Specification 2 Mutex Attributes types */
|
||||
|
||||
int _EXFUN(pthread_mutexattr_gettype,
|
||||
(_CONST pthread_mutexattr_t *__attr, int *__kind));
|
||||
int _EXFUN(pthread_mutexattr_settype,
|
||||
(pthread_mutexattr_t *__attr, int __kind));
|
||||
|
||||
#endif
|
||||
|
||||
/* Initializing and Destroying a Mutex, P1003.1c/Draft 10, p. 87 */
|
||||
|
||||
int _EXFUN(pthread_mutex_init,
|
||||
(pthread_mutex_t *__mutex, _CONST pthread_mutexattr_t *__attr));
|
||||
int _EXFUN(pthread_mutex_destroy, (pthread_mutex_t *__mutex));
|
||||
|
||||
/* This is used to statically initialize a pthread_mutex_t. Example:
|
||||
|
||||
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
*/
|
||||
|
||||
#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t) 0xFFFFFFFF)
|
||||
|
||||
/* Locking and Unlocking a Mutex, P1003.1c/Draft 10, p. 93
|
||||
NOTE: P1003.4b/D8 adds pthread_mutex_timedlock(), p. 29 */
|
||||
|
||||
int _EXFUN(pthread_mutex_lock, (pthread_mutex_t *__mutex));
|
||||
int _EXFUN(pthread_mutex_trylock, (pthread_mutex_t *__mutex));
|
||||
int _EXFUN(pthread_mutex_unlock, (pthread_mutex_t *__mutex));
|
||||
|
||||
#if defined(_POSIX_TIMEOUTS)
|
||||
|
||||
int _EXFUN(pthread_mutex_timedlock,
|
||||
(pthread_mutex_t *__mutex, _CONST struct timespec *__timeout));
|
||||
|
||||
#endif /* _POSIX_TIMEOUTS */
|
||||
|
||||
/* Condition Variable Initialization Attributes, P1003.1c/Draft 10, p. 96 */
|
||||
|
||||
int _EXFUN(pthread_condattr_init, (pthread_condattr_t *__attr));
|
||||
int _EXFUN(pthread_condattr_destroy, (pthread_condattr_t *__attr));
|
||||
int _EXFUN(pthread_condattr_getpshared,
|
||||
(_CONST pthread_condattr_t *__attr, int *__pshared));
|
||||
int _EXFUN(pthread_condattr_setpshared,
|
||||
(pthread_condattr_t *__attr, int __pshared));
|
||||
|
||||
/* Initializing and Destroying a Condition Variable, P1003.1c/Draft 10, p. 87 */
|
||||
|
||||
int _EXFUN(pthread_cond_init,
|
||||
(pthread_cond_t *__cond, _CONST pthread_condattr_t *__attr));
|
||||
int _EXFUN(pthread_cond_destroy, (pthread_cond_t *__mutex));
|
||||
|
||||
/* This is used to statically initialize a pthread_cond_t. Example:
|
||||
|
||||
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
|
||||
*/
|
||||
|
||||
#define PTHREAD_COND_INITIALIZER ((pthread_cond_t) 0xFFFFFFFF)
|
||||
|
||||
/* Broadcasting and Signaling a Condition, P1003.1c/Draft 10, p. 101 */
|
||||
|
||||
int _EXFUN(pthread_cond_signal, (pthread_cond_t *__cond));
|
||||
int _EXFUN(pthread_cond_broadcast, (pthread_cond_t *__cond));
|
||||
|
||||
/* Waiting on a Condition, P1003.1c/Draft 10, p. 105 */
|
||||
|
||||
int _EXFUN(pthread_cond_wait,
|
||||
(pthread_cond_t *__cond, pthread_mutex_t *__mutex));
|
||||
|
||||
int _EXFUN(pthread_cond_timedwait,
|
||||
(pthread_cond_t *__cond, pthread_mutex_t *__mutex,
|
||||
_CONST struct timespec *__abstime));
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
|
||||
|
||||
/* Thread Creation Scheduling Attributes, P1003.1c/Draft 10, p. 120 */
|
||||
|
||||
int _EXFUN(pthread_attr_setscope,
|
||||
(pthread_attr_t *__attr, int __contentionscope));
|
||||
int _EXFUN(pthread_attr_getscope,
|
||||
(_CONST pthread_attr_t *__attr, int *__contentionscope));
|
||||
int _EXFUN(pthread_attr_setinheritsched,
|
||||
(pthread_attr_t *__attr, int __inheritsched));
|
||||
int _EXFUN(pthread_attr_getinheritsched,
|
||||
(_CONST pthread_attr_t *__attr, int *__inheritsched));
|
||||
int _EXFUN(pthread_attr_setschedpolicy,
|
||||
(pthread_attr_t *__attr, int __policy));
|
||||
int _EXFUN(pthread_attr_getschedpolicy,
|
||||
(_CONST pthread_attr_t *__attr, int *__policy));
|
||||
|
||||
#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
|
||||
|
||||
int _EXFUN(pthread_attr_setschedparam,
|
||||
(pthread_attr_t *__attr, _CONST struct sched_param *__param));
|
||||
int _EXFUN(pthread_attr_getschedparam,
|
||||
(_CONST pthread_attr_t *__attr, struct sched_param *__param));
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIORITY_SCHEDULING)
|
||||
|
||||
/* Dynamic Thread Scheduling Parameters Access, P1003.1c/Draft 10, p. 124 */
|
||||
|
||||
int _EXFUN(pthread_getschedparam,
|
||||
(pthread_t __pthread, int *__policy, struct sched_param *__param));
|
||||
int _EXFUN(pthread_setschedparam,
|
||||
(pthread_t __pthread, int __policy, struct sched_param *__param));
|
||||
|
||||
#endif /* defined(_POSIX_THREAD_PRIORITY_SCHEDULING) */
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIO_INHERIT) || defined(_POSIX_THREAD_PRIO_PROTECT)
|
||||
|
||||
/* Mutex Initialization Scheduling Attributes, P1003.1c/Draft 10, p. 128 */
|
||||
|
||||
int _EXFUN(pthread_mutexattr_setprotocol,
|
||||
(pthread_mutexattr_t *__attr, int __protocol));
|
||||
int _EXFUN(pthread_mutexattr_getprotocol,
|
||||
(_CONST pthread_mutexattr_t *__attr, int *__protocol));
|
||||
int _EXFUN(pthread_mutexattr_setprioceiling,
|
||||
(pthread_mutexattr_t *__attr, int __prioceiling));
|
||||
int _EXFUN(pthread_mutexattr_getprioceiling,
|
||||
(_CONST pthread_mutexattr_t *__attr, int *__prioceiling));
|
||||
|
||||
#endif /* _POSIX_THREAD_PRIO_INHERIT || _POSIX_THREAD_PRIO_PROTECT */
|
||||
|
||||
#if defined(_POSIX_THREAD_PRIO_PROTECT)
|
||||
|
||||
/* Change the Priority Ceiling of a Mutex, P1003.1c/Draft 10, p. 131 */
|
||||
|
||||
int _EXFUN(pthread_mutex_setprioceiling,
|
||||
(pthread_mutex_t *__mutex, int __prioceiling, int *__old_ceiling));
|
||||
int _EXFUN(pthread_mutex_getprioceiling,
|
||||
(pthread_mutex_t *__mutex, int *__prioceiling));
|
||||
|
||||
#endif /* _POSIX_THREAD_PRIO_PROTECT */
|
||||
|
||||
/* Thread Creation Attributes, P1003.1c/Draft 10, p, 140 */
|
||||
|
||||
int _EXFUN(pthread_attr_init, (pthread_attr_t *__attr));
|
||||
int _EXFUN(pthread_attr_destroy, (pthread_attr_t *__attr));
|
||||
int _EXFUN(pthread_attr_setstack, (pthread_attr_t *attr,
|
||||
void *__stackaddr, size_t __stacksize));
|
||||
int _EXFUN(pthread_attr_getstack, (_CONST pthread_attr_t *attr,
|
||||
void **__stackaddr, size_t *__stacksize));
|
||||
int _EXFUN(pthread_attr_getstacksize,
|
||||
(_CONST pthread_attr_t *__attr, size_t *__stacksize));
|
||||
int _EXFUN(pthread_attr_setstacksize,
|
||||
(pthread_attr_t *__attr, size_t __stacksize));
|
||||
int _EXFUN(pthread_attr_getstackaddr,
|
||||
(_CONST pthread_attr_t *__attr, void **__stackaddr));
|
||||
int _EXFUN(pthread_attr_setstackaddr,
|
||||
(pthread_attr_t *__attr, void *__stackaddr));
|
||||
int _EXFUN(pthread_attr_getdetachstate,
|
||||
(_CONST pthread_attr_t *__attr, int *__detachstate));
|
||||
int _EXFUN(pthread_attr_setdetachstate,
|
||||
(pthread_attr_t *__attr, int __detachstate));
|
||||
int _EXFUN(pthread_attr_getguardsize,
|
||||
(_CONST pthread_attr_t *__attr, size_t *__guardsize));
|
||||
int _EXFUN(pthread_attr_setguardsize,
|
||||
(pthread_attr_t *__attr, size_t __guardsize));
|
||||
|
||||
/* POSIX thread APIs beyond the POSIX standard but provided
|
||||
* in GNU/Linux. They may be provided by other OSes for
|
||||
* compatibility.
|
||||
*/
|
||||
#if defined(__GNU_VISIBLE)
|
||||
#if defined(__rtems__)
|
||||
int _EXFUN(pthread_attr_setaffinity_np,
|
||||
(pthread_attr_t *__attr, size_t __cpusetsize,
|
||||
const cpu_set_t *__cpuset));
|
||||
int _EXFUN(pthread_attr_getaffinity_np,
|
||||
(const pthread_attr_t *__attr, size_t __cpusetsize,
|
||||
cpu_set_t *__cpuset));
|
||||
|
||||
int _EXFUN(pthread_setaffinity_np,
|
||||
(pthread_t __id, size_t __cpusetsize, const cpu_set_t *__cpuset));
|
||||
int _EXFUN(pthread_getaffinity_np,
|
||||
(const pthread_t __id, size_t __cpusetsize, cpu_set_t *__cpuset));
|
||||
|
||||
int _EXFUN(pthread_getattr_np,
|
||||
(pthread_t __id, pthread_attr_t *__attr));
|
||||
#endif /* defined(__rtems__) */
|
||||
#endif /* defined(__GNU_VISIBLE) */
|
||||
|
||||
/* Thread Creation, P1003.1c/Draft 10, p. 144 */
|
||||
|
||||
int _EXFUN(pthread_create,
|
||||
(pthread_t *__pthread, _CONST pthread_attr_t *__attr,
|
||||
void *(*__start_routine)( void * ), void *__arg));
|
||||
|
||||
/* Wait for Thread Termination, P1003.1c/Draft 10, p. 147 */
|
||||
|
||||
int _EXFUN(pthread_join, (pthread_t __pthread, void **__value_ptr));
|
||||
|
||||
/* Detaching a Thread, P1003.1c/Draft 10, p. 149 */
|
||||
|
||||
int _EXFUN(pthread_detach, (pthread_t __pthread));
|
||||
|
||||
/* Thread Termination, p1003.1c/Draft 10, p. 150 */
|
||||
|
||||
void _EXFUN(pthread_exit, (void *__value_ptr));
|
||||
|
||||
/* Get Calling Thread's ID, p1003.1c/Draft 10, p. XXX */
|
||||
|
||||
pthread_t _EXFUN(pthread_self, (void));
|
||||
|
||||
/* Compare Thread IDs, p1003.1c/Draft 10, p. 153 */
|
||||
|
||||
int _EXFUN(pthread_equal, (pthread_t __t1, pthread_t __t2));
|
||||
|
||||
/* Dynamic Package Initialization */
|
||||
|
||||
/* This is used to statically initialize a pthread_once_t. Example:
|
||||
|
||||
pthread_once_t once = PTHREAD_ONCE_INIT;
|
||||
|
||||
NOTE: This is named inconsistently -- it should be INITIALIZER. */
|
||||
|
||||
#define PTHREAD_ONCE_INIT { 1, 0 } /* is initialized and not run */
|
||||
|
||||
int _EXFUN(pthread_once,
|
||||
(pthread_once_t *__once_control, void (*__init_routine)(void)));
|
||||
|
||||
/* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */
|
||||
|
||||
int _EXFUN(pthread_key_create,
|
||||
(pthread_key_t *__key, void (*__destructor)( void * )));
|
||||
|
||||
/* Thread-Specific Data Management, P1003.1c/Draft 10, p. 165 */
|
||||
|
||||
int _EXFUN(pthread_setspecific,
|
||||
(pthread_key_t __key, _CONST void *__value));
|
||||
void * _EXFUN(pthread_getspecific, (pthread_key_t __key));
|
||||
|
||||
/* Thread-Specific Data Key Deletion, P1003.1c/Draft 10, p. 167 */
|
||||
|
||||
int _EXFUN(pthread_key_delete, (pthread_key_t __key));
|
||||
|
||||
/* Execution of a Thread, P1003.1c/Draft 10, p. 181 */
|
||||
|
||||
#define PTHREAD_CANCEL_ENABLE 0
|
||||
#define PTHREAD_CANCEL_DISABLE 1
|
||||
|
||||
#define PTHREAD_CANCEL_DEFERRED 0
|
||||
#define PTHREAD_CANCEL_ASYNCHRONOUS 1
|
||||
|
||||
#define PTHREAD_CANCELED ((void *) -1)
|
||||
|
||||
int _EXFUN(pthread_cancel, (pthread_t __pthread));
|
||||
|
||||
/* Setting Cancelability State, P1003.1c/Draft 10, p. 183 */
|
||||
|
||||
int _EXFUN(pthread_setcancelstate, (int __state, int *__oldstate));
|
||||
int _EXFUN(pthread_setcanceltype, (int __type, int *__oldtype));
|
||||
void _EXFUN(pthread_testcancel, (void));
|
||||
|
||||
/* Establishing Cancellation Handlers, P1003.1c/Draft 10, p. 184 */
|
||||
|
||||
void _EXFUN(_pthread_cleanup_push,
|
||||
(struct _pthread_cleanup_context *_context,
|
||||
void (*_routine)(void *), void *_arg));
|
||||
|
||||
void _EXFUN(_pthread_cleanup_pop,
|
||||
(struct _pthread_cleanup_context *_context,
|
||||
int _execute));
|
||||
|
||||
/* It is intentional to open and close the scope in two different macros */
|
||||
#define pthread_cleanup_push(_routine, _arg) \
|
||||
do { \
|
||||
struct _pthread_cleanup_context _pthread_clup_ctx; \
|
||||
_pthread_cleanup_push(&_pthread_clup_ctx, (_routine), (_arg))
|
||||
|
||||
#define pthread_cleanup_pop(_execute) \
|
||||
_pthread_cleanup_pop(&_pthread_clup_ctx, (_execute)); \
|
||||
} while (0)
|
||||
|
||||
#if defined(_GNU_SOURCE)
|
||||
void _EXFUN(_pthread_cleanup_push_defer,
|
||||
(struct _pthread_cleanup_context *_context,
|
||||
void (*_routine)(void *), void *_arg));
|
||||
|
||||
void _EXFUN(_pthread_cleanup_pop_restore,
|
||||
(struct _pthread_cleanup_context *_context,
|
||||
int _execute));
|
||||
|
||||
/* It is intentional to open and close the scope in two different macros */
|
||||
#define pthread_cleanup_push_defer_np(_routine, _arg) \
|
||||
do { \
|
||||
struct _pthread_cleanup_context _pthread_clup_ctx; \
|
||||
_pthread_cleanup_push_defer(&_pthread_clup_ctx, (_routine), (_arg))
|
||||
|
||||
#define pthread_cleanup_pop_restore_np(_execute) \
|
||||
_pthread_cleanup_pop_restore(&_pthread_clup_ctx, (_execute)); \
|
||||
} while (0)
|
||||
#endif /* defined(_GNU_SOURCE) */
|
||||
|
||||
#if defined(_POSIX_THREAD_CPUTIME)
|
||||
|
||||
/* Accessing a Thread CPU-time Clock, P1003.4b/D8, p. 58 */
|
||||
|
||||
int _EXFUN(pthread_getcpuclockid,
|
||||
(pthread_t __pthread_id, clockid_t *__clock_id));
|
||||
|
||||
#endif /* defined(_POSIX_THREAD_CPUTIME) */
|
||||
|
||||
|
||||
#endif /* defined(_POSIX_THREADS) */
|
||||
|
||||
#if defined(_POSIX_BARRIERS)
|
||||
|
||||
int _EXFUN(pthread_barrierattr_init, (pthread_barrierattr_t *__attr));
|
||||
int _EXFUN(pthread_barrierattr_destroy, (pthread_barrierattr_t *__attr));
|
||||
int _EXFUN(pthread_barrierattr_getpshared,
|
||||
(_CONST pthread_barrierattr_t *__attr, int *__pshared));
|
||||
int _EXFUN(pthread_barrierattr_setpshared,
|
||||
(pthread_barrierattr_t *__attr, int __pshared));
|
||||
|
||||
#define PTHREAD_BARRIER_SERIAL_THREAD -1
|
||||
|
||||
int _EXFUN(pthread_barrier_init,
|
||||
(pthread_barrier_t *__barrier,
|
||||
_CONST pthread_barrierattr_t *__attr, unsigned __count));
|
||||
int _EXFUN(pthread_barrier_destroy, (pthread_barrier_t *__barrier));
|
||||
int _EXFUN(pthread_barrier_wait,(pthread_barrier_t *__barrier));
|
||||
|
||||
#endif /* defined(_POSIX_BARRIERS) */
|
||||
|
||||
#if defined(_POSIX_SPIN_LOCKS)
|
||||
|
||||
int _EXFUN(pthread_spin_init,
|
||||
(pthread_spinlock_t *__spinlock, int __pshared));
|
||||
int _EXFUN(pthread_spin_destroy, (pthread_spinlock_t *__spinlock));
|
||||
int _EXFUN(pthread_spin_lock, (pthread_spinlock_t *__spinlock));
|
||||
int _EXFUN(pthread_spin_trylock, (pthread_spinlock_t *__spinlock));
|
||||
int _EXFUN(pthread_spin_unlock, (pthread_spinlock_t *__spinlock));
|
||||
|
||||
#endif /* defined(_POSIX_SPIN_LOCKS) */
|
||||
|
||||
#if defined(_POSIX_READER_WRITER_LOCKS)
|
||||
|
||||
/* This is used to statically initialize a pthread_rwlock_t. Example:
|
||||
|
||||
pthread_mutex_t mutex = PTHREAD_RWLOCK_INITIALIZER;
|
||||
*/
|
||||
|
||||
#define PTHREAD_RWLOCK_INITIALIZER ((pthread_rwlock_t) 0xFFFFFFFF)
|
||||
|
||||
int _EXFUN(pthread_rwlockattr_init, (pthread_rwlockattr_t *__attr));
|
||||
int _EXFUN(pthread_rwlockattr_destroy, (pthread_rwlockattr_t *__attr));
|
||||
int _EXFUN(pthread_rwlockattr_getpshared,
|
||||
(_CONST pthread_rwlockattr_t *__attr, int *__pshared));
|
||||
int _EXFUN(pthread_rwlockattr_setpshared,
|
||||
(pthread_rwlockattr_t *__attr, int __pshared));
|
||||
|
||||
int _EXFUN(pthread_rwlock_init,
|
||||
(pthread_rwlock_t *__rwlock, _CONST pthread_rwlockattr_t *__attr));
|
||||
int _EXFUN(pthread_rwlock_destroy, (pthread_rwlock_t *__rwlock));
|
||||
int _EXFUN(pthread_rwlock_rdlock,(pthread_rwlock_t *__rwlock));
|
||||
int _EXFUN(pthread_rwlock_tryrdlock,(pthread_rwlock_t *__rwlock));
|
||||
int _EXFUN(pthread_rwlock_timedrdlock,
|
||||
(pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
|
||||
int _EXFUN(pthread_rwlock_unlock,(pthread_rwlock_t *__rwlock));
|
||||
int _EXFUN(pthread_rwlock_wrlock,(pthread_rwlock_t *__rwlock));
|
||||
int _EXFUN(pthread_rwlock_trywrlock,(pthread_rwlock_t *__rwlock));
|
||||
int _EXFUN(pthread_rwlock_timedwrlock,
|
||||
(pthread_rwlock_t *__rwlock, _CONST struct timespec *__abstime));
|
||||
|
||||
#endif /* defined(_POSIX_READER_WRITER_LOCKS) */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
|
@ -1,87 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 1989 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)pwd.h 5.13 (Berkeley) 5/28/91
|
||||
*/
|
||||
|
||||
#ifndef _PWD_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define _PWD_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#if __BSD_VISIBLE
|
||||
#define _PATH_PASSWD "/etc/passwd"
|
||||
|
||||
#define _PASSWORD_LEN 128 /* max length, not counting NULL */
|
||||
#endif
|
||||
|
||||
struct passwd {
|
||||
char *pw_name; /* user name */
|
||||
char *pw_passwd; /* encrypted password */
|
||||
uid_t pw_uid; /* user uid */
|
||||
gid_t pw_gid; /* user gid */
|
||||
char *pw_comment; /* comment */
|
||||
char *pw_gecos; /* Honeywell login info */
|
||||
char *pw_dir; /* home directory */
|
||||
char *pw_shell; /* default shell */
|
||||
};
|
||||
|
||||
#ifndef __INSIDE_CYGWIN__
|
||||
struct passwd *getpwuid (uid_t);
|
||||
struct passwd *getpwnam (const char *);
|
||||
|
||||
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500
|
||||
int getpwnam_r (const char *, struct passwd *,
|
||||
char *, size_t , struct passwd **);
|
||||
int getpwuid_r (uid_t, struct passwd *, char *,
|
||||
size_t, struct passwd **);
|
||||
#endif
|
||||
|
||||
#if __XSI_VISIBLE >= 500
|
||||
struct passwd *getpwent (void);
|
||||
void setpwent (void);
|
||||
void endpwent (void);
|
||||
#endif
|
||||
|
||||
#if __BSD_VISIBLE
|
||||
int setpassent (int);
|
||||
#endif
|
||||
#endif /*!__INSIDE_CYGWIN__*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _PWD_H_ */
|
|
@ -1,189 +0,0 @@
|
|||
/* This header file provides the reentrancy. */
|
||||
|
||||
/* The reentrant system calls here serve two purposes:
|
||||
|
||||
1) Provide reentrant versions of the system calls the ANSI C library
|
||||
requires.
|
||||
2) Provide these system calls in a namespace clean way.
|
||||
|
||||
It is intended that *all* system calls that the ANSI C library needs
|
||||
be declared here. It documents them all in one place. All library access
|
||||
to the system is via some form of these functions.
|
||||
|
||||
The target may provide the needed syscalls by any of the following:
|
||||
|
||||
1) Define the reentrant versions of the syscalls directly.
|
||||
(eg: _open_r, _close_r, etc.). Please keep the namespace clean.
|
||||
When you do this, set "syscall_dir" to "syscalls" and add
|
||||
-DREENTRANT_SYSCALLS_PROVIDED to newlib_cflags in configure.host.
|
||||
|
||||
2) Define namespace clean versions of the system calls by prefixing
|
||||
them with '_' (eg: _open, _close, etc.). Technically, there won't be
|
||||
true reentrancy at the syscall level, but the library will be namespace
|
||||
clean.
|
||||
When you do this, set "syscall_dir" to "syscalls" in configure.host.
|
||||
|
||||
3) Define or otherwise provide the regular versions of the syscalls
|
||||
(eg: open, close, etc.). The library won't be reentrant nor namespace
|
||||
clean, but at least it will work.
|
||||
When you do this, add -DMISSING_SYSCALL_NAMES to newlib_cflags in
|
||||
configure.host.
|
||||
|
||||
4) Define or otherwise provide the regular versions of the syscalls,
|
||||
and do not supply functional interfaces for any of the reentrant
|
||||
calls. With this method, the reentrant syscalls are redefined to
|
||||
directly call the regular system call without the reentrancy argument.
|
||||
When you do this, specify both -DREENTRANT_SYSCALLS_PROVIDED and
|
||||
-DMISSING_SYSCALL_NAMES via newlib_cflags in configure.host and do
|
||||
not specify "syscall_dir".
|
||||
|
||||
Stubs of the reentrant versions of the syscalls exist in the libc/reent
|
||||
source directory and are provided if REENTRANT_SYSCALLS_PROVIDED isn't
|
||||
defined. These stubs call the native system calls: _open, _close, etc.
|
||||
if MISSING_SYSCALL_NAMES is *not* defined, otherwise they call the
|
||||
non-underscored versions: open, close, etc. when MISSING_SYSCALL_NAMES
|
||||
*is* defined.
|
||||
|
||||
By default, newlib functions call the reentrant syscalls internally,
|
||||
passing a reentrancy structure as an argument. This reentrancy structure
|
||||
contains data that is thread-specific. For example, the errno value is
|
||||
kept in the reentrancy structure. If multiple threads exist, each will
|
||||
keep a separate errno value which is intuitive since the application flow
|
||||
cannot check for failure reliably otherwise.
|
||||
|
||||
The reentrant syscalls are either provided by the platform, by the
|
||||
libc/reent stubs, or in the case of both MISSING_SYSCALL_NAMES and
|
||||
REENTRANT_SYSCALLS_PROVIDED being defined, the calls are redefined to
|
||||
simply call the regular syscalls with no reentrancy struct argument.
|
||||
|
||||
A single-threaded application does not need to worry about the reentrancy
|
||||
structure. It is used internally.
|
||||
|
||||
A multi-threaded application needs either to manually manage reentrancy
|
||||
structures or use dynamic reentrancy.
|
||||
|
||||
Manually managing reentrancy structures entails calling special reentrant
|
||||
versions of newlib functions that have an additional reentrancy argument.
|
||||
For example, _printf_r. By convention, the first argument is the
|
||||
reentrancy structure. By default, the normal version of the function
|
||||
uses the default reentrancy structure: _REENT. The reentrancy structure
|
||||
is passed internally, eventually to the reentrant syscalls themselves.
|
||||
How the structures are stored and accessed in this model is up to the
|
||||
application.
|
||||
|
||||
Dynamic reentrancy is specified by the __DYNAMIC_REENT__ flag. This
|
||||
flag denotes setting up a macro to replace _REENT with a function call
|
||||
to __getreent(). This function needs to be implemented by the platform
|
||||
and it is meant to return the reentrancy structure for the current
|
||||
thread. When the regular C functions (e.g. printf) go to call internal
|
||||
routines with the default _REENT structure, they end up calling with
|
||||
the reentrancy structure for the thread. Thus, application code does not
|
||||
need to call the _r routines nor worry about reentrancy structures. */
|
||||
|
||||
/* WARNING: All identifiers here must begin with an underscore. This file is
|
||||
included by stdio.h and others and we therefore must only use identifiers
|
||||
in the namespace allotted to us. */
|
||||
|
||||
#ifndef _REENT_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define _REENT_H_
|
||||
|
||||
#include <sys/reent.h>
|
||||
#include <sys/_types.h>
|
||||
#include <machine/types.h>
|
||||
|
||||
#define __need_size_t
|
||||
#define __need_ptrdiff_t
|
||||
#include <stddef.h>
|
||||
|
||||
/* FIXME: not namespace clean */
|
||||
struct stat;
|
||||
struct tms;
|
||||
struct timeval;
|
||||
struct timezone;
|
||||
|
||||
#if defined(REENTRANT_SYSCALLS_PROVIDED) && defined(MISSING_SYSCALL_NAMES)
|
||||
|
||||
#define _close_r(__reent, __fd) close(__fd)
|
||||
#define _execve_r(__reent, __f, __arg, __env) execve(__f, __arg, __env)
|
||||
#define _fcntl_r(__reent, __fd, __cmd, __arg) fcntl(__fd, __cmd, __arg)
|
||||
#define _fork_r(__reent) fork()
|
||||
#define _fstat_r(__reent, __fdes, __stat) fstat(__fdes, __stat)
|
||||
#define _getpid_r(__reent) getpid()
|
||||
#define _isatty_r(__reent, __desc) isatty(__desc)
|
||||
#define _kill_r(__reent, __pid, __signal) kill(__pid, __signal)
|
||||
#define _link_r(__reent, __oldpath, __newpath) link(__oldpath, __newpath)
|
||||
#define _lseek_r(__reent, __fdes, __off, __w) lseek(__fdes, __off, __w)
|
||||
#define _mkdir_r(__reent, __path, __m) mkdir(__path, __m)
|
||||
#define _open_r(__reent, __path, __flag, __m) open(__path, __flag, __m)
|
||||
#define _read_r(__reent, __fd, __buff, __cnt) read(__fd, __buff, __cnt)
|
||||
#define _rename_r(__reent, __old, __new) rename(__old, __new)
|
||||
#define _sbrk_r(__reent, __incr) sbrk(__incr)
|
||||
#define _stat_r(__reent, __path, __buff) stat(__path, __buff)
|
||||
#define _times_r(__reent, __time) times(__time)
|
||||
#define _unlink_r(__reent, __path) unlink(__path)
|
||||
#define _wait_r(__reent, __status) wait(__status)
|
||||
#define _write_r(__reent, __fd, __buff, __cnt) write(__fd, __buff, __cnt)
|
||||
#define _gettimeofday_r(__reent, __tp, __tzp) gettimeofday(__tp, __tzp)
|
||||
|
||||
#ifdef __LARGE64_FILES
|
||||
#define _lseek64_r(__reent, __fd, __off, __w) lseek64(__fd, __off, __w)
|
||||
#define _fstat64_r(__reent, __fd, __buff) fstat64(__fd, __buff)
|
||||
#define _open64_r(__reent, __path, __flag, __m) open64(__path, __flag, __m)
|
||||
#endif
|
||||
|
||||
#else
|
||||
/* Reentrant versions of system calls. */
|
||||
|
||||
extern int _close_r _PARAMS ((struct _reent *, int));
|
||||
extern int _execve_r _PARAMS ((struct _reent *, const char *, char *const *, char *const *));
|
||||
extern int _fcntl_r _PARAMS ((struct _reent *, int, int, int));
|
||||
extern int _fork_r _PARAMS ((struct _reent *));
|
||||
extern int _fstat_r _PARAMS ((struct _reent *, int, struct stat *));
|
||||
extern int _getpid_r _PARAMS ((struct _reent *));
|
||||
extern int _isatty_r _PARAMS ((struct _reent *, int));
|
||||
extern int _kill_r _PARAMS ((struct _reent *, int, int));
|
||||
extern int _link_r _PARAMS ((struct _reent *, const char *, const char *));
|
||||
extern _off_t _lseek_r _PARAMS ((struct _reent *, int, _off_t, int));
|
||||
extern int _mkdir_r _PARAMS ((struct _reent *, const char *, int));
|
||||
extern int _open_r _PARAMS ((struct _reent *, const char *, int, int));
|
||||
extern _ssize_t _read_r _PARAMS ((struct _reent *, int, void *, size_t));
|
||||
extern int _rename_r _PARAMS ((struct _reent *, const char *, const char *));
|
||||
extern void *_sbrk_r _PARAMS ((struct _reent *, ptrdiff_t));
|
||||
extern int _stat_r _PARAMS ((struct _reent *, const char *, struct stat *));
|
||||
extern _CLOCK_T_ _times_r _PARAMS ((struct _reent *, struct tms *));
|
||||
extern int _unlink_r _PARAMS ((struct _reent *, const char *));
|
||||
extern int _wait_r _PARAMS ((struct _reent *, int *));
|
||||
extern _ssize_t _write_r _PARAMS ((struct _reent *, int, const void *, size_t));
|
||||
|
||||
/* This one is not guaranteed to be available on all targets. */
|
||||
extern int _gettimeofday_r _PARAMS ((struct _reent *, struct timeval *__tp, void *__tzp));
|
||||
|
||||
#ifdef __LARGE64_FILES
|
||||
|
||||
|
||||
#if defined(__CYGWIN__)
|
||||
#define stat64 stat
|
||||
#endif
|
||||
struct stat64;
|
||||
|
||||
extern _off64_t _lseek64_r _PARAMS ((struct _reent *, int, _off64_t, int));
|
||||
extern int _fstat64_r _PARAMS ((struct _reent *, int, struct stat64 *));
|
||||
extern int _open64_r _PARAMS ((struct _reent *, const char *, int, int));
|
||||
extern int _stat64_r _PARAMS ((struct _reent *, const char *, struct stat64 *));
|
||||
|
||||
/* Don't pollute namespace if not building newlib. */
|
||||
#if defined (__CYGWIN__) && !defined (_COMPILING_NEWLIB)
|
||||
#undef stat64
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _REENT_H_ */
|
|
@ -1,7 +0,0 @@
|
|||
/* regdef.h -- define register names. */
|
||||
|
||||
/* This is a standard include file for MIPS targets. Other target
|
||||
probably don't define it, and attempts to include this file will
|
||||
fail. */
|
||||
|
||||
#include <machine/regdef.h>
|
|
@ -1,103 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 1992 Henry Spencer.
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Henry Spencer of the University of Toronto.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)regex.h 8.2 (Berkeley) 1/3/94
|
||||
* $FreeBSD: src/include/regex.h,v 1.4 2002/03/23 17:24:53 imp Exp $
|
||||
*/
|
||||
|
||||
#ifndef _REGEX_H_
|
||||
#define _REGEX_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/* types */
|
||||
typedef off_t regoff_t;
|
||||
|
||||
typedef struct {
|
||||
int re_magic;
|
||||
size_t re_nsub; /* number of parenthesized subexpressions */
|
||||
__const char *re_endp; /* end pointer for REG_PEND */
|
||||
struct re_guts *re_g; /* none of your business :-) */
|
||||
} regex_t;
|
||||
|
||||
typedef struct {
|
||||
regoff_t rm_so; /* start of match */
|
||||
regoff_t rm_eo; /* end of match */
|
||||
} regmatch_t;
|
||||
|
||||
/* regcomp() flags */
|
||||
#define REG_BASIC 0000
|
||||
#define REG_EXTENDED 0001
|
||||
#define REG_ICASE 0002
|
||||
#define REG_NOSUB 0004
|
||||
#define REG_NEWLINE 0010
|
||||
#define REG_NOSPEC 0020
|
||||
#define REG_PEND 0040
|
||||
#define REG_DUMP 0200
|
||||
|
||||
/* regerror() flags */
|
||||
#define REG_NOMATCH 1
|
||||
#define REG_BADPAT 2
|
||||
#define REG_ECOLLATE 3
|
||||
#define REG_ECTYPE 4
|
||||
#define REG_EESCAPE 5
|
||||
#define REG_ESUBREG 6
|
||||
#define REG_EBRACK 7
|
||||
#define REG_EPAREN 8
|
||||
#define REG_EBRACE 9
|
||||
#define REG_BADBR 10
|
||||
#define REG_ERANGE 11
|
||||
#define REG_ESPACE 12
|
||||
#define REG_BADRPT 13
|
||||
#define REG_EMPTY 14
|
||||
#define REG_ASSERT 15
|
||||
#define REG_INVARG 16
|
||||
#define REG_ATOI 255 /* convert name to number (!) */
|
||||
#define REG_ITOA 0400 /* convert number to name (!) */
|
||||
|
||||
/* regexec() flags */
|
||||
#define REG_NOTBOL 00001
|
||||
#define REG_NOTEOL 00002
|
||||
#define REG_STARTEND 00004
|
||||
#define REG_TRACE 00400 /* tracing of execution */
|
||||
#define REG_LARGE 01000 /* force large representation */
|
||||
#define REG_BACKR 02000 /* force use of backref code */
|
||||
|
||||
__BEGIN_DECLS
|
||||
int regcomp(regex_t *__restrict, const char *__restrict, int);
|
||||
size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
|
||||
int regexec(const regex_t *__restrict, const char *__restrict,
|
||||
size_t, regmatch_t [__restrict], int);
|
||||
void regfree(regex_t *);
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_REGEX_H_ */
|
|
@ -1,97 +0,0 @@
|
|||
/*
|
||||
* Written by Joel Sherrill <joel@OARcorp.com>.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2010.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose without fee is hereby granted, provided that this entire notice
|
||||
* is included in all copies of any software which is or includes a copy
|
||||
* or modification of this software.
|
||||
*
|
||||
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
|
||||
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
|
||||
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef _SCHED_H_
|
||||
#define _SCHED_H_
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/sched.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_PRIORITY_SCHEDULING)
|
||||
/*
|
||||
* XBD 13 - Set Scheduling Parameters, P1003.1b-2008, p. 1803
|
||||
*/
|
||||
int sched_setparam(
|
||||
pid_t __pid,
|
||||
const struct sched_param *__param
|
||||
);
|
||||
|
||||
/*
|
||||
* XBD 13 - Set Scheduling Parameters, P1003.1b-2008, p. 1800
|
||||
*/
|
||||
int sched_getparam(
|
||||
pid_t __pid,
|
||||
struct sched_param *__param
|
||||
);
|
||||
|
||||
/*
|
||||
* XBD 13 - Set Scheduling Policy and Scheduling Parameters,
|
||||
* P1003.1b-2008, p. 1805
|
||||
*/
|
||||
int sched_setscheduler(
|
||||
pid_t __pid,
|
||||
int __policy,
|
||||
const struct sched_param *__param
|
||||
);
|
||||
|
||||
/*
|
||||
* XBD 13 - Get Scheduling Policy, P1003.1b-2008, p. 1801
|
||||
*/
|
||||
int sched_getscheduler(
|
||||
pid_t __pid
|
||||
);
|
||||
|
||||
/*
|
||||
* XBD 13 - Get Scheduling Parameter Limits, P1003.1b-2008, p. 1799
|
||||
*/
|
||||
int sched_get_priority_max(
|
||||
int __policy
|
||||
);
|
||||
|
||||
int sched_get_priority_min(
|
||||
int __policy
|
||||
);
|
||||
|
||||
/*
|
||||
* XBD 13 - Get Scheduling Parameter Limits, P1003.1b-2008, p. 1802
|
||||
*/
|
||||
int sched_rr_get_interval(
|
||||
pid_t __pid,
|
||||
struct timespec *__interval
|
||||
);
|
||||
#endif /* _POSIX_PRIORITY_SCHEDULING */
|
||||
|
||||
#if defined(_POSIX_THREADS) || defined(_POSIX_PRIORITY_SCHEDULING)
|
||||
|
||||
/*
|
||||
* XBD 13 - Yield Processor, P1003.1b-2008, p. 1807
|
||||
*/
|
||||
int sched_yield( void );
|
||||
|
||||
#endif /* _POSIX_THREADS or _POSIX_PRIORITY_SCHEDULING */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SCHED_H_ */
|
|
@ -1,64 +0,0 @@
|
|||
/* $NetBSD: search.h,v 1.12 1999/02/22 10:34:28 christos Exp $ */
|
||||
/* $FreeBSD: src/include/search.h,v 1.4 2002/03/23 17:24:53 imp Exp $ */
|
||||
|
||||
/*
|
||||
* Written by J.T. Conklin <jtc@netbsd.org>
|
||||
* Public domain.
|
||||
*/
|
||||
|
||||
#ifndef _SEARCH_H_
|
||||
#define _SEARCH_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <machine/ansi.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
typedef struct entry {
|
||||
char *key;
|
||||
void *data;
|
||||
} ENTRY;
|
||||
|
||||
typedef enum {
|
||||
FIND, ENTER
|
||||
} ACTION;
|
||||
|
||||
typedef enum {
|
||||
preorder,
|
||||
postorder,
|
||||
endorder,
|
||||
leaf
|
||||
} VISIT;
|
||||
|
||||
#ifdef _SEARCH_PRIVATE
|
||||
typedef struct node {
|
||||
char *key;
|
||||
struct node *llink, *rlink;
|
||||
} node_t;
|
||||
#endif
|
||||
|
||||
struct hsearch_data
|
||||
{
|
||||
struct internal_head *htable;
|
||||
size_t htablesize;
|
||||
};
|
||||
|
||||
#ifndef __compar_fn_t_defined
|
||||
#define __compar_fn_t_defined
|
||||
typedef int (*__compar_fn_t) (const void *, const void *);
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
int hcreate(size_t);
|
||||
void hdestroy(void);
|
||||
ENTRY *hsearch(ENTRY, ACTION);
|
||||
int hcreate_r(size_t, struct hsearch_data *);
|
||||
void hdestroy_r(struct hsearch_data *);
|
||||
int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
|
||||
void *tdelete(const void *__restrict, void **__restrict, __compar_fn_t);
|
||||
void tdestroy (void *, void (*)(void *));
|
||||
void *tfind(const void *, void **, __compar_fn_t);
|
||||
void *tsearch(const void *, void **, __compar_fn_t);
|
||||
void twalk(const void *, void (*)(const void *, VISIT, int));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_SEARCH_H_ */
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
setjmp.h
|
||||
stubs for future use.
|
||||
*/
|
||||
|
||||
#ifndef _SETJMP_H_
|
||||
#define _SETJMP_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <machine/setjmp.h>
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
#ifdef __GNUC__
|
||||
void _EXFUN(longjmp,(jmp_buf __jmpb, int __retval))
|
||||
__attribute__ ((__noreturn__));
|
||||
#else
|
||||
void _EXFUN(longjmp,(jmp_buf __jmpb, int __retval));
|
||||
#endif
|
||||
int _EXFUN(setjmp,(jmp_buf __jmpb));
|
||||
#define setjmp(env) setjmp(env)
|
||||
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _SETJMP_H_ */
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
#ifndef _SIGNAL_H_
|
||||
#define _SIGNAL_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <sys/signal.h>
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
typedef int sig_atomic_t; /* Atomic entity type (ANSI) */
|
||||
#ifndef _POSIX_SOURCE
|
||||
typedef _sig_func_ptr sig_t; /* BSD naming */
|
||||
typedef _sig_func_ptr sighandler_t; /* glibc naming */
|
||||
#endif /* !_POSIX_SOURCE */
|
||||
|
||||
#define SIG_DFL ((_sig_func_ptr)0) /* Default action */
|
||||
#define SIG_IGN ((_sig_func_ptr)1) /* Ignore action */
|
||||
#define SIG_ERR ((_sig_func_ptr)-1) /* Error return */
|
||||
|
||||
struct _reent;
|
||||
|
||||
_sig_func_ptr _EXFUN(_signal_r, (struct _reent *, int, _sig_func_ptr));
|
||||
int _EXFUN(_raise_r, (struct _reent *, int));
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
_sig_func_ptr _EXFUN(signal, (int, _sig_func_ptr));
|
||||
int _EXFUN(raise, (int));
|
||||
void _EXFUN(psignal, (int, const char *));
|
||||
#endif
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _SIGNAL_H_ */
|
|
@ -1,119 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _SPAWN_H_
|
||||
#define _SPAWN_H_
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/_types.h>
|
||||
#define __need_sigset_t
|
||||
#include <signal.h>
|
||||
|
||||
struct sched_param;
|
||||
|
||||
typedef struct __posix_spawnattr *posix_spawnattr_t;
|
||||
typedef struct __posix_spawn_file_actions *posix_spawn_file_actions_t;
|
||||
|
||||
#define POSIX_SPAWN_RESETIDS 0x01
|
||||
#define POSIX_SPAWN_SETPGROUP 0x02
|
||||
#define POSIX_SPAWN_SETSCHEDPARAM 0x04
|
||||
#define POSIX_SPAWN_SETSCHEDULER 0x08
|
||||
#define POSIX_SPAWN_SETSIGDEF 0x10
|
||||
#define POSIX_SPAWN_SETSIGMASK 0x20
|
||||
|
||||
_BEGIN_STD_C
|
||||
/*
|
||||
* Spawn routines
|
||||
*
|
||||
* XXX both arrays should be __restrict, but this does not work when GCC
|
||||
* is invoked with -std=c99.
|
||||
*/
|
||||
int _EXFUN(posix_spawn, (pid_t * __restrict, const char * __restrict,
|
||||
const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict,
|
||||
char * const [], char * const [])
|
||||
);
|
||||
int _EXFUN(posix_spawnp, (pid_t * __restrict, const char * __restrict,
|
||||
const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict,
|
||||
char * const [], char * const [])
|
||||
);
|
||||
|
||||
/*
|
||||
* File descriptor actions
|
||||
*/
|
||||
int _EXFUN(posix_spawn_file_actions_init, (posix_spawn_file_actions_t *));
|
||||
int _EXFUN(posix_spawn_file_actions_destroy, (posix_spawn_file_actions_t *));
|
||||
|
||||
int _EXFUN(posix_spawn_file_actions_addopen,
|
||||
(posix_spawn_file_actions_t * __restrict, int, const char * __restrict, int, mode_t)
|
||||
);
|
||||
int _EXFUN(posix_spawn_file_actions_adddup2,
|
||||
(posix_spawn_file_actions_t *, int, int)
|
||||
);
|
||||
int _EXFUN(posix_spawn_file_actions_addclose,
|
||||
(posix_spawn_file_actions_t *, int)
|
||||
);
|
||||
|
||||
/*
|
||||
* Spawn attributes
|
||||
*/
|
||||
int _EXFUN(posix_spawnattr_init, (posix_spawnattr_t *));
|
||||
int _EXFUN(posix_spawnattr_destroy, (posix_spawnattr_t *));
|
||||
|
||||
int _EXFUN(posix_spawnattr_getflags,
|
||||
(const posix_spawnattr_t * __restrict, short * __restrict)
|
||||
);
|
||||
int _EXFUN(posix_spawnattr_getpgroup,
|
||||
(const posix_spawnattr_t * __restrict, pid_t * __restrict));
|
||||
int _EXFUN(posix_spawnattr_getschedparam,
|
||||
(const posix_spawnattr_t * __restrict, struct sched_param * __restrict)
|
||||
);
|
||||
int _EXFUN(posix_spawnattr_getschedpolicy,
|
||||
(const posix_spawnattr_t * __restrict, int * __restrict)
|
||||
);
|
||||
int _EXFUN(posix_spawnattr_getsigdefault,
|
||||
(const posix_spawnattr_t * __restrict, sigset_t * __restrict)
|
||||
);
|
||||
int _EXFUN(posix_spawnattr_getsigmask,
|
||||
(const posix_spawnattr_t * __restrict, sigset_t * __restrict)
|
||||
);
|
||||
|
||||
int _EXFUN(posix_spawnattr_setflags, (posix_spawnattr_t *, short));
|
||||
int _EXFUN(posix_spawnattr_setpgroup, (posix_spawnattr_t *, pid_t));
|
||||
int _EXFUN(posix_spawnattr_setschedparam,
|
||||
(posix_spawnattr_t * __restrict, const struct sched_param * __restrict)
|
||||
);
|
||||
int _EXFUN(posix_spawnattr_setschedpolicy, (posix_spawnattr_t *, int));
|
||||
int _EXFUN(posix_spawnattr_setsigdefault,
|
||||
(posix_spawnattr_t * __restrict, const sigset_t * __restrict)
|
||||
);
|
||||
int _EXFUN(posix_spawnattr_setsigmask,
|
||||
(posix_spawnattr_t * __restrict, const sigset_t * __restrict)
|
||||
);
|
||||
_END_STD_C
|
||||
|
||||
#endif /* !_SPAWN_H_ */
|
|
@ -1,414 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 2011 Ed Schouten <ed@FreeBSD.org>
|
||||
* David Chisnall <theraven@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _STDATOMIC_H_
|
||||
#define _STDATOMIC_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/_types.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#if __has_extension(c_atomic) || __has_extension(cxx_atomic)
|
||||
#define __CLANG_ATOMICS
|
||||
#elif __GNUC_PREREQ__(4, 7)
|
||||
#define __GNUC_ATOMICS
|
||||
#elif defined(__GNUC__)
|
||||
#define __SYNC_ATOMICS
|
||||
#else
|
||||
#error "stdatomic.h does not support your compiler"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 7.17.1 Atomic lock-free macros.
|
||||
*/
|
||||
|
||||
#ifdef __GCC_ATOMIC_BOOL_LOCK_FREE
|
||||
#define ATOMIC_BOOL_LOCK_FREE __GCC_ATOMIC_BOOL_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_CHAR_LOCK_FREE
|
||||
#define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_CHAR16_T_LOCK_FREE
|
||||
#define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_CHAR32_T_LOCK_FREE
|
||||
#define ATOMIC_CHAR32_T_LOCK_FREE __GCC_ATOMIC_CHAR32_T_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_WCHAR_T_LOCK_FREE
|
||||
#define ATOMIC_WCHAR_T_LOCK_FREE __GCC_ATOMIC_WCHAR_T_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_SHORT_LOCK_FREE
|
||||
#define ATOMIC_SHORT_LOCK_FREE __GCC_ATOMIC_SHORT_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_INT_LOCK_FREE
|
||||
#define ATOMIC_INT_LOCK_FREE __GCC_ATOMIC_INT_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_LONG_LOCK_FREE
|
||||
#define ATOMIC_LONG_LOCK_FREE __GCC_ATOMIC_LONG_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_LLONG_LOCK_FREE
|
||||
#define ATOMIC_LLONG_LOCK_FREE __GCC_ATOMIC_LLONG_LOCK_FREE
|
||||
#endif
|
||||
#ifdef __GCC_ATOMIC_POINTER_LOCK_FREE
|
||||
#define ATOMIC_POINTER_LOCK_FREE __GCC_ATOMIC_POINTER_LOCK_FREE
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 7.17.2 Initialization.
|
||||
*/
|
||||
|
||||
#if defined(__CLANG_ATOMICS)
|
||||
#define ATOMIC_VAR_INIT(value) (value)
|
||||
#define atomic_init(obj, value) __c11_atomic_init(obj, value)
|
||||
#else
|
||||
#define ATOMIC_VAR_INIT(value) { .__val = (value) }
|
||||
#define atomic_init(obj, value) ((void)((obj)->__val = (value)))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Clang and recent GCC both provide predefined macros for the memory
|
||||
* orderings. If we are using a compiler that doesn't define them, use the
|
||||
* clang values - these will be ignored in the fallback path.
|
||||
*/
|
||||
|
||||
#ifndef __ATOMIC_RELAXED
|
||||
#define __ATOMIC_RELAXED 0
|
||||
#endif
|
||||
#ifndef __ATOMIC_CONSUME
|
||||
#define __ATOMIC_CONSUME 1
|
||||
#endif
|
||||
#ifndef __ATOMIC_ACQUIRE
|
||||
#define __ATOMIC_ACQUIRE 2
|
||||
#endif
|
||||
#ifndef __ATOMIC_RELEASE
|
||||
#define __ATOMIC_RELEASE 3
|
||||
#endif
|
||||
#ifndef __ATOMIC_ACQ_REL
|
||||
#define __ATOMIC_ACQ_REL 4
|
||||
#endif
|
||||
#ifndef __ATOMIC_SEQ_CST
|
||||
#define __ATOMIC_SEQ_CST 5
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 7.17.3 Order and consistency.
|
||||
*
|
||||
* The memory_order_* constants that denote the barrier behaviour of the
|
||||
* atomic operations.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
memory_order_relaxed = __ATOMIC_RELAXED,
|
||||
memory_order_consume = __ATOMIC_CONSUME,
|
||||
memory_order_acquire = __ATOMIC_ACQUIRE,
|
||||
memory_order_release = __ATOMIC_RELEASE,
|
||||
memory_order_acq_rel = __ATOMIC_ACQ_REL,
|
||||
memory_order_seq_cst = __ATOMIC_SEQ_CST
|
||||
} memory_order;
|
||||
|
||||
/*
|
||||
* 7.17.4 Fences.
|
||||
*/
|
||||
|
||||
static __inline void
|
||||
atomic_thread_fence(memory_order __order __unused)
|
||||
{
|
||||
|
||||
#ifdef __CLANG_ATOMICS
|
||||
__c11_atomic_thread_fence(__order);
|
||||
#elif defined(__GNUC_ATOMICS)
|
||||
__atomic_thread_fence(__order);
|
||||
#else
|
||||
__sync_synchronize();
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline void
|
||||
atomic_signal_fence(memory_order __order __unused)
|
||||
{
|
||||
|
||||
#ifdef __CLANG_ATOMICS
|
||||
__c11_atomic_signal_fence(__order);
|
||||
#elif defined(__GNUC_ATOMICS)
|
||||
__atomic_signal_fence(__order);
|
||||
#else
|
||||
__asm volatile ("" ::: "memory");
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* 7.17.5 Lock-free property.
|
||||
*/
|
||||
|
||||
#if defined(_KERNEL)
|
||||
/* Atomics in kernelspace are always lock-free. */
|
||||
#define atomic_is_lock_free(obj) \
|
||||
((void)(obj), (_Bool)1)
|
||||
#elif defined(__CLANG_ATOMICS)
|
||||
#define atomic_is_lock_free(obj) \
|
||||
__atomic_is_lock_free(sizeof(*(obj)), obj)
|
||||
#elif defined(__GNUC_ATOMICS)
|
||||
#define atomic_is_lock_free(obj) \
|
||||
__atomic_is_lock_free(sizeof((obj)->__val), &(obj)->__val)
|
||||
#else
|
||||
#define atomic_is_lock_free(obj) \
|
||||
((void)(obj), sizeof((obj)->__val) <= sizeof(void *))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 7.17.6 Atomic integer types.
|
||||
*/
|
||||
|
||||
typedef _Atomic(_Bool) atomic_bool;
|
||||
typedef _Atomic(char) atomic_char;
|
||||
typedef _Atomic(signed char) atomic_schar;
|
||||
typedef _Atomic(unsigned char) atomic_uchar;
|
||||
typedef _Atomic(short) atomic_short;
|
||||
typedef _Atomic(unsigned short) atomic_ushort;
|
||||
typedef _Atomic(int) atomic_int;
|
||||
typedef _Atomic(unsigned int) atomic_uint;
|
||||
typedef _Atomic(long) atomic_long;
|
||||
typedef _Atomic(unsigned long) atomic_ulong;
|
||||
typedef _Atomic(long long) atomic_llong;
|
||||
typedef _Atomic(unsigned long long) atomic_ullong;
|
||||
#if 0
|
||||
typedef _Atomic(__char16_t) atomic_char16_t;
|
||||
typedef _Atomic(__char32_t) atomic_char32_t;
|
||||
#endif
|
||||
typedef _Atomic(wchar_t) atomic_wchar_t;
|
||||
typedef _Atomic(int_least8_t) atomic_int_least8_t;
|
||||
typedef _Atomic(uint_least8_t) atomic_uint_least8_t;
|
||||
typedef _Atomic(int_least16_t) atomic_int_least16_t;
|
||||
typedef _Atomic(uint_least16_t) atomic_uint_least16_t;
|
||||
typedef _Atomic(int_least32_t) atomic_int_least32_t;
|
||||
typedef _Atomic(uint_least32_t) atomic_uint_least32_t;
|
||||
typedef _Atomic(int_least64_t) atomic_int_least64_t;
|
||||
typedef _Atomic(uint_least64_t) atomic_uint_least64_t;
|
||||
typedef _Atomic(int_fast8_t) atomic_int_fast8_t;
|
||||
typedef _Atomic(uint_fast8_t) atomic_uint_fast8_t;
|
||||
typedef _Atomic(int_fast16_t) atomic_int_fast16_t;
|
||||
typedef _Atomic(uint_fast16_t) atomic_uint_fast16_t;
|
||||
typedef _Atomic(int_fast32_t) atomic_int_fast32_t;
|
||||
typedef _Atomic(uint_fast32_t) atomic_uint_fast32_t;
|
||||
typedef _Atomic(int_fast64_t) atomic_int_fast64_t;
|
||||
typedef _Atomic(uint_fast64_t) atomic_uint_fast64_t;
|
||||
typedef _Atomic(intptr_t) atomic_intptr_t;
|
||||
typedef _Atomic(uintptr_t) atomic_uintptr_t;
|
||||
typedef _Atomic(size_t) atomic_size_t;
|
||||
typedef _Atomic(ptrdiff_t) atomic_ptrdiff_t;
|
||||
typedef _Atomic(intmax_t) atomic_intmax_t;
|
||||
typedef _Atomic(uintmax_t) atomic_uintmax_t;
|
||||
|
||||
/*
|
||||
* 7.17.7 Operations on atomic types.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Compiler-specific operations.
|
||||
*/
|
||||
|
||||
#if defined(__CLANG_ATOMICS)
|
||||
#define atomic_compare_exchange_strong_explicit(object, expected, \
|
||||
desired, success, failure) \
|
||||
__c11_atomic_compare_exchange_strong(object, expected, desired, \
|
||||
success, failure)
|
||||
#define atomic_compare_exchange_weak_explicit(object, expected, \
|
||||
desired, success, failure) \
|
||||
__c11_atomic_compare_exchange_weak(object, expected, desired, \
|
||||
success, failure)
|
||||
#define atomic_exchange_explicit(object, desired, order) \
|
||||
__c11_atomic_exchange(object, desired, order)
|
||||
#define atomic_fetch_add_explicit(object, operand, order) \
|
||||
__c11_atomic_fetch_add(object, operand, order)
|
||||
#define atomic_fetch_and_explicit(object, operand, order) \
|
||||
__c11_atomic_fetch_and(object, operand, order)
|
||||
#define atomic_fetch_or_explicit(object, operand, order) \
|
||||
__c11_atomic_fetch_or(object, operand, order)
|
||||
#define atomic_fetch_sub_explicit(object, operand, order) \
|
||||
__c11_atomic_fetch_sub(object, operand, order)
|
||||
#define atomic_fetch_xor_explicit(object, operand, order) \
|
||||
__c11_atomic_fetch_xor(object, operand, order)
|
||||
#define atomic_load_explicit(object, order) \
|
||||
__c11_atomic_load(object, order)
|
||||
#define atomic_store_explicit(object, desired, order) \
|
||||
__c11_atomic_store(object, desired, order)
|
||||
#elif defined(__GNUC_ATOMICS)
|
||||
#define atomic_compare_exchange_strong_explicit(object, expected, \
|
||||
desired, success, failure) \
|
||||
__atomic_compare_exchange_n(&(object)->__val, expected, \
|
||||
desired, 0, success, failure)
|
||||
#define atomic_compare_exchange_weak_explicit(object, expected, \
|
||||
desired, success, failure) \
|
||||
__atomic_compare_exchange_n(&(object)->__val, expected, \
|
||||
desired, 1, success, failure)
|
||||
#define atomic_exchange_explicit(object, desired, order) \
|
||||
__atomic_exchange_n(&(object)->__val, desired, order)
|
||||
#define atomic_fetch_add_explicit(object, operand, order) \
|
||||
__atomic_fetch_add(&(object)->__val, operand, order)
|
||||
#define atomic_fetch_and_explicit(object, operand, order) \
|
||||
__atomic_fetch_and(&(object)->__val, operand, order)
|
||||
#define atomic_fetch_or_explicit(object, operand, order) \
|
||||
__atomic_fetch_or(&(object)->__val, operand, order)
|
||||
#define atomic_fetch_sub_explicit(object, operand, order) \
|
||||
__atomic_fetch_sub(&(object)->__val, operand, order)
|
||||
#define atomic_fetch_xor_explicit(object, operand, order) \
|
||||
__atomic_fetch_xor(&(object)->__val, operand, order)
|
||||
#define atomic_load_explicit(object, order) \
|
||||
__atomic_load_n(&(object)->__val, order)
|
||||
#define atomic_store_explicit(object, desired, order) \
|
||||
__atomic_store_n(&(object)->__val, desired, order)
|
||||
#else
|
||||
#define __atomic_apply_stride(object, operand) \
|
||||
(((__typeof__((object)->__val))0) + (operand))
|
||||
#define atomic_compare_exchange_strong_explicit(object, expected, \
|
||||
desired, success, failure) __extension__ ({ \
|
||||
__typeof__(expected) __ep = (expected); \
|
||||
__typeof__(*__ep) __e = *__ep; \
|
||||
(void)(success); (void)(failure); \
|
||||
(_Bool)((*__ep = __sync_val_compare_and_swap(&(object)->__val, \
|
||||
__e, desired)) == __e); \
|
||||
})
|
||||
#define atomic_compare_exchange_weak_explicit(object, expected, \
|
||||
desired, success, failure) \
|
||||
atomic_compare_exchange_strong_explicit(object, expected, \
|
||||
desired, success, failure)
|
||||
#if __has_builtin(__sync_swap)
|
||||
/* Clang provides a full-barrier atomic exchange - use it if available. */
|
||||
#define atomic_exchange_explicit(object, desired, order) \
|
||||
((void)(order), __sync_swap(&(object)->__val, desired))
|
||||
#else
|
||||
/*
|
||||
* __sync_lock_test_and_set() is only an acquire barrier in theory (although in
|
||||
* practice it is usually a full barrier) so we need an explicit barrier before
|
||||
* it.
|
||||
*/
|
||||
#define atomic_exchange_explicit(object, desired, order) \
|
||||
__extension__ ({ \
|
||||
__typeof__(object) __o = (object); \
|
||||
__typeof__(desired) __d = (desired); \
|
||||
(void)(order); \
|
||||
__sync_synchronize(); \
|
||||
__sync_lock_test_and_set(&(__o)->__val, __d); \
|
||||
})
|
||||
#endif
|
||||
#define atomic_fetch_add_explicit(object, operand, order) \
|
||||
((void)(order), __sync_fetch_and_add(&(object)->__val, \
|
||||
__atomic_apply_stride(object, operand)))
|
||||
#define atomic_fetch_and_explicit(object, operand, order) \
|
||||
((void)(order), __sync_fetch_and_and(&(object)->__val, operand))
|
||||
#define atomic_fetch_or_explicit(object, operand, order) \
|
||||
((void)(order), __sync_fetch_and_or(&(object)->__val, operand))
|
||||
#define atomic_fetch_sub_explicit(object, operand, order) \
|
||||
((void)(order), __sync_fetch_and_sub(&(object)->__val, \
|
||||
__atomic_apply_stride(object, operand)))
|
||||
#define atomic_fetch_xor_explicit(object, operand, order) \
|
||||
((void)(order), __sync_fetch_and_xor(&(object)->__val, operand))
|
||||
#define atomic_load_explicit(object, order) \
|
||||
((void)(order), __sync_fetch_and_add(&(object)->__val, 0))
|
||||
#define atomic_store_explicit(object, desired, order) \
|
||||
((void)atomic_exchange_explicit(object, desired, order))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Convenience functions.
|
||||
*
|
||||
* Don't provide these in kernel space. In kernel space, we should be
|
||||
* disciplined enough to always provide explicit barriers.
|
||||
*/
|
||||
|
||||
#ifndef _KERNEL
|
||||
#define atomic_compare_exchange_strong(object, expected, desired) \
|
||||
atomic_compare_exchange_strong_explicit(object, expected, \
|
||||
desired, memory_order_seq_cst, memory_order_seq_cst)
|
||||
#define atomic_compare_exchange_weak(object, expected, desired) \
|
||||
atomic_compare_exchange_weak_explicit(object, expected, \
|
||||
desired, memory_order_seq_cst, memory_order_seq_cst)
|
||||
#define atomic_exchange(object, desired) \
|
||||
atomic_exchange_explicit(object, desired, memory_order_seq_cst)
|
||||
#define atomic_fetch_add(object, operand) \
|
||||
atomic_fetch_add_explicit(object, operand, memory_order_seq_cst)
|
||||
#define atomic_fetch_and(object, operand) \
|
||||
atomic_fetch_and_explicit(object, operand, memory_order_seq_cst)
|
||||
#define atomic_fetch_or(object, operand) \
|
||||
atomic_fetch_or_explicit(object, operand, memory_order_seq_cst)
|
||||
#define atomic_fetch_sub(object, operand) \
|
||||
atomic_fetch_sub_explicit(object, operand, memory_order_seq_cst)
|
||||
#define atomic_fetch_xor(object, operand) \
|
||||
atomic_fetch_xor_explicit(object, operand, memory_order_seq_cst)
|
||||
#define atomic_load(object) \
|
||||
atomic_load_explicit(object, memory_order_seq_cst)
|
||||
#define atomic_store(object, desired) \
|
||||
atomic_store_explicit(object, desired, memory_order_seq_cst)
|
||||
#endif /* !_KERNEL */
|
||||
|
||||
/*
|
||||
* 7.17.8 Atomic flag type and operations.
|
||||
*
|
||||
* XXX: Assume atomic_bool can be used as an atomic_flag. Is there some
|
||||
* kind of compiler built-in type we could use?
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
atomic_bool __flag;
|
||||
} atomic_flag;
|
||||
|
||||
#define ATOMIC_FLAG_INIT { ATOMIC_VAR_INIT(0) }
|
||||
|
||||
static __inline _Bool
|
||||
atomic_flag_test_and_set_explicit(volatile atomic_flag *__object,
|
||||
memory_order __order)
|
||||
{
|
||||
return (atomic_exchange_explicit(&__object->__flag, 1, __order));
|
||||
}
|
||||
|
||||
static __inline void
|
||||
atomic_flag_clear_explicit(volatile atomic_flag *__object, memory_order __order)
|
||||
{
|
||||
|
||||
atomic_store_explicit(&__object->__flag, 0, __order);
|
||||
}
|
||||
|
||||
#ifndef _KERNEL
|
||||
static __inline _Bool
|
||||
atomic_flag_test_and_set(volatile atomic_flag *__object)
|
||||
{
|
||||
|
||||
return (atomic_flag_test_and_set_explicit(__object,
|
||||
memory_order_seq_cst));
|
||||
}
|
||||
|
||||
static __inline void
|
||||
atomic_flag_clear(volatile atomic_flag *__object)
|
||||
{
|
||||
|
||||
atomic_flag_clear_explicit(__object, memory_order_seq_cst);
|
||||
}
|
||||
#endif /* !_KERNEL */
|
||||
|
||||
#endif /* !_STDATOMIC_H_ */
|
|
@ -1,511 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 2005 by
|
||||
* Ralf Corsepius, Ulm/Germany. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* is freely granted, provided that this notice is preserved.
|
||||
*/
|
||||
|
||||
#ifndef _STDINT_H
|
||||
#define _STDINT_H
|
||||
|
||||
#include <machine/_default_types.h>
|
||||
#include <sys/_intsup.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef ___int8_t_defined
|
||||
typedef __int8_t int8_t ;
|
||||
typedef __uint8_t uint8_t ;
|
||||
#define __int8_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef ___int_least8_t_defined
|
||||
typedef __int_least8_t int_least8_t;
|
||||
typedef __uint_least8_t uint_least8_t;
|
||||
#define __int_least8_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef ___int16_t_defined
|
||||
typedef __int16_t int16_t ;
|
||||
typedef __uint16_t uint16_t ;
|
||||
#define __int16_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef ___int_least16_t_defined
|
||||
typedef __int_least16_t int_least16_t;
|
||||
typedef __uint_least16_t uint_least16_t;
|
||||
#define __int_least16_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef ___int32_t_defined
|
||||
typedef __int32_t int32_t ;
|
||||
typedef __uint32_t uint32_t ;
|
||||
#define __int32_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef ___int_least32_t_defined
|
||||
typedef __int_least32_t int_least32_t;
|
||||
typedef __uint_least32_t uint_least32_t;
|
||||
#define __int_least32_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef ___int64_t_defined
|
||||
typedef __int64_t int64_t ;
|
||||
typedef __uint64_t uint64_t ;
|
||||
#define __int64_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef ___int_least64_t_defined
|
||||
typedef __int_least64_t int_least64_t;
|
||||
typedef __uint_least64_t uint_least64_t;
|
||||
#define __int_least64_t_defined 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Fastest minimum-width integer types
|
||||
*
|
||||
* Assume int to be the fastest type for all types with a width
|
||||
* less than __INT_MAX__ rsp. INT_MAX
|
||||
*/
|
||||
#ifdef __INT_FAST8_TYPE__
|
||||
typedef __INT_FAST8_TYPE__ int_fast8_t;
|
||||
typedef __UINT_FAST8_TYPE__ uint_fast8_t;
|
||||
#define __int_fast8_t_defined 1
|
||||
#elif __STDINT_EXP(INT_MAX) >= 0x7f
|
||||
typedef signed int int_fast8_t;
|
||||
typedef unsigned int uint_fast8_t;
|
||||
#define __int_fast8_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef __INT_FAST16_TYPE__
|
||||
typedef __INT_FAST16_TYPE__ int_fast16_t;
|
||||
typedef __UINT_FAST16_TYPE__ uint_fast16_t;
|
||||
#define __int_fast16_t_defined 1
|
||||
#elif __STDINT_EXP(INT_MAX) >= 0x7fff
|
||||
typedef signed int int_fast16_t;
|
||||
typedef unsigned int uint_fast16_t;
|
||||
#define __int_fast16_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef __INT_FAST32_TYPE__
|
||||
typedef __INT_FAST32_TYPE__ int_fast32_t;
|
||||
typedef __UINT_FAST32_TYPE__ uint_fast32_t;
|
||||
#define __int_fast32_t_defined 1
|
||||
#elif __STDINT_EXP(INT_MAX) >= 0x7fffffff
|
||||
typedef signed int int_fast32_t;
|
||||
typedef unsigned int uint_fast32_t;
|
||||
#define __int_fast32_t_defined 1
|
||||
#endif
|
||||
|
||||
#ifdef __INT_FAST64_TYPE__
|
||||
typedef __INT_FAST64_TYPE__ int_fast64_t;
|
||||
typedef __UINT_FAST64_TYPE__ uint_fast64_t;
|
||||
#define __int_fast64_t_defined 1
|
||||
#elif __STDINT_EXP(INT_MAX) > 0x7fffffff
|
||||
typedef signed int int_fast64_t;
|
||||
typedef unsigned int uint_fast64_t;
|
||||
#define __int_fast64_t_defined 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Fall back to [u]int_least<N>_t for [u]int_fast<N>_t types
|
||||
* not having been defined, yet.
|
||||
* Leave undefined, if [u]int_least<N>_t should not be available.
|
||||
*/
|
||||
#if !__int_fast8_t_defined
|
||||
#if __int_least8_t_defined
|
||||
typedef int_least8_t int_fast8_t;
|
||||
typedef uint_least8_t uint_fast8_t;
|
||||
#define __int_fast8_t_defined 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !__int_fast16_t_defined
|
||||
#if __int_least16_t_defined
|
||||
typedef int_least16_t int_fast16_t;
|
||||
typedef uint_least16_t uint_fast16_t;
|
||||
#define __int_fast16_t_defined 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !__int_fast32_t_defined
|
||||
#if __int_least32_t_defined
|
||||
typedef int_least32_t int_fast32_t;
|
||||
typedef uint_least32_t uint_fast32_t;
|
||||
#define __int_fast32_t_defined 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !__int_fast64_t_defined
|
||||
#if __int_least64_t_defined
|
||||
typedef int_least64_t int_fast64_t;
|
||||
typedef uint_least64_t uint_fast64_t;
|
||||
#define __int_fast64_t_defined 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Greatest-width integer types */
|
||||
/* Modern GCCs provide __INTMAX_TYPE__ */
|
||||
#if defined(__INTMAX_TYPE__)
|
||||
typedef __INTMAX_TYPE__ intmax_t;
|
||||
#elif __have_longlong64
|
||||
typedef signed long long intmax_t;
|
||||
#else
|
||||
typedef signed long intmax_t;
|
||||
#endif
|
||||
|
||||
/* Modern GCCs provide __UINTMAX_TYPE__ */
|
||||
#if defined(__UINTMAX_TYPE__)
|
||||
typedef __UINTMAX_TYPE__ uintmax_t;
|
||||
#elif __have_longlong64
|
||||
typedef unsigned long long uintmax_t;
|
||||
#else
|
||||
typedef unsigned long uintmax_t;
|
||||
#endif
|
||||
|
||||
typedef __intptr_t intptr_t;
|
||||
typedef __uintptr_t uintptr_t;
|
||||
|
||||
#ifdef __INTPTR_TYPE__
|
||||
#define INTPTR_MIN (-__INTPTR_MAX__ - 1)
|
||||
#define INTPTR_MAX __INTPTR_MAX__
|
||||
#define UINTPTR_MAX __UINTPTR_MAX__
|
||||
#elif defined(__PTRDIFF_TYPE__)
|
||||
#define INTPTR_MAX PTRDIFF_MAX
|
||||
#define INTPTR_MIN PTRDIFF_MIN
|
||||
#ifdef __UINTPTR_MAX__
|
||||
#define UINTPTR_MAX __UINTPTR_MAX__
|
||||
#else
|
||||
#define UINTPTR_MAX (2UL * PTRDIFF_MAX + 1)
|
||||
#endif
|
||||
#else
|
||||
/*
|
||||
* Fallback to hardcoded values,
|
||||
* should be valid on cpu's with 32bit int/32bit void*
|
||||
*/
|
||||
#define INTPTR_MAX __STDINT_EXP(LONG_MAX)
|
||||
#define INTPTR_MIN (-__STDINT_EXP(LONG_MAX) - 1)
|
||||
#define UINTPTR_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)
|
||||
#endif
|
||||
|
||||
/* Limits of Specified-Width Integer Types */
|
||||
|
||||
#ifdef __INT8_MAX__
|
||||
#define INT8_MIN (-__INT8_MAX__ - 1)
|
||||
#define INT8_MAX __INT8_MAX__
|
||||
#define UINT8_MAX __UINT8_MAX__
|
||||
#elif defined(__int8_t_defined)
|
||||
#define INT8_MIN -128
|
||||
#define INT8_MAX 127
|
||||
#define UINT8_MAX 255
|
||||
#endif
|
||||
|
||||
#ifdef __INT_LEAST8_MAX__
|
||||
#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)
|
||||
#define INT_LEAST8_MAX __INT_LEAST8_MAX__
|
||||
#define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
|
||||
#elif defined(__int_least8_t_defined)
|
||||
#define INT_LEAST8_MIN -128
|
||||
#define INT_LEAST8_MAX 127
|
||||
#define UINT_LEAST8_MAX 255
|
||||
#else
|
||||
#error required type int_least8_t missing
|
||||
#endif
|
||||
|
||||
#ifdef __INT16_MAX__
|
||||
#define INT16_MIN (-__INT16_MAX__ - 1)
|
||||
#define INT16_MAX __INT16_MAX__
|
||||
#define UINT16_MAX __UINT16_MAX__
|
||||
#elif defined(__int16_t_defined)
|
||||
#define INT16_MIN -32768
|
||||
#define INT16_MAX 32767
|
||||
#define UINT16_MAX 65535
|
||||
#endif
|
||||
|
||||
#ifdef __INT_LEAST16_MAX__
|
||||
#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)
|
||||
#define INT_LEAST16_MAX __INT_LEAST16_MAX__
|
||||
#define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
|
||||
#elif defined(__int_least16_t_defined)
|
||||
#define INT_LEAST16_MIN -32768
|
||||
#define INT_LEAST16_MAX 32767
|
||||
#define UINT_LEAST16_MAX 65535
|
||||
#else
|
||||
#error required type int_least16_t missing
|
||||
#endif
|
||||
|
||||
#ifdef __INT32_MAX__
|
||||
#define INT32_MIN (-__INT32_MAX__ - 1)
|
||||
#define INT32_MAX __INT32_MAX__
|
||||
#define UINT32_MAX __UINT32_MAX__
|
||||
#elif defined(__int32_t_defined)
|
||||
#if __have_long32
|
||||
#define INT32_MIN (-2147483647L-1)
|
||||
#define INT32_MAX 2147483647L
|
||||
#define UINT32_MAX 4294967295UL
|
||||
#else
|
||||
#define INT32_MIN (-2147483647-1)
|
||||
#define INT32_MAX 2147483647
|
||||
#define UINT32_MAX 4294967295U
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT_LEAST32_MAX__
|
||||
#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)
|
||||
#define INT_LEAST32_MAX __INT_LEAST32_MAX__
|
||||
#define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
|
||||
#elif defined(__int_least32_t_defined)
|
||||
#if __have_long32
|
||||
#define INT_LEAST32_MIN (-2147483647L-1)
|
||||
#define INT_LEAST32_MAX 2147483647L
|
||||
#define UINT_LEAST32_MAX 4294967295UL
|
||||
#else
|
||||
#define INT_LEAST32_MIN (-2147483647-1)
|
||||
#define INT_LEAST32_MAX 2147483647
|
||||
#define UINT_LEAST32_MAX 4294967295U
|
||||
#endif
|
||||
#else
|
||||
#error required type int_least32_t missing
|
||||
#endif
|
||||
|
||||
#ifdef __INT64_MAX__
|
||||
#define INT64_MIN (-__INT64_MAX__ - 1)
|
||||
#define INT64_MAX __INT64_MAX__
|
||||
#define UINT64_MAX __UINT64_MAX__
|
||||
#elif defined(__int64_t_defined)
|
||||
#if __have_long64
|
||||
#define INT64_MIN (-9223372036854775807L-1L)
|
||||
#define INT64_MAX 9223372036854775807L
|
||||
#define UINT64_MAX 18446744073709551615U
|
||||
#elif __have_longlong64
|
||||
#define INT64_MIN (-9223372036854775807LL-1LL)
|
||||
#define INT64_MAX 9223372036854775807LL
|
||||
#define UINT64_MAX 18446744073709551615ULL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT_LEAST64_MAX__
|
||||
#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)
|
||||
#define INT_LEAST64_MAX __INT_LEAST64_MAX__
|
||||
#define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
|
||||
#elif defined(__int_least64_t_defined)
|
||||
#if __have_long64
|
||||
#define INT_LEAST64_MIN (-9223372036854775807L-1L)
|
||||
#define INT_LEAST64_MAX 9223372036854775807L
|
||||
#define UINT_LEAST64_MAX 18446744073709551615U
|
||||
#elif __have_longlong64
|
||||
#define INT_LEAST64_MIN (-9223372036854775807LL-1LL)
|
||||
#define INT_LEAST64_MAX 9223372036854775807LL
|
||||
#define UINT_LEAST64_MAX 18446744073709551615ULL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT_FAST8_MAX__
|
||||
#define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)
|
||||
#define INT_FAST8_MAX __INT_FAST8_MAX__
|
||||
#define UINT_FAST8_MAX __UINT_FAST8_MAX__
|
||||
#elif defined(__int_fast8_t_defined)
|
||||
#if __STDINT_EXP(INT_MAX) >= 0x7f
|
||||
#define INT_FAST8_MIN (-__STDINT_EXP(INT_MAX)-1)
|
||||
#define INT_FAST8_MAX __STDINT_EXP(INT_MAX)
|
||||
#define UINT_FAST8_MAX (__STDINT_EXP(INT_MAX)*2U+1U)
|
||||
#else
|
||||
#define INT_FAST8_MIN INT_LEAST8_MIN
|
||||
#define INT_FAST8_MAX INT_LEAST8_MAX
|
||||
#define UINT_FAST8_MAX UINT_LEAST8_MAX
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT_FAST16_MAX__
|
||||
#define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)
|
||||
#define INT_FAST16_MAX __INT_FAST16_MAX__
|
||||
#define UINT_FAST16_MAX __UINT_FAST16_MAX__
|
||||
#elif defined(__int_fast16_t_defined)
|
||||
#if __STDINT_EXP(INT_MAX) >= 0x7fff
|
||||
#define INT_FAST16_MIN (-__STDINT_EXP(INT_MAX)-1)
|
||||
#define INT_FAST16_MAX __STDINT_EXP(INT_MAX)
|
||||
#define UINT_FAST16_MAX (__STDINT_EXP(INT_MAX)*2U+1U)
|
||||
#else
|
||||
#define INT_FAST16_MIN INT_LEAST16_MIN
|
||||
#define INT_FAST16_MAX INT_LEAST16_MAX
|
||||
#define UINT_FAST16_MAX UINT_LEAST16_MAX
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT_FAST32_MAX__
|
||||
#define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)
|
||||
#define INT_FAST32_MAX __INT_FAST32_MAX__
|
||||
#define UINT_FAST32_MAX __UINT_FAST32_MAX__
|
||||
#elif defined(__int_fast32_t_defined)
|
||||
#if __STDINT_EXP(INT_MAX) >= 0x7fffffff
|
||||
#define INT_FAST32_MIN (-__STDINT_EXP(INT_MAX)-1)
|
||||
#define INT_FAST32_MAX __STDINT_EXP(INT_MAX)
|
||||
#define UINT_FAST32_MAX (__STDINT_EXP(INT_MAX)*2U+1U)
|
||||
#else
|
||||
#define INT_FAST32_MIN INT_LEAST32_MIN
|
||||
#define INT_FAST32_MAX INT_LEAST32_MAX
|
||||
#define UINT_FAST32_MAX UINT_LEAST32_MAX
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT_FAST64_MAX__
|
||||
#define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)
|
||||
#define INT_FAST64_MAX __INT_FAST64_MAX__
|
||||
#define UINT_FAST64_MAX __UINT_FAST64_MAX__
|
||||
#elif defined(__int_fast64_t_defined)
|
||||
#if __STDINT_EXP(INT_MAX) > 0x7fffffff
|
||||
#define INT_FAST64_MIN (-__STDINT_EXP(INT_MAX)-1)
|
||||
#define INT_FAST64_MAX __STDINT_EXP(INT_MAX)
|
||||
#define UINT_FAST64_MAX (__STDINT_EXP(INT_MAX)*2U+1U)
|
||||
#else
|
||||
#define INT_FAST64_MIN INT_LEAST64_MIN
|
||||
#define INT_FAST64_MAX INT_LEAST64_MAX
|
||||
#define UINT_FAST64_MAX UINT_LEAST64_MAX
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INTMAX_MAX__
|
||||
#define INTMAX_MAX __INTMAX_MAX__
|
||||
#define INTMAX_MIN (-INTMAX_MAX - 1)
|
||||
#elif defined(__INTMAX_TYPE__)
|
||||
/* All relevant GCC versions prefer long to long long for intmax_t. */
|
||||
#define INTMAX_MAX INT64_MAX
|
||||
#define INTMAX_MIN INT64_MIN
|
||||
#endif
|
||||
|
||||
#ifdef __UINTMAX_MAX__
|
||||
#define UINTMAX_MAX __UINTMAX_MAX__
|
||||
#elif defined(__UINTMAX_TYPE__)
|
||||
/* All relevant GCC versions prefer long to long long for intmax_t. */
|
||||
#define UINTMAX_MAX UINT64_MAX
|
||||
#endif
|
||||
|
||||
/* This must match size_t in stddef.h, currently long unsigned int */
|
||||
#ifdef __SIZE_MAX__
|
||||
#define SIZE_MAX __SIZE_MAX__
|
||||
#else
|
||||
#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)
|
||||
#endif
|
||||
|
||||
/* This must match sig_atomic_t in <signal.h> (currently int) */
|
||||
#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
|
||||
#define SIG_ATOMIC_MAX __STDINT_EXP(INT_MAX)
|
||||
|
||||
/* This must match ptrdiff_t in <stddef.h> (currently long int) */
|
||||
#ifdef __PTRDIFF_MAX__
|
||||
#define PTRDIFF_MAX __PTRDIFF_MAX__
|
||||
#else
|
||||
#define PTRDIFF_MAX __STDINT_EXP(LONG_MAX)
|
||||
#endif
|
||||
#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
|
||||
|
||||
/* This must match definition in <wchar.h> */
|
||||
#ifndef WCHAR_MIN
|
||||
#ifdef __WCHAR_MIN__
|
||||
#define WCHAR_MIN __WCHAR_MIN__
|
||||
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
|
||||
#define WCHAR_MIN (0 + L'\0')
|
||||
#else
|
||||
#define WCHAR_MIN (-0x7fffffff - 1 + L'\0')
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* This must match definition in <wchar.h> */
|
||||
#ifndef WCHAR_MAX
|
||||
#ifdef __WCHAR_MAX__
|
||||
#define WCHAR_MAX __WCHAR_MAX__
|
||||
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
|
||||
#define WCHAR_MAX (0xffffffffu + L'\0')
|
||||
#else
|
||||
#define WCHAR_MAX (0x7fffffff + L'\0')
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* wint_t is unsigned int on almost all GCC targets. */
|
||||
#ifdef __WINT_MAX__
|
||||
#define WINT_MAX __WINT_MAX__
|
||||
#else
|
||||
#define WINT_MAX (__STDINT_EXP(INT_MAX) * 2U + 1U)
|
||||
#endif
|
||||
#ifdef __WINT_MIN__
|
||||
#define WINT_MIN __WINT_MIN__
|
||||
#else
|
||||
#define WINT_MIN 0U
|
||||
#endif
|
||||
|
||||
/** Macros for minimum-width integer constant expressions */
|
||||
#ifdef __INT8_C
|
||||
#define INT8_C(x) __INT8_C(x)
|
||||
#define UINT8_C(x) __UINT8_C(x)
|
||||
#else
|
||||
#define INT8_C(x) x
|
||||
#if __STDINT_EXP(INT_MAX) > 0x7f
|
||||
#define UINT8_C(x) x
|
||||
#else
|
||||
#define UINT8_C(x) x##U
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT16_C
|
||||
#define INT16_C(x) __INT16_C(x)
|
||||
#define UINT16_C(x) __UINT16_C(x)
|
||||
#else
|
||||
#define INT16_C(x) x
|
||||
#if __STDINT_EXP(INT_MAX) > 0x7fff
|
||||
#define UINT16_C(x) x
|
||||
#else
|
||||
#define UINT16_C(x) x##U
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT32_C
|
||||
#define INT32_C(x) __INT32_C(x)
|
||||
#define UINT32_C(x) __UINT32_C(x)
|
||||
#else
|
||||
#if __have_long32
|
||||
#define INT32_C(x) x##L
|
||||
#define UINT32_C(x) x##UL
|
||||
#else
|
||||
#define INT32_C(x) x
|
||||
#define UINT32_C(x) x##U
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __INT64_C
|
||||
#define INT64_C(x) __INT64_C(x)
|
||||
#define UINT64_C(x) __UINT64_C(x)
|
||||
#else
|
||||
#if __int64_t_defined
|
||||
#if __have_long64
|
||||
#define INT64_C(x) x##L
|
||||
#define UINT64_C(x) x##UL
|
||||
#else
|
||||
#define INT64_C(x) x##LL
|
||||
#define UINT64_C(x) x##ULL
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/** Macros for greatest-width integer constant expression */
|
||||
#ifdef __INTMAX_C
|
||||
#define INTMAX_C(x) __INTMAX_C(x)
|
||||
#define UINTMAX_C(x) __UINTMAX_C(x)
|
||||
#else
|
||||
#if __have_long64
|
||||
#define INTMAX_C(x) x##L
|
||||
#define UINTMAX_C(x) x##UL
|
||||
#else
|
||||
#define INTMAX_C(x) x##LL
|
||||
#define UINTMAX_C(x) x##ULL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _STDINT_H */
|
|
@ -1,727 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 1990 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms are permitted
|
||||
* provided that the above copyright notice and this paragraph are
|
||||
* duplicated in all such forms and that any documentation,
|
||||
* advertising materials, and other materials related to such
|
||||
* distribution and use acknowledge that the software was developed
|
||||
* by the University of California, Berkeley. The name of the
|
||||
* University may not be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* @(#)stdio.h 5.3 (Berkeley) 3/15/86
|
||||
*/
|
||||
|
||||
/*
|
||||
* NB: to fit things in six character monocase externals, the
|
||||
* stdio code uses the prefix `__s' for stdio objects, typically
|
||||
* followed by a three-character attempt at a mnemonic.
|
||||
*/
|
||||
|
||||
#ifndef _STDIO_H_
|
||||
#define _STDIO_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
|
||||
#define _FSTDIO /* ``function stdio'' */
|
||||
|
||||
#define __need_size_t
|
||||
#define __need_NULL
|
||||
#include <sys/cdefs.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define __need___va_list
|
||||
#include <stdarg.h>
|
||||
|
||||
/*
|
||||
* <sys/reent.h> defines __FILE, _fpos_t.
|
||||
* They must be defined there because struct _reent needs them (and we don't
|
||||
* want reent.h to include this file.
|
||||
*/
|
||||
|
||||
#include <sys/reent.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
typedef __FILE FILE;
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
typedef _fpos64_t fpos_t;
|
||||
#else
|
||||
typedef _fpos_t fpos_t;
|
||||
#ifdef __LARGE64_FILES
|
||||
typedef _fpos64_t fpos64_t;
|
||||
#endif
|
||||
#endif /* !__CYGWIN__ */
|
||||
|
||||
#include <sys/stdio.h>
|
||||
|
||||
#define __SLBF 0x0001 /* line buffered */
|
||||
#define __SNBF 0x0002 /* unbuffered */
|
||||
#define __SRD 0x0004 /* OK to read */
|
||||
#define __SWR 0x0008 /* OK to write */
|
||||
/* RD and WR are never simultaneously asserted */
|
||||
#define __SRW 0x0010 /* open for reading & writing */
|
||||
#define __SEOF 0x0020 /* found EOF */
|
||||
#define __SERR 0x0040 /* found error */
|
||||
#define __SMBF 0x0080 /* _buf is from malloc */
|
||||
#define __SAPP 0x0100 /* fdopen()ed in append mode - so must write to end */
|
||||
#define __SSTR 0x0200 /* this is an sprintf/snprintf string */
|
||||
#define __SOPT 0x0400 /* do fseek() optimisation */
|
||||
#define __SNPT 0x0800 /* do not do fseek() optimisation */
|
||||
#define __SOFF 0x1000 /* set iff _offset is in fact correct */
|
||||
#define __SORD 0x2000 /* true => stream orientation (byte/wide) decided */
|
||||
#if defined(__CYGWIN__)
|
||||
# define __SCLE 0x4000 /* convert line endings CR/LF <-> NL */
|
||||
#endif
|
||||
#define __SL64 0x8000 /* is 64-bit offset large file */
|
||||
|
||||
/* _flags2 flags */
|
||||
#define __SNLK 0x0001 /* stdio functions do not lock streams themselves */
|
||||
#define __SWID 0x2000 /* true => stream orientation wide, false => byte, only valid if __SORD in _flags is true */
|
||||
|
||||
/*
|
||||
* The following three definitions are for ANSI C, which took them
|
||||
* from System V, which stupidly took internal interface macros and
|
||||
* made them official arguments to setvbuf(), without renaming them.
|
||||
* Hence, these ugly _IOxxx names are *supposed* to appear in user code.
|
||||
*
|
||||
* Although these happen to match their counterparts above, the
|
||||
* implementation does not rely on that (so these could be renumbered).
|
||||
*/
|
||||
#define _IOFBF 0 /* setvbuf should set fully buffered */
|
||||
#define _IOLBF 1 /* setvbuf should set line buffered */
|
||||
#define _IONBF 2 /* setvbuf should set unbuffered */
|
||||
|
||||
#define EOF (-1)
|
||||
|
||||
#ifdef __BUFSIZ__
|
||||
#define BUFSIZ __BUFSIZ__
|
||||
#else
|
||||
#define BUFSIZ 1024
|
||||
#endif
|
||||
|
||||
#ifdef __FOPEN_MAX__
|
||||
#define FOPEN_MAX __FOPEN_MAX__
|
||||
#else
|
||||
#define FOPEN_MAX 20
|
||||
#endif
|
||||
|
||||
#ifdef __FILENAME_MAX__
|
||||
#define FILENAME_MAX __FILENAME_MAX__
|
||||
#else
|
||||
#define FILENAME_MAX 1024
|
||||
#endif
|
||||
|
||||
#ifdef __L_tmpnam__
|
||||
#define L_tmpnam __L_tmpnam__
|
||||
#else
|
||||
#define L_tmpnam FILENAME_MAX
|
||||
#endif
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
#define P_tmpdir "/tmp"
|
||||
#endif
|
||||
|
||||
#ifndef SEEK_SET
|
||||
#define SEEK_SET 0 /* set file offset to offset */
|
||||
#endif
|
||||
#ifndef SEEK_CUR
|
||||
#define SEEK_CUR 1 /* set file offset to current plus offset */
|
||||
#endif
|
||||
#ifndef SEEK_END
|
||||
#define SEEK_END 2 /* set file offset to EOF plus offset */
|
||||
#endif
|
||||
|
||||
#define TMP_MAX 26
|
||||
|
||||
#define stdin (_REENT->_stdin)
|
||||
#define stdout (_REENT->_stdout)
|
||||
#define stderr (_REENT->_stderr)
|
||||
|
||||
#define _stdin_r(x) ((x)->_stdin)
|
||||
#define _stdout_r(x) ((x)->_stdout)
|
||||
#define _stderr_r(x) ((x)->_stderr)
|
||||
|
||||
/*
|
||||
* Functions defined in ANSI C standard.
|
||||
*/
|
||||
|
||||
#ifndef __VALIST
|
||||
#ifdef __GNUC__
|
||||
#define __VALIST __gnuc_va_list
|
||||
#else
|
||||
#define __VALIST char*
|
||||
#endif
|
||||
#endif
|
||||
|
||||
FILE * _EXFUN(tmpfile, (void));
|
||||
char * _EXFUN(tmpnam, (char *));
|
||||
#if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
|
||||
char * _EXFUN(tempnam, (const char *, const char *));
|
||||
#endif
|
||||
int _EXFUN(fclose, (FILE *));
|
||||
int _EXFUN(fflush, (FILE *));
|
||||
FILE * _EXFUN(freopen, (const char *__restrict, const char *__restrict, FILE *__restrict));
|
||||
void _EXFUN(setbuf, (FILE *__restrict, char *__restrict));
|
||||
int _EXFUN(setvbuf, (FILE *__restrict, char *__restrict, int, size_t));
|
||||
int _EXFUN(fprintf, (FILE *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
int _EXFUN(fscanf, (FILE *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 3))));
|
||||
int _EXFUN(printf, (const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 1, 2))));
|
||||
int _EXFUN(scanf, (const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 1, 2))));
|
||||
int _EXFUN(sscanf, (const char *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 3))));
|
||||
int _EXFUN(vfprintf, (FILE *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(vprintf, (const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 1, 0))));
|
||||
int _EXFUN(vsprintf, (char *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(fgetc, (FILE *));
|
||||
char * _EXFUN(fgets, (char *__restrict, int, FILE *__restrict));
|
||||
int _EXFUN(fputc, (int, FILE *));
|
||||
int _EXFUN(fputs, (const char *__restrict, FILE *__restrict));
|
||||
int _EXFUN(getc, (FILE *));
|
||||
int _EXFUN(getchar, (void));
|
||||
char * _EXFUN(gets, (char *));
|
||||
int _EXFUN(putc, (int, FILE *));
|
||||
int _EXFUN(putchar, (int));
|
||||
int _EXFUN(puts, (const char *));
|
||||
int _EXFUN(ungetc, (int, FILE *));
|
||||
size_t _EXFUN(fread, (_PTR __restrict, size_t _size, size_t _n, FILE *__restrict));
|
||||
size_t _EXFUN(fwrite, (const _PTR __restrict , size_t _size, size_t _n, FILE *));
|
||||
#ifdef _COMPILING_NEWLIB
|
||||
int _EXFUN(fgetpos, (FILE *, _fpos_t *));
|
||||
#else
|
||||
int _EXFUN(fgetpos, (FILE *__restrict, fpos_t *__restrict));
|
||||
#endif
|
||||
int _EXFUN(fseek, (FILE *, long, int));
|
||||
#ifdef _COMPILING_NEWLIB
|
||||
int _EXFUN(fsetpos, (FILE *, const _fpos_t *));
|
||||
#else
|
||||
int _EXFUN(fsetpos, (FILE *, const fpos_t *));
|
||||
#endif
|
||||
long _EXFUN(ftell, ( FILE *));
|
||||
void _EXFUN(rewind, (FILE *));
|
||||
void _EXFUN(clearerr, (FILE *));
|
||||
int _EXFUN(feof, (FILE *));
|
||||
int _EXFUN(ferror, (FILE *));
|
||||
void _EXFUN(perror, (const char *));
|
||||
#ifndef _REENT_ONLY
|
||||
FILE * _EXFUN(fopen, (const char *__restrict _name, const char *__restrict _type));
|
||||
int _EXFUN(sprintf, (char *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
int _EXFUN(remove, (const char *));
|
||||
int _EXFUN(rename, (const char *, const char *));
|
||||
#ifdef _COMPILING_NEWLIB
|
||||
int _EXFUN(_rename, (const char *, const char *));
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(__STRICT_ANSI__) || defined(__USE_XOPEN2K)
|
||||
#ifdef _COMPILING_NEWLIB
|
||||
int _EXFUN(fseeko, (FILE *, _off_t, int));
|
||||
_off_t _EXFUN(ftello, ( FILE *));
|
||||
#else
|
||||
int _EXFUN(fseeko, (FILE *, off_t, int));
|
||||
off_t _EXFUN(ftello, ( FILE *));
|
||||
#endif
|
||||
#endif
|
||||
#if __GNU_VISIBLE
|
||||
int _EXFUN(fcloseall, (_VOID));
|
||||
#endif
|
||||
#if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L)
|
||||
#ifndef _REENT_ONLY
|
||||
int _EXFUN(asiprintf, (char **, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
char * _EXFUN(asniprintf, (char *, size_t *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
char * _EXFUN(asnprintf, (char *__restrict, size_t *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(asprintf, (char **__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
#ifndef diprintf
|
||||
int _EXFUN(diprintf, (int, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
#endif
|
||||
int _EXFUN(fiprintf, (FILE *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
int _EXFUN(fiscanf, (FILE *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 3))));
|
||||
int _EXFUN(iprintf, (const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 1, 2))));
|
||||
int _EXFUN(iscanf, (const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 1, 2))));
|
||||
int _EXFUN(siprintf, (char *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
int _EXFUN(siscanf, (const char *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 3))));
|
||||
int _EXFUN(snprintf, (char *__restrict, size_t, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(sniprintf, (char *, size_t, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(vasiprintf, (char **, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
char * _EXFUN(vasniprintf, (char *, size_t *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
char * _EXFUN(vasnprintf, (char *, size_t *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(vasprintf, (char **, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(vdiprintf, (int, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(vfiprintf, (FILE *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(vfiscanf, (FILE *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 0))));
|
||||
int _EXFUN(vfscanf, (FILE *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 0))));
|
||||
int _EXFUN(viprintf, (const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 1, 0))));
|
||||
int _EXFUN(viscanf, (const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 1, 0))));
|
||||
int _EXFUN(vscanf, (const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 1, 0))));
|
||||
int _EXFUN(vsiprintf, (char *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(vsiscanf, (const char *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 0))));
|
||||
int _EXFUN(vsniprintf, (char *, size_t, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(vsnprintf, (char *__restrict, size_t, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(vsscanf, (const char *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 0))));
|
||||
#endif /* !_REENT_ONLY */
|
||||
#endif /* !__STRICT_ANSI__ */
|
||||
|
||||
/*
|
||||
* Routines in POSIX 1003.1:2001.
|
||||
*/
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
#ifndef _REENT_ONLY
|
||||
FILE * _EXFUN(fdopen, (int, const char *));
|
||||
#endif
|
||||
int _EXFUN(fileno, (FILE *));
|
||||
int _EXFUN(getw, (FILE *));
|
||||
int _EXFUN(pclose, (FILE *));
|
||||
FILE * _EXFUN(popen, (const char *, const char *));
|
||||
int _EXFUN(putw, (int, FILE *));
|
||||
void _EXFUN(setbuffer, (FILE *, char *, int));
|
||||
int _EXFUN(setlinebuf, (FILE *));
|
||||
int _EXFUN(getc_unlocked, (FILE *));
|
||||
int _EXFUN(getchar_unlocked, (void));
|
||||
void _EXFUN(flockfile, (FILE *));
|
||||
int _EXFUN(ftrylockfile, (FILE *));
|
||||
void _EXFUN(funlockfile, (FILE *));
|
||||
int _EXFUN(putc_unlocked, (int, FILE *));
|
||||
int _EXFUN(putchar_unlocked, (int));
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
|
||||
/*
|
||||
* Routines in POSIX 1003.1:200x.
|
||||
*/
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
# ifndef _REENT_ONLY
|
||||
# ifndef dprintf
|
||||
int _EXFUN(dprintf, (int, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
# endif
|
||||
FILE * _EXFUN(fmemopen, (void *__restrict, size_t, const char *__restrict));
|
||||
/* getdelim - see __getdelim for now */
|
||||
/* getline - see __getline for now */
|
||||
FILE * _EXFUN(open_memstream, (char **, size_t *));
|
||||
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809
|
||||
int _EXFUN(renameat, (int, const char *, int, const char *));
|
||||
#endif
|
||||
int _EXFUN(vdprintf, (int, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Recursive versions of the above.
|
||||
*/
|
||||
|
||||
int _EXFUN(_asiprintf_r, (struct _reent *, char **, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
char * _EXFUN(_asniprintf_r, (struct _reent *, char *, size_t *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 5))));
|
||||
char * _EXFUN(_asnprintf_r, (struct _reent *, char *__restrict, size_t *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 5))));
|
||||
int _EXFUN(_asprintf_r, (struct _reent *, char **__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(_diprintf_r, (struct _reent *, int, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(_dprintf_r, (struct _reent *, int, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(_fclose_r, (struct _reent *, FILE *));
|
||||
int _EXFUN(_fcloseall_r, (struct _reent *));
|
||||
FILE * _EXFUN(_fdopen_r, (struct _reent *, int, const char *));
|
||||
int _EXFUN(_fflush_r, (struct _reent *, FILE *));
|
||||
int _EXFUN(_fgetc_r, (struct _reent *, FILE *));
|
||||
int _EXFUN(_fgetc_unlocked_r, (struct _reent *, FILE *));
|
||||
char * _EXFUN(_fgets_r, (struct _reent *, char *__restrict, int, FILE *__restrict));
|
||||
char * _EXFUN(_fgets_unlocked_r, (struct _reent *, char *__restrict, int, FILE *__restrict));
|
||||
#ifdef _COMPILING_NEWLIB
|
||||
int _EXFUN(_fgetpos_r, (struct _reent *, FILE *__restrict, _fpos_t *__restrict));
|
||||
int _EXFUN(_fsetpos_r, (struct _reent *, FILE *, const _fpos_t *));
|
||||
#else
|
||||
int _EXFUN(_fgetpos_r, (struct _reent *, FILE *, fpos_t *));
|
||||
int _EXFUN(_fsetpos_r, (struct _reent *, FILE *, const fpos_t *));
|
||||
#endif
|
||||
int _EXFUN(_fiprintf_r, (struct _reent *, FILE *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(_fiscanf_r, (struct _reent *, FILE *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 4))));
|
||||
FILE * _EXFUN(_fmemopen_r, (struct _reent *, void *__restrict, size_t, const char *__restrict));
|
||||
FILE * _EXFUN(_fopen_r, (struct _reent *, const char *__restrict, const char *__restrict));
|
||||
FILE * _EXFUN(_freopen_r, (struct _reent *, const char *__restrict, const char *__restrict, FILE *__restrict));
|
||||
int _EXFUN(_fprintf_r, (struct _reent *, FILE *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(_fpurge_r, (struct _reent *, FILE *));
|
||||
int _EXFUN(_fputc_r, (struct _reent *, int, FILE *));
|
||||
int _EXFUN(_fputc_unlocked_r, (struct _reent *, int, FILE *));
|
||||
int _EXFUN(_fputs_r, (struct _reent *, const char *__restrict, FILE *__restrict));
|
||||
int _EXFUN(_fputs_unlocked_r, (struct _reent *, const char *__restrict, FILE *__restrict));
|
||||
size_t _EXFUN(_fread_r, (struct _reent *, _PTR __restrict, size_t _size, size_t _n, FILE *__restrict));
|
||||
size_t _EXFUN(_fread_unlocked_r, (struct _reent *, _PTR __restrict, size_t _size, size_t _n, FILE *__restrict));
|
||||
int _EXFUN(_fscanf_r, (struct _reent *, FILE *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 4))));
|
||||
int _EXFUN(_fseek_r, (struct _reent *, FILE *, long, int));
|
||||
int _EXFUN(_fseeko_r,(struct _reent *, FILE *, _off_t, int));
|
||||
long _EXFUN(_ftell_r, (struct _reent *, FILE *));
|
||||
_off_t _EXFUN(_ftello_r,(struct _reent *, FILE *));
|
||||
void _EXFUN(_rewind_r, (struct _reent *, FILE *));
|
||||
size_t _EXFUN(_fwrite_r, (struct _reent *, const _PTR __restrict, size_t _size, size_t _n, FILE *__restrict));
|
||||
size_t _EXFUN(_fwrite_unlocked_r, (struct _reent *, const _PTR __restrict, size_t _size, size_t _n, FILE *__restrict));
|
||||
int _EXFUN(_getc_r, (struct _reent *, FILE *));
|
||||
int _EXFUN(_getc_unlocked_r, (struct _reent *, FILE *));
|
||||
int _EXFUN(_getchar_r, (struct _reent *));
|
||||
int _EXFUN(_getchar_unlocked_r, (struct _reent *));
|
||||
char * _EXFUN(_gets_r, (struct _reent *, char *));
|
||||
int _EXFUN(_iprintf_r, (struct _reent *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
int _EXFUN(_iscanf_r, (struct _reent *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 3))));
|
||||
FILE * _EXFUN(_open_memstream_r, (struct _reent *, char **, size_t *));
|
||||
void _EXFUN(_perror_r, (struct _reent *, const char *));
|
||||
int _EXFUN(_printf_r, (struct _reent *, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 3))));
|
||||
int _EXFUN(_putc_r, (struct _reent *, int, FILE *));
|
||||
int _EXFUN(_putc_unlocked_r, (struct _reent *, int, FILE *));
|
||||
int _EXFUN(_putchar_unlocked_r, (struct _reent *, int));
|
||||
int _EXFUN(_putchar_r, (struct _reent *, int));
|
||||
int _EXFUN(_puts_r, (struct _reent *, const char *));
|
||||
int _EXFUN(_remove_r, (struct _reent *, const char *));
|
||||
int _EXFUN(_rename_r, (struct _reent *,
|
||||
const char *_old, const char *_new));
|
||||
int _EXFUN(_scanf_r, (struct _reent *, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 3))));
|
||||
int _EXFUN(_siprintf_r, (struct _reent *, char *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(_siscanf_r, (struct _reent *, const char *, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 4))));
|
||||
int _EXFUN(_sniprintf_r, (struct _reent *, char *, size_t, const char *, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 5))));
|
||||
int _EXFUN(_snprintf_r, (struct _reent *, char *__restrict, size_t, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 5))));
|
||||
int _EXFUN(_sprintf_r, (struct _reent *, char *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 4))));
|
||||
int _EXFUN(_sscanf_r, (struct _reent *, const char *__restrict, const char *__restrict, ...)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 4))));
|
||||
char * _EXFUN(_tempnam_r, (struct _reent *, const char *, const char *));
|
||||
FILE * _EXFUN(_tmpfile_r, (struct _reent *));
|
||||
char * _EXFUN(_tmpnam_r, (struct _reent *, char *));
|
||||
int _EXFUN(_ungetc_r, (struct _reent *, int, FILE *));
|
||||
int _EXFUN(_vasiprintf_r, (struct _reent *, char **, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
char * _EXFUN(_vasniprintf_r, (struct _reent*, char *, size_t *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 0))));
|
||||
char * _EXFUN(_vasnprintf_r, (struct _reent*, char *, size_t *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 0))));
|
||||
int _EXFUN(_vasprintf_r, (struct _reent *, char **, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(_vdiprintf_r, (struct _reent *, int, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(_vdprintf_r, (struct _reent *, int, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(_vfiprintf_r, (struct _reent *, FILE *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(_vfiscanf_r, (struct _reent *, FILE *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 0))));
|
||||
int _EXFUN(_vfprintf_r, (struct _reent *, FILE *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(_vfscanf_r, (struct _reent *, FILE *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 0))));
|
||||
int _EXFUN(_viprintf_r, (struct _reent *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(_viscanf_r, (struct _reent *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 0))));
|
||||
int _EXFUN(_vprintf_r, (struct _reent *, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 2, 0))));
|
||||
int _EXFUN(_vscanf_r, (struct _reent *, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 2, 0))));
|
||||
int _EXFUN(_vsiprintf_r, (struct _reent *, char *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(_vsiscanf_r, (struct _reent *, const char *, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 0))));
|
||||
int _EXFUN(_vsniprintf_r, (struct _reent *, char *, size_t, const char *, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 0))));
|
||||
int _EXFUN(_vsnprintf_r, (struct _reent *, char *__restrict, size_t, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 4, 0))));
|
||||
int _EXFUN(_vsprintf_r, (struct _reent *, char *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__printf__, 3, 0))));
|
||||
int _EXFUN(_vsscanf_r, (struct _reent *, const char *__restrict, const char *__restrict, __VALIST)
|
||||
_ATTRIBUTE ((__format__ (__scanf__, 3, 0))));
|
||||
|
||||
/* Other extensions. */
|
||||
|
||||
int _EXFUN(fpurge, (FILE *));
|
||||
ssize_t _EXFUN(__getdelim, (char **, size_t *, int, FILE *));
|
||||
ssize_t _EXFUN(__getline, (char **, size_t *, FILE *));
|
||||
|
||||
#if __BSD_VISIBLE
|
||||
void _EXFUN(clearerr_unlocked, (FILE *));
|
||||
int _EXFUN(feof_unlocked, (FILE *));
|
||||
int _EXFUN(ferror_unlocked, (FILE *));
|
||||
int _EXFUN(fileno_unlocked, (FILE *));
|
||||
int _EXFUN(fflush_unlocked, (FILE *));
|
||||
int _EXFUN(fgetc_unlocked, (FILE *));
|
||||
int _EXFUN(fputc_unlocked, (int, FILE *));
|
||||
size_t _EXFUN(fread_unlocked, (_PTR __restrict, size_t _size, size_t _n, FILE *__restrict));
|
||||
size_t _EXFUN(fwrite_unlocked, (const _PTR __restrict , size_t _size, size_t _n, FILE *));
|
||||
#endif
|
||||
|
||||
#if __GNU_VISIBLE
|
||||
char * _EXFUN(fgets_unlocked, (char *__restrict, int, FILE *__restrict));
|
||||
int _EXFUN(fputs_unlocked, (const char *__restrict, FILE *__restrict));
|
||||
#endif
|
||||
|
||||
#ifdef __LARGE64_FILES
|
||||
#if !defined(__CYGWIN__) || defined(_COMPILING_NEWLIB)
|
||||
FILE * _EXFUN(fdopen64, (int, const char *));
|
||||
FILE * _EXFUN(fopen64, (const char *, const char *));
|
||||
FILE * _EXFUN(freopen64, (_CONST char *, _CONST char *, FILE *));
|
||||
_off64_t _EXFUN(ftello64, (FILE *));
|
||||
_off64_t _EXFUN(fseeko64, (FILE *, _off64_t, int));
|
||||
int _EXFUN(fgetpos64, (FILE *, _fpos64_t *));
|
||||
int _EXFUN(fsetpos64, (FILE *, const _fpos64_t *));
|
||||
FILE * _EXFUN(tmpfile64, (void));
|
||||
|
||||
FILE * _EXFUN(_fdopen64_r, (struct _reent *, int, const char *));
|
||||
FILE * _EXFUN(_fopen64_r, (struct _reent *,const char *, const char *));
|
||||
FILE * _EXFUN(_freopen64_r, (struct _reent *, _CONST char *, _CONST char *, FILE *));
|
||||
_off64_t _EXFUN(_ftello64_r, (struct _reent *, FILE *));
|
||||
_off64_t _EXFUN(_fseeko64_r, (struct _reent *, FILE *, _off64_t, int));
|
||||
int _EXFUN(_fgetpos64_r, (struct _reent *, FILE *, _fpos64_t *));
|
||||
int _EXFUN(_fsetpos64_r, (struct _reent *, FILE *, const _fpos64_t *));
|
||||
FILE * _EXFUN(_tmpfile64_r, (struct _reent *));
|
||||
#endif /* !__CYGWIN__ */
|
||||
#endif /* __LARGE64_FILES */
|
||||
|
||||
/*
|
||||
* Routines internal to the implementation.
|
||||
*/
|
||||
|
||||
int _EXFUN(__srget_r, (struct _reent *, FILE *));
|
||||
int _EXFUN(__swbuf_r, (struct _reent *, int, FILE *));
|
||||
|
||||
/*
|
||||
* Stdio function-access interface.
|
||||
*/
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
# ifdef __LARGE64_FILES
|
||||
FILE *_EXFUN(funopen,(const _PTR __cookie,
|
||||
int (*__readfn)(_PTR __c, char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
int (*__writefn)(_PTR __c, const char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
_fpos64_t (*__seekfn)(_PTR __c, _fpos64_t __off, int __whence),
|
||||
int (*__closefn)(_PTR __c)));
|
||||
FILE *_EXFUN(_funopen_r,(struct _reent *, const _PTR __cookie,
|
||||
int (*__readfn)(_PTR __c, char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
int (*__writefn)(_PTR __c, const char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
_fpos64_t (*__seekfn)(_PTR __c, _fpos64_t __off, int __whence),
|
||||
int (*__closefn)(_PTR __c)));
|
||||
# else
|
||||
FILE *_EXFUN(funopen,(const _PTR __cookie,
|
||||
int (*__readfn)(_PTR __cookie, char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
int (*__writefn)(_PTR __cookie, const char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
fpos_t (*__seekfn)(_PTR __cookie, fpos_t __off, int __whence),
|
||||
int (*__closefn)(_PTR __cookie)));
|
||||
FILE *_EXFUN(_funopen_r,(struct _reent *, const _PTR __cookie,
|
||||
int (*__readfn)(_PTR __cookie, char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
int (*__writefn)(_PTR __cookie, const char *__buf,
|
||||
_READ_WRITE_BUFSIZE_TYPE __n),
|
||||
fpos_t (*__seekfn)(_PTR __cookie, fpos_t __off, int __whence),
|
||||
int (*__closefn)(_PTR __cookie)));
|
||||
# endif /* !__LARGE64_FILES */
|
||||
|
||||
# define fropen(__cookie, __fn) funopen(__cookie, __fn, (int (*)())0, \
|
||||
(fpos_t (*)())0, (int (*)())0)
|
||||
# define fwopen(__cookie, __fn) funopen(__cookie, (int (*)())0, __fn, \
|
||||
(fpos_t (*)())0, (int (*)())0)
|
||||
|
||||
typedef ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n);
|
||||
typedef ssize_t cookie_write_function_t(void *__cookie, const char *__buf,
|
||||
size_t __n);
|
||||
# ifdef __LARGE64_FILES
|
||||
typedef int cookie_seek_function_t(void *__cookie, _off64_t *__off,
|
||||
int __whence);
|
||||
# else
|
||||
typedef int cookie_seek_function_t(void *__cookie, off_t *__off, int __whence);
|
||||
# endif /* !__LARGE64_FILES */
|
||||
typedef int cookie_close_function_t(void *__cookie);
|
||||
typedef struct
|
||||
{
|
||||
/* These four struct member names are dictated by Linux; hopefully,
|
||||
they don't conflict with any macros. */
|
||||
cookie_read_function_t *read;
|
||||
cookie_write_function_t *write;
|
||||
cookie_seek_function_t *seek;
|
||||
cookie_close_function_t *close;
|
||||
} cookie_io_functions_t;
|
||||
FILE *_EXFUN(fopencookie,(void *__cookie,
|
||||
const char *__mode, cookie_io_functions_t __functions));
|
||||
FILE *_EXFUN(_fopencookie_r,(struct _reent *, void *__cookie,
|
||||
const char *__mode, cookie_io_functions_t __functions));
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
|
||||
#ifndef __CUSTOM_FILE_IO__
|
||||
/*
|
||||
* The __sfoo macros are here so that we can
|
||||
* define function versions in the C library.
|
||||
*/
|
||||
#define __sgetc_raw_r(__ptr, __f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))
|
||||
|
||||
#ifdef __SCLE
|
||||
/* For a platform with CR/LF, additional logic is required by
|
||||
__sgetc_r which would otherwise simply be a macro; therefore we
|
||||
use an inlined function. The function is only meant to be inlined
|
||||
in place as used and the function body should never be emitted.
|
||||
|
||||
There are two possible means to this end when compiling with GCC,
|
||||
one when compiling with a standard C99 compiler, and for other
|
||||
compilers we're just stuck. At the moment, this issue only
|
||||
affects the Cygwin target, so we'll most likely be using GCC. */
|
||||
|
||||
_ELIDABLE_INLINE int __sgetc_r(struct _reent *__ptr, FILE *__p);
|
||||
|
||||
_ELIDABLE_INLINE int __sgetc_r(struct _reent *__ptr, FILE *__p)
|
||||
{
|
||||
int __c = __sgetc_raw_r(__ptr, __p);
|
||||
if ((__p->_flags & __SCLE) && (__c == '\r'))
|
||||
{
|
||||
int __c2 = __sgetc_raw_r(__ptr, __p);
|
||||
if (__c2 == '\n')
|
||||
__c = __c2;
|
||||
else
|
||||
ungetc(__c2, __p);
|
||||
}
|
||||
return __c;
|
||||
}
|
||||
#else
|
||||
#define __sgetc_r(__ptr, __p) __sgetc_raw_r(__ptr, __p)
|
||||
#endif
|
||||
|
||||
#ifdef _never /* __GNUC__ */
|
||||
/* If this inline is actually used, then systems using coff debugging
|
||||
info get hopelessly confused. 21sept93 rich@cygnus.com. */
|
||||
_ELIDABLE_INLINE int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) {
|
||||
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
|
||||
return (*_p->_p++ = _c);
|
||||
else
|
||||
return (__swbuf_r(_ptr, _c, _p));
|
||||
}
|
||||
#else
|
||||
/*
|
||||
* This has been tuned to generate reasonable code on the vax using pcc
|
||||
*/
|
||||
#define __sputc_raw_r(__ptr, __c, __p) \
|
||||
(--(__p)->_w < 0 ? \
|
||||
(__p)->_w >= (__p)->_lbfsize ? \
|
||||
(*(__p)->_p = (__c)), *(__p)->_p != '\n' ? \
|
||||
(int)*(__p)->_p++ : \
|
||||
__swbuf_r(__ptr, '\n', __p) : \
|
||||
__swbuf_r(__ptr, (int)(__c), __p) : \
|
||||
(*(__p)->_p = (__c), (int)*(__p)->_p++))
|
||||
#ifdef __SCLE
|
||||
#define __sputc_r(__ptr, __c, __p) \
|
||||
((((__p)->_flags & __SCLE) && ((__c) == '\n')) \
|
||||
? __sputc_raw_r(__ptr, '\r', (__p)) : 0 , \
|
||||
__sputc_raw_r((__ptr), (__c), (__p)))
|
||||
#else
|
||||
#define __sputc_r(__ptr, __c, __p) __sputc_raw_r(__ptr, __c, __p)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))
|
||||
#define __sferror(p) ((int)(((p)->_flags & __SERR) != 0))
|
||||
#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
|
||||
#define __sfileno(p) ((p)->_file)
|
||||
|
||||
#ifndef _REENT_SMALL
|
||||
#define feof(p) __sfeof(p)
|
||||
#define ferror(p) __sferror(p)
|
||||
#define clearerr(p) __sclearerr(p)
|
||||
|
||||
#if __BSD_VISIBLE
|
||||
#define feof_unlocked(p) __sfeof(p)
|
||||
#define ferror_unlocked(p) __sferror(p)
|
||||
#define clearerr_unlocked(p) __sclearerr(p)
|
||||
#endif /* __BSD_VISIBLE */
|
||||
#endif /* _REENT_SMALL */
|
||||
|
||||
#if 0 /*ndef __STRICT_ANSI__ - FIXME: must initialize stdio first, use fn */
|
||||
#define fileno(p) __sfileno(p)
|
||||
#endif
|
||||
|
||||
#ifndef __CYGWIN__
|
||||
#ifndef lint
|
||||
#define getc(fp) __sgetc_r(_REENT, fp)
|
||||
#define putc(x, fp) __sputc_r(_REENT, x, fp)
|
||||
#endif /* lint */
|
||||
#endif /* __CYGWIN__ */
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
/* fast always-buffered version, true iff error */
|
||||
#define fast_putc(x,p) (--(p)->_w < 0 ? \
|
||||
__swbuf_r(_REENT, (int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0))
|
||||
|
||||
#define L_cuserid 9 /* posix says it goes in stdio.h :( */
|
||||
#ifdef __CYGWIN__
|
||||
#define L_ctermid 16
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* !__CUSTOM_FILE_IO__ */
|
||||
|
||||
#define getchar() getc(stdin)
|
||||
#define putchar(x) putc(x, stdout)
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
#define getchar_unlocked() getc_unlocked(stdin)
|
||||
#define putchar_unlocked(x) putc_unlocked(x, stdout)
|
||||
#endif
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _STDIO_H_ */
|
|
@ -1,79 +0,0 @@
|
|||
/*
|
||||
* stdio_ext.h
|
||||
*
|
||||
* Definitions for I/O internal operations, originally from Solaris.
|
||||
*/
|
||||
|
||||
#ifndef _STDIO_EXT_H_
|
||||
#define _STDIO_EXT_H_
|
||||
|
||||
#ifdef __rtems__
|
||||
#error "<stdio_ext.h> not supported"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define FSETLOCKING_QUERY 0
|
||||
#define FSETLOCKING_INTERNAL 1
|
||||
#define FSETLOCKING_BYCALLER 2
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
void _EXFUN(__fpurge,(FILE *));
|
||||
int _EXFUN(__fsetlocking,(FILE *, int));
|
||||
|
||||
/* TODO:
|
||||
|
||||
void _flushlbf (void);
|
||||
*/
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
_ELIDABLE_INLINE size_t
|
||||
__fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; }
|
||||
|
||||
_ELIDABLE_INLINE int
|
||||
__freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; }
|
||||
|
||||
_ELIDABLE_INLINE int
|
||||
__fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; }
|
||||
|
||||
_ELIDABLE_INLINE int
|
||||
__freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; }
|
||||
|
||||
_ELIDABLE_INLINE int
|
||||
__fwritable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; }
|
||||
|
||||
_ELIDABLE_INLINE int
|
||||
__flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; }
|
||||
|
||||
_ELIDABLE_INLINE size_t
|
||||
__fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; }
|
||||
|
||||
#else
|
||||
|
||||
size_t _EXFUN(__fbufsize,(FILE *));
|
||||
int _EXFUN(__freading,(FILE *));
|
||||
int _EXFUN(__fwriting,(FILE *));
|
||||
int _EXFUN(__freadable,(FILE *));
|
||||
int _EXFUN(__fwritable,(FILE *));
|
||||
int _EXFUN(__flbf,(FILE *));
|
||||
size_t _EXFUN(__fpending,(FILE *));
|
||||
|
||||
#ifndef __cplusplus
|
||||
|
||||
#define __fbufsize(__fp) ((size_t) (__fp)->_bf._size)
|
||||
#define __freading(__fp) (((__fp)->_flags & __SRD) != 0)
|
||||
#define __fwriting(__fp) (((__fp)->_flags & __SWR) != 0)
|
||||
#define __freadable(__fp) (((__fp)->_flags & (__SRD | __SRW)) != 0)
|
||||
#define __fwritable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0)
|
||||
#define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0)
|
||||
#define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base))
|
||||
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _STDIO_EXT_H_ */
|
|
@ -1,297 +0,0 @@
|
|||
/*
|
||||
* stdlib.h
|
||||
*
|
||||
* Definitions for common types, variables, and functions.
|
||||
*/
|
||||
|
||||
#ifndef _STDLIB_H_
|
||||
#define _STDLIB_H_
|
||||
|
||||
#include <machine/ieeefp.h>
|
||||
#include "_ansi.h"
|
||||
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
#define __need_NULL
|
||||
#include <stddef.h>
|
||||
|
||||
#include <sys/reent.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <machine/stdlib.h>
|
||||
#ifndef __STRICT_ANSI__
|
||||
#include <alloca.h>
|
||||
#endif
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
#include <cygwin/stdlib.h>
|
||||
#endif
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int quot; /* quotient */
|
||||
int rem; /* remainder */
|
||||
} div_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
long quot; /* quotient */
|
||||
long rem; /* remainder */
|
||||
} ldiv_t;
|
||||
|
||||
#if !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
typedef struct
|
||||
{
|
||||
long long int quot; /* quotient */
|
||||
long long int rem; /* remainder */
|
||||
} lldiv_t;
|
||||
#endif
|
||||
|
||||
#ifndef __compar_fn_t_defined
|
||||
#define __compar_fn_t_defined
|
||||
typedef int (*__compar_fn_t) (const _PTR, const _PTR);
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
#define EXIT_FAILURE 1
|
||||
#define EXIT_SUCCESS 0
|
||||
|
||||
#define RAND_MAX __RAND_MAX
|
||||
|
||||
int _EXFUN(__locale_mb_cur_max,(_VOID));
|
||||
|
||||
#define MB_CUR_MAX __locale_mb_cur_max()
|
||||
|
||||
_VOID _EXFUN(abort,(_VOID) _ATTRIBUTE ((__noreturn__)));
|
||||
int _EXFUN(abs,(int));
|
||||
int _EXFUN(atexit,(_VOID (*__func)(_VOID)));
|
||||
double _EXFUN(atof,(const char *__nptr));
|
||||
#ifndef __STRICT_ANSI__
|
||||
float _EXFUN(atoff,(const char *__nptr));
|
||||
#endif
|
||||
int _EXFUN(atoi,(const char *__nptr));
|
||||
int _EXFUN(_atoi_r,(struct _reent *, const char *__nptr));
|
||||
long _EXFUN(atol,(const char *__nptr));
|
||||
long _EXFUN(_atol_r,(struct _reent *, const char *__nptr));
|
||||
_PTR _EXFUN(bsearch,(const _PTR __key,
|
||||
const _PTR __base,
|
||||
size_t __nmemb,
|
||||
size_t __size,
|
||||
__compar_fn_t _compar));
|
||||
_PTR _EXFUN_NOTHROW(calloc,(size_t __nmemb, size_t __size));
|
||||
div_t _EXFUN(div,(int __numer, int __denom));
|
||||
_VOID _EXFUN(exit,(int __status) _ATTRIBUTE ((__noreturn__)));
|
||||
_VOID _EXFUN_NOTHROW(free,(_PTR));
|
||||
char * _EXFUN(getenv,(const char *__string));
|
||||
char * _EXFUN(_getenv_r,(struct _reent *, const char *__string));
|
||||
char * _EXFUN(_findenv,(_CONST char *, int *));
|
||||
char * _EXFUN(_findenv_r,(struct _reent *, _CONST char *, int *));
|
||||
#ifndef __STRICT_ANSI__
|
||||
extern char *suboptarg; /* getsubopt(3) external variable */
|
||||
int _EXFUN(getsubopt,(char **, char * const *, char **));
|
||||
#endif
|
||||
long _EXFUN(labs,(long));
|
||||
ldiv_t _EXFUN(ldiv,(long __numer, long __denom));
|
||||
_PTR _EXFUN_NOTHROW(malloc,(size_t __size));
|
||||
int _EXFUN(mblen,(const char *, size_t));
|
||||
int _EXFUN(_mblen_r,(struct _reent *, const char *, size_t, _mbstate_t *));
|
||||
int _EXFUN(mbtowc,(wchar_t *__restrict, const char *__restrict, size_t));
|
||||
int _EXFUN(_mbtowc_r,(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *));
|
||||
int _EXFUN(wctomb,(char *, wchar_t));
|
||||
int _EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, _mbstate_t *));
|
||||
size_t _EXFUN(mbstowcs,(wchar_t *__restrict, const char *__restrict, size_t));
|
||||
size_t _EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *));
|
||||
size_t _EXFUN(wcstombs,(char *__restrict, const wchar_t *__restrict, size_t));
|
||||
size_t _EXFUN(_wcstombs_r,(struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *));
|
||||
#ifndef __STRICT_ANSI__
|
||||
#ifndef _REENT_ONLY
|
||||
char * _EXFUN(mkdtemp,(char *));
|
||||
int _EXFUN(mkostemp,(char *, int));
|
||||
int _EXFUN(mkostemps,(char *, int, int));
|
||||
int _EXFUN(mkstemp,(char *));
|
||||
int _EXFUN(mkstemps,(char *, int));
|
||||
#if (__GNUC__ < 4) || defined(__XTENSA__)
|
||||
char * _EXFUN(mktemp,(char *));
|
||||
#else
|
||||
char * _EXFUN(mktemp,(char *) _ATTRIBUTE ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead"))));
|
||||
#endif
|
||||
#endif
|
||||
char * _EXFUN(_mkdtemp_r, (struct _reent *, char *));
|
||||
int _EXFUN(_mkostemp_r, (struct _reent *, char *, int));
|
||||
int _EXFUN(_mkostemps_r, (struct _reent *, char *, int, int));
|
||||
int _EXFUN(_mkstemp_r, (struct _reent *, char *));
|
||||
int _EXFUN(_mkstemps_r, (struct _reent *, char *, int));
|
||||
#if (__GNUC__ < 4) || defined(__XTENSA__)
|
||||
char * _EXFUN(_mktemp_r, (struct _reent *, char *));
|
||||
#else
|
||||
char * _EXFUN(_mktemp_r, (struct _reent *, char *) _ATTRIBUTE ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead"))));
|
||||
#endif
|
||||
#endif
|
||||
_VOID _EXFUN(qsort,(_PTR __base, size_t __nmemb, size_t __size, __compar_fn_t _compar));
|
||||
int _EXFUN(rand,(_VOID));
|
||||
_PTR _EXFUN_NOTHROW(realloc,(_PTR __r, size_t __size));
|
||||
#ifndef __STRICT_ANSI__
|
||||
_PTR _EXFUN(reallocf,(_PTR __r, size_t __size));
|
||||
char * _EXFUN(realpath, (const char *__restrict path, char *__restrict resolved_path));
|
||||
#endif
|
||||
_VOID _EXFUN(srand,(unsigned __seed));
|
||||
double _EXFUN(strtod,(const char *__restrict __n, char **__restrict __end_PTR));
|
||||
double _EXFUN(_strtod_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR));
|
||||
#if !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
float _EXFUN(strtof,(const char *__restrict __n, char **__restrict __end_PTR));
|
||||
#endif
|
||||
#ifndef __STRICT_ANSI__
|
||||
/* the following strtodf interface is deprecated...use strtof instead */
|
||||
# ifndef strtodf
|
||||
# define strtodf strtof
|
||||
# endif
|
||||
#endif
|
||||
long _EXFUN(strtol,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
long _EXFUN(_strtol_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
unsigned long _EXFUN(strtoul,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
unsigned long _EXFUN(_strtoul_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
|
||||
int _EXFUN(system,(const char *__string));
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
long _EXFUN(a64l,(const char *__input));
|
||||
char * _EXFUN(l64a,(long __input));
|
||||
char * _EXFUN(_l64a_r,(struct _reent *,long __input));
|
||||
int _EXFUN(on_exit,(_VOID (*__func)(int, _PTR),_PTR __arg));
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
#if !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
_VOID _EXFUN(_Exit,(int __status) _ATTRIBUTE ((__noreturn__)));
|
||||
#endif
|
||||
#ifndef __STRICT_ANSI__
|
||||
int _EXFUN(putenv,(char *__string));
|
||||
int _EXFUN(_putenv_r,(struct _reent *, char *__string));
|
||||
_PTR _EXFUN(_reallocf_r,(struct _reent *, _PTR, size_t));
|
||||
int _EXFUN(setenv,(const char *__string, const char *__value, int __overwrite));
|
||||
int _EXFUN(_setenv_r,(struct _reent *, const char *__string, const char *__value, int __overwrite));
|
||||
|
||||
char * _EXFUN(gcvt,(double,int,char *));
|
||||
char * _EXFUN(gcvtf,(float,int,char *));
|
||||
char * _EXFUN(fcvt,(double,int,int *,int *));
|
||||
char * _EXFUN(fcvtf,(float,int,int *,int *));
|
||||
char * _EXFUN(ecvt,(double,int,int *,int *));
|
||||
char * _EXFUN(ecvtbuf,(double, int, int*, int*, char *));
|
||||
char * _EXFUN(fcvtbuf,(double, int, int*, int*, char *));
|
||||
char * _EXFUN(ecvtf,(float,int,int *,int *));
|
||||
char * _EXFUN(dtoa,(double, int, int, int *, int*, char**));
|
||||
#endif
|
||||
char * _EXFUN(__itoa,(int, char *, int));
|
||||
char * _EXFUN(__utoa,(unsigned, char *, int));
|
||||
#ifndef __STRICT_ANSI__
|
||||
char * _EXFUN(itoa,(int, char *, int));
|
||||
char * _EXFUN(utoa,(unsigned, char *, int));
|
||||
int _EXFUN(rand_r,(unsigned *__seed));
|
||||
|
||||
double _EXFUN(drand48,(_VOID));
|
||||
double _EXFUN(_drand48_r,(struct _reent *));
|
||||
double _EXFUN(erand48,(unsigned short [3]));
|
||||
double _EXFUN(_erand48_r,(struct _reent *, unsigned short [3]));
|
||||
long _EXFUN(jrand48,(unsigned short [3]));
|
||||
long _EXFUN(_jrand48_r,(struct _reent *, unsigned short [3]));
|
||||
_VOID _EXFUN(lcong48,(unsigned short [7]));
|
||||
_VOID _EXFUN(_lcong48_r,(struct _reent *, unsigned short [7]));
|
||||
long _EXFUN(lrand48,(_VOID));
|
||||
long _EXFUN(_lrand48_r,(struct _reent *));
|
||||
long _EXFUN(mrand48,(_VOID));
|
||||
long _EXFUN(_mrand48_r,(struct _reent *));
|
||||
long _EXFUN(nrand48,(unsigned short [3]));
|
||||
long _EXFUN(_nrand48_r,(struct _reent *, unsigned short [3]));
|
||||
unsigned short *
|
||||
_EXFUN(seed48,(unsigned short [3]));
|
||||
unsigned short *
|
||||
_EXFUN(_seed48_r,(struct _reent *, unsigned short [3]));
|
||||
_VOID _EXFUN(srand48,(long));
|
||||
_VOID _EXFUN(_srand48_r,(struct _reent *, long));
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
#if !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
long long _EXFUN(atoll,(const char *__nptr));
|
||||
#endif
|
||||
#ifndef __STRICT_ANSI__
|
||||
long long _EXFUN(_atoll_r,(struct _reent *, const char *__nptr));
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
#if !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
long long _EXFUN(llabs,(long long));
|
||||
lldiv_t _EXFUN(lldiv,(long long __numer, long long __denom));
|
||||
long long _EXFUN(strtoll,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
#endif
|
||||
#ifndef __STRICT_ANSI__
|
||||
long long _EXFUN(_strtoll_r,(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
#if !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
unsigned long long _EXFUN(strtoull,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
#endif
|
||||
#ifndef __STRICT_ANSI__
|
||||
unsigned long long _EXFUN(_strtoull_r,(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
||||
|
||||
#ifndef __CYGWIN__
|
||||
_VOID _EXFUN(cfree,(_PTR));
|
||||
int _EXFUN(unsetenv,(const char *__string));
|
||||
int _EXFUN(_unsetenv_r,(struct _reent *, const char *__string));
|
||||
#endif
|
||||
|
||||
#ifdef __rtems__
|
||||
int _EXFUN(posix_memalign,(void **, size_t, size_t));
|
||||
#endif
|
||||
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
|
||||
char * _EXFUN(_dtoa_r,(struct _reent *, double, int, int, int *, int*, char**));
|
||||
#ifndef __CYGWIN__
|
||||
_PTR _EXFUN_NOTHROW(_malloc_r,(struct _reent *, size_t));
|
||||
_PTR _EXFUN_NOTHROW(_calloc_r,(struct _reent *, size_t, size_t));
|
||||
_VOID _EXFUN_NOTHROW(_free_r,(struct _reent *, _PTR));
|
||||
_PTR _EXFUN_NOTHROW(_realloc_r,(struct _reent *, _PTR, size_t));
|
||||
_VOID _EXFUN(_mstats_r,(struct _reent *, char *));
|
||||
#endif
|
||||
int _EXFUN(_system_r,(struct _reent *, const char *));
|
||||
|
||||
_VOID _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *));
|
||||
|
||||
/* There are two common qsort_r variants. If you request
|
||||
_BSD_SOURCE, you get the BSD version; otherwise you get the GNU
|
||||
version. We want that #undef qsort_r will still let you
|
||||
invoke the underlying function, but that requires gcc support. */
|
||||
#ifdef _BSD_SOURCE
|
||||
# ifdef __GNUC__
|
||||
_VOID _EXFUN(qsort_r,(_PTR __base, size_t __nmemb, size_t __size, _PTR __thunk, int (*_compar)(_PTR, const _PTR, const _PTR)))
|
||||
__asm__ (__ASMNAME ("__bsd_qsort_r"));
|
||||
# else
|
||||
_VOID _EXFUN(__bsd_qsort_r,(_PTR __base, size_t __nmemb, size_t __size, _PTR __thunk, int (*_compar)(_PTR, const _PTR, const _PTR)));
|
||||
# define qsort_r __bsd_qsort_r
|
||||
# endif
|
||||
#elif __GNU_VISIBLE
|
||||
_VOID _EXFUN(qsort_r,(_PTR __base, size_t __nmemb, size_t __size, int (*_compar)(const _PTR, const _PTR, _PTR), _PTR __thunk));
|
||||
#endif
|
||||
|
||||
/* On platforms where long double equals double. */
|
||||
#ifdef _HAVE_LONG_DOUBLE
|
||||
#if !defined(__STRICT_ANSI__) || \
|
||||
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
||||
(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||
extern long double strtold (const char *__restrict, char **__restrict);
|
||||
#endif
|
||||
#endif /* _HAVE_LONG_DOUBLE */
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _STDLIB_H_ */
|
|
@ -1,167 +0,0 @@
|
|||
/*
|
||||
* string.h
|
||||
*
|
||||
* Definitions for memory and string functions.
|
||||
*/
|
||||
|
||||
#ifndef _STRING_H_
|
||||
#define _STRING_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <sys/reent.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/features.h>
|
||||
|
||||
#define __need_size_t
|
||||
#define __need_NULL
|
||||
#include <stddef.h>
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
_PTR _EXFUN(memchr,(const _PTR, int, size_t));
|
||||
int _EXFUN(memcmp,(const _PTR, const _PTR, size_t));
|
||||
_PTR _EXFUN(memcpy,(_PTR __restrict, const _PTR __restrict, size_t));
|
||||
_PTR _EXFUN(memmove,(_PTR, const _PTR, size_t));
|
||||
_PTR _EXFUN(memset,(_PTR, int, size_t));
|
||||
char *_EXFUN(strcat,(char *__restrict, const char *__restrict));
|
||||
char *_EXFUN(strchr,(const char *, int));
|
||||
int _EXFUN(strcmp,(const char *, const char *));
|
||||
int _EXFUN(strcoll,(const char *, const char *));
|
||||
char *_EXFUN(strcpy,(char *__restrict, const char *__restrict));
|
||||
size_t _EXFUN(strcspn,(const char *, const char *));
|
||||
char *_EXFUN(strerror,(int));
|
||||
size_t _EXFUN(strlen,(const char *));
|
||||
char *_EXFUN(strncat,(char *__restrict, const char *__restrict, size_t));
|
||||
int _EXFUN(strncmp,(const char *, const char *, size_t));
|
||||
char *_EXFUN(strncpy,(char *__restrict, const char *__restrict, size_t));
|
||||
char *_EXFUN(strpbrk,(const char *, const char *));
|
||||
char *_EXFUN(strrchr,(const char *, int));
|
||||
size_t _EXFUN(strspn,(const char *, const char *));
|
||||
char *_EXFUN(strstr,(const char *, const char *));
|
||||
#ifndef _REENT_ONLY
|
||||
char *_EXFUN(strtok,(char *__restrict, const char *__restrict));
|
||||
#endif
|
||||
size_t _EXFUN(strxfrm,(char *__restrict, const char *__restrict, size_t));
|
||||
|
||||
#if __POSIX_VISIBLE
|
||||
char *_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict));
|
||||
#endif
|
||||
#if __BSD_VISIBLE
|
||||
int _EXFUN(bcmp,(const void *, const void *, size_t));
|
||||
void _EXFUN(bcopy,(const void *, void *, size_t));
|
||||
void _EXFUN(bzero,(void *, size_t));
|
||||
int _EXFUN(ffs,(int));
|
||||
char *_EXFUN(index,(const char *, int));
|
||||
#endif
|
||||
#if __BSD_VISIBLE || __XSI_VISIBLE
|
||||
_PTR _EXFUN(memccpy,(_PTR __restrict, const _PTR __restrict, int, size_t));
|
||||
#endif
|
||||
#if __GNU_VISIBLE
|
||||
_PTR _EXFUN(mempcpy,(_PTR, const _PTR, size_t));
|
||||
_PTR _EXFUN(memmem, (const _PTR, size_t, const _PTR, size_t));
|
||||
#endif
|
||||
_PTR _EXFUN(memrchr,(const _PTR, int, size_t));
|
||||
#if __GNU_VISIBLE
|
||||
_PTR _EXFUN(rawmemchr,(const _PTR, int));
|
||||
#endif
|
||||
#if __BSD_VISIBLE
|
||||
char *_EXFUN(rindex,(const char *, int));
|
||||
#endif
|
||||
char *_EXFUN(stpcpy,(char *__restrict, const char *__restrict));
|
||||
char *_EXFUN(stpncpy,(char *__restrict, const char *__restrict, size_t));
|
||||
#if __BSD_VISIBLE || __POSIX_VISIBLE
|
||||
int _EXFUN(strcasecmp,(const char *, const char *));
|
||||
#endif
|
||||
#if __GNU_VISIBLE
|
||||
char *_EXFUN(strcasestr,(const char *, const char *));
|
||||
char *_EXFUN(strchrnul,(const char *, int));
|
||||
#endif
|
||||
#if __XSI_VISIBLE >= 500
|
||||
char *_EXFUN(strdup,(const char *));
|
||||
#endif
|
||||
#ifndef __STRICT_ANSI__
|
||||
char *_EXFUN(_strdup_r,(struct _reent *, const char *));
|
||||
#endif
|
||||
#if __XSI_VISIBLE >= 700
|
||||
char *_EXFUN(strndup,(const char *, size_t));
|
||||
#endif
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
char *_EXFUN(_strndup_r,(struct _reent *, const char *, size_t));
|
||||
#endif
|
||||
|
||||
#if __GNU_VISIBLE
|
||||
int _EXFUN(ffsl,(long));
|
||||
int _EXFUN(ffsll, (long long));
|
||||
#endif
|
||||
|
||||
/* There are two common strerror_r variants. If you request
|
||||
_GNU_SOURCE, you get the GNU version; otherwise you get the POSIX
|
||||
version. POSIX requires that #undef strerror_r will still let you
|
||||
invoke the underlying function, but that requires gcc support. */
|
||||
#if __GNU_VISIBLE
|
||||
char *_EXFUN(strerror_r,(int, char *, size_t));
|
||||
#else
|
||||
# ifdef __GNUC__
|
||||
int _EXFUN(strerror_r,(int, char *, size_t))
|
||||
__asm__ (__ASMNAME ("__xpg_strerror_r"));
|
||||
# else
|
||||
int _EXFUN(__xpg_strerror_r,(int, char *, size_t));
|
||||
# define strerror_r __xpg_strerror_r
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Reentrant version of strerror. */
|
||||
char * _EXFUN(_strerror_r, (struct _reent *, int, int, int *));
|
||||
|
||||
#if __BSD_VISIBLE
|
||||
size_t _EXFUN(strlcat,(char *, const char *, size_t));
|
||||
size_t _EXFUN(strlcpy,(char *, const char *, size_t));
|
||||
#endif
|
||||
#if __BSD_VISIBLE || __POSIX_VISIBLE
|
||||
int _EXFUN(strncasecmp,(const char *, const char *, size_t));
|
||||
#endif
|
||||
#if !defined(__STRICT_ANSI__) || __POSIX_VISIBLE >= 200809 || \
|
||||
__XSI_VISIBLE >= 700
|
||||
size_t _EXFUN(strnlen,(const char *, size_t));
|
||||
#endif
|
||||
#if __BSD_VISIBLE
|
||||
char *_EXFUN(strsep,(char **, const char *));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The origin of these is unknown to me so I am conditionalizing them
|
||||
* on __STRICT_ANSI__. Finetuning this is definitely needed. --joel
|
||||
*/
|
||||
#if !defined(__STRICT_ANSI__)
|
||||
char *_EXFUN(strlwr,(char *));
|
||||
char *_EXFUN(strupr,(char *));
|
||||
#endif
|
||||
|
||||
#ifndef DEFS_H /* Kludge to work around problem compiling in gdb */
|
||||
char *_EXFUN(strsignal, (int __signo));
|
||||
#endif
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
int _EXFUN(strtosigno, (const char *__name));
|
||||
#endif
|
||||
|
||||
#if defined _GNU_SOURCE && defined __GNUC__
|
||||
#define strdupa(__s) \
|
||||
(__extension__ ({const char *__in = (__s); \
|
||||
size_t __len = strlen (__in) + 1; \
|
||||
char * __out = (char *) __builtin_alloca (__len); \
|
||||
(char *) memcpy (__out, __in, __len);}))
|
||||
#define strndupa(__s, __n) \
|
||||
(__extension__ ({const char *__in = (__s); \
|
||||
size_t __len = strnlen (__in, (__n)) + 1; \
|
||||
char *__out = (char *) __builtin_alloca (__len); \
|
||||
__out[__len-1] = '\0'; \
|
||||
(char *) memcpy (__out, __in, __len-1);}))
|
||||
#endif /* _GNU_SOURCE && __GNUC__ */
|
||||
|
||||
#include <sys/string.h>
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _STRING_H_ */
|
|
@ -1,35 +0,0 @@
|
|||
/*
|
||||
* strings.h
|
||||
*
|
||||
* Definitions for string operations.
|
||||
*/
|
||||
|
||||
#ifndef _STRINGS_H_
|
||||
#define _STRINGS_H_
|
||||
|
||||
#include "_ansi.h"
|
||||
#include <sys/reent.h>
|
||||
|
||||
#include <sys/types.h> /* for size_t */
|
||||
|
||||
_BEGIN_STD_C
|
||||
|
||||
#if !defined __STRICT_ANSI__ && _POSIX_VERSION < 200809L
|
||||
/*
|
||||
* Marked LEGACY in Open Group Base Specifications Issue 6/IEEE Std 1003.1-2004
|
||||
* Removed from Open Group Base Specifications Issue 7/IEEE Std 1003.1-2008
|
||||
*/
|
||||
int _EXFUN(bcmp,(const void *, const void *, size_t));
|
||||
void _EXFUN(bcopy,(const void *, void *, size_t));
|
||||
void _EXFUN(bzero,(void *, size_t));
|
||||
char *_EXFUN(index,(const char *, int));
|
||||
char *_EXFUN(rindex,(const char *, int));
|
||||
#endif /* ! __STRICT_ANSI__ */
|
||||
|
||||
int _EXFUN(ffs,(int));
|
||||
int _EXFUN(strcasecmp,(const char *, const char *));
|
||||
int _EXFUN(strncasecmp,(const char *, const char *, size_t));
|
||||
|
||||
_END_STD_C
|
||||
|
||||
#endif /* _STRINGS_H_ */
|
|
@ -1,213 +0,0 @@
|
|||
|
||||
#ifndef _SYS__DEFAULT_FCNTL_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define _SYS__DEFAULT_FCNTL_H_
|
||||
#include <_ansi.h>
|
||||
#include <sys/cdefs.h>
|
||||
#define _FOPEN (-1) /* from sys/file.h, kernel use only */
|
||||
#define _FREAD 0x0001 /* read enabled */
|
||||
#define _FWRITE 0x0002 /* write enabled */
|
||||
#define _FAPPEND 0x0008 /* append (writes guaranteed at the end) */
|
||||
#define _FMARK 0x0010 /* internal; mark during gc() */
|
||||
#define _FDEFER 0x0020 /* internal; defer for next gc pass */
|
||||
#define _FASYNC 0x0040 /* signal pgrp when data ready */
|
||||
#define _FSHLOCK 0x0080 /* BSD flock() shared lock present */
|
||||
#define _FEXLOCK 0x0100 /* BSD flock() exclusive lock present */
|
||||
#define _FCREAT 0x0200 /* open with file create */
|
||||
#define _FTRUNC 0x0400 /* open with truncation */
|
||||
#define _FEXCL 0x0800 /* error on open if file exists */
|
||||
#define _FNBIO 0x1000 /* non blocking I/O (sys5 style) */
|
||||
#define _FSYNC 0x2000 /* do all writes synchronously */
|
||||
#define _FNONBLOCK 0x4000 /* non blocking I/O (POSIX style) */
|
||||
#define _FNDELAY _FNONBLOCK /* non blocking I/O (4.2 style) */
|
||||
#define _FNOCTTY 0x8000 /* don't assign a ctty on this open */
|
||||
|
||||
#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
|
||||
|
||||
/*
|
||||
* Flag values for open(2) and fcntl(2)
|
||||
* The kernel adds 1 to the open modes to turn it into some
|
||||
* combination of FREAD and FWRITE.
|
||||
*/
|
||||
#define O_RDONLY 0 /* +1 == FREAD */
|
||||
#define O_WRONLY 1 /* +1 == FWRITE */
|
||||
#define O_RDWR 2 /* +1 == FREAD|FWRITE */
|
||||
#define O_APPEND _FAPPEND
|
||||
#define O_CREAT _FCREAT
|
||||
#define O_TRUNC _FTRUNC
|
||||
#define O_EXCL _FEXCL
|
||||
#define O_SYNC _FSYNC
|
||||
/* O_NDELAY _FNDELAY set in include/fcntl.h */
|
||||
/* O_NDELAY _FNBIO set in include/fcntl.h */
|
||||
#define O_NONBLOCK _FNONBLOCK
|
||||
#define O_NOCTTY _FNOCTTY
|
||||
/* For machines which care - */
|
||||
#if defined (__CYGWIN__)
|
||||
#define _FBINARY 0x10000
|
||||
#define _FTEXT 0x20000
|
||||
#define _FNOINHERIT 0x40000
|
||||
#define _FDIRECT 0x80000
|
||||
#define _FNOFOLLOW 0x100000
|
||||
#define _FDIRECTORY 0x200000
|
||||
#define _FEXECSRCH 0x400000
|
||||
|
||||
#define O_BINARY _FBINARY
|
||||
#define O_TEXT _FTEXT
|
||||
#define O_CLOEXEC _FNOINHERIT
|
||||
#define O_DIRECT _FDIRECT
|
||||
#define O_NOFOLLOW _FNOFOLLOW
|
||||
#define O_DSYNC _FSYNC
|
||||
#define O_RSYNC _FSYNC
|
||||
#define O_DIRECTORY _FDIRECTORY
|
||||
#define O_EXEC _FEXECSRCH
|
||||
#define O_SEARCH _FEXECSRCH
|
||||
#endif
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
|
||||
/*
|
||||
* Flags that work for fcntl(fd, F_SETFL, FXXXX)
|
||||
*/
|
||||
#define FAPPEND _FAPPEND
|
||||
#define FSYNC _FSYNC
|
||||
#define FASYNC _FASYNC
|
||||
#define FNBIO _FNBIO
|
||||
#define FNONBIO _FNONBLOCK /* XXX fix to be NONBLOCK everywhere */
|
||||
#define FNDELAY _FNDELAY
|
||||
|
||||
/*
|
||||
* Flags that are disallowed for fcntl's (FCNTLCANT);
|
||||
* used for opens, internal state, or locking.
|
||||
*/
|
||||
#define FREAD _FREAD
|
||||
#define FWRITE _FWRITE
|
||||
#define FMARK _FMARK
|
||||
#define FDEFER _FDEFER
|
||||
#define FSHLOCK _FSHLOCK
|
||||
#define FEXLOCK _FEXLOCK
|
||||
|
||||
/*
|
||||
* The rest of the flags, used only for opens
|
||||
*/
|
||||
#define FOPEN _FOPEN
|
||||
#define FCREAT _FCREAT
|
||||
#define FTRUNC _FTRUNC
|
||||
#define FEXCL _FEXCL
|
||||
#define FNOCTTY _FNOCTTY
|
||||
|
||||
#endif /* !_POSIX_SOURCE */
|
||||
|
||||
/* XXX close on exec request; must match UF_EXCLOSE in user.h */
|
||||
#define FD_CLOEXEC 1 /* posix */
|
||||
|
||||
/* fcntl(2) requests */
|
||||
#define F_DUPFD 0 /* Duplicate fildes */
|
||||
#define F_GETFD 1 /* Get fildes flags (close on exec) */
|
||||
#define F_SETFD 2 /* Set fildes flags (close on exec) */
|
||||
#define F_GETFL 3 /* Get file flags */
|
||||
#define F_SETFL 4 /* Set file flags */
|
||||
#ifndef _POSIX_SOURCE
|
||||
#define F_GETOWN 5 /* Get owner - for ASYNC */
|
||||
#define F_SETOWN 6 /* Set owner - for ASYNC */
|
||||
#endif /* !_POSIX_SOURCE */
|
||||
#define F_GETLK 7 /* Get record-locking information */
|
||||
#define F_SETLK 8 /* Set or Clear a record-lock (Non-Blocking) */
|
||||
#define F_SETLKW 9 /* Set or Clear a record-lock (Blocking) */
|
||||
#ifndef _POSIX_SOURCE
|
||||
#define F_RGETLK 10 /* Test a remote lock to see if it is blocked */
|
||||
#define F_RSETLK 11 /* Set or unlock a remote lock */
|
||||
#define F_CNVT 12 /* Convert a fhandle to an open fd */
|
||||
#define F_RSETLKW 13 /* Set or Clear remote record-lock(Blocking) */
|
||||
#endif /* !_POSIX_SOURCE */
|
||||
#ifdef __CYGWIN__
|
||||
#define F_DUPFD_CLOEXEC 14 /* As F_DUPFD, but set close-on-exec flag */
|
||||
#endif
|
||||
|
||||
/* fcntl(2) flags (l_type field of flock structure) */
|
||||
#define F_RDLCK 1 /* read lock */
|
||||
#define F_WRLCK 2 /* write lock */
|
||||
#define F_UNLCK 3 /* remove lock(s) */
|
||||
#ifndef _POSIX_SOURCE
|
||||
#define F_UNLKSYS 4 /* remove remote locks for a given system */
|
||||
#endif /* !_POSIX_SOURCE */
|
||||
|
||||
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 || defined(__CYGWIN__)
|
||||
/* Special descriptor value to denote the cwd in calls to openat(2) etc. */
|
||||
#define AT_FDCWD -2
|
||||
|
||||
/* Flag values for faccessat2) et al. */
|
||||
#define AT_EACCESS 1
|
||||
#define AT_SYMLINK_NOFOLLOW 2
|
||||
#define AT_SYMLINK_FOLLOW 4
|
||||
#define AT_REMOVEDIR 8
|
||||
#endif
|
||||
|
||||
#if __BSD_VISIBLE
|
||||
/* lock operations for flock(2) */
|
||||
#define LOCK_SH 0x01 /* shared file lock */
|
||||
#define LOCK_EX 0x02 /* exclusive file lock */
|
||||
#define LOCK_NB 0x04 /* don't block when locking */
|
||||
#define LOCK_UN 0x08 /* unlock file */
|
||||
#endif
|
||||
|
||||
/*#include <sys/stdtypes.h>*/
|
||||
|
||||
#ifndef __CYGWIN__
|
||||
/* file segment locking set data type - information passed to system by user */
|
||||
struct flock {
|
||||
short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
|
||||
short l_whence; /* flag to choose starting offset */
|
||||
long l_start; /* relative offset, in bytes */
|
||||
long l_len; /* length, in bytes; 0 means lock to EOF */
|
||||
short l_pid; /* returned with F_GETLK */
|
||||
short l_xxx; /* reserved for future use */
|
||||
};
|
||||
#endif /* __CYGWIN__ */
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
/* extended file segment locking set data type */
|
||||
struct eflock {
|
||||
short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
|
||||
short l_whence; /* flag to choose starting offset */
|
||||
long l_start; /* relative offset, in bytes */
|
||||
long l_len; /* length, in bytes; 0 means lock to EOF */
|
||||
short l_pid; /* returned with F_GETLK */
|
||||
short l_xxx; /* reserved for future use */
|
||||
long l_rpid; /* Remote process id wanting this lock */
|
||||
long l_rsys; /* Remote system id wanting this lock */
|
||||
};
|
||||
#endif /* !_POSIX_SOURCE */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h> /* sigh. for the mode bits for open/creat */
|
||||
|
||||
extern int open _PARAMS ((const char *, int, ...));
|
||||
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809 || defined(__CYGWIN__)
|
||||
extern int openat _PARAMS ((int, const char *, int, ...));
|
||||
#endif
|
||||
extern int creat _PARAMS ((const char *, mode_t));
|
||||
extern int fcntl _PARAMS ((int, int, ...));
|
||||
#if __BSD_VISIBLE
|
||||
extern int flock _PARAMS ((int, int));
|
||||
#endif
|
||||
#ifdef __CYGWIN__
|
||||
#include <sys/time.h>
|
||||
extern int futimesat _PARAMS ((int, const char *, const struct timeval *));
|
||||
#endif
|
||||
|
||||
/* Provide _<systemcall> prototypes for functions provided by some versions
|
||||
of newlib. */
|
||||
#ifdef _COMPILING_NEWLIB
|
||||
extern int _open _PARAMS ((const char *, int, ...));
|
||||
extern int _fcntl _PARAMS ((int, int, ...));
|
||||
#ifdef __LARGE64_FILES
|
||||
extern int _open64 _PARAMS ((const char *, int, ...));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !_SYS__DEFAULT_FCNTL_H_ */
|
|
@ -1,20 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2004, 2005 by
|
||||
* Ralf Corsepius, Ulm/Germany. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* is freely granted, provided that this notice is preserved.
|
||||
*
|
||||
* Modified for xtensa arch & non-long int32_t, removes automatic setting of __have_long32.
|
||||
*/
|
||||
|
||||
#ifndef _SYS__INTSUP_H
|
||||
#define _SYS__INTSUP_H
|
||||
|
||||
#include <sys/features.h>
|
||||
|
||||
#define __STDINT_EXP(x) __##x##__
|
||||
|
||||
#define __have_longlong64 1
|
||||
|
||||
#endif /* _SYS__INTSUP_H */
|
|
@ -1,91 +0,0 @@
|
|||
/* ANSI C namespace clean utility typedefs */
|
||||
|
||||
/* This file defines various typedefs needed by the system calls that support
|
||||
the C library. Basically, they're just the POSIX versions with an '_'
|
||||
prepended. This file lives in the `sys' directory so targets can provide
|
||||
their own if desired (or they can put target dependant conditionals here).
|
||||
*/
|
||||
|
||||
#ifndef _SYS__TYPES_H
|
||||
#define _SYS__TYPES_H
|
||||
|
||||
#include <machine/_types.h>
|
||||
#include <sys/lock.h>
|
||||
|
||||
#ifndef __off_t_defined
|
||||
typedef long _off_t;
|
||||
#endif
|
||||
|
||||
#ifndef __dev_t_defined
|
||||
typedef short __dev_t;
|
||||
#endif
|
||||
|
||||
#ifndef __uid_t_defined
|
||||
typedef unsigned short __uid_t;
|
||||
#endif
|
||||
#ifndef __gid_t_defined
|
||||
typedef unsigned short __gid_t;
|
||||
#endif
|
||||
|
||||
#ifndef __off64_t_defined
|
||||
__extension__ typedef long long _off64_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* We need fpos_t for the following, but it doesn't have a leading "_",
|
||||
* so we use _fpos_t instead.
|
||||
*/
|
||||
#ifndef __fpos_t_defined
|
||||
typedef long _fpos_t; /* XXX must match off_t in <sys/types.h> */
|
||||
/* (and must be `long' for now) */
|
||||
#endif
|
||||
|
||||
#ifdef __LARGE64_FILES
|
||||
#ifndef __fpos64_t_defined
|
||||
typedef _off64_t _fpos64_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __ssize_t_defined
|
||||
#ifdef __SIZE_TYPE__
|
||||
/* If __SIZE_TYPE__ is defined (gcc) we define ssize_t based on size_t.
|
||||
We simply change "unsigned" to "signed" for this single definition
|
||||
to make sure ssize_t and size_t only differ by their signedness. */
|
||||
#define unsigned signed
|
||||
typedef __SIZE_TYPE__ _ssize_t;
|
||||
#undef unsigned
|
||||
#else
|
||||
#if defined(__INT_MAX__) && __INT_MAX__ == 2147483647
|
||||
typedef int _ssize_t;
|
||||
#else
|
||||
typedef long _ssize_t;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __need_wint_t
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef __mbstate_t_defined
|
||||
/* Conversion state information. */
|
||||
typedef struct
|
||||
{
|
||||
int __count;
|
||||
union
|
||||
{
|
||||
wint_t __wch;
|
||||
unsigned char __wchb[4];
|
||||
} __value; /* Value so far. */
|
||||
} _mbstate_t;
|
||||
#endif
|
||||
|
||||
#ifndef __flock_t_defined
|
||||
typedef _LOCK_RECURSIVE_T _flock_t;
|
||||
#endif
|
||||
|
||||
#ifndef __iconv_t_defined
|
||||
/* Iconv descriptor type */
|
||||
typedef void *_iconv_t;
|
||||
#endif
|
||||
|
||||
#endif /* _SYS__TYPES_H */
|
|
@ -1,710 +0,0 @@
|
|||
/* libc/sys/linux/sys/cdefs.h - Helper macros for K&R vs. ANSI C compat. */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Berkeley Software Design, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)cdefs.h 8.8 (Berkeley) 1/9/95
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _SYS_CDEFS_H_
|
||||
#define _SYS_CDEFS_H_
|
||||
|
||||
#include <machine/_default_types.h>
|
||||
#include <sys/features.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define __PMT(args) args
|
||||
#define __DOTS , ...
|
||||
#define __THROW
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define __ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname
|
||||
#endif
|
||||
|
||||
#define __ptr_t void *
|
||||
#define __long_double_t long double
|
||||
|
||||
#define __attribute_malloc__
|
||||
#define __attribute_pure__
|
||||
#define __attribute_format_strfmon__(a,b)
|
||||
#define __flexarr [0]
|
||||
|
||||
#ifndef __BOUNDED_POINTERS__
|
||||
# define __bounded /* nothing */
|
||||
# define __unbounded /* nothing */
|
||||
# define __ptrvalue /* nothing */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Testing against Clang-specific extensions.
|
||||
*/
|
||||
|
||||
#ifndef __has_extension
|
||||
#define __has_extension __has_feature
|
||||
#endif
|
||||
#ifndef __has_feature
|
||||
#define __has_feature(x) 0
|
||||
#endif
|
||||
#ifndef __has_include
|
||||
#define __has_include(x) 0
|
||||
#endif
|
||||
#ifndef __has_builtin
|
||||
#define __has_builtin(x) 0
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define __BEGIN_DECLS extern "C" {
|
||||
#define __END_DECLS }
|
||||
#else
|
||||
#define __BEGIN_DECLS
|
||||
#define __END_DECLS
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This code has been put in place to help reduce the addition of
|
||||
* compiler specific defines in FreeBSD code. It helps to aid in
|
||||
* having a compiler-agnostic source tree.
|
||||
*/
|
||||
|
||||
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
|
||||
|
||||
#if __GNUC__ >= 3 || defined(__INTEL_COMPILER)
|
||||
#define __GNUCLIKE_ASM 3
|
||||
#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
|
||||
#else
|
||||
#define __GNUCLIKE_ASM 2
|
||||
#endif
|
||||
#define __GNUCLIKE___TYPEOF 1
|
||||
#define __GNUCLIKE___OFFSETOF 1
|
||||
#define __GNUCLIKE___SECTION 1
|
||||
|
||||
#ifndef __INTEL_COMPILER
|
||||
# define __GNUCLIKE_CTOR_SECTION_HANDLING 1
|
||||
#endif
|
||||
|
||||
#define __GNUCLIKE_BUILTIN_CONSTANT_P 1
|
||||
# if defined(__INTEL_COMPILER) && defined(__cplusplus) \
|
||||
&& __INTEL_COMPILER < 800
|
||||
# undef __GNUCLIKE_BUILTIN_CONSTANT_P
|
||||
# endif
|
||||
|
||||
#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) && !defined(__INTEL_COMPILER)
|
||||
# define __GNUCLIKE_BUILTIN_VARARGS 1
|
||||
# define __GNUCLIKE_BUILTIN_STDARG 1
|
||||
# define __GNUCLIKE_BUILTIN_VAALIST 1
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__)
|
||||
# define __GNUC_VA_LIST_COMPATIBILITY 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Compiler memory barriers, specific to gcc and clang.
|
||||
*/
|
||||
#if defined(__GNUC__)
|
||||
#define __compiler_membar() __asm __volatile(" " : : : "memory")
|
||||
#endif
|
||||
|
||||
#ifndef __INTEL_COMPILER
|
||||
# define __GNUCLIKE_BUILTIN_NEXT_ARG 1
|
||||
# define __GNUCLIKE_MATH_BUILTIN_RELOPS
|
||||
#endif
|
||||
|
||||
#define __GNUCLIKE_BUILTIN_MEMCPY 1
|
||||
|
||||
/* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */
|
||||
#define __CC_SUPPORTS_INLINE 1
|
||||
#define __CC_SUPPORTS___INLINE 1
|
||||
#define __CC_SUPPORTS___INLINE__ 1
|
||||
|
||||
#define __CC_SUPPORTS___FUNC__ 1
|
||||
#define __CC_SUPPORTS_WARNING 1
|
||||
|
||||
#define __CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */
|
||||
|
||||
#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
|
||||
|
||||
#endif /* __GNUC__ || __INTEL_COMPILER */
|
||||
|
||||
/*
|
||||
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
|
||||
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
|
||||
* The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
|
||||
* mode -- there must be no spaces between its arguments, and for nested
|
||||
* __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also
|
||||
* concatenate double-quoted strings produced by the __STRING macro, but
|
||||
* this only works with ANSI C.
|
||||
*
|
||||
* __XSTRING is like __STRING, but it expands any macros in its argument
|
||||
* first. It is only available with ANSI C.
|
||||
*/
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
#define __P(protos) protos /* full-blown ANSI C */
|
||||
#define __CONCAT1(x,y) x ## y
|
||||
#define __CONCAT(x,y) __CONCAT1(x,y)
|
||||
#define __STRING(x) #x /* stringify without expanding x */
|
||||
#define __XSTRING(x) __STRING(x) /* expand x, then stringify */
|
||||
|
||||
#define __const const /* define reserved names to standard */
|
||||
#define __signed signed
|
||||
#define __volatile volatile
|
||||
#if defined(__cplusplus)
|
||||
#define __inline inline /* convert to C++ keyword */
|
||||
#else
|
||||
#if !(defined(__CC_SUPPORTS___INLINE))
|
||||
#define __inline /* delete GCC keyword */
|
||||
#endif /* ! __CC_SUPPORTS___INLINE */
|
||||
#endif /* !__cplusplus */
|
||||
|
||||
#else /* !(__STDC__ || __cplusplus) */
|
||||
#define __P(protos) () /* traditional C preprocessor */
|
||||
#define __CONCAT(x,y) x/**/y
|
||||
#define __STRING(x) "x"
|
||||
|
||||
#if !defined(__CC_SUPPORTS___INLINE)
|
||||
#define __const /* delete pseudo-ANSI C keywords */
|
||||
#define __inline
|
||||
#define __signed
|
||||
#define __volatile
|
||||
/*
|
||||
* In non-ANSI C environments, new programs will want ANSI-only C keywords
|
||||
* deleted from the program and old programs will want them left alone.
|
||||
* When using a compiler other than gcc, programs using the ANSI C keywords
|
||||
* const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
|
||||
* When using "gcc -traditional", we assume that this is the intent; if
|
||||
* __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
|
||||
*/
|
||||
#ifndef NO_ANSI_KEYWORDS
|
||||
#define const /* delete ANSI C keywords */
|
||||
#define inline
|
||||
#define signed
|
||||
#define volatile
|
||||
#endif /* !NO_ANSI_KEYWORDS */
|
||||
#endif /* !__CC_SUPPORTS___INLINE */
|
||||
#endif /* !(__STDC__ || __cplusplus) */
|
||||
|
||||
/*
|
||||
* Compiler-dependent macros to help declare dead (non-returning) and
|
||||
* pure (no side effects) functions, and unused variables. They are
|
||||
* null except for versions of gcc that are known to support the features
|
||||
* properly (old versions of gcc-2 supported the dead and pure features
|
||||
* in a different (wrong) way). If we do not provide an implementation
|
||||
* for a given compiler, let the compile fail if it is told to use
|
||||
* a feature that we cannot live without.
|
||||
*/
|
||||
#ifdef lint
|
||||
#define __dead2
|
||||
#define __pure2
|
||||
#define __unused
|
||||
#define __packed
|
||||
#define __aligned(x)
|
||||
#define __section(x)
|
||||
#else
|
||||
#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER)
|
||||
#define __dead2
|
||||
#define __pure2
|
||||
#define __unused
|
||||
#endif
|
||||
#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7 && !defined(__INTEL_COMPILER)
|
||||
#define __dead2 __attribute__((__noreturn__))
|
||||
#define __pure2 __attribute__((__const__))
|
||||
#define __unused
|
||||
/* XXX Find out what to do for __packed, __aligned and __section */
|
||||
#endif
|
||||
#if __GNUC_PREREQ__(2, 7)
|
||||
#define __dead2 __attribute__((__noreturn__))
|
||||
#define __pure2 __attribute__((__const__))
|
||||
#define __unused __attribute__((__unused__))
|
||||
#define __used __attribute__((__used__))
|
||||
#define __packed __attribute__((__packed__))
|
||||
#define __aligned(x) __attribute__((__aligned__(x)))
|
||||
#define __section(x) __attribute__((__section__(x)))
|
||||
#endif
|
||||
#if defined(__INTEL_COMPILER)
|
||||
#define __dead2 __attribute__((__noreturn__))
|
||||
#define __pure2 __attribute__((__const__))
|
||||
#define __unused __attribute__((__unused__))
|
||||
#define __used __attribute__((__used__))
|
||||
#define __packed __attribute__((__packed__))
|
||||
#define __aligned(x) __attribute__((__aligned__(x)))
|
||||
#define __section(x) __attribute__((__section__(x)))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !__GNUC_PREREQ__(2, 95)
|
||||
#define __alignof(x) __offsetof(struct { char __a; x __b; }, __b)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Keywords added in C11.
|
||||
*/
|
||||
|
||||
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
|
||||
|
||||
#if !__has_extension(c_alignas)
|
||||
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
|
||||
__has_extension(cxx_alignas)
|
||||
#define _Alignas(x) alignas(x)
|
||||
#else
|
||||
/* XXX: Only emulates _Alignas(constant-expression); not _Alignas(type-name). */
|
||||
#define _Alignas(x) __aligned(x)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus) && __cplusplus >= 201103L
|
||||
#define _Alignof(x) alignof(x)
|
||||
#else
|
||||
#define _Alignof(x) __alignof(x)
|
||||
#endif
|
||||
|
||||
#if !__has_extension(c_atomic) && !__has_extension(cxx_atomic)
|
||||
/*
|
||||
* No native support for _Atomic(). Place object in structure to prevent
|
||||
* most forms of direct non-atomic access.
|
||||
*/
|
||||
#define _Atomic(T) struct { T volatile __val; }
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus) && __cplusplus >= 201103L
|
||||
#define _Noreturn [[noreturn]]
|
||||
#else
|
||||
#define _Noreturn __dead2
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(4, 6) && !defined(__cplusplus)
|
||||
/* Do nothing: _Static_assert() works as per C11 */
|
||||
#elif !__has_extension(c_static_assert)
|
||||
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
|
||||
__has_extension(cxx_static_assert)
|
||||
#define _Static_assert(x, y) static_assert(x, y)
|
||||
#elif defined(__COUNTER__)
|
||||
#define _Static_assert(x, y) __Static_assert(x, __COUNTER__)
|
||||
#define __Static_assert(x, y) ___Static_assert(x, y)
|
||||
#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 : -1]
|
||||
#else
|
||||
#define _Static_assert(x, y) struct __hack
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !__has_extension(c_thread_local)
|
||||
/* XXX: Change this to test against C++11 when clang in base supports it. */
|
||||
#if /* (defined(__cplusplus) && __cplusplus >= 201103L) || */ \
|
||||
__has_extension(cxx_thread_local)
|
||||
#define _Thread_local thread_local
|
||||
#else
|
||||
#define _Thread_local __thread
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* __STDC_VERSION__ || __STDC_VERSION__ < 201112L */
|
||||
|
||||
/*
|
||||
* Emulation of C11 _Generic(). Unlike the previously defined C11
|
||||
* keywords, it is not possible to implement this using exactly the same
|
||||
* syntax. Therefore implement something similar under the name
|
||||
* __generic(). Unlike _Generic(), this macro can only distinguish
|
||||
* between a single type, so it requires nested invocations to
|
||||
* distinguish multiple cases.
|
||||
*/
|
||||
|
||||
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
||||
#define __generic(expr, t, yes, no) \
|
||||
_Generic(expr, t: yes, default: no)
|
||||
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
|
||||
#define __generic(expr, t, yes, no) \
|
||||
__builtin_choose_expr( \
|
||||
__builtin_types_compatible_p(__typeof(expr), t), yes, no)
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(2, 96)
|
||||
#define __malloc_like __attribute__((__malloc__))
|
||||
#define __pure __attribute__((__pure__))
|
||||
#else
|
||||
#define __malloc_like
|
||||
#define __pure
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
|
||||
#define __always_inline __attribute__((__always_inline__))
|
||||
#else
|
||||
#define __always_inline
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(3, 1)
|
||||
#define __noinline __attribute__ ((__noinline__))
|
||||
#else
|
||||
#define __noinline
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(3, 3)
|
||||
#define __nonnull(x) __attribute__((__nonnull__(x)))
|
||||
#else
|
||||
#define __nonnull(x)
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(3, 4)
|
||||
#define __fastcall __attribute__((__fastcall__))
|
||||
#else
|
||||
#define __fastcall
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(4, 1)
|
||||
#define __returns_twice __attribute__((__returns_twice__))
|
||||
#else
|
||||
#define __returns_twice
|
||||
#endif
|
||||
|
||||
/* XXX: should use `#if __STDC_VERSION__ < 199901'. */
|
||||
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
|
||||
#define __func__ NULL
|
||||
#endif
|
||||
|
||||
/*
|
||||
* GCC 2.95 provides `__restrict' as an extension to C90 to support the
|
||||
* C99-specific `restrict' type qualifier. We happen to use `__restrict' as
|
||||
* a way to define the `restrict' type qualifier without disturbing older
|
||||
* software that is unaware of C99 keywords.
|
||||
*/
|
||||
#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95)
|
||||
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 || defined(lint)
|
||||
#define __restrict
|
||||
#else
|
||||
#define __restrict restrict
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* GNU C version 2.96 adds explicit branch prediction so that
|
||||
* the CPU back-end can hint the processor and also so that
|
||||
* code blocks can be reordered such that the predicted path
|
||||
* sees a more linear flow, thus improving cache behavior, etc.
|
||||
*
|
||||
* The following two macros provide us with a way to utilize this
|
||||
* compiler feature. Use __predict_true() if you expect the expression
|
||||
* to evaluate to true, and __predict_false() if you expect the
|
||||
* expression to evaluate to false.
|
||||
*
|
||||
* A few notes about usage:
|
||||
*
|
||||
* * Generally, __predict_false() error condition checks (unless
|
||||
* you have some _strong_ reason to do otherwise, in which case
|
||||
* document it), and/or __predict_true() `no-error' condition
|
||||
* checks, assuming you want to optimize for the no-error case.
|
||||
*
|
||||
* * Other than that, if you don't know the likelihood of a test
|
||||
* succeeding from empirical or other `hard' evidence, don't
|
||||
* make predictions.
|
||||
*
|
||||
* * These are meant to be used in places that are run `a lot'.
|
||||
* It is wasteful to make predictions in code that is run
|
||||
* seldomly (e.g. at subsystem initialization time) as the
|
||||
* basic block reordering that this affects can often generate
|
||||
* larger code.
|
||||
*/
|
||||
#if __GNUC_PREREQ__(2, 96)
|
||||
#define __predict_true(exp) __builtin_expect((exp), 1)
|
||||
#define __predict_false(exp) __builtin_expect((exp), 0)
|
||||
#else
|
||||
#define __predict_true(exp) (exp)
|
||||
#define __predict_false(exp) (exp)
|
||||
#endif
|
||||
|
||||
#if __GNUC_PREREQ__(4, 2)
|
||||
#define __hidden __attribute__((__visibility__("hidden")))
|
||||
#define __exported __attribute__((__visibility__("default")))
|
||||
#else
|
||||
#define __hidden
|
||||
#define __exported
|
||||
#endif
|
||||
|
||||
#define __offsetof(type, field) offsetof(type, field)
|
||||
#define __rangeof(type, start, end) \
|
||||
(__offsetof(type, end) - __offsetof(type, start))
|
||||
|
||||
/*
|
||||
* Given the pointer x to the member m of the struct s, return
|
||||
* a pointer to the containing structure. When using GCC, we first
|
||||
* assign pointer x to a local variable, to check that its type is
|
||||
* compatible with member m.
|
||||
*/
|
||||
#if __GNUC_PREREQ__(3, 1)
|
||||
#define __containerof(x, s, m) ({ \
|
||||
const volatile __typeof__(((s *)0)->m) *__x = (x); \
|
||||
__DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\
|
||||
})
|
||||
#else
|
||||
#define __containerof(x, s, m) \
|
||||
__DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Compiler-dependent macros to declare that functions take printf-like
|
||||
* or scanf-like arguments. They are null except for versions of gcc
|
||||
* that are known to support the features properly (old versions of gcc-2
|
||||
* didn't permit keeping the keywords out of the application namespace).
|
||||
*/
|
||||
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
|
||||
#define __printflike(fmtarg, firstvararg)
|
||||
#define __scanflike(fmtarg, firstvararg)
|
||||
#define __format_arg(fmtarg)
|
||||
#define __strfmonlike(fmtarg, firstvararg)
|
||||
#define __strftimelike(fmtarg, firstvararg)
|
||||
#else
|
||||
#define __printflike(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
|
||||
#define __scanflike(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
|
||||
#define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))
|
||||
#define __strfmonlike(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
|
||||
#define __strftimelike(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
|
||||
#endif
|
||||
|
||||
/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
|
||||
#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \
|
||||
defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
||||
#define __printf0like(fmtarg, firstvararg) \
|
||||
__attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
|
||||
#else
|
||||
#define __printf0like(fmtarg, firstvararg)
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
|
||||
#ifndef __INTEL_COMPILER
|
||||
#define __strong_reference(sym,aliassym) \
|
||||
extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
|
||||
#endif
|
||||
#ifdef __ELF__
|
||||
#ifdef __STDC__
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".weak " #alias); \
|
||||
__asm__(".equ " #alias ", " #sym)
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".section .gnu.warning." #sym); \
|
||||
__asm__(".asciz \"" msg "\""); \
|
||||
__asm__(".previous")
|
||||
#define __sym_compat(sym,impl,verid) \
|
||||
__asm__(".symver " #impl ", " #sym "@" #verid)
|
||||
#define __sym_default(sym,impl,verid) \
|
||||
__asm__(".symver " #impl ", " #sym "@@" #verid)
|
||||
#else
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".weak alias"); \
|
||||
__asm__(".equ alias, sym")
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".section .gnu.warning.sym"); \
|
||||
__asm__(".asciz \"msg\""); \
|
||||
__asm__(".previous")
|
||||
#define __sym_compat(sym,impl,verid) \
|
||||
__asm__(".symver impl, sym@verid")
|
||||
#define __sym_default(impl,sym,verid) \
|
||||
__asm__(".symver impl, sym@@verid")
|
||||
#endif /* __STDC__ */
|
||||
#else /* !__ELF__ */
|
||||
#ifdef __STDC__
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".stabs \"_" #alias "\",11,0,0,0"); \
|
||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".stabs \"" msg "\",30,0,0,0"); \
|
||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||
#else
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".stabs \"_/**/alias\",11,0,0,0"); \
|
||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".stabs msg,30,0,0,0"); \
|
||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||
#endif /* __STDC__ */
|
||||
#endif /* __ELF__ */
|
||||
#endif /* __GNUC__ || __INTEL_COMPILER */
|
||||
|
||||
#ifndef __FBSDID
|
||||
#define __FBSDID(s) struct __hack
|
||||
#endif
|
||||
|
||||
#ifndef __RCSID
|
||||
#define __RCSID(s) struct __hack
|
||||
#endif
|
||||
|
||||
#ifndef __RCSID_SOURCE
|
||||
#define __RCSID_SOURCE(s) struct __hack
|
||||
#endif
|
||||
|
||||
#ifndef __SCCSID
|
||||
#define __SCCSID(s) struct __hack
|
||||
#endif
|
||||
|
||||
#ifndef __COPYRIGHT
|
||||
#define __COPYRIGHT(s) struct __hack
|
||||
#endif
|
||||
|
||||
#ifndef __DECONST
|
||||
#define __DECONST(type, var) ((type)(__uintptr_t)(const void *)(var))
|
||||
#endif
|
||||
|
||||
#ifndef __DEVOLATILE
|
||||
#define __DEVOLATILE(type, var) ((type)(__uintptr_t)(volatile void *)(var))
|
||||
#endif
|
||||
|
||||
#ifndef __DEQUALIFY
|
||||
#define __DEQUALIFY(type, var) ((type)(__uintptr_t)(const volatile void *)(var))
|
||||
#endif
|
||||
|
||||
/*-
|
||||
* The following definitions are an extension of the behavior originally
|
||||
* implemented in <sys/_posix.h>, but with a different level of granularity.
|
||||
* POSIX.1 requires that the macros we test be defined before any standard
|
||||
* header file is included.
|
||||
*
|
||||
* Here's a quick run-down of the versions:
|
||||
* defined(_POSIX_SOURCE) 1003.1-1988
|
||||
* _POSIX_C_SOURCE == 1 1003.1-1990
|
||||
* _POSIX_C_SOURCE == 2 1003.2-1992 C Language Binding Option
|
||||
* _POSIX_C_SOURCE == 199309 1003.1b-1993
|
||||
* _POSIX_C_SOURCE == 199506 1003.1c-1995, 1003.1i-1995,
|
||||
* and the omnibus ISO/IEC 9945-1: 1996
|
||||
* _POSIX_C_SOURCE == 200112 1003.1-2001
|
||||
* _POSIX_C_SOURCE == 200809 1003.1-2008
|
||||
*
|
||||
* In addition, the X/Open Portability Guide, which is now the Single UNIX
|
||||
* Specification, defines a feature-test macro which indicates the version of
|
||||
* that specification, and which subsumes _POSIX_C_SOURCE.
|
||||
*
|
||||
* Our macros begin with two underscores to avoid namespace screwage.
|
||||
*/
|
||||
|
||||
/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
|
||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
|
||||
#undef _POSIX_C_SOURCE /* Probably illegal, but beyond caring now. */
|
||||
#define _POSIX_C_SOURCE 199009
|
||||
#endif
|
||||
|
||||
/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
|
||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
|
||||
#undef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 199209
|
||||
#endif
|
||||
|
||||
/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
|
||||
#ifdef _XOPEN_SOURCE
|
||||
#if _XOPEN_SOURCE - 0 >= 700
|
||||
#define __XSI_VISIBLE 700
|
||||
#undef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200809
|
||||
#elif _XOPEN_SOURCE - 0 >= 600
|
||||
#define __XSI_VISIBLE 600
|
||||
#undef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 200112
|
||||
#elif _XOPEN_SOURCE - 0 >= 500
|
||||
#define __XSI_VISIBLE 500
|
||||
#undef _POSIX_C_SOURCE
|
||||
#define _POSIX_C_SOURCE 199506
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Deal with all versions of POSIX. The ordering relative to the tests above is
|
||||
* important.
|
||||
*/
|
||||
#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
|
||||
#define _POSIX_C_SOURCE 198808
|
||||
#endif
|
||||
#ifdef _POSIX_C_SOURCE
|
||||
#if _POSIX_C_SOURCE >= 200809
|
||||
#define __POSIX_VISIBLE 200809
|
||||
#define __ISO_C_VISIBLE 1999
|
||||
#elif _POSIX_C_SOURCE >= 200112
|
||||
#define __POSIX_VISIBLE 200112
|
||||
#define __ISO_C_VISIBLE 1999
|
||||
#elif _POSIX_C_SOURCE >= 199506
|
||||
#define __POSIX_VISIBLE 199506
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#elif _POSIX_C_SOURCE >= 199309
|
||||
#define __POSIX_VISIBLE 199309
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#elif _POSIX_C_SOURCE >= 199209
|
||||
#define __POSIX_VISIBLE 199209
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#elif _POSIX_C_SOURCE >= 199009
|
||||
#define __POSIX_VISIBLE 199009
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#else
|
||||
#define __POSIX_VISIBLE 198808
|
||||
#define __ISO_C_VISIBLE 0
|
||||
#endif /* _POSIX_C_SOURCE */
|
||||
#else
|
||||
/*-
|
||||
* Deal with _ANSI_SOURCE:
|
||||
* If it is defined, and no other compilation environment is explicitly
|
||||
* requested, then define our internal feature-test macros to zero. This
|
||||
* makes no difference to the preprocessor (undefined symbols in preprocessing
|
||||
* expressions are defined to have value zero), but makes it more convenient for
|
||||
* a test program to print out the values.
|
||||
*
|
||||
* If a program mistakenly defines _ANSI_SOURCE and some other macro such as
|
||||
* _POSIX_C_SOURCE, we will assume that it wants the broader compilation
|
||||
* environment (and in fact we will never get here).
|
||||
*/
|
||||
#if defined(_ANSI_SOURCE) /* Hide almost everything. */
|
||||
#define __POSIX_VISIBLE 0
|
||||
#define __XSI_VISIBLE 0
|
||||
#define __BSD_VISIBLE 0
|
||||
#define __ISO_C_VISIBLE 1990
|
||||
#elif defined(_C99_SOURCE) /* Localism to specify strict C99 env. */
|
||||
#define __POSIX_VISIBLE 0
|
||||
#define __XSI_VISIBLE 0
|
||||
#define __BSD_VISIBLE 0
|
||||
#define __ISO_C_VISIBLE 1999
|
||||
#elif defined(_C11_SOURCE) /* Localism to specify strict C11 env. */
|
||||
#define __POSIX_VISIBLE 0
|
||||
#define __XSI_VISIBLE 0
|
||||
#define __BSD_VISIBLE 0
|
||||
#define __ISO_C_VISIBLE 2011
|
||||
#elif defined(_GNU_SOURCE) /* Everything and the kitchen sink. */
|
||||
#define __POSIX_VISIBLE 200809
|
||||
#define __XSI_VISIBLE 700
|
||||
#define __BSD_VISIBLE 1
|
||||
#define __ISO_C_VISIBLE 2011
|
||||
#define __GNU_VISIBLE 1
|
||||
#else /* Default: everything except __GNU_VISIBLE. */
|
||||
#define __POSIX_VISIBLE 200809
|
||||
#define __XSI_VISIBLE 700
|
||||
#define __BSD_VISIBLE 1
|
||||
#define __ISO_C_VISIBLE 2011
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* !_SYS_CDEFS_H_ */
|
|
@ -1,300 +0,0 @@
|
|||
#ifndef __SYS_CONFIG_H__
|
||||
#define __SYS_CONFIG_H__
|
||||
|
||||
#include <machine/ieeefp.h> /* floating point macros */
|
||||
#include <sys/features.h> /* POSIX defs */
|
||||
|
||||
#ifdef __aarch64__
|
||||
#define MALLOC_ALIGNMENT 16
|
||||
#endif
|
||||
|
||||
/* exceptions first */
|
||||
#if defined(__H8500__) || defined(__W65__)
|
||||
#define __SMALL_BITFIELDS
|
||||
/* ??? This conditional is true for the h8500 and the w65, defining H8300
|
||||
in those cases probably isn't the right thing to do. */
|
||||
#define H8300 1
|
||||
#endif
|
||||
|
||||
/* 16 bit integer machines */
|
||||
#if defined(__Z8001__) || defined(__Z8002__) || defined(__H8500__) || defined(__W65__) || defined (__mn10200__) || defined (__AVR__)
|
||||
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX 32767
|
||||
#define UINT_MAX 65535
|
||||
#endif
|
||||
|
||||
#if defined (__H8300__) || defined (__H8300H__) || defined(__H8300S__) || defined (__H8300SX__)
|
||||
#define __SMALL_BITFIELDS
|
||||
#define H8300 1
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX __INT_MAX__
|
||||
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||
#endif
|
||||
|
||||
#if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__))
|
||||
#ifndef __INT32__
|
||||
#define __SMALL_BITFIELDS
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX 32767
|
||||
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||
#else /* INT32 */
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX 2147483647
|
||||
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||
#endif /* INT32 */
|
||||
|
||||
#endif /* CR16C */
|
||||
|
||||
#if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__)
|
||||
#define __SMALL_BITFIELDS
|
||||
#endif
|
||||
|
||||
#ifdef __W65__
|
||||
#define __SMALL_BITFIELDS
|
||||
#endif
|
||||
|
||||
#if defined(__D10V__)
|
||||
#define __SMALL_BITFIELDS
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX __INT_MAX__
|
||||
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||
#define _POINTER_INT short
|
||||
#endif
|
||||
|
||||
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX __INT_MAX__
|
||||
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||
#define _POINTER_INT short
|
||||
#endif
|
||||
|
||||
#if defined(__m68k__) || defined(__mc68000__)
|
||||
#define _READ_WRITE_RETURN_TYPE _ssize_t
|
||||
#endif
|
||||
|
||||
#ifdef ___AM29K__
|
||||
#define _FLOAT_RET double
|
||||
#endif
|
||||
|
||||
#ifdef __i386__
|
||||
#ifndef __unix__
|
||||
/* in other words, go32 */
|
||||
#define _FLOAT_RET double
|
||||
#endif
|
||||
#if defined(__linux__) || defined(__RDOS__)
|
||||
/* we want the reentrancy structure to be returned by a function */
|
||||
#define __DYNAMIC_REENT__
|
||||
#define HAVE_GETDATE
|
||||
#define _HAVE_SYSTYPES
|
||||
#define _READ_WRITE_RETURN_TYPE _ssize_t
|
||||
#define __LARGE64_FILES 1
|
||||
/* we use some glibc header files so turn on glibc large file feature */
|
||||
#define _LARGEFILE64_SOURCE 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __mn10200__
|
||||
#define __SMALL_BITFIELDS
|
||||
#endif
|
||||
|
||||
#ifdef __AVR__
|
||||
#define __SMALL_BITFIELDS
|
||||
#define _POINTER_INT short
|
||||
#endif
|
||||
|
||||
#ifdef __v850
|
||||
#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__))
|
||||
#endif
|
||||
|
||||
/* For the PowerPC eabi, force the _impure_ptr to be in .sdata */
|
||||
#if defined(__PPC__)
|
||||
#if defined(_CALL_SYSV)
|
||||
#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
|
||||
#endif
|
||||
#ifdef __SPE__
|
||||
#define _LONG_DOUBLE double
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Configure small REENT structure for Xilinx MicroBlaze platforms */
|
||||
#if defined (__MICROBLAZE__)
|
||||
#ifndef _REENT_SMALL
|
||||
#define _REENT_SMALL
|
||||
#endif
|
||||
/* Xilinx XMK uses Unix98 mutex */
|
||||
#ifdef __XMK__
|
||||
#define _UNIX98_THREAD_MUTEX_ATTRIBUTES
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__mips__) && !defined(__rtems__)
|
||||
#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
|
||||
#endif
|
||||
|
||||
#ifdef __xstormy16__
|
||||
#define __SMALL_BITFIELDS
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX __INT_MAX__
|
||||
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||
#define MALLOC_ALIGNMENT 8
|
||||
#define _POINTER_INT short
|
||||
#define __BUFSIZ__ 16
|
||||
#define _REENT_SMALL
|
||||
#endif
|
||||
|
||||
#if defined __MSP430__
|
||||
#ifndef _REENT_SMALL
|
||||
#define _REENT_SMALL
|
||||
#endif
|
||||
|
||||
#define __SMALL_BITFIELDS
|
||||
|
||||
#ifdef __MSP430X_LARGE__
|
||||
#define _POINTER_INT long
|
||||
#else
|
||||
#define _POINTER_INT int
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __m32c__
|
||||
#define __SMALL_BITFIELDS
|
||||
#undef INT_MAX
|
||||
#undef UINT_MAX
|
||||
#define INT_MAX __INT_MAX__
|
||||
#define UINT_MAX (__INT_MAX__ * 2U + 1)
|
||||
#define MALLOC_ALIGNMENT 8
|
||||
#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
|
||||
#define _POINTER_INT short
|
||||
#else
|
||||
#define _POINTER_INT long
|
||||
#endif
|
||||
#define __BUFSIZ__ 16
|
||||
#define _REENT_SMALL
|
||||
#endif /* __m32c__ */
|
||||
|
||||
#ifdef __SPU__
|
||||
#define MALLOC_ALIGNMENT 16
|
||||
#define __CUSTOM_FILE_IO__
|
||||
#endif
|
||||
|
||||
#ifdef __XTENSA__
|
||||
#include <xtensa/config/core-isa.h>
|
||||
#define MALLOC_ALIGNMENT ((XCHAL_DATA_WIDTH) < 16 ? 16 : (XCHAL_DATA_WIDTH))
|
||||
/* esp8266-specific: shrink the default fd buffer size */
|
||||
#define __BUFSIZ__ 128
|
||||
#ifndef __DYNAMIC_REENT__
|
||||
#define __DYNAMIC_REENT__
|
||||
#endif
|
||||
#ifndef _REENT_SMALL
|
||||
#define _REENT_SMALL
|
||||
#endif
|
||||
#define HAVE_GETOPT
|
||||
#endif
|
||||
|
||||
/* This block should be kept in sync with GCC's limits.h. The point
|
||||
of having these definitions here is to not include limits.h, which
|
||||
would pollute the user namespace, while still using types of the
|
||||
the correct widths when deciding how to define __int32_t and
|
||||
__int64_t. */
|
||||
#ifndef __INT_MAX__
|
||||
# ifdef INT_MAX
|
||||
# define __INT_MAX__ INT_MAX
|
||||
# else
|
||||
# define __INT_MAX__ 2147483647
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef __LONG_MAX__
|
||||
# ifdef LONG_MAX
|
||||
# define __LONG_MAX__ LONG_MAX
|
||||
# else
|
||||
# if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) \
|
||||
|| defined (__sparcv9)
|
||||
# define __LONG_MAX__ 9223372036854775807L
|
||||
# else
|
||||
# define __LONG_MAX__ 2147483647L
|
||||
# endif /* __alpha__ || sparc64 */
|
||||
# endif
|
||||
#endif
|
||||
/* End of block that should be kept in sync with GCC's limits.h. */
|
||||
|
||||
#ifndef _POINTER_INT
|
||||
#define _POINTER_INT long
|
||||
#endif
|
||||
|
||||
#ifdef __frv__
|
||||
#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
|
||||
#endif
|
||||
#undef __RAND_MAX
|
||||
#if __INT_MAX__ == 32767
|
||||
#define __RAND_MAX 32767
|
||||
#else
|
||||
#define __RAND_MAX 0x7fffffff
|
||||
#endif
|
||||
|
||||
#if defined(__CYGWIN__)
|
||||
#include <cygwin/config.h>
|
||||
#if !defined (__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L)
|
||||
#define __USE_XOPEN2K 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__rtems__)
|
||||
#define __FILENAME_MAX__ 255
|
||||
#define _READ_WRITE_RETURN_TYPE _ssize_t
|
||||
#define __DYNAMIC_REENT__
|
||||
#define _REENT_GLOBAL_ATEXIT
|
||||
#endif
|
||||
|
||||
#ifndef __EXPORT
|
||||
#define __EXPORT
|
||||
#endif
|
||||
|
||||
#ifndef __IMPORT
|
||||
#define __IMPORT
|
||||
#endif
|
||||
|
||||
/* Define return type of read/write routines. In POSIX, the return type
|
||||
for read()/write() is "ssize_t" but legacy newlib code has been using
|
||||
"int" for some time. If not specified, "int" is defaulted. */
|
||||
#ifndef _READ_WRITE_RETURN_TYPE
|
||||
#define _READ_WRITE_RETURN_TYPE int
|
||||
#endif
|
||||
/* Define `count' parameter of read/write routines. In POSIX, the `count'
|
||||
parameter is "size_t" but legacy newlib code has been using "int" for some
|
||||
time. If not specified, "int" is defaulted. */
|
||||
#ifndef _READ_WRITE_BUFSIZE_TYPE
|
||||
#define _READ_WRITE_BUFSIZE_TYPE int
|
||||
#endif
|
||||
|
||||
#ifndef __WCHAR_MAX__
|
||||
#if __INT_MAX__ == 32767 || defined (_WIN32)
|
||||
#define __WCHAR_MAX__ 0xffffu
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* See if small reent asked for at configuration time and
|
||||
is not chosen by the platform by default. */
|
||||
#ifdef _WANT_REENT_SMALL
|
||||
#ifndef _REENT_SMALL
|
||||
#define _REENT_SMALL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* If _MB_EXTENDED_CHARSETS_ALL is set, we want all of the extended
|
||||
charsets. The extended charsets add a few functions and a couple
|
||||
of tables of a few K each. */
|
||||
#ifdef _MB_EXTENDED_CHARSETS_ALL
|
||||
#define _MB_EXTENDED_CHARSETS_ISO 1
|
||||
#define _MB_EXTENDED_CHARSETS_WINDOWS 1
|
||||
#endif
|
||||
|
||||
#endif /* __SYS_CONFIG_H__ */
|
|
@ -1,2 +0,0 @@
|
|||
#error System-specific custom_file.h is missing.
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
/* BSD predecessor of POSIX.1 <dirent.h> and struct dirent */
|
||||
|
||||
#ifndef _SYS_DIR_H_
|
||||
#define _SYS_DIR_H_
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
#define direct dirent
|
||||
|
||||
#endif /*_SYS_DIR_H_*/
|
|
@ -1,192 +0,0 @@
|
|||
/* errno is not a global variable, because that would make using it
|
||||
non-reentrant. Instead, its address is returned by the function
|
||||
__errno. */
|
||||
|
||||
#ifndef _SYS_ERRNO_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define _SYS_ERRNO_H_
|
||||
|
||||
#include <sys/reent.h>
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
#define errno (*__errno())
|
||||
extern int *__errno _PARAMS ((void));
|
||||
#endif
|
||||
|
||||
/* Please don't use these variables directly.
|
||||
Use strerror instead. */
|
||||
extern __IMPORT _CONST char * _CONST _sys_errlist[];
|
||||
extern __IMPORT int _sys_nerr;
|
||||
#ifdef __CYGWIN__
|
||||
extern __IMPORT const char * const sys_errlist[];
|
||||
extern __IMPORT int sys_nerr;
|
||||
extern __IMPORT char *program_invocation_name;
|
||||
extern __IMPORT char *program_invocation_short_name;
|
||||
#endif
|
||||
|
||||
#define __errno_r(ptr) ((ptr)->_errno)
|
||||
|
||||
#define EPERM 1 /* Not owner */
|
||||
#define ENOENT 2 /* No such file or directory */
|
||||
#define ESRCH 3 /* No such process */
|
||||
#define EINTR 4 /* Interrupted system call */
|
||||
#define EIO 5 /* I/O error */
|
||||
#define ENXIO 6 /* No such device or address */
|
||||
#define E2BIG 7 /* Arg list too long */
|
||||
#define ENOEXEC 8 /* Exec format error */
|
||||
#define EBADF 9 /* Bad file number */
|
||||
#define ECHILD 10 /* No children */
|
||||
#define EAGAIN 11 /* No more processes */
|
||||
#define ENOMEM 12 /* Not enough space */
|
||||
#define EACCES 13 /* Permission denied */
|
||||
#define EFAULT 14 /* Bad address */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ENOTBLK 15 /* Block device required */
|
||||
#endif
|
||||
#define EBUSY 16 /* Device or resource busy */
|
||||
#define EEXIST 17 /* File exists */
|
||||
#define EXDEV 18 /* Cross-device link */
|
||||
#define ENODEV 19 /* No such device */
|
||||
#define ENOTDIR 20 /* Not a directory */
|
||||
#define EISDIR 21 /* Is a directory */
|
||||
#define EINVAL 22 /* Invalid argument */
|
||||
#define ENFILE 23 /* Too many open files in system */
|
||||
#define EMFILE 24 /* File descriptor value too large */
|
||||
#define ENOTTY 25 /* Not a character device */
|
||||
#define ETXTBSY 26 /* Text file busy */
|
||||
#define EFBIG 27 /* File too large */
|
||||
#define ENOSPC 28 /* No space left on device */
|
||||
#define ESPIPE 29 /* Illegal seek */
|
||||
#define EROFS 30 /* Read-only file system */
|
||||
#define EMLINK 31 /* Too many links */
|
||||
#define EPIPE 32 /* Broken pipe */
|
||||
#define EDOM 33 /* Mathematics argument out of domain of function */
|
||||
#define ERANGE 34 /* Result too large */
|
||||
#define ENOMSG 35 /* No message of desired type */
|
||||
#define EIDRM 36 /* Identifier removed */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ECHRNG 37 /* Channel number out of range */
|
||||
#define EL2NSYNC 38 /* Level 2 not synchronized */
|
||||
#define EL3HLT 39 /* Level 3 halted */
|
||||
#define EL3RST 40 /* Level 3 reset */
|
||||
#define ELNRNG 41 /* Link number out of range */
|
||||
#define EUNATCH 42 /* Protocol driver not attached */
|
||||
#define ENOCSI 43 /* No CSI structure available */
|
||||
#define EL2HLT 44 /* Level 2 halted */
|
||||
#endif
|
||||
#define EDEADLK 45 /* Deadlock */
|
||||
#define ENOLCK 46 /* No lock */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define EBADE 50 /* Invalid exchange */
|
||||
#define EBADR 51 /* Invalid request descriptor */
|
||||
#define EXFULL 52 /* Exchange full */
|
||||
#define ENOANO 53 /* No anode */
|
||||
#define EBADRQC 54 /* Invalid request code */
|
||||
#define EBADSLT 55 /* Invalid slot */
|
||||
#define EDEADLOCK 56 /* File locking deadlock error */
|
||||
#define EBFONT 57 /* Bad font file fmt */
|
||||
#endif
|
||||
#define ENOSTR 60 /* Not a stream */
|
||||
#define ENODATA 61 /* No data (for no delay io) */
|
||||
#define ETIME 62 /* Stream ioctl timeout */
|
||||
#define ENOSR 63 /* No stream resources */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ENONET 64 /* Machine is not on the network */
|
||||
#define ENOPKG 65 /* Package not installed */
|
||||
#define EREMOTE 66 /* The object is remote */
|
||||
#endif
|
||||
#define ENOLINK 67 /* Virtual circuit is gone */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define EADV 68 /* Advertise error */
|
||||
#define ESRMNT 69 /* Srmount error */
|
||||
#define ECOMM 70 /* Communication error on send */
|
||||
#endif
|
||||
#define EPROTO 71 /* Protocol error */
|
||||
#define EMULTIHOP 74 /* Multihop attempted */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ELBIN 75 /* Inode is remote (not really error) */
|
||||
#define EDOTDOT 76 /* Cross mount point (not really error) */
|
||||
#endif
|
||||
#define EBADMSG 77 /* Bad message */
|
||||
#define EFTYPE 79 /* Inappropriate file type or format */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ENOTUNIQ 80 /* Given log. name not unique */
|
||||
#define EBADFD 81 /* f.d. invalid for this operation */
|
||||
#define EREMCHG 82 /* Remote address changed */
|
||||
#define ELIBACC 83 /* Can't access a needed shared lib */
|
||||
#define ELIBBAD 84 /* Accessing a corrupted shared lib */
|
||||
#define ELIBSCN 85 /* .lib section in a.out corrupted */
|
||||
#define ELIBMAX 86 /* Attempting to link in too many libs */
|
||||
#define ELIBEXEC 87 /* Attempting to exec a shared library */
|
||||
#endif
|
||||
#define ENOSYS 88 /* Function not implemented */
|
||||
#ifdef __CYGWIN__
|
||||
#define ENMFILE 89 /* No more files */
|
||||
#endif
|
||||
#define ENOTEMPTY 90 /* Directory not empty */
|
||||
#define ENAMETOOLONG 91 /* File or path name too long */
|
||||
#define ELOOP 92 /* Too many symbolic links */
|
||||
#define EOPNOTSUPP 95 /* Operation not supported on socket */
|
||||
#define EPFNOSUPPORT 96 /* Protocol family not supported */
|
||||
#define ECONNRESET 104 /* Connection reset by peer */
|
||||
#define ENOBUFS 105 /* No buffer space available */
|
||||
#define EAFNOSUPPORT 106 /* Address family not supported by protocol family */
|
||||
#define EPROTOTYPE 107 /* Protocol wrong type for socket */
|
||||
#define ENOTSOCK 108 /* Socket operation on non-socket */
|
||||
#define ENOPROTOOPT 109 /* Protocol not available */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ESHUTDOWN 110 /* Can't send after socket shutdown */
|
||||
#endif
|
||||
#define ECONNREFUSED 111 /* Connection refused */
|
||||
#define EADDRINUSE 112 /* Address already in use */
|
||||
#define ECONNABORTED 113 /* Software caused connection abort */
|
||||
#define ENETUNREACH 114 /* Network is unreachable */
|
||||
#define ENETDOWN 115 /* Network interface is not configured */
|
||||
#define ETIMEDOUT 116 /* Connection timed out */
|
||||
#define EHOSTDOWN 117 /* Host is down */
|
||||
#define EHOSTUNREACH 118 /* Host is unreachable */
|
||||
#define EINPROGRESS 119 /* Connection already in progress */
|
||||
#define EALREADY 120 /* Socket already connected */
|
||||
#define EDESTADDRREQ 121 /* Destination address required */
|
||||
#define EMSGSIZE 122 /* Message too long */
|
||||
#define EPROTONOSUPPORT 123 /* Unknown protocol */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ESOCKTNOSUPPORT 124 /* Socket type not supported */
|
||||
#endif
|
||||
#define EADDRNOTAVAIL 125 /* Address not available */
|
||||
#define ENETRESET 126 /* Connection aborted by network */
|
||||
#define EISCONN 127 /* Socket is already connected */
|
||||
#define ENOTCONN 128 /* Socket is not connected */
|
||||
#define ETOOMANYREFS 129
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define EPROCLIM 130
|
||||
#define EUSERS 131
|
||||
#endif
|
||||
#define EDQUOT 132
|
||||
#define ESTALE 133
|
||||
#define ENOTSUP 134 /* Not supported */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ENOMEDIUM 135 /* No medium (in tape drive) */
|
||||
#endif
|
||||
#ifdef __CYGWIN__
|
||||
#define ENOSHARE 136 /* No such host or network path */
|
||||
#define ECASECLASH 137 /* Filename exists with different case */
|
||||
#endif
|
||||
#define EILSEQ 138 /* Illegal byte sequence */
|
||||
#define EOVERFLOW 139 /* Value too large for defined data type */
|
||||
#define ECANCELED 140 /* Operation canceled */
|
||||
#define ENOTRECOVERABLE 141 /* State not recoverable */
|
||||
#define EOWNERDEAD 142 /* Previous owner died */
|
||||
#ifdef __LINUX_ERRNO_EXTENSIONS__
|
||||
#define ESTRPIPE 143 /* Streams pipe error */
|
||||
#endif
|
||||
#define EWOULDBLOCK EAGAIN /* Operation would block */
|
||||
|
||||
#define __ELASTERROR 2000 /* Users can add values starting here */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _SYS_ERRNO_H */
|
|
@ -1,4 +0,0 @@
|
|||
#ifndef _SYS_FCNTL_H_
|
||||
#define _SYS_FCNTL_H_
|
||||
#include <sys/_default_fcntl.h>
|
||||
#endif
|
|
@ -1,241 +0,0 @@
|
|||
/*
|
||||
* Written by Joel Sherrill <joel@OARcorp.com>.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2000.
|
||||
*
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose without fee is hereby granted, provided that this entire notice
|
||||
* is included in all copies of any software which is or includes a copy
|
||||
* or modification of this software.
|
||||
*
|
||||
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
|
||||
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
|
||||
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef _SYS_FEATURES_H
|
||||
#define _SYS_FEATURES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Macros to determine that newlib is being used. Put in this header to
|
||||
* be similar to where glibc stores its version of these macros.
|
||||
*/
|
||||
#define __NEWLIB__ 2
|
||||
#define __NEWLIB_MINOR__ 1
|
||||
|
||||
/* Macro to test version of GCC. Returns 0 for non-GCC or too old GCC. */
|
||||
#ifndef __GNUC_PREREQ
|
||||
# if defined __GNUC__ && defined __GNUC_MINOR__
|
||||
# define __GNUC_PREREQ(maj, min) \
|
||||
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
# else
|
||||
# define __GNUC_PREREQ(maj, min) 0
|
||||
# endif
|
||||
#endif /* __GNUC_PREREQ */
|
||||
/* Version with trailing underscores for BSD compatibility. */
|
||||
#define __GNUC_PREREQ__(ma, mi) __GNUC_PREREQ(ma, mi)
|
||||
|
||||
/* RTEMS adheres to POSIX -- 1003.1b with some features from annexes. */
|
||||
|
||||
#ifdef __rtems__
|
||||
#define _POSIX_JOB_CONTROL 1
|
||||
#define _POSIX_SAVED_IDS 1
|
||||
#define _POSIX_VERSION 199309L
|
||||
#define _POSIX_ASYNCHRONOUS_IO 1
|
||||
#define _POSIX_FSYNC 1
|
||||
#define _POSIX_MAPPED_FILES 1
|
||||
#define _POSIX_MEMLOCK 1
|
||||
#define _POSIX_MEMLOCK_RANGE 1
|
||||
#define _POSIX_MEMORY_PROTECTION 1
|
||||
#define _POSIX_MESSAGE_PASSING 1
|
||||
#define _POSIX_MONOTONIC_CLOCK 200112L
|
||||
#define _POSIX_PRIORITIZED_IO 1
|
||||
#define _POSIX_PRIORITY_SCHEDULING 1
|
||||
#define _POSIX_REALTIME_SIGNALS 1
|
||||
#define _POSIX_SEMAPHORES 1
|
||||
/* #define _POSIX_SHARED_MEMORY_OBJECTS 1 */
|
||||
#define _POSIX_SYNCHRONIZED_IO 1
|
||||
#define _POSIX_TIMERS 1
|
||||
#define _POSIX_BARRIERS 200112L
|
||||
#define _POSIX_READER_WRITER_LOCKS 200112L
|
||||
#define _POSIX_SPIN_LOCKS 200112L
|
||||
|
||||
|
||||
/* In P1003.1b but defined by drafts at least as early as P1003.1c/D10 */
|
||||
#define _POSIX_THREADS 1
|
||||
#define _POSIX_THREAD_ATTR_STACKADDR 1
|
||||
#define _POSIX_THREAD_ATTR_STACKSIZE 1
|
||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING 1
|
||||
#define _POSIX_THREAD_PRIO_INHERIT 1
|
||||
#define _POSIX_THREAD_PRIO_PROTECT 1
|
||||
#define _POSIX_THREAD_PROCESS_SHARED 1
|
||||
#define _POSIX_THREAD_SAFE_FUNCTIONS 1
|
||||
|
||||
/* P1003.4b/D8 defines the constants below this comment. */
|
||||
#define _POSIX_SPAWN 1
|
||||
#define _POSIX_TIMEOUTS 1
|
||||
#define _POSIX_CPUTIME 1
|
||||
#define _POSIX_THREAD_CPUTIME 1
|
||||
#define _POSIX_SPORADIC_SERVER 1
|
||||
#define _POSIX_THREAD_SPORADIC_SERVER 1
|
||||
#define _POSIX_DEVICE_CONTROL 1
|
||||
#define _POSIX_DEVCTL_DIRECTION 1
|
||||
#define _POSIX_INTERRUPT_CONTROL 1
|
||||
#define _POSIX_ADVISORY_INFO 1
|
||||
|
||||
/* UNIX98 added some new pthread mutex attributes */
|
||||
#define _UNIX98_THREAD_MUTEX_ATTRIBUTES 1
|
||||
|
||||
#endif
|
||||
|
||||
/* XMK loosely adheres to POSIX -- 1003.1 */
|
||||
#ifdef __XMK__
|
||||
#define _POSIX_THREADS 1
|
||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING 1
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __svr4__
|
||||
# define _POSIX_JOB_CONTROL 1
|
||||
# define _POSIX_SAVED_IDS 1
|
||||
# define _POSIX_VERSION 199009L
|
||||
#endif
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
|
||||
#if !defined(__STRICT_ANSI__) || defined(__cplusplus) || __STDC_VERSION__ >= 199901L
|
||||
#define _POSIX_VERSION 200112L
|
||||
#define _POSIX2_VERSION 200112L
|
||||
#define _XOPEN_VERSION 600
|
||||
|
||||
#define _POSIX_ADVISORY_INFO 200112L
|
||||
/* #define _POSIX_ASYNCHRONOUS_IO -1 */
|
||||
/* #define _POSIX_BARRIERS -1 */
|
||||
#define _POSIX_CHOWN_RESTRICTED 1
|
||||
#define _POSIX_CLOCK_SELECTION 200112L
|
||||
#define _POSIX_CPUTIME 200112L
|
||||
#define _POSIX_FSYNC 200112L
|
||||
#define _POSIX_IPV6 200112L
|
||||
#define _POSIX_JOB_CONTROL 1
|
||||
#define _POSIX_MAPPED_FILES 200112L
|
||||
/* #define _POSIX_MEMLOCK -1 */
|
||||
#define _POSIX_MEMLOCK_RANGE 200112L
|
||||
#define _POSIX_MEMORY_PROTECTION 200112L
|
||||
#define _POSIX_MESSAGE_PASSING 200112L
|
||||
#define _POSIX_MONOTONIC_CLOCK 200112L
|
||||
#define _POSIX_NO_TRUNC 1
|
||||
/* #define _POSIX_PRIORITIZED_IO -1 */
|
||||
#define _POSIX_PRIORITY_SCHEDULING 200112L
|
||||
#define _POSIX_RAW_SOCKETS 200112L
|
||||
#define _POSIX_READER_WRITER_LOCKS 200112L
|
||||
#define _POSIX_REALTIME_SIGNALS 200112L
|
||||
#define _POSIX_REGEXP 1
|
||||
#define _POSIX_SAVED_IDS 1
|
||||
#define _POSIX_SEMAPHORES 200112L
|
||||
#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
|
||||
#define _POSIX_SHELL 1
|
||||
/* #define _POSIX_SPAWN -1 */
|
||||
#define _POSIX_SPIN_LOCKS 200112L
|
||||
/* #define _POSIX_SPORADIC_SERVER -1 */
|
||||
#define _POSIX_SYNCHRONIZED_IO 200112L
|
||||
#define _POSIX_THREAD_ATTR_STACKADDR 200112L
|
||||
#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
|
||||
#define _POSIX_THREAD_CPUTIME 200112L
|
||||
/* #define _POSIX_THREAD_PRIO_INHERIT -1 */
|
||||
/* #define _POSIX_THREAD_PRIO_PROTECT -1 */
|
||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L
|
||||
#define _POSIX_THREAD_PROCESS_SHARED 200112L
|
||||
#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
|
||||
/* #define _POSIX_THREAD_SPORADIC_SERVER -1 */
|
||||
#define _POSIX_THREADS 200112L
|
||||
/* #define _POSIX_TIMEOUTS -1 */
|
||||
#define _POSIX_TIMERS 1
|
||||
/* #define _POSIX_TRACE -1 */
|
||||
/* #define _POSIX_TRACE_EVENT_FILTER -1 */
|
||||
/* #define _POSIX_TRACE_INHERIT -1 */
|
||||
/* #define _POSIX_TRACE_LOG -1 */
|
||||
/* #define _POSIX_TYPED_MEMORY_OBJECTS -1 */
|
||||
#define _POSIX_VDISABLE '\0'
|
||||
#define _POSIX2_C_BIND 200112L
|
||||
#define _POSIX2_C_DEV 200112L
|
||||
#define _POSIX2_CHAR_TERM 200112L
|
||||
/* #define _POSIX2_FORT_DEV -1 */
|
||||
/* #define _POSIX2_FORT_RUN -1 */
|
||||
/* #define _POSIX2_LOCALEDEF -1 */
|
||||
/* #define _POSIX2_PBS -1 */
|
||||
/* #define _POSIX2_PBS_ACCOUNTING -1 */
|
||||
/* #define _POSIX2_PBS_CHECKPOINT -1 */
|
||||
/* #define _POSIX2_PBS_LOCATE -1 */
|
||||
/* #define _POSIX2_PBS_MESSAGE -1 */
|
||||
/* #define _POSIX2_PBS_TRACK -1 */
|
||||
#define _POSIX2_SW_DEV 200112L
|
||||
#define _POSIX2_UPE 200112L
|
||||
#define _POSIX_V6_ILP32_OFF32 -1
|
||||
#ifdef __LP64__
|
||||
#define _POSIX_V6_ILP32_OFFBIG -1
|
||||
#define _POSIX_V6_LP64_OFF64 1
|
||||
#define _POSIX_V6_LPBIG_OFFBIG 1
|
||||
#else
|
||||
#define _POSIX_V6_ILP32_OFFBIG 1
|
||||
#define _POSIX_V6_LP64_OFF64 -1
|
||||
#define _POSIX_V6_LPBIG_OFFBIG -1
|
||||
#endif
|
||||
#define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
|
||||
#define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
|
||||
#define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64
|
||||
#define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
|
||||
#define _XOPEN_CRYPT 1
|
||||
#define _XOPEN_ENH_I18N 1
|
||||
/* #define _XOPEN_LEGACY -1 */
|
||||
/* #define _XOPEN_REALTIME -1 */
|
||||
/* #define _XOPEN_REALTIME_THREADS -1 */
|
||||
#define _XOPEN_SHM 1
|
||||
/* #define _XOPEN_STREAMS -1 */
|
||||
/* #define _XOPEN_UNIX -1 */
|
||||
|
||||
#endif /* !__STRICT_ANSI__ || __cplusplus || __STDC_VERSION__ >= 199901L */
|
||||
|
||||
/* The value corresponds to UNICODE version 4.0, which is the version
|
||||
supported by XP. Newlib supports 5.2 (2011) but so far Cygwin needs
|
||||
the MS conversions for double-byte charsets. */
|
||||
#define __STDC_ISO_10646__ 200305L
|
||||
|
||||
#endif /* __CYGWIN__ */
|
||||
|
||||
/* ESP-IDF-specific: enable pthreads support */
|
||||
#ifdef __XTENSA__
|
||||
#define _POSIX_THREADS 1
|
||||
#define _UNIX98_THREAD_MUTEX_ATTRIBUTES 1
|
||||
#endif
|
||||
|
||||
/* Per the permission given in POSIX.1-2008 section 2.2.1, define
|
||||
* _POSIX_C_SOURCE if _XOPEN_SOURCE is defined and _POSIX_C_SOURCE is not.
|
||||
* (_XOPEN_SOURCE indicates that XSI extensions are desired by an application.)
|
||||
* This permission is first granted in 2008, but use it for older ones, also.
|
||||
* Allow for _XOPEN_SOURCE to be empty (from the earliest form of it, before it
|
||||
* was required to have specific values).
|
||||
*/
|
||||
#if !defined(_POSIX_C_SOURCE) && defined(_XOPEN_SOURCE)
|
||||
#if (_XOPEN_SOURCE - 0) == 700 /* POSIX.1-2008 */
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#elif (_XOPEN_SOURCE - 0) == 600 /* POSIX.1-2001 or 2004 */
|
||||
#define _POSIX_C_SOURCE 200112L
|
||||
#elif (_XOPEN_SOURCE - 0) == 500 /* POSIX.1-1995 */
|
||||
#define _POSIX_C_SOURCE 199506L
|
||||
#elif (_XOPEN_SOURCE - 0) < 500 /* really old */
|
||||
#define _POSIX_C_SOURCE 2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _SYS_FEATURES_H */
|
|
@ -1,33 +0,0 @@
|
|||
/* Copyright (c) 2005-2006 Tensilica Inc. ALL RIGHTS RESERVED.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TENSILICA
|
||||
INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
||||
|
||||
#include <sys/fcntl.h>
|
||||
|
||||
/* Alternate names for values for the WHENCE argument to `lseek'.
|
||||
These are the same as SEEK_SET, SEEK_CUR, and SEEK_END, respectively. */
|
||||
#ifndef L_SET
|
||||
#define L_SET 0 /* Seek from beginning of file. */
|
||||
#define L_INCR 1 /* Seek from current position. */
|
||||
#define L_XTND 2 /* Seek from end of file. */
|
||||
#endif
|
|
@ -1,77 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2003-2004, Artem B. Bityuckiy.
|
||||
* Rights transferred to Franklin Electronic Publishers.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Funtions, macros, etc implimented in iconv library but used by other
|
||||
* NLS-related subsystems too.
|
||||
*/
|
||||
#ifndef __SYS_ICONVNLS_H__
|
||||
#define __SYS_ICONVNLS_H__
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <reent.h>
|
||||
#include <wchar.h>
|
||||
#include <iconv.h>
|
||||
|
||||
/* Iconv data path environment variable name */
|
||||
#define NLS_ENVVAR_NAME "NLSPATH"
|
||||
/* Default NLSPATH value */
|
||||
#define ICONV_DEFAULT_NLSPATH "/usr/locale"
|
||||
/* Direction markers */
|
||||
#define ICONV_NLS_FROM 0
|
||||
#define ICONV_NLS_TO 1
|
||||
|
||||
_VOID
|
||||
_EXFUN(_iconv_nls_get_state, (iconv_t cd, mbstate_t *ps, int direction));
|
||||
|
||||
int
|
||||
_EXFUN(_iconv_nls_set_state, (iconv_t cd, mbstate_t *ps, int direction));
|
||||
|
||||
int
|
||||
_EXFUN(_iconv_nls_is_stateful, (iconv_t cd, int direction));
|
||||
|
||||
int
|
||||
_EXFUN(_iconv_nls_get_mb_cur_max, (iconv_t cd, int direction));
|
||||
|
||||
size_t
|
||||
_EXFUN(_iconv_nls_conv, (struct _reent *rptr, iconv_t cd,
|
||||
_CONST char **inbuf, size_t *inbytesleft,
|
||||
char **outbuf, size_t *outbytesleft));
|
||||
|
||||
_CONST char *
|
||||
_EXFUN(_iconv_nls_construct_filename, (struct _reent *rptr, _CONST char *file,
|
||||
_CONST char *dir, _CONST char *ext));
|
||||
|
||||
|
||||
int
|
||||
_EXFUN(_iconv_nls_open, (struct _reent *rptr, _CONST char *encoding,
|
||||
iconv_t *towc, iconv_t *fromwc, int flag));
|
||||
|
||||
char *
|
||||
_EXFUN(_iconv_resolve_encoding_name, (struct _reent *rptr, _CONST char *ca));
|
||||
|
||||
#endif /* __SYS_ICONVNLS_H__ */
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
#ifndef _XTENSA_LOCK_H__
|
||||
#define _XTENSA_LOCK_H__
|
||||
|
||||
/* generic lock implementation.
|
||||
|
||||
Weak linked stub _lock functions in lock.c, can be
|
||||
replaced with a lock implementation at link time.
|
||||
|
||||
*/
|
||||
|
||||
typedef int _lock_t;
|
||||
typedef _lock_t _LOCK_RECURSIVE_T;
|
||||
typedef _lock_t _LOCK_T;
|
||||
|
||||
#include <_ansi.h>
|
||||
|
||||
/* NOTE: some parts of newlib statically initialise locks via
|
||||
__LOCK_INIT, some initialise at runtime via __lock_init. So need to
|
||||
support possibility that a _lock_t is null during first call to
|
||||
_lock_acquire or _lock_try_acquire.
|
||||
|
||||
Lock functions all take a pointer to the _lock_t entry, so the
|
||||
value stored there can be manipulated.
|
||||
*/
|
||||
#define __LOCK_INIT(CLASS,NAME) CLASS _lock_t NAME = 0;
|
||||
#define __LOCK_INIT_RECURSIVE(CLASS,NAME) CLASS _lock_t NAME = 0;
|
||||
|
||||
void _lock_init(_lock_t *lock);
|
||||
void _lock_init_recursive(_lock_t *lock);
|
||||
void _lock_close(_lock_t *lock);
|
||||
void _lock_close_recursive(_lock_t *lock);
|
||||
void _lock_acquire(_lock_t *lock);
|
||||
void _lock_acquire_recursive(_lock_t *lock);
|
||||
int _lock_try_acquire(_lock_t *lock);
|
||||
int _lock_try_acquire_recursive(_lock_t *lock);
|
||||
void _lock_release(_lock_t *lock);
|
||||
void _lock_release_recursive(_lock_t *lock);
|
||||
|
||||
#define __lock_init(lock) _lock_init(&(lock))
|
||||
#define __lock_init_recursive(lock) _lock_init_recursive(&(lock))
|
||||
#define __lock_close(lock) _lock_close(&(lock))
|
||||
#define __lock_close_recursive(lock) _lock_close_recursive(&(lock))
|
||||
#define __lock_acquire(lock) _lock_acquire(&(lock))
|
||||
#define __lock_acquire_recursive(lock) _lock_acquire_recursive(&(lock))
|
||||
#define __lock_try_acquire(lock) _lock_try_acquire(&(lock))
|
||||
#define __lock_try_acquire_recursive(lock) _lock_try_acquire_recursive(&(lock))
|
||||
#define __lock_release(lock) _lock_release(&(lock))
|
||||
#define __lock_release_recursive(lock) _lock_release_recursive(&(lock))
|
||||
|
||||
#endif /* _XTENSA_LOCK_H__ */
|
|
@ -1,28 +0,0 @@
|
|||
/* This is a dummy <sys/param.h> file, not customized for any
|
||||
particular system. If there is a param.h in libc/sys/SYSDIR/sys,
|
||||
it will override this one. */
|
||||
|
||||
#ifndef _SYS_PARAM_H
|
||||
# define _SYS_PARAM_H
|
||||
|
||||
#include <sys/config.h>
|
||||
#include <sys/syslimits.h>
|
||||
#include <machine/endian.h>
|
||||
#include <machine/param.h>
|
||||
|
||||
#ifndef HZ
|
||||
# define HZ (60)
|
||||
#endif
|
||||
#ifndef NOFILE
|
||||
# define NOFILE (60)
|
||||
#endif
|
||||
#ifndef PATHSIZE
|
||||
# define PATHSIZE (1024)
|
||||
#endif
|
||||
|
||||
#define MAXPATHLEN PATH_MAX
|
||||
|
||||
#define MAX(a,b) ((a) > (b) ? (a) : (b))
|
||||
#define MIN(a,b) ((a) < (b) ? (a) : (b))
|
||||
|
||||
#endif
|
|
@ -1,691 +0,0 @@
|
|||
/*-
|
||||
* Copyright (c) 1991, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)queue.h 8.5 (Berkeley) 8/20/94
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _SYS_QUEUE_H_
|
||||
#define _SYS_QUEUE_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/*
|
||||
* This file defines four types of data structures: singly-linked lists,
|
||||
* singly-linked tail queues, lists and tail queues.
|
||||
*
|
||||
* A singly-linked list is headed by a single forward pointer. The elements
|
||||
* are singly linked for minimum space and pointer manipulation overhead at
|
||||
* the expense of O(n) removal for arbitrary elements. New elements can be
|
||||
* added to the list after an existing element or at the head of the list.
|
||||
* Elements being removed from the head of the list should use the explicit
|
||||
* macro for this purpose for optimum efficiency. A singly-linked list may
|
||||
* only be traversed in the forward direction. Singly-linked lists are ideal
|
||||
* for applications with large datasets and few or no removals or for
|
||||
* implementing a LIFO queue.
|
||||
*
|
||||
* A singly-linked tail queue is headed by a pair of pointers, one to the
|
||||
* head of the list and the other to the tail of the list. The elements are
|
||||
* singly linked for minimum space and pointer manipulation overhead at the
|
||||
* expense of O(n) removal for arbitrary elements. New elements can be added
|
||||
* to the list after an existing element, at the head of the list, or at the
|
||||
* end of the list. Elements being removed from the head of the tail queue
|
||||
* should use the explicit macro for this purpose for optimum efficiency.
|
||||
* A singly-linked tail queue may only be traversed in the forward direction.
|
||||
* Singly-linked tail queues are ideal for applications with large datasets
|
||||
* and few or no removals or for implementing a FIFO queue.
|
||||
*
|
||||
* A list is headed by a single forward pointer (or an array of forward
|
||||
* pointers for a hash table header). The elements are doubly linked
|
||||
* so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before
|
||||
* or after an existing element or at the head of the list. A list
|
||||
* may be traversed in either direction.
|
||||
*
|
||||
* A tail queue is headed by a pair of pointers, one to the head of the
|
||||
* list and the other to the tail of the list. The elements are doubly
|
||||
* linked so that an arbitrary element can be removed without a need to
|
||||
* traverse the list. New elements can be added to the list before or
|
||||
* after an existing element, at the head of the list, or at the end of
|
||||
* the list. A tail queue may be traversed in either direction.
|
||||
*
|
||||
* For details on the use of these macros, see the queue(3) manual page.
|
||||
*
|
||||
*
|
||||
* SLIST LIST STAILQ TAILQ
|
||||
* _HEAD + + + +
|
||||
* _HEAD_INITIALIZER + + + +
|
||||
* _ENTRY + + + +
|
||||
* _INIT + + + +
|
||||
* _EMPTY + + + +
|
||||
* _FIRST + + + +
|
||||
* _NEXT + + + +
|
||||
* _PREV - + - +
|
||||
* _LAST - - + +
|
||||
* _FOREACH + + + +
|
||||
* _FOREACH_SAFE + + + +
|
||||
* _FOREACH_REVERSE - - - +
|
||||
* _FOREACH_REVERSE_SAFE - - - +
|
||||
* _INSERT_HEAD + + + +
|
||||
* _INSERT_BEFORE - + - +
|
||||
* _INSERT_AFTER + + + +
|
||||
* _INSERT_TAIL - - + +
|
||||
* _CONCAT - - + +
|
||||
* _REMOVE_AFTER + - + -
|
||||
* _REMOVE_HEAD + - + -
|
||||
* _REMOVE + + + +
|
||||
* _SWAP + + + +
|
||||
*
|
||||
*/
|
||||
#ifdef QUEUE_MACRO_DEBUG
|
||||
/* Store the last 2 places the queue element or head was altered */
|
||||
struct qm_trace {
|
||||
unsigned long lastline;
|
||||
unsigned long prevline;
|
||||
const char *lastfile;
|
||||
const char *prevfile;
|
||||
};
|
||||
|
||||
#define TRACEBUF struct qm_trace trace;
|
||||
#define TRACEBUF_INITIALIZER { __FILE__, __LINE__, NULL, 0 } ,
|
||||
#define TRASHIT(x) do {(x) = (void *)-1;} while (0)
|
||||
#define QMD_SAVELINK(name, link) void **name = (void *)&(link)
|
||||
|
||||
#define QMD_TRACE_HEAD(head) do { \
|
||||
(head)->trace.prevline = (head)->trace.lastline; \
|
||||
(head)->trace.prevfile = (head)->trace.lastfile; \
|
||||
(head)->trace.lastline = __LINE__; \
|
||||
(head)->trace.lastfile = __FILE__; \
|
||||
} while (0)
|
||||
|
||||
#define QMD_TRACE_ELEM(elem) do { \
|
||||
(elem)->trace.prevline = (elem)->trace.lastline; \
|
||||
(elem)->trace.prevfile = (elem)->trace.lastfile; \
|
||||
(elem)->trace.lastline = __LINE__; \
|
||||
(elem)->trace.lastfile = __FILE__; \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
#define QMD_TRACE_ELEM(elem)
|
||||
#define QMD_TRACE_HEAD(head)
|
||||
#define QMD_SAVELINK(name, link)
|
||||
#define TRACEBUF
|
||||
#define TRACEBUF_INITIALIZER
|
||||
#define TRASHIT(x)
|
||||
#endif /* QUEUE_MACRO_DEBUG */
|
||||
|
||||
/*
|
||||
* Singly-linked List declarations.
|
||||
*/
|
||||
#define SLIST_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *slh_first; /* first element */ \
|
||||
}
|
||||
|
||||
#define SLIST_HEAD_INITIALIZER(head) \
|
||||
{ NULL }
|
||||
|
||||
#define SLIST_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *sle_next; /* next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Singly-linked List functions.
|
||||
*/
|
||||
#define SLIST_EMPTY(head) ((head)->slh_first == NULL)
|
||||
|
||||
#define SLIST_FIRST(head) ((head)->slh_first)
|
||||
|
||||
#define SLIST_FOREACH(var, head, field) \
|
||||
for ((var) = SLIST_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = SLIST_NEXT((var), field))
|
||||
|
||||
#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = SLIST_FIRST((head)); \
|
||||
(var) && ((tvar) = SLIST_NEXT((var), field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
|
||||
for ((varp) = &SLIST_FIRST((head)); \
|
||||
((var) = *(varp)) != NULL; \
|
||||
(varp) = &SLIST_NEXT((var), field))
|
||||
|
||||
#define SLIST_INIT(head) do { \
|
||||
SLIST_FIRST((head)) = NULL; \
|
||||
} while (0)
|
||||
|
||||
#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
|
||||
SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
|
||||
SLIST_NEXT((slistelm), field) = (elm); \
|
||||
} while (0)
|
||||
|
||||
#define SLIST_INSERT_HEAD(head, elm, field) do { \
|
||||
SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
|
||||
SLIST_FIRST((head)) = (elm); \
|
||||
} while (0)
|
||||
|
||||
#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
|
||||
|
||||
#define SLIST_REMOVE(head, elm, type, field) do { \
|
||||
QMD_SAVELINK(oldnext, (elm)->field.sle_next); \
|
||||
if (SLIST_FIRST((head)) == (elm)) { \
|
||||
SLIST_REMOVE_HEAD((head), field); \
|
||||
} \
|
||||
else { \
|
||||
struct type *curelm = SLIST_FIRST((head)); \
|
||||
while (SLIST_NEXT(curelm, field) != (elm)) \
|
||||
curelm = SLIST_NEXT(curelm, field); \
|
||||
SLIST_REMOVE_AFTER(curelm, field); \
|
||||
} \
|
||||
TRASHIT(*oldnext); \
|
||||
} while (0)
|
||||
|
||||
#define SLIST_REMOVE_AFTER(elm, field) do { \
|
||||
SLIST_NEXT(elm, field) = \
|
||||
SLIST_NEXT(SLIST_NEXT(elm, field), field); \
|
||||
} while (0)
|
||||
|
||||
#define SLIST_REMOVE_HEAD(head, field) do { \
|
||||
SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
|
||||
} while (0)
|
||||
|
||||
#define SLIST_SWAP(head1, head2, type) do { \
|
||||
struct type *swap_first = SLIST_FIRST(head1); \
|
||||
SLIST_FIRST(head1) = SLIST_FIRST(head2); \
|
||||
SLIST_FIRST(head2) = swap_first; \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Singly-linked Tail queue declarations.
|
||||
*/
|
||||
#define STAILQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *stqh_first;/* first element */ \
|
||||
struct type **stqh_last;/* addr of last next element */ \
|
||||
}
|
||||
|
||||
#define STAILQ_HEAD_INITIALIZER(head) \
|
||||
{ NULL, &(head).stqh_first }
|
||||
|
||||
#define STAILQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *stqe_next; /* next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* Singly-linked Tail queue functions.
|
||||
*/
|
||||
#define STAILQ_CONCAT(head1, head2) do { \
|
||||
if (!STAILQ_EMPTY((head2))) { \
|
||||
*(head1)->stqh_last = (head2)->stqh_first; \
|
||||
(head1)->stqh_last = (head2)->stqh_last; \
|
||||
STAILQ_INIT((head2)); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL)
|
||||
|
||||
#define STAILQ_FIRST(head) ((head)->stqh_first)
|
||||
|
||||
#define STAILQ_FOREACH(var, head, field) \
|
||||
for((var) = STAILQ_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = STAILQ_NEXT((var), field))
|
||||
|
||||
|
||||
#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = STAILQ_FIRST((head)); \
|
||||
(var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
#define STAILQ_INIT(head) do { \
|
||||
STAILQ_FIRST((head)) = NULL; \
|
||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \
|
||||
if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\
|
||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
||||
STAILQ_NEXT((tqelm), field) = (elm); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_INSERT_HEAD(head, elm, field) do { \
|
||||
if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \
|
||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
||||
STAILQ_FIRST((head)) = (elm); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_INSERT_TAIL(head, elm, field) do { \
|
||||
STAILQ_NEXT((elm), field) = NULL; \
|
||||
*(head)->stqh_last = (elm); \
|
||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_LAST(head, type, field) \
|
||||
(STAILQ_EMPTY((head)) ? NULL : \
|
||||
__containerof((head)->stqh_last, struct type, field.stqe_next))
|
||||
|
||||
#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
|
||||
|
||||
#define STAILQ_REMOVE(head, elm, type, field) do { \
|
||||
QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \
|
||||
if (STAILQ_FIRST((head)) == (elm)) { \
|
||||
STAILQ_REMOVE_HEAD((head), field); \
|
||||
} \
|
||||
else { \
|
||||
struct type *curelm = STAILQ_FIRST((head)); \
|
||||
while (STAILQ_NEXT(curelm, field) != (elm)) \
|
||||
curelm = STAILQ_NEXT(curelm, field); \
|
||||
STAILQ_REMOVE_AFTER(head, curelm, field); \
|
||||
} \
|
||||
TRASHIT(*oldnext); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_REMOVE_AFTER(head, elm, field) do { \
|
||||
if ((STAILQ_NEXT(elm, field) = \
|
||||
STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \
|
||||
(head)->stqh_last = &STAILQ_NEXT((elm), field); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_REMOVE_HEAD(head, field) do { \
|
||||
if ((STAILQ_FIRST((head)) = \
|
||||
STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \
|
||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \
|
||||
if ((STAILQ_FIRST((head)) = STAILQ_NEXT((elm), field)) == NULL) \
|
||||
(head)->stqh_last = &STAILQ_FIRST((head)); \
|
||||
} while (0)
|
||||
|
||||
#define STAILQ_SWAP(head1, head2, type) do { \
|
||||
struct type *swap_first = STAILQ_FIRST(head1); \
|
||||
struct type **swap_last = (head1)->stqh_last; \
|
||||
STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \
|
||||
(head1)->stqh_last = (head2)->stqh_last; \
|
||||
STAILQ_FIRST(head2) = swap_first; \
|
||||
(head2)->stqh_last = swap_last; \
|
||||
if (STAILQ_EMPTY(head1)) \
|
||||
(head1)->stqh_last = &STAILQ_FIRST(head1); \
|
||||
if (STAILQ_EMPTY(head2)) \
|
||||
(head2)->stqh_last = &STAILQ_FIRST(head2); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/*
|
||||
* List declarations.
|
||||
*/
|
||||
#define LIST_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *lh_first; /* first element */ \
|
||||
}
|
||||
|
||||
#define LIST_HEAD_INITIALIZER(head) \
|
||||
{ NULL }
|
||||
|
||||
#define LIST_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *le_next; /* next element */ \
|
||||
struct type **le_prev; /* address of previous next element */ \
|
||||
}
|
||||
|
||||
/*
|
||||
* List functions.
|
||||
*/
|
||||
|
||||
#if (defined(_KERNEL) && defined(INVARIANTS))
|
||||
#define QMD_LIST_CHECK_HEAD(head, field) do { \
|
||||
if (LIST_FIRST((head)) != NULL && \
|
||||
LIST_FIRST((head))->field.le_prev != \
|
||||
&LIST_FIRST((head))) \
|
||||
panic("Bad list head %p first->prev != head", (head)); \
|
||||
} while (0)
|
||||
|
||||
#define QMD_LIST_CHECK_NEXT(elm, field) do { \
|
||||
if (LIST_NEXT((elm), field) != NULL && \
|
||||
LIST_NEXT((elm), field)->field.le_prev != \
|
||||
&((elm)->field.le_next)) \
|
||||
panic("Bad link elm %p next->prev != elm", (elm)); \
|
||||
} while (0)
|
||||
|
||||
#define QMD_LIST_CHECK_PREV(elm, field) do { \
|
||||
if (*(elm)->field.le_prev != (elm)) \
|
||||
panic("Bad link elm %p prev->next != elm", (elm)); \
|
||||
} while (0)
|
||||
#else
|
||||
#define QMD_LIST_CHECK_HEAD(head, field)
|
||||
#define QMD_LIST_CHECK_NEXT(elm, field)
|
||||
#define QMD_LIST_CHECK_PREV(elm, field)
|
||||
#endif /* (_KERNEL && INVARIANTS) */
|
||||
|
||||
#define LIST_EMPTY(head) ((head)->lh_first == NULL)
|
||||
|
||||
#define LIST_FIRST(head) ((head)->lh_first)
|
||||
|
||||
#define LIST_FOREACH(var, head, field) \
|
||||
for ((var) = LIST_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = LIST_NEXT((var), field))
|
||||
|
||||
#define LIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = LIST_FIRST((head)); \
|
||||
(var) && ((tvar) = LIST_NEXT((var), field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
#define LIST_INIT(head) do { \
|
||||
LIST_FIRST((head)) = NULL; \
|
||||
} while (0)
|
||||
|
||||
#define LIST_INSERT_AFTER(listelm, elm, field) do { \
|
||||
QMD_LIST_CHECK_NEXT(listelm, field); \
|
||||
if ((LIST_NEXT((elm), field) = LIST_NEXT((listelm), field)) != NULL)\
|
||||
LIST_NEXT((listelm), field)->field.le_prev = \
|
||||
&LIST_NEXT((elm), field); \
|
||||
LIST_NEXT((listelm), field) = (elm); \
|
||||
(elm)->field.le_prev = &LIST_NEXT((listelm), field); \
|
||||
} while (0)
|
||||
|
||||
#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
|
||||
QMD_LIST_CHECK_PREV(listelm, field); \
|
||||
(elm)->field.le_prev = (listelm)->field.le_prev; \
|
||||
LIST_NEXT((elm), field) = (listelm); \
|
||||
*(listelm)->field.le_prev = (elm); \
|
||||
(listelm)->field.le_prev = &LIST_NEXT((elm), field); \
|
||||
} while (0)
|
||||
|
||||
#define LIST_INSERT_HEAD(head, elm, field) do { \
|
||||
QMD_LIST_CHECK_HEAD((head), field); \
|
||||
if ((LIST_NEXT((elm), field) = LIST_FIRST((head))) != NULL) \
|
||||
LIST_FIRST((head))->field.le_prev = &LIST_NEXT((elm), field);\
|
||||
LIST_FIRST((head)) = (elm); \
|
||||
(elm)->field.le_prev = &LIST_FIRST((head)); \
|
||||
} while (0)
|
||||
|
||||
#define LIST_NEXT(elm, field) ((elm)->field.le_next)
|
||||
|
||||
#define LIST_PREV(elm, head, type, field) \
|
||||
((elm)->field.le_prev == &LIST_FIRST((head)) ? NULL : \
|
||||
__containerof((elm)->field.le_prev, struct type, field.le_next))
|
||||
|
||||
#define LIST_REMOVE(elm, field) do { \
|
||||
QMD_SAVELINK(oldnext, (elm)->field.le_next); \
|
||||
QMD_SAVELINK(oldprev, (elm)->field.le_prev); \
|
||||
QMD_LIST_CHECK_NEXT(elm, field); \
|
||||
QMD_LIST_CHECK_PREV(elm, field); \
|
||||
if (LIST_NEXT((elm), field) != NULL) \
|
||||
LIST_NEXT((elm), field)->field.le_prev = \
|
||||
(elm)->field.le_prev; \
|
||||
*(elm)->field.le_prev = LIST_NEXT((elm), field); \
|
||||
TRASHIT(*oldnext); \
|
||||
TRASHIT(*oldprev); \
|
||||
} while (0)
|
||||
|
||||
#define LIST_SWAP(head1, head2, type, field) do { \
|
||||
struct type *swap_tmp = LIST_FIRST((head1)); \
|
||||
LIST_FIRST((head1)) = LIST_FIRST((head2)); \
|
||||
LIST_FIRST((head2)) = swap_tmp; \
|
||||
if ((swap_tmp = LIST_FIRST((head1))) != NULL) \
|
||||
swap_tmp->field.le_prev = &LIST_FIRST((head1)); \
|
||||
if ((swap_tmp = LIST_FIRST((head2))) != NULL) \
|
||||
swap_tmp->field.le_prev = &LIST_FIRST((head2)); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Tail queue declarations.
|
||||
*/
|
||||
#define TAILQ_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *tqh_first; /* first element */ \
|
||||
struct type **tqh_last; /* addr of last next element */ \
|
||||
TRACEBUF \
|
||||
}
|
||||
|
||||
#define TAILQ_HEAD_INITIALIZER(head) \
|
||||
{ NULL, &(head).tqh_first, TRACEBUF_INITIALIZER }
|
||||
|
||||
#define TAILQ_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *tqe_next; /* next element */ \
|
||||
struct type **tqe_prev; /* address of previous next element */ \
|
||||
TRACEBUF \
|
||||
}
|
||||
|
||||
/*
|
||||
* Tail queue functions.
|
||||
*/
|
||||
#if (defined(_KERNEL) && defined(INVARIANTS))
|
||||
#define QMD_TAILQ_CHECK_HEAD(head, field) do { \
|
||||
if (!TAILQ_EMPTY(head) && \
|
||||
TAILQ_FIRST((head))->field.tqe_prev != \
|
||||
&TAILQ_FIRST((head))) \
|
||||
panic("Bad tailq head %p first->prev != head", (head)); \
|
||||
} while (0)
|
||||
|
||||
#define QMD_TAILQ_CHECK_TAIL(head, field) do { \
|
||||
if (*(head)->tqh_last != NULL) \
|
||||
panic("Bad tailq NEXT(%p->tqh_last) != NULL", (head)); \
|
||||
} while (0)
|
||||
|
||||
#define QMD_TAILQ_CHECK_NEXT(elm, field) do { \
|
||||
if (TAILQ_NEXT((elm), field) != NULL && \
|
||||
TAILQ_NEXT((elm), field)->field.tqe_prev != \
|
||||
&((elm)->field.tqe_next)) \
|
||||
panic("Bad link elm %p next->prev != elm", (elm)); \
|
||||
} while (0)
|
||||
|
||||
#define QMD_TAILQ_CHECK_PREV(elm, field) do { \
|
||||
if (*(elm)->field.tqe_prev != (elm)) \
|
||||
panic("Bad link elm %p prev->next != elm", (elm)); \
|
||||
} while (0)
|
||||
#else
|
||||
#define QMD_TAILQ_CHECK_HEAD(head, field)
|
||||
#define QMD_TAILQ_CHECK_TAIL(head, headname)
|
||||
#define QMD_TAILQ_CHECK_NEXT(elm, field)
|
||||
#define QMD_TAILQ_CHECK_PREV(elm, field)
|
||||
#endif /* (_KERNEL && INVARIANTS) */
|
||||
|
||||
#define TAILQ_CONCAT(head1, head2, field) do { \
|
||||
if (!TAILQ_EMPTY(head2)) { \
|
||||
*(head1)->tqh_last = (head2)->tqh_first; \
|
||||
(head2)->tqh_first->field.tqe_prev = (head1)->tqh_last; \
|
||||
(head1)->tqh_last = (head2)->tqh_last; \
|
||||
TAILQ_INIT((head2)); \
|
||||
QMD_TRACE_HEAD(head1); \
|
||||
QMD_TRACE_HEAD(head2); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
|
||||
|
||||
#define TAILQ_FIRST(head) ((head)->tqh_first)
|
||||
|
||||
#define TAILQ_FOREACH(var, head, field) \
|
||||
for ((var) = TAILQ_FIRST((head)); \
|
||||
(var); \
|
||||
(var) = TAILQ_NEXT((var), field))
|
||||
|
||||
#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
for ((var) = TAILQ_FIRST((head)); \
|
||||
(var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
|
||||
for ((var) = TAILQ_LAST((head), headname); \
|
||||
(var); \
|
||||
(var) = TAILQ_PREV((var), headname, field))
|
||||
|
||||
#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
|
||||
for ((var) = TAILQ_LAST((head), headname); \
|
||||
(var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
|
||||
(var) = (tvar))
|
||||
|
||||
#define TAILQ_INIT(head) do { \
|
||||
TAILQ_FIRST((head)) = NULL; \
|
||||
(head)->tqh_last = &TAILQ_FIRST((head)); \
|
||||
QMD_TRACE_HEAD(head); \
|
||||
} while (0)
|
||||
|
||||
#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
QMD_TAILQ_CHECK_NEXT(listelm, field); \
|
||||
if ((TAILQ_NEXT((elm), field) = TAILQ_NEXT((listelm), field)) != NULL)\
|
||||
TAILQ_NEXT((elm), field)->field.tqe_prev = \
|
||||
&TAILQ_NEXT((elm), field); \
|
||||
else { \
|
||||
(head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||||
QMD_TRACE_HEAD(head); \
|
||||
} \
|
||||
TAILQ_NEXT((listelm), field) = (elm); \
|
||||
(elm)->field.tqe_prev = &TAILQ_NEXT((listelm), field); \
|
||||
QMD_TRACE_ELEM(&(elm)->field); \
|
||||
QMD_TRACE_ELEM(&listelm->field); \
|
||||
} while (0)
|
||||
|
||||
#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
|
||||
QMD_TAILQ_CHECK_PREV(listelm, field); \
|
||||
(elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
|
||||
TAILQ_NEXT((elm), field) = (listelm); \
|
||||
*(listelm)->field.tqe_prev = (elm); \
|
||||
(listelm)->field.tqe_prev = &TAILQ_NEXT((elm), field); \
|
||||
QMD_TRACE_ELEM(&(elm)->field); \
|
||||
QMD_TRACE_ELEM(&listelm->field); \
|
||||
} while (0)
|
||||
|
||||
#define TAILQ_INSERT_HEAD(head, elm, field) do { \
|
||||
QMD_TAILQ_CHECK_HEAD(head, field); \
|
||||
if ((TAILQ_NEXT((elm), field) = TAILQ_FIRST((head))) != NULL) \
|
||||
TAILQ_FIRST((head))->field.tqe_prev = \
|
||||
&TAILQ_NEXT((elm), field); \
|
||||
else \
|
||||
(head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||||
TAILQ_FIRST((head)) = (elm); \
|
||||
(elm)->field.tqe_prev = &TAILQ_FIRST((head)); \
|
||||
QMD_TRACE_HEAD(head); \
|
||||
QMD_TRACE_ELEM(&(elm)->field); \
|
||||
} while (0)
|
||||
|
||||
#define TAILQ_INSERT_TAIL(head, elm, field) do { \
|
||||
QMD_TAILQ_CHECK_TAIL(head, field); \
|
||||
TAILQ_NEXT((elm), field) = NULL; \
|
||||
(elm)->field.tqe_prev = (head)->tqh_last; \
|
||||
*(head)->tqh_last = (elm); \
|
||||
(head)->tqh_last = &TAILQ_NEXT((elm), field); \
|
||||
QMD_TRACE_HEAD(head); \
|
||||
QMD_TRACE_ELEM(&(elm)->field); \
|
||||
} while (0)
|
||||
|
||||
#define TAILQ_LAST(head, headname) \
|
||||
(*(((struct headname *)((head)->tqh_last))->tqh_last))
|
||||
|
||||
#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
|
||||
|
||||
#define TAILQ_PREV(elm, headname, field) \
|
||||
(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
|
||||
|
||||
#define TAILQ_REMOVE(head, elm, field) do { \
|
||||
QMD_SAVELINK(oldnext, (elm)->field.tqe_next); \
|
||||
QMD_SAVELINK(oldprev, (elm)->field.tqe_prev); \
|
||||
QMD_TAILQ_CHECK_NEXT(elm, field); \
|
||||
QMD_TAILQ_CHECK_PREV(elm, field); \
|
||||
if ((TAILQ_NEXT((elm), field)) != NULL) \
|
||||
TAILQ_NEXT((elm), field)->field.tqe_prev = \
|
||||
(elm)->field.tqe_prev; \
|
||||
else { \
|
||||
(head)->tqh_last = (elm)->field.tqe_prev; \
|
||||
QMD_TRACE_HEAD(head); \
|
||||
} \
|
||||
*(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
|
||||
TRASHIT(*oldnext); \
|
||||
TRASHIT(*oldprev); \
|
||||
QMD_TRACE_ELEM(&(elm)->field); \
|
||||
} while (0)
|
||||
|
||||
#define TAILQ_SWAP(head1, head2, type, field) do { \
|
||||
struct type *swap_first = (head1)->tqh_first; \
|
||||
struct type **swap_last = (head1)->tqh_last; \
|
||||
(head1)->tqh_first = (head2)->tqh_first; \
|
||||
(head1)->tqh_last = (head2)->tqh_last; \
|
||||
(head2)->tqh_first = swap_first; \
|
||||
(head2)->tqh_last = swap_last; \
|
||||
if ((swap_first = (head1)->tqh_first) != NULL) \
|
||||
swap_first->field.tqe_prev = &(head1)->tqh_first; \
|
||||
else \
|
||||
(head1)->tqh_last = &(head1)->tqh_first; \
|
||||
if ((swap_first = (head2)->tqh_first) != NULL) \
|
||||
swap_first->field.tqe_prev = &(head2)->tqh_first; \
|
||||
else \
|
||||
(head2)->tqh_last = &(head2)->tqh_first; \
|
||||
} while (0)
|
||||
|
||||
#ifdef _KERNEL
|
||||
|
||||
/*
|
||||
* XXX insque() and remque() are an old way of handling certain queues.
|
||||
* They bogusly assumes that all queue heads look alike.
|
||||
*/
|
||||
|
||||
struct quehead {
|
||||
struct quehead *qh_link;
|
||||
struct quehead *qh_rlink;
|
||||
};
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
static __inline void
|
||||
insque(void *a, void *b)
|
||||
{
|
||||
struct quehead *element = (struct quehead *)a,
|
||||
*head = (struct quehead *)b;
|
||||
|
||||
element->qh_link = head->qh_link;
|
||||
element->qh_rlink = head;
|
||||
head->qh_link = element;
|
||||
element->qh_link->qh_rlink = element;
|
||||
}
|
||||
|
||||
static __inline void
|
||||
remque(void *a)
|
||||
{
|
||||
struct quehead *element = (struct quehead *)a;
|
||||
|
||||
element->qh_link->qh_rlink = element->qh_rlink;
|
||||
element->qh_rlink->qh_link = element->qh_link;
|
||||
element->qh_rlink = 0;
|
||||
}
|
||||
|
||||
#else /* !__GNUC__ */
|
||||
|
||||
void insque(void *a, void *b);
|
||||
void remque(void *a);
|
||||
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
#endif /* _KERNEL */
|
||||
|
||||
#endif /* !_SYS_QUEUE_H_ */
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue