added two new vm primitives - vm_getsigfd and vm_getsig - to support os signal handling more promptly

This commit is contained in:
hyunghwan.chung
2019-08-15 15:55:06 +00:00
parent 3253b8fe0a
commit f23a5bd22c
8 changed files with 128 additions and 113 deletions

View File

@ -1207,6 +1207,15 @@ typedef void (*moo_vmprim_sleep_t) (
const moo_ntime_t* duration
);
typedef moo_ooi_t (*moo_vmprim_getsigfd_t) (
moo_t* moo
);
typedef int (*moo_vmprim_getsig_t) (
moo_t* moo,
moo_uint8_t* sig
);
struct moo_vmprim_t
{
moo_alloc_heap_t alloc_heap;
@ -1231,11 +1240,13 @@ struct moo_vmprim_t
moo_vmprim_muxmod_t vm_muxmod;
moo_vmprim_muxwait_t vm_muxwait;
moo_vmprim_sleep_t vm_sleep;
moo_vmprim_getsigfd_t vm_getsigfd;
moo_vmprim_getsig_t vm_getsig;
};
typedef struct moo_vmprim_t moo_vmprim_t;
/* =========================================================================
* CALLBACK MANIPULATION
* ========================================================================= */
@ -1597,16 +1608,9 @@ struct moo_t
moo_oop_semaphore_t sem_gcfin;
int sem_gcfin_sigreq;
moo_oop_semaphore_t sem_intr;
int intr_queue[256]; /* TODO: make it dynamic? */
int intr_qstart;
int intr_qend;
moo_oop_t* volat_stack[256]; /* stack for temporaries */
moo_oow_t volat_count;
moo_oop_t* proc_map;
moo_oow_t proc_map_capa;
moo_ooi_t proc_map_free_first;
@ -2140,11 +2144,6 @@ MOO_EXPORT void moo_abort (
moo_t* moo
);
MOO_EXPORT void moo_reportintr (
moo_t* moo,
int intrno
);
#if defined(MOO_HAVE_INLINE)
static MOO_INLINE void moo_switchprocess(moo_t* moo) { moo->switch_proc = 1; }
#else