qcacmn: Add workqueue APIs in QDF

Add qdf workqueue APIs for schedule_delayed_work, cancel_work_sync,
cancel_delayed_work_sync and flush_delayed_work

Change-Id: Idb4de3c30c9c8cfdeb9af5b92f40a6e3dc954a6d
CRs-Fixed: 1009560
This commit is contained in:
Yuanyuan Liu
2016-06-06 14:59:23 -07:00
committed by Nandini Suresh
parent 6452198406
commit 26476b51eb
2 changed files with 149 additions and 1 deletions

View File

@@ -203,10 +203,64 @@ static inline void qdf_sched_work(qdf_handle_t hdl, qdf_work_t *work)
__qdf_sched_work(hdl, work);
}
/**
* qdf_sched_delayed_work() - Schedule a delayed task
* @hdl: OS handle
* @work: pointer to delayed work
* @delay: delay interval
* Return: none
*/
static inline void qdf_sched_delayed_work(qdf_handle_t hdl,
qdf_delayed_work_t *work,
uint32_t delay)
{
__qdf_sched_delayed_work(hdl, work, delay);
}
/**
* qdf_cancel_work() - Cancel a work
* @hdl: OS handle
* @work: pointer to work
*
* Cancel work and wait for its execution to finish.
* This function can be used even if the work re-queues
* itself or migrates to another workqueue. On return
* from this function, work is guaranteed to be not
* pending or executing on any CPU. The caller must
* ensure that the workqueue on which work was last
* queued can't be destroyed before this function returns.
*
* Return: true if work was pending, false otherwise
*/
static inline bool qdf_cancel_work(qdf_handle_t hdl,
qdf_work_t *work)
{
return __qdf_cancel_work(hdl, work);
}
/**
* qdf_cancel_delayed_work() - Cancel a delayed work
* @hdl: OS handle
* @work: pointer to delayed work
*
* This is qdf_cancel_work for delayed works.
*
* Return: true if work was pending, false otherwise
*/
static inline bool qdf_cancel_delayed_work(qdf_handle_t hdl,
qdf_delayed_work_t *work)
{
return __qdf_cancel_delayed_work(hdl, work);
}
/**
* qdf_flush_work - Flush a deferred task on non-interrupt context
* @hdl: OS handle
* @work: pointer to work
*
* Wait until work has finished execution. work is guaranteed to be
* idle on return if it hasn't been requeued since flush started.
*
* Return: none
*/
static inline void qdf_flush_work(qdf_handle_t hdl, qdf_work_t *work)
@@ -214,6 +268,21 @@ static inline void qdf_flush_work(qdf_handle_t hdl, qdf_work_t *work)
__qdf_flush_work(hdl, work);
}
/**
* qdf_flush_delayed_work() - Flush a delayed work
* @hdl: OS handle
* @work: pointer to delayed work
*
* This is qdf_flush_work for delayed works.
*
* Return: none
*/
static inline void qdf_flush_delayed_work(qdf_handle_t hdl,
qdf_delayed_work_t *work)
{
__qdf_flush_delayed_work(hdl, work);
}
/**
* qdf_disable_work - disable the deferred task (synchronous)
* @hdl: OS handle
@@ -225,7 +294,6 @@ static inline uint32_t qdf_disable_work(qdf_handle_t hdl, qdf_work_t *work)
return __qdf_disable_work(hdl, work);
}
/**
* qdf_destroy_work - destroy the deferred task (synchronous)
* @hdl: OS handle