Exemple #1
0
static int segdev_init(void)
{
	struct segdev *segdev;
	struct segpriv *segpriv;
	int r;

	XSEGLOG("registering xseg types");
	r = xseg_register_type(&xseg_segdev);
	if (r)
		goto err0;

	r = xseg_register_peer(&xseg_peer_segdev);
	if (r)
		goto err1;
	
	segdev = segdev_get(0);
	r = IS_ERR(segdev) ? PTR_ERR(segdev) : 0;
	if (r)
		goto err2;

	r = -ENOMEM;
	segpriv = kmalloc(sizeof(struct segpriv), GFP_KERNEL);
	if (!segpriv)
		goto err3;

	segpriv->segno = 0;
	segdev->callback = segdev_callback;
	segdev->priv = segpriv;

	segdev_put(segdev);
	return 0;

err3:
	segdev_put(segdev);
err2:
	xseg_unregister_peer(xseg_peer_segdev.name);
err1:
	xseg_unregister_type(xseg_segdev.name);
err0:
	return r;
}
Exemple #2
0
void xseg_posix_init(void)
{
    xseg_register_type(&xseg_posix);
    xseg_register_peer(&xseg_peer_posix);
}
Exemple #3
0
void xseg_posixfd_init(void)
{
	xseg_register_peer(&xseg_peer_posixfd);
}