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; }
void xseg_posix_init(void) { xseg_register_type(&xseg_posix); xseg_register_peer(&xseg_peer_posix); }
void xseg_posixfd_init(void) { xseg_register_peer(&xseg_peer_posixfd); }