The "app thread" will always be the first thread created using spdk_thread_create(). There are many operations throughout SPDK that implicitly expect to happen in the context of this app thread, so by formalizing it we can start to make assertions on this to help clarify and simplify locking and synchronization through the code base. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I7133b58c311710f1d132ee5f09500ffeb4168b15 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15497 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
80 lines
2.0 KiB
Plaintext
80 lines
2.0 KiB
Plaintext
{
|
|
global:
|
|
|
|
# public functions in spdk/thread.h
|
|
spdk_thread_lib_init;
|
|
spdk_thread_lib_init_ext;
|
|
spdk_thread_lib_fini;
|
|
spdk_thread_create;
|
|
spdk_thread_get_app_thread;
|
|
spdk_set_thread;
|
|
spdk_thread_exit;
|
|
spdk_thread_is_exited;
|
|
spdk_thread_destroy;
|
|
spdk_thread_get_ctx;
|
|
spdk_thread_get_cpumask;
|
|
spdk_thread_set_cpumask;
|
|
spdk_thread_get_from_ctx;
|
|
spdk_thread_poll;
|
|
spdk_thread_next_poller_expiration;
|
|
spdk_thread_has_active_pollers;
|
|
spdk_thread_has_pollers;
|
|
spdk_thread_is_idle;
|
|
spdk_thread_get_count;
|
|
spdk_get_thread;
|
|
spdk_thread_get_name;
|
|
spdk_thread_get_id;
|
|
spdk_thread_get_by_id;
|
|
spdk_thread_get_stats;
|
|
spdk_thread_get_last_tsc;
|
|
spdk_thread_send_msg;
|
|
spdk_thread_send_critical_msg;
|
|
spdk_for_each_thread;
|
|
spdk_thread_set_interrupt_mode;
|
|
spdk_poller_register;
|
|
spdk_poller_register_named;
|
|
spdk_poller_unregister;
|
|
spdk_poller_pause;
|
|
spdk_poller_resume;
|
|
spdk_poller_register_interrupt;
|
|
spdk_io_device_register;
|
|
spdk_io_device_unregister;
|
|
spdk_get_io_channel;
|
|
spdk_put_io_channel;
|
|
spdk_io_channel_get_ctx;
|
|
spdk_io_channel_from_ctx;
|
|
spdk_io_channel_get_thread;
|
|
spdk_io_channel_get_io_device;
|
|
spdk_for_each_channel;
|
|
spdk_io_channel_iter_get_io_device;
|
|
spdk_io_channel_iter_get_channel;
|
|
spdk_io_channel_iter_get_ctx;
|
|
spdk_for_each_channel_continue;
|
|
spdk_interrupt_register;
|
|
spdk_interrupt_unregister;
|
|
spdk_interrupt_set_event_types;
|
|
spdk_thread_get_interrupt_fd;
|
|
spdk_interrupt_mode_enable;
|
|
spdk_interrupt_mode_is_enabled;
|
|
|
|
# internal functions in spdk_internal/thread.h
|
|
spdk_poller_get_name;
|
|
spdk_poller_get_id;
|
|
spdk_poller_get_state_str;
|
|
spdk_poller_get_period_ticks;
|
|
spdk_poller_get_stats;
|
|
spdk_io_channel_get_io_device_name;
|
|
spdk_io_channel_get_ref_count;
|
|
spdk_io_device_get_name;
|
|
spdk_thread_get_first_active_poller;
|
|
spdk_thread_get_next_active_poller;
|
|
spdk_thread_get_first_timed_poller;
|
|
spdk_thread_get_next_timed_poller;
|
|
spdk_thread_get_first_paused_poller;
|
|
spdk_thread_get_next_paused_poller;
|
|
spdk_thread_get_first_io_channel;
|
|
spdk_thread_get_next_io_channel;
|
|
|
|
local: *;
|
|
};
|