Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
G_PROVIDER(9)		    Kernel Developer's Manual		   G_PROVIDER(9)

NAME
     g_new_providerf,  g_destroy_provider,  g_error_provider  --  GEOM providers
     management

SYNOPSIS
     #include <geom/geom.h>

     struct g_provider *
     g_new_providerf(struct g_geom *gp, const char *fmt, ...);

     void
     g_destroy_provider(struct g_provider *pp);

     void
     g_error_provider(struct g_provider *pp, int error);

DESCRIPTION
     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  g_new_providerf()  function  creates	a new provider on given geom gp.
     The name of the provider, which will appear as device in devfs(4), is  cre-
     ated  in  a  printf(3)-like way from the rest of the arguments.  After cre-
     ation, the caller has to set the provider's mediasize  and  sectorsize,  as
     well  as other desired initializations, and then call g_error_provider() to
     reset the provider's error, which is initially set to ENXIO.

     The g_destroy_provider() function destroys the given provider, cancels  all
     related pending events and removes the corresponding devfs entry.

     The  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 error will be returned).

RESTRICTIONS/CONDITIONS
     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 gp has to have a start method defined.

	   The topology lock has to be held.

     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  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);
	   }

SEE ALSO
     geom(4), DECLARE_GEOM_CLASS(9), g_access(9), g_attach(9), g_bio(9),  g_con-
     sumer(9),	  g_data(9),   g_event(9),   g_geom(9),   g_provider_by_name(9),
     g_wither_geom(9)

AUTHORS
     This manual page was written by Pawel Jakub Dawidek <pjd@FreeBSD.org>.

FreeBSD ports 15.quarterly	January 16, 2004		   G_PROVIDER(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=g_provider&sektion=9&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help