struct xpt_task *task;
uint32_t added;
+ get_mplock();
task = (struct xpt_task *)context;
cur_entry = (struct async_node *)task->data1;
added = task->data2;
xpt_for_all_busses(xptsetasyncbusfunc, cur_entry);
}
+ rel_mplock();
kfree(task, M_CAMXPT);
}
struct periph_driver **p_drv;
int i;
+ get_mplock();
kprintf("CAM: finished configuring all busses (%d left)\n",
busses_to_config);
xsoftc.xpt_config_hook = NULL;
}
+ rel_mplock();
kfree(context, M_CAMXPT);
}
struct cd_softc *softc;
char tmpstr[80], tmpstr2[80];
+ get_mplock();
periph = (struct cam_periph *)context;
- if (cam_periph_acquire(periph) != CAM_REQ_CMP)
+ if (cam_periph_acquire(periph) != CAM_REQ_CMP) {
+ rel_mplock();
return;
+ }
softc = (struct cd_softc *)periph->softc;
ksnprintf(tmpstr, sizeof(tmpstr), "CAM CD unit %d", periph->unit_number);
if (softc->sysctl_tree == NULL) {
kprintf("cdsysctlinit: unable to allocate sysctl tree\n");
cam_periph_release(periph);
+ rel_mplock();
return;
}
"Minimum CDB size");
cam_periph_release(periph);
+ rel_mplock();
}
/*
struct da_softc *softc;
char tmpstr[80], tmpstr2[80];
+ get_mplock();
periph = (struct cam_periph *)context;
- if (cam_periph_acquire(periph) != CAM_REQ_CMP)
+ if (cam_periph_acquire(periph) != CAM_REQ_CMP) {
+ rel_mplock();
return;
+ }
softc = (struct da_softc *)periph->softc;
ksnprintf(tmpstr, sizeof(tmpstr), "CAM DA unit %d", periph->unit_number);
if (softc->sysctl_tree == NULL) {
kprintf("dasysctlinit: unable to allocate sysctl tree\n");
cam_periph_release(periph);
+ rel_mplock();
return;
}
"Minimum CDB size");
cam_periph_release(periph);
+ rel_mplock();
}
static int
struct lwplist *lwplist = context;
struct lwp *lp;
+ get_mplock();
while ((lp = LIST_FIRST(lwplist))) {
LIST_REMOVE(lp, u.lwp_reap_entry);
reaplwp(lp);
}
+ rel_mplock();
}
static void