Commit 910843e8 authored by Paul Sokolovsky's avatar Paul Sokolovsky
Browse files

Allow ports to define statically builtin functions.

Convert unix open() to such.
parent 70d7a83c
...@@ -107,6 +107,10 @@ typedef long long mp_longint_impl_t; ...@@ -107,6 +107,10 @@ typedef long long mp_longint_impl_t;
#define MICROPY_PATH_MAX (512) #define MICROPY_PATH_MAX (512)
#endif #endif
// Additional builtin function definitions - see runtime.c:builtin_table for format.
#ifndef MICROPY_EXTRA_BUILTINS
#define MICROPY_EXTRA_BUILTINS
#endif
/*****************************************************************************/ /*****************************************************************************/
/* Miscellaneous settings */ /* Miscellaneous settings */
......
...@@ -144,6 +144,9 @@ STATIC const mp_builtin_elem_t builtin_table[] = { ...@@ -144,6 +144,9 @@ STATIC const mp_builtin_elem_t builtin_table[] = {
{ MP_QSTR_str, (mp_obj_t)&mp_builtin_str_obj }, { MP_QSTR_str, (mp_obj_t)&mp_builtin_str_obj },
{ MP_QSTR_bytearray, (mp_obj_t)&mp_builtin_bytearray_obj }, { MP_QSTR_bytearray, (mp_obj_t)&mp_builtin_bytearray_obj },
// Extra builtins as defined by a port
MICROPY_EXTRA_BUILTINS
{ MP_QSTR_, MP_OBJ_NULL }, // end of list sentinel { MP_QSTR_, MP_OBJ_NULL }, // end of list sentinel
}; };
......
...@@ -136,8 +136,6 @@ mp_obj_t mp_builtin_open(uint n_args, const mp_obj_t *args) { ...@@ -136,8 +136,6 @@ mp_obj_t mp_builtin_open(uint n_args, const mp_obj_t *args) {
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_builtin_open_obj, 1, 2, mp_builtin_open); MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_builtin_open_obj, 1, 2, mp_builtin_open);
void file_init() { void file_init() {
rt_store_name(MP_QSTR_open, (mp_obj_t)&mp_builtin_open_obj);
mp_obj_t m_sys = mp_obj_new_module(MP_QSTR_sys); mp_obj_t m_sys = mp_obj_new_module(MP_QSTR_sys);
rt_store_attr(m_sys, MP_QSTR_stdin, fdfile_new(STDIN_FILENO)); rt_store_attr(m_sys, MP_QSTR_stdin, fdfile_new(STDIN_FILENO));
rt_store_attr(m_sys, MP_QSTR_stdout, fdfile_new(STDOUT_FILENO)); rt_store_attr(m_sys, MP_QSTR_stdout, fdfile_new(STDOUT_FILENO));
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
// Stack top at the start of program // Stack top at the start of program
void *stack_top; void *stack_top;
extern const mp_obj_fun_native_t mp_builtin_open_obj;
void file_init(); void file_init();
void microsocket_init(); void microsocket_init();
void time_init(); void time_init();
......
...@@ -36,3 +36,8 @@ typedef const void *machine_const_ptr_t; // must be of pointer size ...@@ -36,3 +36,8 @@ typedef const void *machine_const_ptr_t; // must be of pointer size
typedef double machine_float_t; typedef double machine_float_t;
machine_float_t machine_sqrt(machine_float_t x); machine_float_t machine_sqrt(machine_float_t x);
struct _mp_obj_fun_native_t;
extern const struct _mp_obj_fun_native_t mp_builtin_open_obj;
#define MICROPY_EXTRA_BUILTINS \
{ MP_QSTR_open, (mp_obj_t)&mp_builtin_open_obj },
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment