/* container for sequencer event (internal use) */ struct snd_seq_event_cell { union { struct snd_seq_event event; union __snd_seq_event ump;
}; struct snd_seq_pool *pool; /* used pool */ struct snd_seq_event_cell *next; /* next cell */
};
/* design note: the pool is a contiguous block of memory, if we dynamicly wanttoaddadditionalcellstothepoolbebetterstorethisinanother poolasweneedtoknowthebaseaddressofthepoolwhenreleasing
memory. */
struct snd_seq_pool { struct snd_seq_event_cell *ptr; /* pointer to first event chunk */ struct snd_seq_event_cell *free; /* pointer to the head of the free list */
int total_elements; /* pool size actually allocated */
atomic_t counter; /* cells free */
int size; /* pool size to be allocated */ int room; /* watermark for sleep/wakeup */
int closing;
/* statistics */ int max_used; int event_alloc_nopool; int event_alloc_failures; int event_alloc_success;
int snd_seq_event_dup(struct snd_seq_pool *pool, struct snd_seq_event *event, struct snd_seq_event_cell **cellp, int nonblock, struct file *file, struct mutex *mutexp);
/* return number of unused (free) cells */ staticinlineint snd_seq_unused_cells(struct snd_seq_pool *pool)
{ return pool ? pool->total_elements - atomic_read(&pool->counter) : 0;
}
/* return total number of allocated cells */ staticinlineint snd_seq_total_cells(struct snd_seq_pool *pool)
{ return pool ? pool->total_elements : 0;
}
/* init pool - allocate events */ int snd_seq_pool_init(struct snd_seq_pool *pool);
/* done pool - free events */ void snd_seq_pool_mark_closing(struct snd_seq_pool *pool); int snd_seq_pool_done(struct snd_seq_pool *pool);
/* create pool */ struct snd_seq_pool *snd_seq_pool_new(int poolsize);
/* remove pool */ int snd_seq_pool_delete(struct snd_seq_pool **pool);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.