Handle/mark/nuke unused arguments.
This commit is contained in:
parent
3df7a8ab08
commit
db228ec9b5
@ -595,18 +595,25 @@ static void sym_mfree(void *ptr, int size, char *name)
|
|||||||
* BUS handle. A reverse table (hashed) is maintained for virtual
|
* BUS handle. A reverse table (hashed) is maintained for virtual
|
||||||
* to BUS address translation.
|
* to BUS address translation.
|
||||||
*/
|
*/
|
||||||
static void getbaddrcb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
static void getbaddrcb(void *arg, bus_dma_segment_t *segs, int nseg __unused,
|
||||||
|
int error)
|
||||||
{
|
{
|
||||||
bus_addr_t *baddr;
|
bus_addr_t *baddr;
|
||||||
|
|
||||||
|
KASSERT(nseg == 1, ("%s: too many DMA segments (%d)", __func__, nseg));
|
||||||
|
|
||||||
baddr = (bus_addr_t *)arg;
|
baddr = (bus_addr_t *)arg;
|
||||||
*baddr = segs->ds_addr;
|
if (error)
|
||||||
|
*baddr = 0;
|
||||||
|
else
|
||||||
|
*baddr = segs->ds_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static m_addr_t ___dma_getp(m_pool_s *mp)
|
static m_addr_t ___dma_getp(m_pool_s *mp)
|
||||||
{
|
{
|
||||||
m_vtob_s *vbp;
|
m_vtob_s *vbp;
|
||||||
void *vaddr = NULL;
|
void *vaddr = NULL;
|
||||||
bus_addr_t baddr = 0;
|
bus_addr_t baddr;
|
||||||
|
|
||||||
vbp = __sym_calloc(&mp0, sizeof(*vbp), "VTOB");
|
vbp = __sym_calloc(&mp0, sizeof(*vbp), "VTOB");
|
||||||
if (!vbp)
|
if (!vbp)
|
||||||
@ -1164,6 +1171,14 @@ struct sym_tcb {
|
|||||||
u_short usrtags;
|
u_short usrtags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Assert some alignments required by the chip.
|
||||||
|
*/
|
||||||
|
CTASSERT(((offsetof(struct sym_reg, nc_sxfer) ^
|
||||||
|
offsetof(struct sym_tcb, head.sval)) &3) == 0);
|
||||||
|
CTASSERT(((offsetof(struct sym_reg, nc_scntl3) ^
|
||||||
|
offsetof(struct sym_tcb, head.wval)) &3) == 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global LCB HEADER.
|
* Global LCB HEADER.
|
||||||
*
|
*
|
||||||
@ -1265,9 +1280,9 @@ struct sym_pmc {
|
|||||||
* LUN(s) > 0.
|
* LUN(s) > 0.
|
||||||
*/
|
*/
|
||||||
#if SYM_CONF_MAX_LUN <= 1
|
#if SYM_CONF_MAX_LUN <= 1
|
||||||
#define sym_lp(np, tp, lun) (!lun) ? (tp)->lun0p : 0
|
#define sym_lp(tp, lun) (!lun) ? (tp)->lun0p : 0
|
||||||
#else
|
#else
|
||||||
#define sym_lp(np, tp, lun) \
|
#define sym_lp(tp, lun) \
|
||||||
(!lun) ? (tp)->lun0p : (tp)->lunmp ? (tp)->lunmp[(lun)] : 0
|
(!lun) ? (tp)->lun0p : (tp)->lunmp ? (tp)->lunmp[(lun)] : 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2222,11 +2237,11 @@ static void sym_int_par (hcb_p np, u_short sist);
|
|||||||
static void sym_int_ma (hcb_p np);
|
static void sym_int_ma (hcb_p np);
|
||||||
static int sym_dequeue_from_squeue(hcb_p np, int i, int target, int lun,
|
static int sym_dequeue_from_squeue(hcb_p np, int i, int target, int lun,
|
||||||
int task);
|
int task);
|
||||||
static void sym_sir_bad_scsi_status (hcb_p np, int num, ccb_p cp);
|
static void sym_sir_bad_scsi_status (hcb_p np, ccb_p cp);
|
||||||
static int sym_clear_tasks (hcb_p np, int status, int targ, int lun, int task);
|
static int sym_clear_tasks (hcb_p np, int status, int targ, int lun, int task);
|
||||||
static void sym_sir_task_recovery (hcb_p np, int num);
|
static void sym_sir_task_recovery (hcb_p np, int num);
|
||||||
static int sym_evaluate_dp (hcb_p np, ccb_p cp, u32 scr, int *ofs);
|
static int sym_evaluate_dp (hcb_p np, ccb_p cp, u32 scr, int *ofs);
|
||||||
static void sym_modify_dp (hcb_p np, tcb_p tp, ccb_p cp, int ofs);
|
static void sym_modify_dp(hcb_p np, ccb_p cp, int ofs);
|
||||||
static int sym_compute_residual (hcb_p np, ccb_p cp);
|
static int sym_compute_residual (hcb_p np, ccb_p cp);
|
||||||
static int sym_show_msg (u_char * msg);
|
static int sym_show_msg (u_char * msg);
|
||||||
static void sym_print_msg (ccb_p cp, char *label, u_char *msg);
|
static void sym_print_msg (ccb_p cp, char *label, u_char *msg);
|
||||||
@ -2260,7 +2275,7 @@ static int sym_fast_scatter_sg_physical(hcb_p np, ccb_p cp,
|
|||||||
static int sym_scatter_sg_physical (hcb_p np, ccb_p cp,
|
static int sym_scatter_sg_physical (hcb_p np, ccb_p cp,
|
||||||
bus_dma_segment_t *psegs, int nsegs);
|
bus_dma_segment_t *psegs, int nsegs);
|
||||||
static void sym_action2 (struct cam_sim *sim, union ccb *ccb);
|
static void sym_action2 (struct cam_sim *sim, union ccb *ccb);
|
||||||
static void sym_update_trans (hcb_p np, tcb_p tp, struct sym_trans *tip,
|
static void sym_update_trans(hcb_p np, struct sym_trans *tip,
|
||||||
struct ccb_trans_settings *cts);
|
struct ccb_trans_settings *cts);
|
||||||
static void sym_update_dflags(hcb_p np, u_char *flags,
|
static void sym_update_dflags(hcb_p np, u_char *flags,
|
||||||
struct ccb_trans_settings *cts);
|
struct ccb_trans_settings *cts);
|
||||||
@ -2355,6 +2370,7 @@ static void sym_enqueue_cam_ccb(ccb_p cp)
|
|||||||
|
|
||||||
static void sym_xpt_done(hcb_p np, union ccb *ccb, ccb_p cp)
|
static void sym_xpt_done(hcb_p np, union ccb *ccb, ccb_p cp)
|
||||||
{
|
{
|
||||||
|
|
||||||
SYM_LOCK_ASSERT(MA_OWNED);
|
SYM_LOCK_ASSERT(MA_OWNED);
|
||||||
|
|
||||||
if (ccb->ccb_h.status & CAM_SIM_QUEUED) {
|
if (ccb->ccb_h.status & CAM_SIM_QUEUED) {
|
||||||
@ -2368,6 +2384,7 @@ static void sym_xpt_done(hcb_p np, union ccb *ccb, ccb_p cp)
|
|||||||
|
|
||||||
static void sym_xpt_done2(hcb_p np, union ccb *ccb, int cam_status)
|
static void sym_xpt_done2(hcb_p np, union ccb *ccb, int cam_status)
|
||||||
{
|
{
|
||||||
|
|
||||||
SYM_LOCK_ASSERT(MA_OWNED);
|
SYM_LOCK_ASSERT(MA_OWNED);
|
||||||
|
|
||||||
sym_set_cam_status(ccb, cam_status);
|
sym_set_cam_status(ccb, cam_status);
|
||||||
@ -4659,7 +4676,7 @@ sym_flush_comp_queue(hcb_p np, int cam_status)
|
|||||||
* SCRATCHA is assumed to have been loaded with STARTPOS
|
* SCRATCHA is assumed to have been loaded with STARTPOS
|
||||||
* before the SCRIPTS called the C code.
|
* before the SCRIPTS called the C code.
|
||||||
*/
|
*/
|
||||||
static void sym_sir_bad_scsi_status(hcb_p np, int num, ccb_p cp)
|
static void sym_sir_bad_scsi_status(hcb_p np, ccb_p cp)
|
||||||
{
|
{
|
||||||
tcb_p tp = &np->target[cp->target];
|
tcb_p tp = &np->target[cp->target];
|
||||||
u32 startp;
|
u32 startp;
|
||||||
@ -5086,7 +5103,7 @@ static void sym_sir_task_recovery(hcb_p np, int num)
|
|||||||
* an IDENTIFY(lun) + ABORT MESSAGE.
|
* an IDENTIFY(lun) + ABORT MESSAGE.
|
||||||
*/
|
*/
|
||||||
if (lun != -1) {
|
if (lun != -1) {
|
||||||
lcb_p lp = sym_lp(np, tp, lun);
|
lcb_p lp = sym_lp(tp, lun);
|
||||||
lp->to_clear = 0; /* We donnot expect to fail here */
|
lp->to_clear = 0; /* We donnot expect to fail here */
|
||||||
np->abrt_msg[0] = M_IDENTIFY | lun;
|
np->abrt_msg[0] = M_IDENTIFY | lun;
|
||||||
np->abrt_msg[1] = M_ABORT;
|
np->abrt_msg[1] = M_ABORT;
|
||||||
@ -5379,7 +5396,7 @@ out_err:
|
|||||||
* Btw, we assume in that situation that such a message
|
* Btw, we assume in that situation that such a message
|
||||||
* is equivalent to a MODIFY DATA POINTER (offset=-1).
|
* is equivalent to a MODIFY DATA POINTER (offset=-1).
|
||||||
*/
|
*/
|
||||||
static void sym_modify_dp(hcb_p np, tcb_p tp, ccb_p cp, int ofs)
|
static void sym_modify_dp(hcb_p np, ccb_p cp, int ofs)
|
||||||
{
|
{
|
||||||
int dp_ofs = ofs;
|
int dp_ofs = ofs;
|
||||||
u32 dp_scr = INL (nc_temp);
|
u32 dp_scr = INL (nc_temp);
|
||||||
@ -6108,7 +6125,7 @@ static void sym_int_sir (hcb_p np)
|
|||||||
case SIR_BAD_SCSI_STATUS:
|
case SIR_BAD_SCSI_STATUS:
|
||||||
if (!cp)
|
if (!cp)
|
||||||
goto out;
|
goto out;
|
||||||
sym_sir_bad_scsi_status(np, num, cp);
|
sym_sir_bad_scsi_status(np, cp);
|
||||||
return;
|
return;
|
||||||
/*
|
/*
|
||||||
* We are asked by the SCRIPTS to prepare a
|
* We are asked by the SCRIPTS to prepare a
|
||||||
@ -6182,7 +6199,7 @@ static void sym_int_sir (hcb_p np)
|
|||||||
sym_print_msg(cp,"modify DP",np->msgin);
|
sym_print_msg(cp,"modify DP",np->msgin);
|
||||||
tmp = (np->msgin[3]<<24) + (np->msgin[4]<<16) +
|
tmp = (np->msgin[3]<<24) + (np->msgin[4]<<16) +
|
||||||
(np->msgin[5]<<8) + (np->msgin[6]);
|
(np->msgin[5]<<8) + (np->msgin[6]);
|
||||||
sym_modify_dp(np, tp, cp, tmp);
|
sym_modify_dp(np, cp, tmp);
|
||||||
return;
|
return;
|
||||||
case M_X_SYNC_REQ:
|
case M_X_SYNC_REQ:
|
||||||
sym_sync_nego(np, tp, cp);
|
sym_sync_nego(np, tp, cp);
|
||||||
@ -6207,7 +6224,7 @@ static void sym_int_sir (hcb_p np)
|
|||||||
case M_IGN_RESIDUE:
|
case M_IGN_RESIDUE:
|
||||||
if (DEBUG_FLAGS & DEBUG_POINTER)
|
if (DEBUG_FLAGS & DEBUG_POINTER)
|
||||||
sym_print_msg(cp,"ign wide residue", np->msgin);
|
sym_print_msg(cp,"ign wide residue", np->msgin);
|
||||||
sym_modify_dp(np, tp, cp, -1);
|
sym_modify_dp(np, cp, -1);
|
||||||
return;
|
return;
|
||||||
case M_REJECT:
|
case M_REJECT:
|
||||||
if (INB (HS_PRT) == HS_NEGOTIATE)
|
if (INB (HS_PRT) == HS_NEGOTIATE)
|
||||||
@ -6266,7 +6283,7 @@ out_stuck:
|
|||||||
static ccb_p sym_get_ccb (hcb_p np, u_char tn, u_char ln, u_char tag_order)
|
static ccb_p sym_get_ccb (hcb_p np, u_char tn, u_char ln, u_char tag_order)
|
||||||
{
|
{
|
||||||
tcb_p tp = &np->target[tn];
|
tcb_p tp = &np->target[tn];
|
||||||
lcb_p lp = sym_lp(np, tp, ln);
|
lcb_p lp = sym_lp(tp, ln);
|
||||||
u_short tag = NO_TAG;
|
u_short tag = NO_TAG;
|
||||||
SYM_QUEHEAD *qp;
|
SYM_QUEHEAD *qp;
|
||||||
ccb_p cp = (ccb_p) NULL;
|
ccb_p cp = (ccb_p) NULL;
|
||||||
@ -6389,10 +6406,10 @@ out_free:
|
|||||||
/*
|
/*
|
||||||
* Release one control block
|
* Release one control block
|
||||||
*/
|
*/
|
||||||
static void sym_free_ccb (hcb_p np, ccb_p cp)
|
static void sym_free_ccb(hcb_p np, ccb_p cp)
|
||||||
{
|
{
|
||||||
tcb_p tp = &np->target[cp->target];
|
tcb_p tp = &np->target[cp->target];
|
||||||
lcb_p lp = sym_lp(np, tp, cp->lun);
|
lcb_p lp = sym_lp(tp, cp->lun);
|
||||||
|
|
||||||
if (DEBUG_FLAGS & DEBUG_TAGS) {
|
if (DEBUG_FLAGS & DEBUG_TAGS) {
|
||||||
PRINT_LUN(np, cp->target, cp->lun);
|
PRINT_LUN(np, cp->target, cp->lun);
|
||||||
@ -6576,28 +6593,13 @@ static ccb_p sym_ccb_from_dsa(hcb_p np, u32 dsa)
|
|||||||
return cp;
|
return cp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Target control block initialisation.
|
|
||||||
* Nothing important to do at the moment.
|
|
||||||
*/
|
|
||||||
static void sym_init_tcb (hcb_p np, u_char tn)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Check some alignments required by the chip.
|
|
||||||
*/
|
|
||||||
assert (((offsetof(struct sym_reg, nc_sxfer) ^
|
|
||||||
offsetof(struct sym_tcb, head.sval)) &3) == 0);
|
|
||||||
assert (((offsetof(struct sym_reg, nc_scntl3) ^
|
|
||||||
offsetof(struct sym_tcb, head.wval)) &3) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lun control block allocation and initialization.
|
* Lun control block allocation and initialization.
|
||||||
*/
|
*/
|
||||||
static lcb_p sym_alloc_lcb (hcb_p np, u_char tn, u_char ln)
|
static lcb_p sym_alloc_lcb (hcb_p np, u_char tn, u_char ln)
|
||||||
{
|
{
|
||||||
tcb_p tp = &np->target[tn];
|
tcb_p tp = &np->target[tn];
|
||||||
lcb_p lp = sym_lp(np, tp, ln);
|
lcb_p lp = sym_lp(tp, ln);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Already done, just return.
|
* Already done, just return.
|
||||||
@ -6609,11 +6611,6 @@ static lcb_p sym_alloc_lcb (hcb_p np, u_char tn, u_char ln)
|
|||||||
*/
|
*/
|
||||||
assert(!sym_is_bit(tp->busy0_map, ln));
|
assert(!sym_is_bit(tp->busy0_map, ln));
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the target control block if not yet.
|
|
||||||
*/
|
|
||||||
sym_init_tcb (np, tn);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate the LCB bus address array.
|
* Allocate the LCB bus address array.
|
||||||
* Compute the bus address of this table.
|
* Compute the bus address of this table.
|
||||||
@ -6680,7 +6677,7 @@ fail:
|
|||||||
static void sym_alloc_lcb_tags (hcb_p np, u_char tn, u_char ln)
|
static void sym_alloc_lcb_tags (hcb_p np, u_char tn, u_char ln)
|
||||||
{
|
{
|
||||||
tcb_p tp = &np->target[tn];
|
tcb_p tp = &np->target[tn];
|
||||||
lcb_p lp = sym_lp(np, tp, ln);
|
lcb_p lp = sym_lp(tp, ln);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -7290,7 +7287,7 @@ static void sym_complete_ok (hcb_p np, ccb_p cp)
|
|||||||
*/
|
*/
|
||||||
csio = &cp->cam_ccb->csio;
|
csio = &cp->cam_ccb->csio;
|
||||||
tp = &np->target[cp->target];
|
tp = &np->target[cp->target];
|
||||||
lp = sym_lp(np, tp, cp->lun);
|
lp = sym_lp(tp, cp->lun);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assume device discovered on first success.
|
* Assume device discovered on first success.
|
||||||
@ -7489,7 +7486,7 @@ static void sym_action(struct cam_sim *sim, union ccb *ccb)
|
|||||||
* Retrieve the target and lun descriptors.
|
* Retrieve the target and lun descriptors.
|
||||||
*/
|
*/
|
||||||
tp = &np->target[ccb_h->target_id];
|
tp = &np->target[ccb_h->target_id];
|
||||||
lp = sym_lp(np, tp, ccb_h->target_lun);
|
lp = sym_lp(tp, ccb_h->target_lun);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Complete the 1st INQUIRY command with error
|
* Complete the 1st INQUIRY command with error
|
||||||
@ -7991,14 +7988,14 @@ static void sym_action2(struct cam_sim *sim, union ccb *ccb)
|
|||||||
* Update SPI transport settings in TARGET control block.
|
* Update SPI transport settings in TARGET control block.
|
||||||
* Update SCSI device settings in LUN control block.
|
* Update SCSI device settings in LUN control block.
|
||||||
*/
|
*/
|
||||||
lp = sym_lp(np, tp, ccb_h->target_lun);
|
lp = sym_lp(tp, ccb_h->target_lun);
|
||||||
if (cts->type == CTS_TYPE_CURRENT_SETTINGS) {
|
if (cts->type == CTS_TYPE_CURRENT_SETTINGS) {
|
||||||
sym_update_trans(np, tp, &tp->tinfo.goal, cts);
|
sym_update_trans(np, &tp->tinfo.goal, cts);
|
||||||
if (lp)
|
if (lp)
|
||||||
sym_update_dflags(np, &lp->current_flags, cts);
|
sym_update_dflags(np, &lp->current_flags, cts);
|
||||||
}
|
}
|
||||||
if (cts->type == CTS_TYPE_USER_SETTINGS) {
|
if (cts->type == CTS_TYPE_USER_SETTINGS) {
|
||||||
sym_update_trans(np, tp, &tp->tinfo.user, cts);
|
sym_update_trans(np, &tp->tinfo.user, cts);
|
||||||
if (lp)
|
if (lp)
|
||||||
sym_update_dflags(np, &lp->user_flags, cts);
|
sym_update_dflags(np, &lp->user_flags, cts);
|
||||||
}
|
}
|
||||||
@ -8008,7 +8005,7 @@ static void sym_action2(struct cam_sim *sim, union ccb *ccb)
|
|||||||
case XPT_GET_TRAN_SETTINGS:
|
case XPT_GET_TRAN_SETTINGS:
|
||||||
cts = &ccb->cts;
|
cts = &ccb->cts;
|
||||||
tp = &np->target[ccb_h->target_id];
|
tp = &np->target[ccb_h->target_id];
|
||||||
lp = sym_lp(np, tp, ccb_h->target_lun);
|
lp = sym_lp(tp, ccb_h->target_lun);
|
||||||
|
|
||||||
#define cts__scsi (&cts->proto_specific.scsi)
|
#define cts__scsi (&cts->proto_specific.scsi)
|
||||||
#define cts__spi (&cts->xport_specific.spi)
|
#define cts__spi (&cts->xport_specific.spi)
|
||||||
@ -8133,7 +8130,7 @@ static void sym_action2(struct cam_sim *sim, union ccb *ccb)
|
|||||||
* Asynchronous notification handler.
|
* Asynchronous notification handler.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
sym_async(void *cb_arg, u32 code, struct cam_path *path, void *arg)
|
sym_async(void *cb_arg, u32 code, struct cam_path *path, void *args __unused)
|
||||||
{
|
{
|
||||||
hcb_p np;
|
hcb_p np;
|
||||||
struct cam_sim *sim;
|
struct cam_sim *sim;
|
||||||
@ -8172,9 +8169,10 @@ sym_async(void *cb_arg, u32 code, struct cam_path *path, void *arg)
|
|||||||
/*
|
/*
|
||||||
* Update transfer settings of a target.
|
* Update transfer settings of a target.
|
||||||
*/
|
*/
|
||||||
static void sym_update_trans(hcb_p np, tcb_p tp, struct sym_trans *tip,
|
static void sym_update_trans(hcb_p np, struct sym_trans *tip,
|
||||||
struct ccb_trans_settings *cts)
|
struct ccb_trans_settings *cts)
|
||||||
{
|
{
|
||||||
|
|
||||||
SYM_LOCK_ASSERT(MA_OWNED);
|
SYM_LOCK_ASSERT(MA_OWNED);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -8251,6 +8249,7 @@ static void sym_update_trans(hcb_p np, tcb_p tp, struct sym_trans *tip,
|
|||||||
static void
|
static void
|
||||||
sym_update_dflags(hcb_p np, u_char *flags, struct ccb_trans_settings *cts)
|
sym_update_dflags(hcb_p np, u_char *flags, struct ccb_trans_settings *cts)
|
||||||
{
|
{
|
||||||
|
|
||||||
SYM_LOCK_ASSERT(MA_OWNED);
|
SYM_LOCK_ASSERT(MA_OWNED);
|
||||||
|
|
||||||
#define cts__scsi (&cts->proto_specific.scsi)
|
#define cts__scsi (&cts->proto_specific.scsi)
|
||||||
@ -8848,7 +8847,7 @@ static void sym_pci_free(hcb_p np)
|
|||||||
for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
|
for (target = 0; target < SYM_CONF_MAX_TARGET ; target++) {
|
||||||
tp = &np->target[target];
|
tp = &np->target[target];
|
||||||
for (lun = 0 ; lun < SYM_CONF_MAX_LUN ; lun++) {
|
for (lun = 0 ; lun < SYM_CONF_MAX_LUN ; lun++) {
|
||||||
lp = sym_lp(np, tp, lun);
|
lp = sym_lp(tp, lun);
|
||||||
if (!lp)
|
if (!lp)
|
||||||
continue;
|
continue;
|
||||||
if (lp->itlq_tbl)
|
if (lp->itlq_tbl)
|
||||||
@ -8967,6 +8966,7 @@ fail:
|
|||||||
*/
|
*/
|
||||||
static void sym_cam_free(hcb_p np)
|
static void sym_cam_free(hcb_p np)
|
||||||
{
|
{
|
||||||
|
|
||||||
SYM_LOCK_ASSERT(MA_NOTOWNED);
|
SYM_LOCK_ASSERT(MA_NOTOWNED);
|
||||||
|
|
||||||
if (np->intr) {
|
if (np->intr) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user