GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> PBS / V2-12-1 > pbs / rhel6-32
#include <PBS/PL_comdefs.h>
Defines | |
#define | PL_K_ALL ((PL_list)(0xffffffff)) |
Specifies the list of all available ques. | |
#define | PL_LIST(_que_id) ((unsigned int)0x80000000 >> (_que_id)) |
Translates a que id into the equivalant que list. | |
#define | PL_NLIST(_nques) ((signed int)0x80000000 >> ((_nques) - 1)) |
Creates a list of corresponding to _nques. | |
#define | PL_FIND(_pl_list) FFSL(_pl_list) |
Finds the next highest available que in the list. | |
#define | PL_ADD(_pl_list, _que_id) ((_pl_list) | PL_LIST(_que_id)) |
Adds the specified que to the specified que list. | |
#define | PL_ELIMINATE(_pl_list, _que_id) ((_pl_list) & ~PL_LIST(_que_id)) |
Eliminates the specified que from the specified que list. | |
Functions | |
int | PL_init (PL_ctl *pl, PL_type type, int nques) |
Initializes the list head of a doubly linked list to an empty list of the specified type. | |
int | PL_destroy (PL_ctl *pl) |
Destroys the data structures associate with a PL. | |
PL_list | PL_wake (PL_ctl *pl, PL_list wake_list) |
Issues a wake up call to the PL ques if any of ques in the wakeup list are currently active. | |
PL_que * | PL_que_get (PL_ctl *pl, int que_id) |
Locates a pointer to the que specified by que_id. | |
PL_node * | PL_insert (PL_que *que, PL_node *node) |
Adds a node to the tail of a PL managed que. | |
PL_node * | PL_jam (PL_que *que, PL_node *node) |
Adds a node to the head of a PL managed que. | |
PL_node * | PL_remove (PL_ctl *pl, volatile const PL_list *wait_list, int *que_id) |
Removes a node from the head of the highest priority non-empty que. If all eligible queues are empty, then PL_remove returns NULL immediately without blocking. | |
PL_node * | PL_removeW (PL_ctl *pl, volatile const PL_list *wait_list, int *que_id) |
Removes a node from the head of the highest priority non-empty que. If all eligible queues are empty, then PL_removeW waits indefinitely. | |
PL_node * | PL_removeW_toc (PL_ctl *pl, volatile const PL_list *wait_list, int *que_id, const TOC *toc) |
Removes a node from the head of the highest priority non-empty que. If all eligible queues are empty, then PL_removeW_toc waits the specified until the timeout expires. | |
PL_list | PL_get (PL_ctl *pl) |
Returns a list of the currently active ques. | |
PL_list | PL_getW (PL_ctl *pl, volatile const PL_list *wait_list) |
Returns a list of the currently active ques which, at the time of the call, is guaranteed to include at least one member of the wait list. The routine blocks indefinitely until this condition is met. | |
PL_list | PL_getW_toc (PL_ctl *pl, volatile const PL_list *wait_list, const TOC *toc) |
Returns a list of the currently active ques which, at the time of the call, is guaranteed to include at least one member of the wait list. The routine blocks until this condition is met or the timeout expires. |
CVS $Id: PL_protos.h,v 1.4 2011/03/24 23:05:42 apw Exp $
#define PL_ADD | ( | _pl_list, | |||
_que_id | ) | ((_pl_list) | PL_LIST(_que_id)) |
Adds the specified que to the specified que list.
_pl_list | The target que list | |
_que_id | The id of the que to add |
The | que list with the specified que id added |
Referenced by PL__insert(), and PL__jam().
#define PL_ELIMINATE | ( | _pl_list, | |||
_que_id | ) | ((_pl_list) & ~PL_LIST(_que_id)) |
Eliminates the specified que from the specified que list.
_pl_list | The target que list | |
_que_id | The que id to eliminate |
The | que list with the specified que eliminated |
Referenced by pl__remove().
#define PL_FIND | ( | _pl_list | ) | FFSL(_pl_list) |
Finds the next highest available que in the list.
_pl_list | The que list to scan |
Referenced by pl__remove().
#define PL_K_ALL ((PL_list)(0xffffffff)) |
Specifies the list of all available ques.
This specifies the list of all available ques and is typically used as the wait list parameter in the removal routines.
#define PL_LIST | ( | _que_id | ) | ((unsigned int)0x80000000 >> (_que_id)) |
Translates a que id into the equivalant que list.
_que_id | The que id to calculate the equivalent que list for |
list_of_only_que_3 = PL_LIST (3);
This would return the value 0x1000000
, i.e. a list with the 3rd most significant bit set (counting MSB = 0).
Referenced by FORK_qdisable(), FORK_qenable(), and FORK_qenabled().
#define PL_NLIST | ( | _nques | ) | ((signed int)0x80000000 >> ((_nques) - 1)) |
Creates a list of corresponding to _nques.
_nques | The number of ques, this must be a number between 1 and 32. |
mask_of_all_ques = PL_NLIST (6);
This would return the value 0xFC000000
, i.e. a list with the 6 most significant bits set.
Referenced by PL_init().
void PL_destroy | ( | PL_ctl * | pl | ) |
Destroys the data structures associate with a PL.
pl | Pointer to the PL to destroy. |
References _PL_ctl::rw, and RW_destroy().
Referenced by FORK_destroy().
Returns a list of the currently active ques.
pl | A previously initialized PL control structure. |
Returns a list of the currently active ques which, at the time of the call, is guaranteed to include at least one member of the wait list. The routine blocks indefinitely until this condition is met.
pl | A previously initialized PL control structure. | |
wait_list | A pointer to the list of the ques to wait on. The wait is treated as an OR. |
Returns a list of the currently active ques which, at the time of the call, is guaranteed to include at least one member of the wait list. The routine blocks until this condition is met or the timeout expires.
pl | A previously initialized PL control structure. | |
wait_list | A pointer to the list of the ques to wait on. The wait is treated as an OR. | |
toc | The timeout control structure. |
Initializes the list head of a doubly linked list to an empty list of the specified type.
pl | Pointer to the Priority Ques control structure to initialize. | |
type | The type blocking/waiting, see PL_type | |
nques | The number of ques to support |
0,Success | ||
ENOMEM,Insufficient | memory | |
ENOTSUP,Type | not supported. |
References _PL_que::head, _PL_que::id, L_init(), _PL_ctl::mactive, _PL_ctl::mcfg, _PL_ctl::nques, _PL_que::pl, PL_NLIST, _PL_ctl::ques, _PL_ctl::rw, and RW_init().
Referenced by FORK_create().
Adds a node to the tail of a PL managed que.
que | A PL managed que. | |
node | The node to add to que |
Adds a node to the head of a PL managed que.
que | A PL managed que. | |
node | The node to add to que |
Locates a pointer to the que specified by que_id.
pl | The priority list | |
que_id | The id of the que to locate |
Removes a node from the head of the highest priority non-empty que. If all eligible queues are empty, then PL_remove returns NULL immediately without blocking.
pl | A previously initialized PL control structure. | |
wait_list | A pointer to the list of the ques to wait on. The wait is treated as an OR. | |
que_id | Returned with the id of the que the node was removed from. |
Removes a node from the head of the highest priority non-empty que. If all eligible queues are empty, then PL_removeW waits indefinitely.
pl | A previously initialized PL control structure. | |
wait_list | A pointer to the list of the ques to wait on. The wait is treated as an OR. | |
que_id | Returned with the id of the que the node was removed from. |
If there is an error, the routine returns NULL as its node. There are only two reasons NULL will be returned:
1. Internal error 2. The list of eligible ques does not include any configured ques.
PL_node * PL_removeW_toc | ( | PL_ctl * | pl, | |
volatile const PL_list * | wait_list, | |||
int * | que_id, | |||
const TOC * | toc | |||
) |
Removes a node from the head of the highest priority non-empty que. If all eligible queues are empty, then PL_removeW_toc waits the specified until the timeout expires.
pl | A previously initialized PL control structure. | |
wait_list | A pointer to the list of the ques to wait on. The wait is treated as an OR. | |
que_id | Returned with the id of the que the node was removed from | |
toc | The timeout control. this maybe specified as TOC_FOREVER or TOC_NOWAIT. |
If there is an error, the routine returns NULL as its node. There are only three reasons NULL will be returned:
Issues a wake up call to the PL ques if any of ques in the wakeup list are currently active.
pl | A previously initialized PL control structure. | |
wakeup_list | The list of ques to issue the wakeup call on |