OpenDNSSEC-signer  1.4.8.2
Data Structures | Macros | Typedefs | Functions
fifoq.h File Reference
#include "config.h"
#include "daemon/worker.h"
#include "shared/allocator.h"
#include "shared/locks.h"
#include "shared/status.h"
#include <stdio.h>
#include <time.h>
#include <ldns/ldns.h>
Include dependency graph for fifoq.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  fifoq_struct
 

Macros

#define FIFOQ_MAX_COUNT   1000
 
#define FIFOQ_TRIES_COUNT   10
 

Typedefs

typedef struct fifoq_struct fifoq_type
 

Functions

fifoq_typefifoq_create (allocator_type *allocator)
 
void fifoq_wipe (fifoq_type *q)
 
void * fifoq_pop (fifoq_type *q, worker_type **worker)
 
ods_status fifoq_push (fifoq_type *q, void *item, worker_type *worker, int *tries)
 
void fifoq_cleanup (fifoq_type *q)
 

Macro Definition Documentation

#define FIFOQ_MAX_COUNT   1000

FIFO Queue.

Definition at line 53 of file fifoq.h.

Referenced by fifoq_pop(), fifoq_push(), and fifoq_wipe().

#define FIFOQ_TRIES_COUNT   10

Definition at line 54 of file fifoq.h.

Referenced by fifoq_push().

Typedef Documentation

typedef struct fifoq_struct fifoq_type

FIFO Queue.

Definition at line 59 of file fifoq.h.

Function Documentation

void fifoq_cleanup ( fifoq_type q)

Clean up queue.

Parameters
[in]qqueue to be cleaned up

Clean up queue.

Definition at line 156 of file fifoq.c.

References fifoq_struct::allocator, allocator_deallocate(), lock_basic_destroy, lock_basic_off, fifoq_struct::q_lock, fifoq_struct::q_nonfull, and fifoq_struct::q_threshold.

Referenced by engine_cleanup().

fifoq_type* fifoq_create ( allocator_type allocator)

Create new FIFO queue.

Parameters
[in]allocatormemory allocator
Returns
fifoq_type* created queue

Create new FIFO queue.

Definition at line 46 of file fifoq.c.

References fifoq_struct::allocator, allocator_alloc(), fifoq_wipe(), lock_basic_init, lock_basic_set, ods_log_error(), fifoq_struct::q_lock, fifoq_struct::q_nonfull, and fifoq_struct::q_threshold.

void* fifoq_pop ( fifoq_type q,
worker_type **  worker 
)

Pop item from queue.

Parameters
[in]qqueue
[out]workerworker that owns the item
Returns
void* popped item

Pop item from queue.

Notify waiting workers that they can start queuing again If no workers are waiting, this call has no effect.

Definition at line 89 of file fifoq.c.

References fifoq_struct::blob, fifoq_struct::count, FIFOQ_MAX_COUNT, lock_basic_broadcast, fifoq_struct::owner, and fifoq_struct::q_nonfull.

ods_status fifoq_push ( fifoq_type q,
void *  item,
worker_type worker,
int *  tries 
)

Push item to queue.

Parameters
[in]qqueue
[in]itemitem
[in]workerowner of item
[out]triesnumber of tries
Returns
ods_status status

Push item to queue.

#262: If drudgers remain on hold, do additional broadcast. If no drudgers are waiting, this call has no effect.

Definition at line 119 of file fifoq.c.

References fifoq_struct::blob, fifoq_struct::count, FIFOQ_MAX_COUNT, FIFOQ_TRIES_COUNT, lock_basic_broadcast, ods_log_debug(), ods_log_deeebug(), ODS_STATUS_ASSERT_ERR, ODS_STATUS_OK, ODS_STATUS_UNCHANGED, fifoq_struct::owner, and fifoq_struct::q_threshold.

void fifoq_wipe ( fifoq_type q)

Wipe queue.

Parameters
[in]qqueue to be wiped

Wipe queue.

Definition at line 72 of file fifoq.c.

References fifoq_struct::blob, fifoq_struct::count, FIFOQ_MAX_COUNT, and fifoq_struct::owner.

Referenced by fifoq_create().