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, sec-
       torsize 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(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
       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_consumer(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	14.3		       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+14.3-RELEASE+and+Ports>

home | help