Page MenuHomeFreeBSD

D45422.id139315.diff
No OneTemporary

D45422.id139315.diff

diff --git a/sys/sys/_iovec.h b/sys/sys/_iovec.h
--- a/sys/sys/_iovec.h
+++ b/sys/sys/_iovec.h
@@ -44,4 +44,33 @@
size_t iov_len; /* Length. */
};
+#ifdef _KERNEL
+#define IOVEC_INIT(iovp, base, len) \
+ *(iovp) = (struct iovec){ .iov_base = (base), .iov_len = (len) }
+
+/* String with length including NUL terminator */
+#define IOVEC_INIT_CSTR(iovp, str) do { \
+ void *__str = (str); \
+ IOVEC_INIT(iovp, __str, strlen(__str) + 1); \
+} while(0)
+
+/*
+ * Object with size from sizeof()
+ *
+ * NB: obj argument is unavoidably evaluted twice. This will be harmless
+ * in correct use (obj should be a bare object, not a pointer).
+ */
+#define IOVEC_INIT_OBJ(iovp, obj) \
+ IOVEC_INIT(iovp, &(obj), sizeof(obj))
+
+#define IOVEC_ADVANCE(iovp, amt) do { \
+ struct iovec *__iovp = (iovp); \
+ size_t __amt = (amt); \
+ KASSERT(__amt <= __iovp->iov_len, ("%s: amount %zu > iov_len \
+ %zu", __func__, __amt, __iovp->iov_len)); \
+ __iovp->iov_len -= __amt; \
+ __iovp->iov_base = (char *)__iovp->iov_base + __amt; \
+} while(0)
+#endif /* _KERNEL */
+
#endif /* !_SYS__IOVEC_H_ */

File Metadata

Mime Type
text/plain
Expires
Sat, Jul 4, 3:22 AM (10 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34648676
Default Alt Text
D45422.id139315.diff (1 KB)

Event Timeline