MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pktmbuf_write

Function pktmbuf_write

dpdk/app/test/test_cryptodev.h:116–151  ·  view source on GitHub ↗

* Write (spread) data from buffer to mbuf data * * @param mbuf * Destination mbuf * @param offset * Start offset in mbuf * @param len * Number of bytes to copy * @param buffer * Continuous source buffer */

Source from the content-addressed store, hash-verified

114 * Continuous source buffer
115 */
116static inline void
117pktmbuf_write(struct rte_mbuf *mbuf, int offset, int len, const uint8_t *buffer)
118{
119 int n = len;
120 int l;
121 struct rte_mbuf *m;
122 char *dst;
123
124 for (m = mbuf; (m != NULL) && (offset > m->data_len); m = m->next)
125 offset -= m->data_len;
126
127 l = m->data_len - offset;
128
129 /* copy data from first segment */
130 dst = rte_pktmbuf_mtod_offset(m, char *, offset);
131 if (len <= l) {
132 rte_memcpy(dst, buffer, len);
133 return;
134 }
135
136 rte_memcpy(dst, buffer, l);
137 buffer += l;
138 n -= l;
139
140 for (m = m->next; (m != NULL) && (n > 0); m = m->next) {
141 dst = rte_pktmbuf_mtod(m, char *);
142 l = m->data_len;
143 if (n < l) {
144 rte_memcpy(dst, buffer, n);
145 return;
146 }
147 rte_memcpy(dst, buffer, l);
148 buffer += l;
149 n -= l;
150 }
151}
152
153static inline uint8_t *
154pktmbuf_mtod_offset(struct rte_mbuf *mbuf, int offset) {

Calls 1

rte_memcpyFunction · 0.50

Tested by

no test coverage detected