Commit c013322d authored by Daniel Verkamp's avatar Daniel Verkamp Committed by Jim Harris
Browse files

io_channel: add helper to get an I/O channel's thread



This is faster than spdk_get_thread(), which iterates over all of the
threads under a lock until it finds the current one.

Change-Id: I957a68438efb5b7d632d2b9b1b567fed7714e02a
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/365079


Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 73c9bd29
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -78,6 +78,8 @@ void spdk_free_thread(void);
/**
 * \brief Get a handle to the current thread. This handle may be passed
 * to other threads and used as the target of spdk_thread_send_msg().
 *
 * \sa spdk_io_channel_get_thread()
 */
struct spdk_thread *spdk_get_thread(void);

@@ -140,6 +142,11 @@ void spdk_put_io_channel(struct spdk_io_channel *ch);
 */
void *spdk_io_channel_get_ctx(struct spdk_io_channel *ch);

/**
 * \brief Returns the spdk_thread associated with an I/O channel.
 */
struct spdk_thread *spdk_io_channel_get_thread(struct spdk_io_channel *ch);

/**
 * \brief Call 'fn' on each channel associated with io_device. This happens
 * asynchronously, so fn may be called after spdk_for_each_channel returns.
+6 −0
Original line number Diff line number Diff line
@@ -296,6 +296,12 @@ spdk_io_channel_get_ctx(struct spdk_io_channel *ch)
	return (uint8_t *)ch + sizeof(*ch);
}

struct spdk_thread *
spdk_io_channel_get_thread(struct spdk_io_channel *ch)
{
	return ch->thread;
}

struct call_channel {
	void *io_device;
	spdk_channel_msg fn;