Esempio n. 1
0
int
cam_devq_init(struct cam_devq *devq, int devices, int openings)
{
	bzero(devq, sizeof(*devq));
	if (camq_init(&devq->alloc_queue, devices) != 0) {
		return (1);
	}
	if (camq_init(&devq->send_queue, devices) != 0) {
		camq_fini(&devq->alloc_queue);
		return (1);
	}
	devq->alloc_openings = openings;
	devq->alloc_active = 0;
	devq->send_openings = openings;
	devq->send_active = 0;	
	return (0);	
}
Esempio n. 2
0
int
cam_ccbq_init(struct cam_ccbq *ccbq, int openings)
{
	bzero(ccbq, sizeof(*ccbq));
	if (camq_init(&ccbq->queue, openings + (CAM_RL_VALUES - 1)) != 0)
		return (1);
	ccbq->devq_openings = openings;
	ccbq->dev_openings = openings;
	return (0);
}
Esempio n. 3
0
int
cam_ccbq_init(struct cam_ccbq *ccbq, int openings)
{
	bzero(ccbq, sizeof(*ccbq));
	if (camq_init(&ccbq->queue,
	    imax(64, 1 << fls(openings + openings / 2))) != 0)
		return (1);
	ccbq->total_openings = openings;
	ccbq->dev_openings = openings;
	return (0);
}
Esempio n. 4
0
int
cam_devq_init(struct cam_devq *devq, int devices, int openings)
{

	bzero(devq, sizeof(*devq));
	mtx_init(&devq->send_mtx, "CAM queue lock", NULL, MTX_DEF);
	if (camq_init(&devq->send_queue, devices) != 0)
		return (1);
	devq->send_openings = openings;
	devq->send_active = 0;
	return (0);
}
Esempio n. 5
0
struct camq *
camq_alloc(int size)
{
	struct camq *camq;

	camq = (struct camq *)malloc(sizeof(*camq), M_CAMQ, M_NOWAIT);
	if (camq != NULL) {
		if (camq_init(camq, size) != 0) {
			free(camq, M_CAMQ);
			camq = NULL;
		}
	}
	return (camq);
}