Other Alias
g_new_providerf, g_destroy_providerSYNOPSIS
In geom/geom.h Ft struct g_provider * Fn g_new_providerf struct g_geom *gp const char *fmt ... Ft void Fn g_destroy_provider struct g_provider *pp Ft void Fn g_error_provider struct g_provider *pp int errorDESCRIPTION
A GEOM provider is the front gate at which a geom offers service. A provider is ``a disk-like thing which appears in /dev '' - a logical disk in other words. All providers have three main properties: name, sectorsize and size.The Fn g_new_providerf function creates a new provider on given geom Fa gp . The name of the provider, which will appear as device in devfs(5), is created in a printf(3) -like way from the rest of the arguments. After creation, the caller has to set the provider's mediasize and sectorsize as well as other desired initializations, and then call Fn g_error_provider to reset the provider's error, which is initially set to Er ENXIO .
The Fn g_destroy_provider function destroys the given provider, cancels all related pending events and removes the corresponding devfs entry.
The Fn g_error_provider function is used to set the provider's error value. If set to a nonzero, all I/O requests will be denied, as well as increasing its access count will not be possible (error Fa error will be returned).
RESTRICTIONS/CONDITIONS
Fn g_new_provider :- The provider name should be unique, but this is not enforced by GEOM.
- If the name is not unique, one will end up with two (or more) files with the same name, which is a programmer error.
- The geom
- Fa gp has to have a Fa start method defined.
- The topology lock has to be held.
Fn g_destroy_provider :
- The provider must not have consumers attached.
- The access count has to be 0.
- The topology lock has to be held.
RETURN VALUES
The Fn g_new_providerf function returns a pointer to the newly created provider.EXAMPLES
Create an example provider, set its parameters and make it usable.struct g_provider * create_example_provider(struct g_geom *gp) { struct g_provider *pp; g_topology_lock(); pp = g_new_providerf(gp, "example_provider"); g_topology_unlock(); pp->mediasize = 65536; pp->sectorsize = 512; g_error_provider(pp, 0); return (pp); }