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: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-on: https://review.gerrithub.io/365079 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
73c9bd296a
commit
c013322dc6
@ -78,6 +78,8 @@ void spdk_free_thread(void);
|
|||||||
/**
|
/**
|
||||||
* \brief Get a handle to the current thread. This handle may be passed
|
* \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().
|
* 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);
|
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);
|
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
|
* \brief Call 'fn' on each channel associated with io_device. This happens
|
||||||
* asynchronously, so fn may be called after spdk_for_each_channel returns.
|
* asynchronously, so fn may be called after spdk_for_each_channel returns.
|
||||||
|
@ -296,6 +296,12 @@ spdk_io_channel_get_ctx(struct spdk_io_channel *ch)
|
|||||||
return (uint8_t *)ch + sizeof(*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 {
|
struct call_channel {
|
||||||
void *io_device;
|
void *io_device;
|
||||||
spdk_channel_msg fn;
|
spdk_channel_msg fn;
|
||||||
|
Loading…
Reference in New Issue
Block a user