#include LIST(rb2_pool); rb2_telegram_buffer_t* rb2_pool_pop_irq (void){ ATOMIC rb2_telegram_buffer_t *tele; tele = list_first_entry( &rb2_pool, rb2_telegram_buffer_t, list ); if (tele){ list_remove( &(tele->list) ); memset( tele, 0x00, sizeof(rb2_telegram_buffer_t) ); }; return tele; } rb2_telegram_buffer_t* rb2_pool_pop (void){ ATOMIC rb2_telegram_buffer_t *tele; tele = rb2_pool_pop_irq(); if (!tele){ tele = malloc( sizeof(rb2_telegram_buffer_t) ); if (tele){ memset( tele, 0x00, sizeof(rb2_telegram_buffer_t) ); }; }; return tele; }; void rb2_pool_push (rb2_telegram_buffer_t *tele){ ATOMIC if (tele){ if (list_count( &rb2_pool ) < 12){ list_append( &(tele->list), &rb2_pool ); } else { free( tele ); }; }; };