[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT/LIBMICROPYTHON PATCH 5/7] Add header files


  • To: "minios-devel@xxxxxxxxxxxxxxxxxxxx" <minios-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Vlad-Andrei BĂDOIU (78692) <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
  • Date: Tue, 8 Oct 2019 12:12:29 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=stud.acs.upb.ro; dmarc=pass action=none header.from=stud.acs.upb.ro; dkim=pass header.d=stud.acs.upb.ro; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KKntK6RHlVMJb+0llXSX0H4LD810iKaAlE1mHIgYbHU=; b=Azy1RBvXFNke26yzezP18Ze5jubJasirDUN7JR3fPiQsy8mGNNX20e156OtO8nno+g7lxvboftoK5kKZ/IMa6WZrvogtbiRQ4AIdDLMZ9LvYYPlEP4G02GjLw5gq3LDB5obT+eqBqP//Z6f6K05eT/Dp+bYAXfiw70pVsJiQ2Vpjen8Tnkhk++ABgrPo5OHvAX/zooZ4cXbtFexxab8tIfq4ErJCM6Jj9dTPX09BgI5dhO+g4qC99R+KraeXSAwkeTPpxAAipm6AxwfzPDxLi+oX8hyLY1Q/Zzk3c2BuBakUlvsFEgY1parrAwCKCs/Dio4Nsoc8jt8YxqDhcyCYkw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DMZ7onPy3mNkRosUF6L4+h4ZvV5RRlEpeHJpHtB3Un/FI0m12EAtJe2HYqMjDSYTqbBzrJGiijjdkE8CeiaRTu8YwpaqRGi0DBnlJQKOk/7X19CPIQl8tMdLZ22PpSiabN+yTLULM3FbVbf1+3W1x0sLmviD31dC1JX+G0ohkbrkNAgUXRAUssF7AUoYB8PsCpf/zKm3ZS/QsSMqxqVO4MyEQsy5VZ3czTCHOVGCWmbLg54gDSKF0RL4aWSi0mZ/qavhFGxQrQRb3JJFjM/EI5dXPhKsuJHgOdw/PAuszOz2lNNBJ2vA0os0EMkMaF0QbyvmNDlOBZHc5YWRjHdx+g==
  • Authentication-results: spf=none (sender IP is ) smtp.mailfrom=vlad_andrei.badoiu@xxxxxxxxxxxxxxx;
  • Delivery-date: Tue, 08 Oct 2019 12:12:35 +0000
  • List-id: Mini-os development list <minios-devel.lists.xenproject.org>
  • Thread-index: AQHVfa8ZxzfhIoSYkEGnW2aPYu/Uq6dQp+6A
  • Thread-topic: [Minios-devel] [UNIKRAFT/LIBMICROPYTHON PATCH 5/7] Add header files

Reviewed-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>

