py/nativeglue: Add funcs/types to native glue table for dynamic runtime.
These allow discovery of symbols by native code that is loaded dynamically.
This commit is contained in:
parent
360d972c16
commit
3690f79afc
@ -24,6 +24,7 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -31,6 +32,7 @@
|
|||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "py/smallint.h"
|
#include "py/smallint.h"
|
||||||
#include "py/nativeglue.h"
|
#include "py/nativeglue.h"
|
||||||
|
#include "py/gc.h"
|
||||||
|
|
||||||
#if MICROPY_DEBUG_VERBOSE // print debugging info
|
#if MICROPY_DEBUG_VERBOSE // print debugging info
|
||||||
#define DEBUG_printf DEBUG_printf
|
#define DEBUG_printf DEBUG_printf
|
||||||
@ -269,6 +271,33 @@ const mp_fun_table_t mp_fun_table = {
|
|||||||
#else
|
#else
|
||||||
NULL,
|
NULL,
|
||||||
#endif
|
#endif
|
||||||
|
// Additional entries for dynamic runtime, starts at index 50
|
||||||
|
memset,
|
||||||
|
memmove,
|
||||||
|
gc_realloc,
|
||||||
|
mp_printf,
|
||||||
|
mp_vprintf,
|
||||||
|
mp_raise_msg,
|
||||||
|
mp_obj_get_type,
|
||||||
|
mp_obj_new_str,
|
||||||
|
mp_obj_new_bytes,
|
||||||
|
mp_obj_new_bytearray_by_ref,
|
||||||
|
mp_get_buffer_raise,
|
||||||
|
mp_get_stream_raise,
|
||||||
|
&mp_plat_print,
|
||||||
|
&mp_type_type,
|
||||||
|
&mp_type_str,
|
||||||
|
&mp_type_list,
|
||||||
|
&mp_type_dict,
|
||||||
|
&mp_type_fun_builtin_0,
|
||||||
|
&mp_type_fun_builtin_1,
|
||||||
|
&mp_type_fun_builtin_2,
|
||||||
|
&mp_type_fun_builtin_3,
|
||||||
|
&mp_type_fun_builtin_var,
|
||||||
|
&mp_stream_read_obj,
|
||||||
|
&mp_stream_readinto_obj,
|
||||||
|
&mp_stream_unbuffered_readline_obj,
|
||||||
|
&mp_stream_write_obj,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MICROPY_EMIT_NATIVE
|
#endif // MICROPY_EMIT_NATIVE
|
||||||
|
@ -26,8 +26,10 @@
|
|||||||
#ifndef MICROPY_INCLUDED_PY_NATIVEGLUE_H
|
#ifndef MICROPY_INCLUDED_PY_NATIVEGLUE_H
|
||||||
#define MICROPY_INCLUDED_PY_NATIVEGLUE_H
|
#define MICROPY_INCLUDED_PY_NATIVEGLUE_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
#include "py/persistentcode.h"
|
#include "py/persistentcode.h"
|
||||||
|
#include "py/stream.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MP_F_CONST_NONE_OBJ = 0,
|
MP_F_CONST_NONE_OBJ = 0,
|
||||||
@ -134,6 +136,36 @@ typedef struct _mp_fun_table_t {
|
|||||||
mp_int_t (*small_int_modulo)(mp_int_t dividend, mp_int_t divisor);
|
mp_int_t (*small_int_modulo)(mp_int_t dividend, mp_int_t divisor);
|
||||||
bool (*yield_from)(mp_obj_t gen, mp_obj_t send_value, mp_obj_t *ret_value);
|
bool (*yield_from)(mp_obj_t gen, mp_obj_t send_value, mp_obj_t *ret_value);
|
||||||
void *setjmp;
|
void *setjmp;
|
||||||
|
// Additional entries for dynamic runtime, starts at index 50
|
||||||
|
void *(*memset_)(void *s, int c, size_t n);
|
||||||
|
void *(*memmove_)(void *dest, const void *src, size_t n);
|
||||||
|
void *(*realloc_)(void *ptr, size_t n_bytes, bool allow_move);
|
||||||
|
int (*printf_)(const mp_print_t *print, const char *fmt, ...);
|
||||||
|
int (*vprintf_)(const mp_print_t *print, const char *fmt, va_list args);
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
NORETURN // Only certain compilers support no-return attributes in function pointer declarations
|
||||||
|
#endif
|
||||||
|
void (*raise_msg)(const mp_obj_type_t *exc_type, const char *msg);
|
||||||
|
mp_obj_type_t *(*obj_get_type)(mp_const_obj_t o_in);
|
||||||
|
mp_obj_t (*obj_new_str)(const char* data, size_t len);
|
||||||
|
mp_obj_t (*obj_new_bytes)(const byte* data, size_t len);
|
||||||
|
mp_obj_t (*obj_new_bytearray_by_ref)(size_t n, void *items);
|
||||||
|
void (*get_buffer_raise)(mp_obj_t obj, mp_buffer_info_t *bufinfo, mp_uint_t flags);
|
||||||
|
const mp_stream_p_t *(*get_stream_raise)(mp_obj_t self_in, int flags);
|
||||||
|
const mp_print_t *plat_print;
|
||||||
|
const mp_obj_type_t *type_type;
|
||||||
|
const mp_obj_type_t *type_str;
|
||||||
|
const mp_obj_type_t *type_list;
|
||||||
|
const mp_obj_type_t *type_dict;
|
||||||
|
const mp_obj_type_t *type_fun_builtin_0;
|
||||||
|
const mp_obj_type_t *type_fun_builtin_1;
|
||||||
|
const mp_obj_type_t *type_fun_builtin_2;
|
||||||
|
const mp_obj_type_t *type_fun_builtin_3;
|
||||||
|
const mp_obj_type_t *type_fun_builtin_var;
|
||||||
|
const mp_obj_fun_builtin_var_t *stream_read_obj;
|
||||||
|
const mp_obj_fun_builtin_var_t *stream_readinto_obj;
|
||||||
|
const mp_obj_fun_builtin_var_t *stream_unbuffered_readline_obj;
|
||||||
|
const mp_obj_fun_builtin_var_t *stream_write_obj;
|
||||||
} mp_fun_table_t;
|
} mp_fun_table_t;
|
||||||
|
|
||||||
extern const mp_fun_table_t mp_fun_table;
|
extern const mp_fun_table_t mp_fun_table;
|
||||||
|
Loading…
Reference in New Issue
Block a user