Go to the source code of this file.
Defines | |
| #define | PR "txbuf: " | 
Functions | |
| tx_buffer * | txbuf_alloc (unsigned int writer_count, unsigned int frame_count, unsigned int bytes_per_frame) | 
| void | txbuf_free (struct tx_buffer *ring) | 
| ssize_t | txbuf_get (struct tx_buffer *ring, unsigned char *buffer, size_t bytes) | 
| static void | txbuf_update_full_frame_count (struct tx_buffer *ring) | 
| bool | txbuf_is_full (struct tx_buffer *ring, int writer_index) | 
| ssize_t | txbuf_put (struct tx_buffer *ring, int writer_index, struct frame_part frame_part, const char *buffer, size_t bytes, struct rtnrt_memcopy_desc *copy) | 
Definition in file most-txbuf.c.
| #define PR "txbuf: " | 
Prefix for printk() messages from this module.
Definition at line 48 of file most-txbuf.c.
| struct tx_buffer* txbuf_alloc | ( | unsigned int | writer_count, | |
| unsigned int | frame_count, | |||
| unsigned int | bytes_per_frame | |||
| ) | 
| writer_count | the number of writers | |
| frame_count | the number of frames that are in the ring buffer | |
| bytes_per_frame | the number of bytes needed per frame | 
Definition at line 54 of file most-txbuf.c.
References tx_buffer::buffer, tx_buffer::bytes_per_frame, tx_buffer::frame_count, tx_buffer::full_count, ker_malloc, tx_buffer::lock, PR, pr_txbuf_debug, tx_buffer::readptr, rtnrt_err, rtnrt_lock_init, tx_buffer::writeptr, and tx_buffer::writer_count.
| void txbuf_free | ( | struct tx_buffer * | ring | ) | 
Frees the ring buffer. Don't use ring after calling this function any more.
| ring | the ring buffer | 
Definition at line 107 of file most-txbuf.c.
References tx_buffer::buffer.
| ssize_t txbuf_get | ( | struct tx_buffer * | ring, | |
| unsigned char * | buffer, | |||
| size_t | bytes | |||
| ) | 
Reads element_count frames from the ring buffer.
| ring | the ring buffer | |
| buffer | the buffer to copy (usually a DMA buffer) | |
| bytes | the number of bytes that should be copied. If there are less than bytes elements in the ring, only the number of elements in the ring are copied | 
Definition at line 120 of file most-txbuf.c.
References tx_buffer::buffer, tx_buffer::bytes_per_frame, tx_buffer::frame_count, tx_buffer::full_count, tx_buffer::lock, PR, tx_buffer::readptr, rtnrt_err, rtnrt_lock_get_irqsave, and rtnrt_lock_put_irqrestore.
Referenced by most_sync_int_handler(), and most_sync_rt_interrupt_handler().
| static void txbuf_update_full_frame_count | ( | struct tx_buffer * | ring | ) |  [static] | 
        
Updates the full frame count
| ring | the ring buffer | 
Definition at line 181 of file most-txbuf.c.
References tx_buffer::bytes_per_frame, tx_buffer::frame_count, tx_buffer::full_count, tx_buffer::readptr, tx_buffer::writeptr, and tx_buffer::writer_count.
Referenced by txbuf_put().
Checks if the buffer is full for the specified writer.
| ring | the ring buffer | |
| writer_index | the index of the writer | 
Definition at line 200 of file most-txbuf.c.
References tx_buffer::bytes_per_frame, tx_buffer::frame_count, tx_buffer::readptr, and tx_buffer::writeptr.
Referenced by most_sync_write().
| ssize_t txbuf_put | ( | struct tx_buffer * | ring, | |
| int | writer_index, | |||
| struct frame_part | frame_part, | |||
| const char * | buffer, | |||
| size_t | bytes, | |||
| struct rtnrt_memcopy_desc * | copy | |||
| ) | 
Puts bytes bytes in the ring.
| ring | the ring buffer | |
| writer_index | the index of the writer that wants to put data in the buffer. The index is not checked! | |
| frame_part | the part of the frame the user is interested | |
| buffer | userspace buffer from which the data is copied. The function uses the copy function that checks if it is valid memory, no additional checks must be done before | |
| bytes | the number of bytes that are in the userspace buffer | |
| copy | the copy descriptor, see description of struct rtnrt_memcopy_desc. | 
Definition at line 216 of file most-txbuf.c.
References tx_buffer::buffer, tx_buffer::bytes_per_frame, frame_part::count, tx_buffer::frame_count, tx_buffer::lock, frame_part::offset, PR, pr_txbuf_debug, tx_buffer::readptr, rtnrt_copy, rtnrt_err, rtnrt_lock_get_irqsave, rtnrt_lock_put_irqrestore, txbuf_update_full_frame_count(), and tx_buffer::writeptr.
Referenced by most_sync_write().
 1.5.0