# hdf\_workqueue.h ## **Overview** **Related Modules:** [DriverUtils](DriverUtils.md) **Description:** Declares work queue structures and interfaces. This file provides interfaces such as initializing a work queue, a work item, and a delayed work item, adding a work or delayed work item to a work queue, and destroying a work queue, a work item, and a delayed work item. You need to define a work queue, a work item, and a delayed work item, and then call the initialization function to initialize them. The work item, delayed work item, and work queue must be destroyed when they are no longer used. **Since:** 1.0 **Version:** 1.0 ## **Summary** ## Data Structures

Data Structure Name

Description

HdfWork

Describes a work item and a delayed work item. This structure defines the work and delayed work items, and then calls the initialization function HdfWorkInit or HdfDelayedWorkInit to perform initialization. The HdfAddWork() function is to add a work item to a work queue immediately, and the HdfAddDelayedWork() function is to add a work item to a work queue after the configured delayed time.

HdfWorkQueue

Describes a work queue.

## Typedefs

Typedef Name

Description

HdfWorkFunc) (void *)

typedef void(* 

Describes a work execution function type.

## Enumerations

Enumeration Name

Description

{ HDF_WORK_BUSY_PENDING = 1 << 0, HDF_WORK_BUSY_RUNNING = 1 << 1 }

Enumerates statuses of a work item or a delayed work item.

## Functions

Function Name

Description

HdfWorkQueueInit (HdfWorkQueue *queue, char *name)

int32_t 

Initializes a work queue.

HdfWorkInit (HdfWork *work, HdfWorkFunc func, void *arg)

int32_t 

Initializes a work item.

HdfDelayedWorkInit (HdfWork *work, HdfWorkFunc func, void *arg)

int32_t 

Initializes a delayed work item.

HdfWorkDestroy (HdfWork *work)

void 

Destroys a work item.

HdfWorkQueueDestroy (HdfWorkQueue *queue)

void 

Destroys a work queue.

HdfDelayedWorkDestroy (HdfWork *work)

void 

Destroys a delayed work item.

HdfAddWork (HdfWorkQueue *queue, HdfWork *work)

bool 

Adds a work item to a work queue.

HdfAddDelayedWork (HdfWorkQueue *queue, HdfWork *work, unsigned long ms)

bool 

Adds a delayed work item to a work queue.

HdfWorkBusy (HdfWork *work)

unsigned int 

Obtains the status of a work item or delayed work item.

HdfCancelWorkSync (HdfWork *work)

bool 

Cancels a work item. This function waits until the work item is complete.

HdfCancelDelayedWorkSync (HdfWork *work)

bool 

Cancels a delayed work item.