GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> LCBD / dev > lcbd / rhel4-32
#include <LCBD/LCBD_rst.h>
#include <LCBD/LCBD_cr.h>
#include <LCBD_p.h>
#include <LCBD/LCBD_msgs.h>
#include <PBS/L.ih>
#include <PBS/LI.ih>
#include <PBS/RW.ih>
#include <PBS/MBA.h>
#include <PBS/INT.ih>
Classes | |
struct | _LCBD_rst_err_maps |
Maps to take a result transfer/receive error/status value, into a standard message code. More... | |
Typedefs | |
typedef struct _LCBD_rst_err_maps | LCBD_rst_err_maps |
Typedef for struct _LCBD_rst_err_maps. | |
Functions | |
static unsigned int | fork (void *que, LCBD_xcb *xcb) |
Simple dispatch routine to use a FORK to a user callback. | |
static unsigned int | post (void *head, LCBD_xcb *xcb) |
Simple dispatch routine to post a result. | |
static unsigned int | wake (TASK_block_handle tbh, LCBD_xcb *xcb) |
Simple synchronization callback. | |
static unsigned int | retire (LCBD_rst_ccb *ccb, LCBD_xcb *xcb) |
Returns the LCB request descriptor FIFO resource. | |
static int | submit (LCBD lcb, LCBD_xcb *xcb) |
Attempts to gain access to the LCB request descriptor FIFO and submit the command request. | |
unsigned int | LCBD_rst_handler_create (LCBD lcb, int priority) |
Creates the result service task. | |
unsigned int | LCBD_rst_null_cb_set (LCBD lcb, LCBD_rst_null_cb cb, void *prm) |
Establish callback for handling null result descriptors. | |
LCBD_rst_null_cbp | LCBD_rst_null_cbp_get (LCBD lcb) |
Returns the callback routine for the null result descriptor handler plus its parameter. | |
unsigned int | LCBD_rst_que_install (LCBD lcb, FORK_que *que) |
Installs queue from fcb as the ISR -> task message queue for result traffic. | |
FORK_que * | LCBD_rst_que_get (LCBD lcb, int que_id) |
Returns a pointer to the result FORK que. This allows outside code to schedule work that is serialized with the event taking. | |
unsigned int | LCBD_rst_rcv_err_map (unsigned int err) |
Maps a receive error to a standard LCB message code. | |
unsigned int | LCBD_rst_xfr_err_map (unsigned int err) |
Maps a generalize result error to a standard LCB message code. | |
__inline unsigned short int | LCBD_cl_size (unsigned int nbytes) |
Computes the size needed for a command list of nbytes to protect it from the bridge chip hangs. See Command and Result Lists, General Principles. | |
__inline unsigned short int | LCBD_rl_size (unsigned int nbytes) |
Computes the size needed for a result list of nbytes to protect it from the bridge chip hangs. See Command and Result Lists, General Principles. | |
__inline LCBD_cl * | LCBD_cl_alloc (unsigned int nbytes) |
Allocates a DMA-safe LCBD command list for the specified number of bytes. See Command and Result Lists, General Principles. | |
__inline LCBD_cl * | LCBD_cl_alloc_unprotected (unsigned int nbytes) |
Allocates a correctly aligned but minimally-sized LCBD command list for the specified number of bytes. See Command and Result Lists, General Principles. | |
LCBD_cl * | LCBD_cl_alloc8 (unsigned int n8bytes) |
Allocates a DMA-safe LCBD command list consisting of n8bytes of command items. See Command and Result Lists, General Principles. | |
LCBD_cl * | LCBD_cl_alloc8_unprotected (unsigned int n8bytes) |
Allocates a correctly aligned but minimally-sized LCBD command list for the specified number of n8bytes command items. See Command and Result Lists, General Principles. | |
__inline LCBD_rl * | LCBD_rl_alloc (unsigned int nbytes) |
Allocates a DMA-safe LCBD result list for the specified number of bytes. See Command and Result Lists, General Principles. | |
__inline LCBD_rl * | LCBD_rl_alloc_unprotected (unsigned int nbytes) |
Allocates a correctly aligned but minimally-sized LCBD result list for the specified number of bytes. See Command and Result Lists, General Principles. | |
LCBD_rl * | LCBD_rl_alloc8 (unsigned int n8bytes) |
Allocates a DMA-safe LCBD result list consisting of n8bytes of result items. See Command and Result Lists, General Principles. | |
LCBD_rl * | LCBD_rl_alloc8_unprotected (unsigned int n8bytes) |
Allocates a correctly aligned but minimally-sized LCBD result list for the specified number of n8byte result items. See Command and Result Lists, General Principles. | |
LCBD_xcb * | LCBD_bind (const LCBD lcb, unsigned short int clLen, LCBD_cl *cl, unsigned short int rlLen, LCBD_rl *rl, LCBD_rst_cb cb, void *prm, void *user0, void *user1, void *user2, void *user3) |
Binds the XCB with everything needed to submit it to the LCB. | |
unsigned int | LCBD_qioW (LCBD lcb, unsigned short int clLen, LCBD_cl *cl, LCBD_rl *rl) |
A convenience routine to synchronously submit, execute and wait for the completion of the specified command list.. | |
unsigned int | LCBD_submit (LCBD_xcb *xcb) |
Submits the command request. | |
unsigned int | LCBD_submitW (LCBD_xcb *xcb) |
Submits the command request and waits for completion. | |
LCBD_xcb * | LCBD_fork_bind (LCBD lcb, unsigned short int clLen, LCBD_cl *cl, unsigned short int rlLen, LCBD_rl *rl, FORK_que *que, FORK_cb_rtn rtn, void *user0, void *user1, void *user2, void *user3) |
Completes a transaction block using the FORK dispatch routines as the synchronization mechanism. | |
LCBD_xcb * | LCBD_post_bind (LCBD lcb, unsigned short int clLen, LCBD_cl *cl, unsigned short int rlLen, LCBD_rl *rl, LCBD_post_head *head, void *user0, void *user1, void *user2, void *user3) |
Completes a transaction block that uses a queue as the synchronization mechanism. | |
unsigned int | LCBD_post_create (LCBD_post_head *head) |
Creates and initializes the head of the list that the LCBD_post routines use. | |
unsigned int | LCBD_post_destroy (LCBD_post_head *head) |
Destroys the head of the list created by LCBD_post_create. | |
LCBD_xcb * | LCBD_post_pendW (LCBD_post_head *head) |
Removes, with a wait, the next XCB posted to the indicated list head. | |
static __inline LCBD_xcb * | locate (unsigned int *rl) |
Given a result/response descriptor, locates the command request handle. | |
FORK_cb_status | lcbd_rst_handler (FORK_cb_prm parameter, FORK_msg_hdr *fork_msg) |
The main LCBD descriptor dispatching routine. | |
FORK_cb_status | lcbd_rst_flush_handler (FORK_cb_prm parameter, FORK_msg_hdr *fork_msg) |
The main LCBD descriptor dispatching routine. | |
Variables | |
static const LCBD_rst_err_maps | LCBD_Rst_Err_Maps |
Realization of the LCB result error to message code mapping arrays. |
static unsigned int fork | ( | void * | que, | |
LCBD_xcb * | xcb | |||
) | [static] |
Simple dispatch routine to use a FORK to a user callback.
0,indicating | to the dispatcher to continue processing |
que | The FORK que to post to | |
xcb | Pointer to the transaction control block |
References _LCBD_xcb_que::msg, _LCBD_xcb::que, _LCBD_xcb_sys::rsvd, and _LCBD_xcb::sys.
LCBD_xcb* LCBD_bind | ( | const LCBD | lcb, | |
unsigned short int | clLen, | |||
LCBD_cl * | cl, | |||
unsigned short int | rlLen, | |||
LCBD_rl * | rl, | |||
LCBD_rst_cb | cb, | |||
void * | prm, | |||
void * | user0, | |||
void * | user1, | |||
void * | user2, | |||
void * | user3 | |||
) |
Binds the XCB with everything needed to submit it to the LCB.
LCBD_bind_post
LCBD_bind_fork
lcb | The LCB driver handle | |
cl | The command list address | |
clLen | The length of the command items in units of 8-byte cells see LCBD__cl_len and LCBD__cl_dlen for help in calculating this value. | |
rl | The address of the result list | |
rlLen | The length of the result items in units of 8-byte cells see LCBD__rl_len and LCBD__rl_dlen for help in calculating this value. | |
cb | The callback routine | |
prm | The callback prameter | |
user0 | User parameter 0 | |
user1 | User parameter 1 | |
user2 | User parameter 2 | |
user3 | User parameter 3 |
References _LCBD_xcb_usr::cl, _LCBD_xcb_usr::clLen, _LCBD_xcb_sys::export, _LCBD_xcb_sys::lcb, LCB_REQUEST_LIST_ALIGN, LCB_REQUEST_LIST_MAX, LCBD_EXP_DSC_COMPOSE, _LCBD_xcb_sys::prm, _LCBD_rl::rl, _LCBD_xcb_usr::rl, _LCBD_xcb_usr::rlLen, _LCBD_xcb_sys::rtn, _LCBD_xcb::sys, _LCBD_xcb_usr::user, _LCBD_xcb::usr, and _LCBD_rl::xcb.
Referenced by LCBD_fork_bind(), and LCBD_post_bind().
__inline LCBD_cl* LCBD_cl_alloc | ( | unsigned int | nbytes | ) |
Allocates a DMA-safe LCBD command list for the specified number of bytes. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_cl | |
NULL,the | allocation failed |
nbytes | The number of bytes to allocate for the entire list |
typedef struct _RequestCsrStallFaults { LCB_cl_hdr hdr; // Command list header LCB_ci_csr csr; // Command item for CSR access LCB_ci_mark_time stall; // Command item a mark time command LCB_ci_faults faults; // Command item for FAULT register access } RequestCsrStallFaults; LCBD_cl *cl = LCBD_cl_alloc (sizeof (RequestCsrStallFaults));
References LCBD_CL_ALIGN, and LCBD_cl_size().
Referenced by LCBD_cl_alloc8().
LCBD_cl* LCBD_cl_alloc8 | ( | unsigned int | n8bytes | ) |
Allocates a DMA-safe LCBD command list consisting of n8bytes of command items. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_rl | |
NULL,the | allocation failed |
n8bytes | The number of 8 byte cells to allocate.for the command items only. |
LCBD_cl *cl; // Generic command list LCB_ci *ci; // Generic command item cl = LCBD_cl_alloc8 (n_8byte_cells); // Need @e n 8 byte cells ci = &cl->cl.ci; // Locate the first command item fill (ci...) // Start filling them
References LCBD_cl_alloc().
LCBD_cl* LCBD_cl_alloc8_unprotected | ( | unsigned int | n8bytes | ) |
Allocates a correctly aligned but minimally-sized LCBD command list for the specified number of n8bytes command items. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_rl | |
NULL,the | allocation failed |
n8bytes | The number of 8 byte cells to allocate.for the command items only. |
References LCBD_cl_alloc_unprotected().
__inline LCBD_cl* LCBD_cl_alloc_unprotected | ( | unsigned int | nbytes | ) |
Allocates a correctly aligned but minimally-sized LCBD command list for the specified number of bytes. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_cl | |
NULL,the | allocation failed |
nbytes | The number of bytes to allocate for the entire list |
References LCBD_CL_ALIGN.
Referenced by LCBD_cl_alloc8_unprotected().
__inline unsigned short int LCBD_cl_size | ( | unsigned int | nbytes | ) |
Computes the size needed for a command list of nbytes to protect it from the bridge chip hangs. See Command and Result Lists, General Principles.
nbytes | The active size, in bytes, of the command list. |
References LCBD_CL_SIZE.
Referenced by LCBD_cl_alloc().
LCBD_xcb* LCBD_fork_bind | ( | LCBD | lcb, | |
unsigned short int | clLen, | |||
LCBD_cl * | cl, | |||
unsigned short int | rlLen, | |||
LCBD_rl * | rl, | |||
FORK_que * | que, | |||
FORK_cb_rtn | rtn, | |||
void * | user0, | |||
void * | user1, | |||
void * | user2, | |||
void * | user3 | |||
) |
Completes a transaction block using the FORK dispatch routines as the synchronization mechanism.
LCBD_bind_post
LCBD_bind_fork
lcb | Pointer to private LCBD structure | |
clLen | The length of the command list in units of 8-byte cells, see LCBD__cl_len and LCBD__cl_dlen for help in calculating this value. | |
cl | The command list | |
rlLen | The length of the result list in units of 8-byte cells, see LCBD__cl_len and LCBD__cl_dlen for help in calculating this value. | |
rl | The result list | |
*que | The target FORK que | |
rtn | The FORK dispatch routine | |
user0 | User parameter 0 | |
user1 | User parameter 1 | |
user2 | User parameter 2 | |
user3 | User parameter 3 |
References fork(), LCBD_bind(), _LCBD_xcb_sys::rsvd, _LCBD_xcb::sys, and _LCBD_rl::xcb.
LCBD_xcb* LCBD_post_bind | ( | LCBD | lcb, | |
unsigned short int | clLen, | |||
LCBD_cl * | cl, | |||
unsigned short int | rlLen, | |||
LCBD_rl * | rl, | |||
LCBD_post_head * | head, | |||
void * | user0, | |||
void * | user1, | |||
void * | user2, | |||
void * | user3 | |||
) |
Completes a transaction block that uses a queue as the synchronization mechanism.
lcb | Pointer to private LCBD structure | |
clLen | The length of the command items in units of 8-byte cells | |
cl | The command list | |
rlLen | The length of the result items in units of 8-byte cells | |
rl | The result list | |
*head | The target list head | |
user0 | User parameter 0 | |
user1 | User parameter 1 | |
user2 | User parameter 2 | |
user3 | User parameter 3 |
References LCBD_bind(), and post().
unsigned int LCBD_post_create | ( | LCBD_post_head * | head | ) |
Creates and initializes the head of the list that the LCBD_post routines use.
head | The list head to initialize |
unsigned int LCBD_post_destroy | ( | LCBD_post_head * | head | ) |
Destroys the head of the list created by LCBD_post_create.
head | The list head to destroy |
LCBD_xcb* LCBD_post_pendW | ( | LCBD_post_head * | head | ) |
Removes, with a wait, the next XCB posted to the indicated list head.
head | The list head to remove from |
A convenience routine to synchronously submit, execute and wait for the completion of the specified command list..
LCBD_CLTOOBIG,the | command/request list was too big for the LCB too handle | |
LCBD_CLMISALN,the | command/request list was not properly aligned. |
LCBD_bind_post
LCBD_bind_fork
lcb | Pointer to private LCBD structure | |
clLen | The length of the command items in units of 8-byte cells see LCBD__cl_len and LCBD__cl_dlen for help in calculating this value. | |
cl | The command list | |
rl | The result list |
References _LCBD_xcb_sys::export, _LCBD_xcb_sys::lcb, LCB_REQUEST_LIST_ALIGN, LCB_REQUEST_LIST_MAX, LCBD_submit(), _LCBD_xcb_sys::prm, _LCBD_rl::rl, _LCBD_xcb_sys::rtn, _LCBD_xcb::sys, wake(), and _LCBD_rl::xcb.
Referenced by LCBC_cmd_xmit(), and LCBC_cmdr_xmit().
__inline LCBD_rl* LCBD_rl_alloc | ( | unsigned int | nbytes | ) |
Allocates a DMA-safe LCBD result list for the specified number of bytes. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_rl | |
NULL,the | allocation failed |
nbytes | The number of bytes to allocate for the entire list |
typedef struct _ResultCsrStallFaults { LCBD_xcb xcb; // Include the transaction control block LCB_rl_hdr hdr; // Result list header LCB_ri_csr csr; // Result item for CSR access LCB_ri_mark_time stall; // Result item a mark time command LCB_ri_faults faults; // Result list for FAULT register access } ResultCsrStallFaults; LCBC_rl *rl = LCBD_rl_alloc (sizeof (ResultCsrStallFaults);
References LCBD_RL_ALIGN, and LCBD_rl_size().
Referenced by LCBD_rl_alloc8().
LCBD_rl* LCBD_rl_alloc8 | ( | unsigned int | n8bytes | ) |
Allocates a DMA-safe LCBD result list consisting of n8bytes of result items. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_rl | |
NULL,the | allocation failed |
n8bytes | The number of 8 byte cells to allocate.for the result items only. |
LCBD_rl *rl; // Generic result list LCB_ri *ri; // Generic result item rl = LCBD_rl_alloc8 (n_8byte_cells); // Need @e n 8 byte cells ri = &rl->rl.ri; // Locate the first command item fill (ri...) // Start filling them
References LCBD_rl_alloc().
LCBD_rl* LCBD_rl_alloc8_unprotected | ( | unsigned int | n8bytes | ) |
Allocates a correctly aligned but minimally-sized LCBD result list for the specified number of n8byte result items. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_rl | |
NULL,the | allocation failed |
n8bytes | The number of 8 byte cells to allocate.for the result items only. |
References LCBD_rl_alloc_unprotected().
__inline LCBD_rl* LCBD_rl_alloc_unprotected | ( | unsigned int | nbytes | ) |
Allocates a correctly aligned but minimally-sized LCBD result list for the specified number of bytes. See Command and Result Lists, General Principles.
Non-NULL,a | pointer to the an LCBD_rl | |
NULL,the | allocation failed |
nbytes | The number of bytes to allocate for the entire list |
References LCBD_RL_ALIGN.
Referenced by LCBD_rl_alloc8_unprotected().
__inline unsigned short int LCBD_rl_size | ( | unsigned int | nbytes | ) |
Computes the size needed for a result list of nbytes to protect it from the bridge chip hangs. See Command and Result Lists, General Principles.
nbytes | The active size, in bytes, of the result list. |
References LCBD_RL_SIZE.
Referenced by LCBD_rl_alloc().
FORK_cb_status lcbd_rst_flush_handler | ( | FORK_cb_prm | parameter, | |
FORK_msg_hdr * | fork_msg | |||
) |
The main LCBD descriptor dispatching routine.
parameter | lcb Pointer to private LCBD structure | |
fork_msg | FORK system message |
References LCB_RST_ERR_XFR_IN_UNDEFINED_7, _LCBD_xcb_sys::prm, _LCBD_xcb_usr::rd, _LCBD_xcb_sys::rtn, _LCBD_xcb::sys, _LCB_rst_dsc::ui, and _LCBD_xcb::usr.
Referenced by handle_clks().
FORK_cb_status lcbd_rst_handler | ( | FORK_cb_prm | parameter, | |
FORK_msg_hdr * | fork_msg | |||
) |
The main LCBD descriptor dispatching routine.
parameter | lcb Pointer to private LCBD structure | |
fork_msg | FORK system message |
References _LCB_rst_dsc::bf, _LCB_rst_dsc::bfd, _LCBD_rst_ucb::ccb, _LCBD_stats_rst::cnts, _LCB_rst_dsc_bfd::dir, _LCB_prb::irq, LCB_PCI_IRQ_M_ENABLE_RESULT, LCB_RST_DSC_M_ADR, LCB_RST_ERR_XFR_OUT_Q_EMPTY, LCBD__pciLoad32(), LCBD__pciStore32(), LCBD_RST_FATE_M_NO_MORE, LCBD_RST_FATE_M_NO_REARM, locate(), msr_clr(), msr_get(), msr_put(), _LCBD_rst_ucb::null, _LCBD_stats_rst::null, _LCBD_xcb_sys::prm, _LCBD_rst_null_cbp::prm, _LCBD_xcb_usr::rd, _LCBD_rst_msg::rd, _LCB_prb::result_queue, retire(), _LCBD_xcb_sys::rtn, _LCBD_rst_null_cbp::rtn, _LCBD_stats_rst::seq, _LCBD_xcb::sys, _LCB_rst_dsc::ui, _LCBD_xcb::usr, and _LCB_rst_dsc_bf::xstatus.
Referenced by lcbd_isr().
unsigned int LCBD_rst_handler_create | ( | LCBD | lcb, | |
int | priority | |||
) |
Creates the result service task.
lcb | The LCBD driver handle | |
priority | The priority of the task. If specified as 0, a default value is used. |
References lcbd_create_handler(), and LCBD_RST_K_DEFAULT_PRIORITY.
unsigned int LCBD_rst_null_cb_set | ( | LCBD | lcb, | |
LCBD_rst_null_cb | cb, | |||
void * | prm | |||
) |
Establish callback for handling null result descriptors.
LCBD_OK |
lcb | The LCB driver handle | |
cb | The LCB null result descriptor handler | |
prm | The LCB null result descriptor parameter |
LCBD_rst_null_cbp LCBD_rst_null_cbp_get | ( | LCBD | lcb | ) |
Returns the callback routine for the null result descriptor handler plus its parameter.
lcb | The LCB driver handle |
FORK_que * LCBD_rst_que_get | ( | LCBD | lcb, | |
int | que_id | |||
) |
Returns a pointer to the result FORK que. This allows outside code to schedule work that is serialized with the event taking.
lcb | Pointer to private LCBD structure | |
que_id | The ID of the que to get. Currently LCBD is configured with only one que (que_id = 0), but a future enhancement may allow LCBD to be configured with a priority que. |
unsigned int LCBD_rst_que_install | ( | LCBD | lcb, | |
FORK_que * | que | |||
) |
Installs queue from fcb as the ISR -> task message queue for result traffic.
lcb | Pointer to private LCBD structure | |
que | The FORK que to use |
LCBD_OK,on | success; currently there is no failure mode |
TASK_attr attributes; // Fill out the task attribute information attributes.options = 0; attributes.stack_addr = 0; attributes.stack_size = 0; attributes.name = "tLCBDresult"; attributes.priority = 60; // Allocate enough memory to support the FORK task fcb = (FORK_fcb *)MBA_alloc(FORK_fcb_sizeof(1)); // Create FORK queue status = FORK_create(fcb, // fork control block &attributes, // use task attributes NULL, // default callback lcb, // callback parm NULL, // timeout callback parm TOC_FOREVER, // timeout 1, // define a single que NULL, // No queue configuration 0, // No system messages NULL, // No system messages 0); // No system messages // Locate the que to use and install it que = FORK_que_get (0); status = LCBD_rst_que_install (lcb, que);
References LCBD_OK.
unsigned int LCBD_rst_rcv_err_map | ( | unsigned int | err | ) |
Maps a receive error to a standard LCB message code.
err | The receive error to map |
References _LCBD_rst_err_maps::rcv.
Referenced by check(), LCBC_cmd_xmit(), and LCBC_cmdr_xmit().
unsigned int LCBD_rst_xfr_err_map | ( | unsigned int | err | ) |
Maps a generalize result error to a standard LCB message code.
err | The result transfer error code. |
References _LCBD_rst_err_maps::xfr.
Referenced by check().
unsigned int LCBD_submit | ( | LCBD_xcb * | xcb | ) |
Submits the command request.
xcb | The completely bound transaction control block |
References _LCBD_xcb_sys::lcb, LCBD_OK, LCBD_STATE_ONLINE, LCBD_STATS_RST_TX_PENDED, LCBD_STATS_RST_TX_POSTED, _LCBD_xcb_que::node, _LCBD_xcb::que, submit(), and _LCBD_xcb::sys.
Referenced by LCBD_qioW(), and LCBD_submitW().
unsigned int LCBD_submitW | ( | LCBD_xcb * | xcb | ) |
Submits the command request and waits for completion.
xcb | The completely bound transaction control block |
References LCBD_submit(), _LCBD_xcb_sys::prm, _LCBD_xcb_sys::rtn, _LCBD_xcb::sys, and wake().
LCBD_xcb * locate | ( | unsigned int * | rl | ) | [static] |
Given a result/response descriptor, locates the command request handle.
rl | Pointer to the result list |
Referenced by lcbd_rst_handler().
static unsigned int post | ( | void * | head, | |
LCBD_xcb * | xcb | |||
) | [static] |
Simple dispatch routine to post a result.
0,indicating | to the dispatcher to continue processing |
head | The head of the list to post to | |
xcb | Pointer to the transaction control block |
References _LCBD_xcb_que::node, and _LCBD_xcb::que.
static unsigned int retire | ( | LCBD_rst_ccb * | ccb, | |
LCBD_xcb * | xcb | |||
) | [static] |
Returns the LCB request descriptor FIFO resource.
ccb | The LCB command control structure | |
xcb | The result descriptor to retire |
LCBD_SEQ_SUCCESS | << 2, if successfully retired | |
LCBD_SEQ_ORDER | << 2, if mismatch in what was expected to be retired and what is being retired. | |
LCBD_SEQ_UNKNOWN,<< | 2 unknown transaction found |
References _LCBD_xcb_sys::lcb, LCBD_OK, LCBD_SEQ_EMPTY, LCBD_SEQ_ORDER, LCBD_SEQ_SUCCESS, LCBD_SEQ_UNKNOWN, LCBD_STATE_ONLINE, LCBD_STATS_RST_TX_REMOVED, _LCBD_xcb_que::node, _LCBD_rst_ccb::pend, _LCBD_rst_ccb::post, post(), _LCBD_xcb::que, _LCBD_rst_ccb::reqCnt, _LCBD_rst_ccb::rw, submit(), and _LCBD_xcb::sys.
Referenced by lcbd_rst_handler().
static int submit | ( | LCBD | lcb, | |
LCBD_xcb * | xcb | |||
) | [static] |
Attempts to gain access to the LCB request descriptor FIFO and submit the command request.
LCBD_OK,For | success | |
-1,If | the driver fails to que because the LCB hardware is fully queued. |
lcb | The LCBD control structure | |
xcb | The transaction control block |
This routine must be called in an interlocked context.
References _LCBD_xcb_sys::export, LCB_REQUEST_QUEUE_FULL, LCBD__pciLoad32(), LCBD__pciSynchStore32(), and _LCBD_xcb::sys.
static unsigned int wake | ( | TASK_block_handle | tbh, | |
LCBD_xcb * | xcb | |||
) | [static] |
Simple synchronization callback.
Means | continue processing |
tbh | The task blocking handle | |
xcb | The completed transaction control block |