Messages in this thread Patch in this message | | | Subject | [RFC PATCH 4/6] relay: add relay_reserve_cpu() | From | Tom Zanussi <> | Date | Fri, 29 Jun 2007 22:24:12 -0500 |
| |
This patch adds the ability to explicitly specify the per-cpu buffer to reserve space in. Needed for early DTI tracing.
Signed-off-by: Tom Zanussi <zanussi@us.ibm.com> Signed-off-by: David Wilder <dwilder@us.ibm.com> --- relay.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
diff --git a/include/linux/relay.h b/include/linux/relay.h index 6caedef..37a7306 100644 --- a/include/linux/relay.h +++ b/include/linux/relay.h @@ -269,6 +269,39 @@ static inline void *relay_reserve(struct rchan *chan, size_t length) } /** + * relay_reserve_cpu - reserve slot in given cpu's channel buffer + * @chan: relay channel + * @length: number of bytes to reserve + * @cpu: cpu to log to + * + * Returns pointer to reserved slot, NULL if full. + * + * Reserves a slot in the given cpu's channel buffer. + * Does not protect the buffer at all - caller must provide + * appropriate synchronization. + * + * NOTE: this is almost certainly not the function you want - + * use relay_reserve() instead for normal logging. This version + * is specialized for things like early tracing. + */ +static inline void *relay_reserve_cpu(struct rchan *chan, size_t length, + unsigned int cpu) +{ + void *reserved; + struct rchan_buf *buf = chan->buf[cpu]; + + if (unlikely(buf->offset + length > buf->chan->subbuf_size)) { + length = relay_switch_subbuf(buf, length); + if (!length) + return NULL; + } + reserved = buf->data + buf->offset; + buf->offset += length; + + return reserved; +} + +/** * subbuf_start_reserve - reserve bytes at the start of a sub-buffer * @buf: relay channel buffer * @length: number of bytes to reserve
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |