Difference between pages "r6:Function:ringbuffer new" and "r6:Function:ringbuffer put read element"

From liblfds.org
(Difference between pages)
Jump to navigation Jump to search
m (1 revision imported)
 
m (1 revision imported)
 
Line 1: Line 1:
==Source Files==
==Source Files==
  /src/ringbuffer/ringbuffer_new.c
  /src/ringbuffer/ringbuffer_get_and_put.c
  /inc/liblfds.h
  /inc/liblfds.h


==Prototype==
==Prototype==
  int ringbuffer_new( struct ringbuffer_state **rs, atom_t number_elements,
  void ringbuffer_put_read_element( struct ringbuffer_state *rs, struct freelist_element *fe );
                    int (*user_data_init_function)(void **user_data, void *user_state),
                    void *user_state );


==Parameters==
==Parameters==
''struct ringbuffer_state **rs''
''struct ringbuffer_state *rs''
: A pointer to a pointer onto which is allocated the state which represents this ringbuffer.  Set to NULL if ringbuffer creation fails.
: A ringbuffer state as allocated by ''[[r6:Function:ringbuffer_new|ringbuffer_new]]''.


''atom_t number_elements''
''struct freelist_element *fe''
: The number of elements in the ringbuffer.  If not all elements could be allocated (malloc() fails, or ''user_data_init_function'' returns an error), ringbuffer creation fails.
: A pointer to a freelist element as obtained from ''[[r6:Function:ringbuffer_get_read_element|ringbuffer_get_read_element]]''.
 
''int (*user_data_init_function)(void **user_data, void *user_state)''
: This is a callback function, which can be NULL.  Each element in the ringbuffer contains as its payload a single void pointer, which the user can set to any value (typically, it points to state the user has allocated).  When the ringbuffer is created, this callback function will be called for each element, where the address of the user data void pointer is provided to the user, for example, to have memory allocated onto it.  This function must return 1 on successful initialisation and 0 on failure.
 
''void *user_state''
: This is passed to each call of ''user_data_init_function'' as the second argument to that function.  The user is expected to use this to pass state information into his initialisation function.  For example, if to initialise ringbuffer elements, a lookup must occur into another data structure, that data structure can be made visible in the initialisation function by being passed in via this argument.


==Return Value==
==Return Value==
Returns 1 on success and 0 on failure, with ''*rs'' being set to NULL on failure.
No return value.


==Notes==
==Notes==
This function instantiates a ringbuffer.
Returns a read element to the ringbuffer.


==See Also==
==See Also==
* [[r6:API:Ringbuffer|Ringbuffer]]
* [[r6:API:Ringbuffer|Ringbuffer]]
* [[r6:Function:ringbuffer_delete|ringbuffer_delete]]
* [[r6:Function:ringbuffer_get_read_element|ringbuffer_get_read_element]]

Latest revision as of 14:07, 4 January 2015

Source Files

/src/ringbuffer/ringbuffer_get_and_put.c
/inc/liblfds.h

Prototype

void ringbuffer_put_read_element( struct ringbuffer_state *rs, struct freelist_element *fe );

Parameters

struct ringbuffer_state *rs

A ringbuffer state as allocated by ringbuffer_new.

struct freelist_element *fe

A pointer to a freelist element as obtained from ringbuffer_get_read_element.

Return Value

No return value.

Notes

Returns a read element to the ringbuffer.

See Also