User-mode work queue logic should not disable interrupts

This commit is contained in:
Gregory Nutt
2014-10-10 14:52:04 -06:00
parent 16a3e83258
commit cf59a195ba
14 changed files with 654 additions and 101 deletions
+2 -34
View File
@@ -339,25 +339,6 @@ extern "C"
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: work_process
*
* Description:
* This is the logic that performs actions placed on any work list. This
* logic is the common underlying logic to all work queues. This logic is
* part of the internal implementation of each work queue; it should not
* be called from application level logic.
*
* Input parameters:
* wqueue - Describes the work queue to be processed
*
* Returned Value:
* None
*
****************************************************************************/
void work_process(FAR struct wqueue_s *wqueue);
/****************************************************************************
* Name: work_usrstart
*
@@ -378,7 +359,7 @@ int work_usrstart(void);
#endif
/****************************************************************************
* Name: work_queue and work_qqueue
* Name: work_queue
*
* Description:
* Queue work to be performed at a later time. All queued work will be
@@ -391,11 +372,6 @@ int work_usrstart(void);
* from the queue, or (2) work_cancel() has been called to cancel the work
* and remove it from the work queue.
*
* work_queue() is the application interface. It simply maps the qid to
* the correct work queue and calls work_qqueue().
* work_qqueue() is the common cancellation logic that operates on the
* particular work queue selected by work_queue().
*
* Input parameters:
* qid - The work queue ID
* work - The work structure to queue
@@ -413,22 +389,15 @@ int work_usrstart(void);
int work_queue(int qid, FAR struct work_s *work, worker_t worker,
FAR void *arg, uint32_t delay);
int work_qqueue(FAR struct wqueue_s *wqueue, FAR struct work_s *work,
worker_t worker, FAR void *arg, uint32_t delay);
/****************************************************************************
* Name: work_cancel and work_qcancel;
* Name: work_cancel
*
* Description:
* Cancel previously queued work. This removes work from the work queue.
* After work has been cancelled, it may be re-queue by calling work_queue()
* again.
*
* work_cancel() is the application interface. It simply maps the qid to
* the correct work queue and calls work_qcancel().
* work_qcancel() is the common cancellation logic that operates on the
* particular work queue selected by work_cancel().
*
* Input parameters:
* qid - The work queue ID
* work - The previously queue work structure to cancel
@@ -441,7 +410,6 @@ int work_qqueue(FAR struct wqueue_s *wqueue, FAR struct work_s *work,
*
****************************************************************************/
int work_qcancel(FAR struct wqueue_s *wqueue, FAR struct work_s *work);
int work_cancel(int qid, FAR struct work_s *work);
/****************************************************************************