The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

g_new_consumer (9)
  • >> g_new_consumer (9) ( FreeBSD man: Ядро )

  • BSD mandoc
     

    NAME

    
    
    g_new_consumer
    
     
    g_destroy_consumer
    
     - GEOM consumers management
    
     
    

    SYNOPSIS

       #include <geom/geom.h>
    struct g_consumer * g_new_consumer (struct g_geom *gp);
    void g_destroy_consumer (struct g_consumer *cp);
     

    DESCRIPTION

    A GEOM consumer is the backdoor through which a geom connects to another GEOM provider and through which I/O requests are sent.

    The g_new_consumer ();
    function creates a new consumer on geom Fa gp . Before using the new consumer, it has to be attached to a provider with g_attach9 and opened with g_access9.

    The g_destroy_consumer ();
    function destroys the given consumer and cancels all related pending events. This function is the last stage of killing an unwanted consumer.  

    RESTRICTIONS/CONDITIONS

    g_new_consumer (:);

    The geom
    Fa gp has to have an orphan method defined.
    The topology lock has to be held.

    g_destroy_consumer (:);

    The consumer must not be attached to a provider.
    The access count has to be 0.
    The topology lock has to be held.

     

    RETURN VALUES

    The g_new_consumer ();
    function returns a pointer to the newly created consumer.  

    EXAMPLES

    Create consumer, attach it to given provider, gain read access and clean up.
    void
    some_function(struct g_geom *mygeom, struct g_provider *pp)
    {
            struct g_consumer *cp;
    
            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. */
            if (g_access(cp, 1, 0, 0) != 0) {
                    g_detach(cp);
                    g_destroy_consumer(cp);
                    return;
            }
    
            g_topology_unlock();
            /*
             * Read data from provider.
             */
            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);
    }
    
     

    SEE ALSO

    geom(4), DECLARE_GEOM_CLASS9, g_access9, g_attach9, g_bio9, g_data9, g_event9, g_geom9, g_provider9, g_provider_by_name9, g_wither_geom9  

    AUTHORS

    An -nosplit This manual page was written by An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    RESTRICTIONS/CONDITIONS
    RETURN VALUES
    EXAMPLES
    SEE ALSO
    AUTHORS


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру