{
	global:

	# public functions in spdk/thread.h
	spdk_thread_lib_init;
	spdk_thread_lib_init_ext;
	spdk_thread_lib_fini;
	spdk_thread_create;
	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: *;
};