On 08.10.2019 11:04, Felipe Huici wrote:
> Add header files, including mpconfigport.h, Micropython's config file.
>
> Signed-off-by: Felipe Huici <felipe.huici@xxxxxxxxx>
> ---
>   include/modlwip.h      | 111 ++++++++++++++
>   include/mpconfigport.h | 320 +++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 431 insertions(+)
>   create mode 100644 include/modlwip.h
>   create mode 100644 include/mpconfigport.h
>
> diff --git a/include/modlwip.h b/include/modlwip.h
> new file mode 100644
> index 0000000..f754686
> --- /dev/null
> +++ b/include/modlwip.h
> @@ -0,0 +1,111 @@
> +/*
> + * This file is part of the Micro Python project, http://micropython.org/
> + *
> + * The MIT License (MIT)
> + *
> + * Copyright (c) 2013, 2014 Damien P. George
> + * Copyright (c) 2015 Galen Hazelwood
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a 
> copy
> + * of this software and associated documentation files (the "Software"), to 
> deal
> + * in the Software without restriction, including without limitation the 
> rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
> THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
> FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +
> +#include <string.h>
> +#include <errno.h>
> +#include <stdio.h>
> +
> +#include "py/nlr.h"
> +#include "py/objlist.h"
> +#include "py/runtime.h"
> +#include "py/stream.h"
> +#include "py/mphal.h"
> +
> +#include "netutils.h"
> +
> +#include "lwip/init.h"
> +#include "lwip/timers.h"
> +#include "lwip/tcp.h"
> +#include "lwip/udp.h"
> +#include "lwip/dns.h"
> +#include "lwip/tcp_impl.h"
> +#include "lwip/netif.h"
> +#include "lwip/inet.h"
> +#include "lwip/prot/ethernet.h"
> +//#include <mini-os/lwip-net.h>
> +
> +typedef struct _lwip_socket_obj_t {
> +    mp_obj_base_t base;
> +
> +    volatile union {
> +        struct tcp_pcb *tcp;
> +        struct udp_pcb *udp;
> +    } pcb;
> +    volatile union {
> +        struct pbuf *pbuf;
> +        struct tcp_pcb *connection;
> +    } incoming;
> +    mp_obj_t callback;
> +    byte peer[4];
> +    mp_uint_t peer_port;
> +    mp_uint_t timeout;
> +    uint16_t leftover_count;
> +
> +    uint8_t domain;
> +    uint8_t type;
> +
> +    #define STATE_NEW 0
> +    #define STATE_CONNECTING 1
> +    #define STATE_CONNECTED 2
> +    #define STATE_PEER_CLOSED 3
> +    // Negative value is lwIP error
> +    int8_t state;
> +} lwip_socket_obj_t;
> +
> +struct mcargs {
> +  struct eth_addr mac;
> +  struct netif    netif;
> +  ip4_addr_t      ip;
> +  ip4_addr_t      mask;
> +  ip4_addr_t      gw;
> +  #if LWIP_DNS
> +  ip4_addr_t      dns0;
> +  ip4_addr_t      dns1;
> +  #endif
> +} args;
> +
> +
> +void lwip_socket_print(const mp_print_t *print, mp_obj_t self_in, 
> mp_print_kind_t kind);
> +mp_obj_t lwip_socket_close(mp_obj_t self_in);
> +mp_obj_t lwip_socket_bind(mp_obj_t self_in, mp_obj_t addr_in);
> +mp_obj_t lwip_socket_listen(mp_obj_t self_in, mp_obj_t backlog_in);
> +mp_obj_t lwip_socket_accept(mp_obj_t self_in);
> +mp_obj_t lwip_socket_connect(mp_obj_t self_in, mp_obj_t addr_in);
> +void lwip_socket_check_connected(lwip_socket_obj_t *socket);
> +mp_obj_t lwip_socket_send(mp_obj_t self_in, mp_obj_t buf_in);
> +mp_obj_t lwip_socket_recv(mp_obj_t self_in, mp_obj_t len_in);
> +mp_obj_t lwip_socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t 
> addr_in);
> +mp_obj_t lwip_socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in);
> +mp_obj_t lwip_socket_sendall(mp_obj_t self_in, mp_obj_t buf_in);
> +mp_obj_t lwip_socket_settimeout(mp_obj_t self_in, mp_obj_t timeout_in);
> +mp_obj_t lwip_socket_setblocking(mp_obj_t self_in, mp_obj_t flag_in);
> +mp_obj_t lwip_socket_setsockopt(mp_uint_t n_args, const mp_obj_t *args);
> +mp_obj_t lwip_socket_makefile(mp_uint_t n_args, const mp_obj_t *args);
> +mp_uint_t lwip_socket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int 
> *errcode);
> +mp_uint_t lwip_socket_write(mp_obj_t self_in, const void *buf, mp_uint_t 
> size, int *errcode);
> +mp_obj_t lwip_socket_make_new(const mp_obj_type_t *type, mp_uint_t n_args, 
> mp_uint_t n_kw, const mp_obj_t *args);
> +mp_obj_t lwip_getaddrinfo(mp_obj_t host_in, mp_obj_t port_in);
> diff --git a/include/mpconfigport.h b/include/mpconfigport.h
> new file mode 100644
> index 0000000..050255d
> --- /dev/null
> +++ b/include/mpconfigport.h
> @@ -0,0 +1,320 @@
> +/*
> + * This file is part of the MicroPython project, http://micropython.org/
> + *
> + * The MIT License (MIT)
> + *
> + * Copyright (c) 2013, 2014 Damien P. George
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a 
> copy
> + * of this software and associated documentation files (the "Software"), to 
> deal
> + * in the Software without restriction, including without limitation the 
> rights
> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> + * copies of the Software, and to permit persons to whom the Software is
> + * furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
> THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
> FROM,
> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> + * THE SOFTWARE.
> + */
> +
> +// options to control how MicroPython is built
> +#define MICROPY_HW_BOARD_NAME "unix"
> +#define MICROPY_HW_MCU_NAME "unknown-cpu"
> +
> +#define MICROPY_ALLOC_PATH_MAX      (PATH_MAX)
> +#define MICROPY_PERSISTENT_CODE_LOAD (1)
> +#if !defined(MICROPY_EMIT_X64) && defined(__x86_64__)
> +    #define MICROPY_EMIT_X64        (1)
> +#endif
> +#if !defined(MICROPY_EMIT_X86) && defined(__i386__)
> +    #define MICROPY_EMIT_X86        (1)
> +#endif
> +#if !defined(MICROPY_EMIT_THUMB) && defined(__thumb2__)
> +    #define MICROPY_EMIT_THUMB      (1)
> +    #define MICROPY_MAKE_POINTER_CALLABLE(p) ((void*)((mp_uint_t)(p) | 1))
> +#endif
> +// Some compilers define __thumb2__ and __arm__ at the same time, let
> +// autodetected thumb2 emitter have priority.
> +#if !defined(MICROPY_EMIT_ARM) && defined(__arm__) && !defined(__thumb2__)
> +    #define MICROPY_EMIT_ARM        (1)
> +#endif
> +#define MICROPY_COMP_MODULE_CONST   (1)
> +#define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (1)
> +#define MICROPY_COMP_RETURN_IF_EXPR (1)
> +#define MICROPY_ENABLE_GC           (0)
> +#define MICROPY_ENABLE_FINALISER    (0)
> +#define MICROPY_STACK_CHECK         (1)
> +#define MICROPY_MALLOC_USES_ALLOCATED_SIZE (1)
> +#define MICROPY_MEM_STATS           (1)
> +#define MICROPY_DEBUG_PRINTERS      (1)
> +// Printing debug to stderr may give tests which
> +// check stdout a chance to pass, etc.
> +#define MICROPY_DEBUG_PRINTER_DEST  mp_stderr_print
> +#define MICROPY_READER_POSIX        (1)
> +#define MICROPY_USE_READLINE_HISTORY (1)
> +#define MICROPY_HELPER_REPL         (1)
> +#define MICROPY_REPL_EMACS_KEYS     (1)
> +#define MICROPY_REPL_AUTO_INDENT    (1)
> +#define MICROPY_HELPER_LEXER_UNIX   (1)
> +#define MICROPY_ENABLE_SOURCE_LINE  (1)
> +#define MICROPY_FLOAT_IMPL          (MICROPY_FLOAT_IMPL_DOUBLE)
> +#define MICROPY_LONGINT_IMPL        (MICROPY_LONGINT_IMPL_MPZ)
> +#define MICROPY_STREAMS_NON_BLOCK   (1)
> +#define MICROPY_STREAMS_POSIX_API   (1)
> +#define MICROPY_OPT_COMPUTED_GOTO   (1)
> +#ifndef MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE
> +#define MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE (1)
> +#endif
> +#define MICROPY_CAN_OVERRIDE_BUILTINS (1)
> +#define MICROPY_PY_FUNCTION_ATTRS   (1)
> +#define MICROPY_PY_DESCRIPTORS      (1)
> +#define MICROPY_PY_BUILTINS_STR_UNICODE (1)
> +#define MICROPY_PY_BUILTINS_STR_CENTER (1)
> +#define MICROPY_PY_BUILTINS_STR_PARTITION (1)
> +#define MICROPY_PY_BUILTINS_STR_SPLITLINES (1)
> +#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
> +#define MICROPY_PY_BUILTINS_FROZENSET (1)
> +#define MICROPY_PY_BUILTINS_COMPILE (1)
> +#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
> +#define MICROPY_PY_BUILTINS_INPUT   (1)
> +#define MICROPY_PY_BUILTINS_POW3    (1)
> +#define MICROPY_PY_MICROPYTHON_MEM_INFO (1)
> +#define MICROPY_PY_ALL_SPECIAL_METHODS (1)
> +#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1)
> +#define MICROPY_PY_BUILTINS_SLICE_ATTRS (1)
> +#define MICROPY_PY_SYS_EXIT         (1)
> +#if defined(__APPLE__) && defined(__MACH__)
> +    #define MICROPY_PY_SYS_PLATFORM  "darwin"
> +#else
> +    #define MICROPY_PY_SYS_PLATFORM  "linux"
> +#endif
> +#define MICROPY_PY_SYS_MAXSIZE      (1)
> +#define MICROPY_PY_SYS_STDFILES     (1)
> +#define MICROPY_PY_SYS_EXC_INFO     (1)
> +#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
> +#ifndef MICROPY_PY_MATH_SPECIAL_FUNCTIONS
> +#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1)
> +#endif
> +#define MICROPY_PY_CMATH            (1)
> +#define MICROPY_PY_IO_FILEIO        (1)
> +#define MICROPY_PY_IO_RESOURCE_STREAM (1)
> +#define MICROPY_PY_GC_COLLECT_RETVAL (1)
> +#define MICROPY_MODULE_FROZEN_STR   (1)
> +
> +#define MICROPY_STACKLESS           (0)
> +#define MICROPY_STACKLESS_STRICT    (0)
> +
> +#define MICROPY_PY_OS_STATVFS       (1)
> +#define MICROPY_PY_UTIME            (1)
> +#define MICROPY_PY_UTIME_MP_HAL     (1)
> +#define MICROPY_PY_UERRNO           (1)
> +#define MICROPY_PY_UCTYPES          (1)
> +#define MICROPY_PY_UZLIB            (1)
> +#define MICROPY_PY_UJSON            (1)
> +#define MICROPY_PY_URE              (1)
> +#define MICROPY_PY_UHEAPQ           (1)
> +#define MICROPY_PY_UTIMEQ           (1)
> +#define MICROPY_PY_UHASHLIB         (1)
> +#if MICROPY_PY_USSL && MICROPY_SSL_AXTLS
> +#define MICROPY_PY_UHASHLIB_SHA1    (1)
> +#endif
> +#define MICROPY_PY_UBINASCII        (1)
> +#define MICROPY_PY_UBINASCII_CRC32  (1)
> +#define MICROPY_PY_URANDOM          (1)
> +#ifndef MICROPY_PY_USELECT_POSIX
> +#define MICROPY_PY_USELECT_POSIX    (1)
> +#endif
> +#define MICROPY_PY_WEBSOCKET        (1)
> +#define MICROPY_PY_MACHINE          (1)
> +#define MICROPY_PY_MACHINE_PULSE    (1)
> +#define MICROPY_MACHINE_MEM_GET_READ_ADDR   mod_machine_mem_get_addr
> +#define MICROPY_MACHINE_MEM_GET_WRITE_ADDR  mod_machine_mem_get_addr
> +
> +#define MICROPY_FATFS_ENABLE_LFN       (1)
> +#define MICROPY_FATFS_RPATH            (2)
> +#define MICROPY_FATFS_MAX_SS           (4096)
> +#define MICROPY_FATFS_LFN_CODE_PAGE    (437) /* 1=SFN/ANSI 437=LFN/U.S.(OEM) 
> */
> +#define MICROPY_VFS_FAT                (0)
> +
> +// Define to MICROPY_ERROR_REPORTING_DETAILED to get function, etc.
> +// names in exception messages (may require more RAM).
> +#define MICROPY_ERROR_REPORTING     (MICROPY_ERROR_REPORTING_DETAILED)
> +#define MICROPY_WARNINGS            (1)
> +#define MICROPY_PY_STR_BYTES_CMP_WARN (1)
> +
> +// Define to 1 to use undertested inefficient GC helper implementation
> +// (if more efficient arch-specific one is not available).
> +#ifndef MICROPY_GCREGS_SETJMP
> +    #ifdef __mips__
> +        #define MICROPY_GCREGS_SETJMP (1)
> +    #else
> +        #define MICROPY_GCREGS_SETJMP (0)
> +    #endif
> +#endif
> +
> +#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF   (1)
> +#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE  (256)
> +#define MICROPY_KBD_EXCEPTION       (1)
> +#define MICROPY_ASYNC_KBD_INTR      (1)
> +
> +extern const struct _mp_obj_module_t mp_module_machine;
> +extern const struct _mp_obj_module_t mp_module_os;
> +extern const struct _mp_obj_module_t mp_module_uos_vfs;
> +extern const struct _mp_obj_module_t mp_module_uselect;
> +extern const struct _mp_obj_module_t mp_module_time;
> +extern const struct _mp_obj_module_t mp_module_termios;
> +extern const struct _mp_obj_module_t mp_module_socket;
> +extern const struct _mp_obj_module_t mp_module_ffi;
> +extern const struct _mp_obj_module_t mp_module_jni;
> +
> +#if MICROPY_PY_UOS_VFS
> +#define MICROPY_PY_UOS_VFS_DEF { MP_ROM_QSTR(MP_QSTR_uos_vfs), 
> MP_ROM_PTR(&mp_module_uos_vfs) },
> +#else
> +#define MICROPY_PY_UOS_VFS_DEF
> +#endif
> +#if MICROPY_PY_FFI
> +#define MICROPY_PY_FFI_DEF { MP_ROM_QSTR(MP_QSTR_ffi), 
> MP_ROM_PTR(&mp_module_ffi) },
> +#else
> +#define MICROPY_PY_FFI_DEF
> +#endif
> +#if MICROPY_PY_JNI
> +#define MICROPY_PY_JNI_DEF { MP_ROM_QSTR(MP_QSTR_jni), 
> MP_ROM_PTR(&mp_module_jni) },
> +#else
> +#define MICROPY_PY_JNI_DEF
> +#endif
> +#if MICROPY_PY_UTIME
> +#define MICROPY_PY_UTIME_DEF { MP_ROM_QSTR(MP_QSTR_utime), 
> MP_ROM_PTR(&mp_module_time) },
> +#else
> +#define MICROPY_PY_UTIME_DEF
> +#endif
> +#if MICROPY_PY_TERMIOS
> +#define MICROPY_PY_TERMIOS_DEF { MP_ROM_QSTR(MP_QSTR_termios), 
> MP_ROM_PTR(&mp_module_termios) },
> +#else
> +#define MICROPY_PY_TERMIOS_DEF
> +#endif
> +#if MICROPY_PY_SOCKET
> +#define MICROPY_PY_SOCKET_DEF { MP_ROM_QSTR(MP_QSTR_usocket), 
> MP_ROM_PTR(&mp_module_socket) },
> +#else
> +#define MICROPY_PY_SOCKET_DEF
> +#endif
> +#if MICROPY_PY_USELECT_POSIX
> +#define MICROPY_PY_USELECT_DEF { MP_ROM_QSTR(MP_QSTR_uselect), 
> MP_ROM_PTR(&mp_module_uselect) },
> +#else
> +#define MICROPY_PY_USELECT_DEF
> +#endif
> +
> +#define MICROPY_PORT_BUILTIN_MODULES \
> +    MICROPY_PY_FFI_DEF \
> +    MICROPY_PY_JNI_DEF \
> +    MICROPY_PY_UTIME_DEF \
> +    MICROPY_PY_SOCKET_DEF \
> +    { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&mp_module_machine) }, \
> +    { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_os) }, \
> +    MICROPY_PY_UOS_VFS_DEF \
> +    MICROPY_PY_USELECT_DEF \
> +    MICROPY_PY_TERMIOS_DEF \
> +
> +// type definitions for the specific machine
> +
> +// For size_t and ssize_t
> +#include <unistd.h>
> +
> +// assume that if we already defined the obj repr then we also defined types
> +#ifndef MICROPY_OBJ_REPR
> +#ifdef __LP64__
> +typedef long mp_int_t; // must be pointer size
> +typedef unsigned long mp_uint_t; // must be pointer size
> +#else
> +// These are definitions for machines where sizeof(int) == sizeof(void*),
> +// regardless of actual size.
> +typedef int mp_int_t; // must be pointer size
> +typedef unsigned int mp_uint_t; // must be pointer size
> +#endif
> +#endif
> +
> +// Cannot include <sys/types.h>, as it may lead to symbol name clashes
> +#if _FILE_OFFSET_BITS == 64 && !defined(__LP64__)
> +typedef long long mp_off_t;
> +#else
> +typedef long mp_off_t;
> +#endif
> +
> +void mp_unix_alloc_exec(size_t min_size, void** ptr, size_t *size);
> +void mp_unix_free_exec(void *ptr, size_t size);
> +void mp_unix_mark_exec(void);
> +#define MP_PLAT_ALLOC_EXEC(min_size, ptr, size) mp_unix_alloc_exec(min_size, 
> ptr, size)
> +#define MP_PLAT_FREE_EXEC(ptr, size) mp_unix_free_exec(ptr, size)
> +#ifndef MICROPY_FORCE_PLAT_ALLOC_EXEC
> +// Use MP_PLAT_ALLOC_EXEC for any executable memory allocation, including 
> for FFI
> +// (overriding libffi own implementation)
> +#define MICROPY_FORCE_PLAT_ALLOC_EXEC (1)
> +#endif
> +
> +#if MICROPY_PY_OS_DUPTERM
> +#define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len)
> +#else
> +#define MP_PLAT_PRINT_STRN(str, len) do { ssize_t ret = write(1, str, len); 
> (void)ret; } while (0)
> +#endif
> +
> +#ifdef __linux__
> +// Can access physical memory using /dev/mem
> +#define MICROPY_PLAT_DEV_MEM  (1)
> +#endif
> +
> +// Assume that select() call, interrupted with a signal, and erroring
> +// with EINTR, updates remaining timeout value.
> +#define MICROPY_SELECT_REMAINING_TIME (1)
> +
> +#ifdef __ANDROID__
> +#include <android/api-level.h>
> +#if __ANDROID_API__ < 4
> +// Bionic libc in Android 1.5 misses these 2 functions
> +#define MP_NEED_LOG2 (1)
> +#define nan(x) NAN
> +#endif
> +#endif
> +
> +#define MICROPY_PORT_BUILTINS \
> +    { MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_builtin_open_obj) },
> +
> +#define MP_STATE_PORT MP_STATE_VM
> +
> +#define MICROPY_PORT_ROOT_POINTERS \
> +    const char *readline_hist[50]; \
> +    void *mmap_region_head; \
> +
> +// We need to provide a declaration/definition of alloca()
> +// unless support for it is disabled.
> +#if !defined(MICROPY_NO_ALLOCA) || MICROPY_NO_ALLOCA == 0
> +#ifdef __FreeBSD__
> +#include <stdlib.h>
> +#else
> +#include <alloca.h>
> +#endif
> +#endif
> +
> +// From "man readdir": "Under glibc, programs can check for the availability
> +// of the fields [in struct dirent] not defined in POSIX.1 by testing whether
> +// the macros [...], _DIRENT_HAVE_D_TYPE are defined."
> +// Other libc's don't define it, but proactively assume that dirent->d_type
> +// is available on a modern *nix system.
> +#ifndef _DIRENT_HAVE_D_TYPE
> +#define _DIRENT_HAVE_D_TYPE (1)
> +#endif
> +// This macro is not provided by glibc but we need it so ports that don't 
> have
> +// dirent->d_ino can disable the use of this field.
> +#ifndef _DIRENT_HAVE_D_INO
> +#define _DIRENT_HAVE_D_INO (1)
> +#endif
> +
> +#ifndef __APPLE__
> +// For debugging purposes, make printf() available to any source file.
> +#include <stdio.h>
> +#endif
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.