MINOR: htx: add buf_room_for_htx_data() to help optimize buffer transfers
The small HTX overhead is enough to make the system perform multiple reads and unaligned memory copies. Here we provide a function whose purpose is to reduce the apparent room in a buffer by the size of the overhead for DATA blocks, which is the struct htx plus 2 blocks (one for DATA, one for the end of message so that small blocks can fit at once). The muxes using HTX will be encouraged to use this one instead of b_room() to compute the available buffer room and avoid filling their demux buf with more data than can fit at once into the HTX buffer.
This commit is contained in:
parent
8ae4235f94
commit
3906e22f6f
|
@ -524,6 +524,23 @@ static inline void htx_reset(struct htx *htx)
|
|||
htx->sl_off = -1;
|
||||
}
|
||||
|
||||
/* returns the available room for raw data in buffer <buf> once HTX overhead is
|
||||
* taken into account (one HTX header and two blocks). The purpose is to figure
|
||||
* the optimal fill length to avoid copies.
|
||||
*/
|
||||
static inline size_t buf_room_for_htx_data(const struct buffer *buf)
|
||||
{
|
||||
size_t room;
|
||||
|
||||
room = b_room(buf);
|
||||
if (room <= sizeof(struct htx) + 2 * sizeof(struct htx_blk))
|
||||
room = 0;
|
||||
else
|
||||
room -= sizeof(struct htx) + 2 * sizeof(struct htx_blk);
|
||||
|
||||
return room;
|
||||
}
|
||||
|
||||
/* Returns an HTX message using the buffer <buf>. */
|
||||
static inline struct htx *htx_from_buf(struct buffer *buf)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue