|  |  
 |   |   
 NAME
 SYNOPSIS
 int
   DESCRIPTIONThe
     After attaching a consumer to a provider with
    g_attach(9),
    the
     RESTRICTIONS/CONDITIONSThe consumer has to be attached to a provider. The intended change must not result in a negative access count. No-operation is not permitted (dcr =
    dcw = dce =
     The provider's geom must have an access method defined (e.g., gp->access). The topology lock has to be held. RETURN VALUESThe  EXAMPLESCreate a consumer, attach it to a given provider, gain read access and read first sector. void
some_function(struct g_geom *mygeom, struct g_provider *pp)
{
	struct g_consumer *cp;
	void *ptr;
	int error;
	g_topology_assert();
	/* Create new consumer on 'mygeom' geom. */
	cp = g_new_consumer(mygeom);
	/* Attach newly created consumer to given provider. */
	if (g_attach(cp, pp) != 0) {
		g_destroy_consumer(cp);
		return;
	}
	/* Open provider for reading through our consumer. */
	error = g_access(cp, 1, 0, 0);
	if (error != 0) {
		printf("Cannot access provider: %s\n", error);
		g_detach(cp);
		g_destroy_consumer(cp);
		return;
	}
	/*
	 * Don't hold topology lock while reading.
	 */
	g_topology_unlock();
	ptr = g_read_data(cp, 0, pp->sectorsize, &error);
	if (ptr == NULL)
		printf("Error while reading: %d\n", error);
	/*
	 * Do something useful with data.
	 */
	g_topology_lock();
	/* Disconnect from provider (release access count). */
	g_access(cp, -1, 0, 0);
	/* Detach from provider. */
	g_detach(cp);
	/* Destroy consumer. */
	g_destroy_consumer(cp);
}ERRORSPossible errors: 
 Any other error that can be returned by the provider's access method. SEE ALSOgeom(4), DECLARE_GEOM_CLASS(9), g_attach(9), g_bio(9), g_consumer(9), g_data(9), g_event(9), g_geom(9), g_provider(9), g_provider_by_name(9), g_wither_geom(9) AUTHORSThis manual page was written by Pawel Jakub Dawidek <pjd@FreeBSD.org>. 
 
 |