diff --git a/tokio/docs/ffi.md b/tokio/docs/ffi.md new file mode 100644 index 000000000..7fecebb30 --- /dev/null +++ b/tokio/docs/ffi.md @@ -0,0 +1,2 @@ +# Tokio FFI + diff --git a/tokio/ffi/task.h b/tokio/ffi/task.h new file mode 100644 index 000000000..1c374527b --- /dev/null +++ b/tokio/ffi/task.h @@ -0,0 +1,10 @@ +struct Context { + void (*wake) (void*); + +}; + +struct Task { + void* data; + void* (*poll) (void*); +}; + diff --git a/tokio/ffi/tokio.h b/tokio/ffi/tokio.h new file mode 100644 index 000000000..defbac42f --- /dev/null +++ b/tokio/ffi/tokio.h @@ -0,0 +1,51 @@ +#include + +struct RuntimeUnstableOptions { + // unstable + bool enable_metrics_poll_count_histogram; + // unstable + size_t metrics_poll_count_histogram_buckets; + // unstable + struct timespec metrics_poll_count_histogram_resolution; + + // unstable + uint8_t unhandled_panic; +}; + +struct RuntimeHooks { + void (*on_thread_park) (void); + void (*on_thread_unpark) (void); + void (*on_thread_start) (void); + void (*on_thread_stop) (void); +}; + +struct RuntimeOptions { + // unstable + bool disable_lifo_slot; + + bool enable_time; + bool enable_io; + + uint32_t event_interval; + uint32_t global_queue_interval; + + size_t max_blocking_threads; + + size_t max_io_events_per_tick; + + uint8_t runtime_kind; + + // todo rng_seed + + bool start_paused; + + struct timespec thread_keep_alive; + + char* thread_name; + char* (*thread_name_fn) (void); + size_t thread_stack_size; + + size_t worker_threads; +}; + +struct Runtime; \ No newline at end of file