[PATCH] Introduce sg_set_buf
authorHerbert Xu <herbert@gondor.apana.org.au>
Sat, 17 Sep 2005 04:41:40 +0000 (14:41 +1000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sun, 30 Oct 2005 00:14:39 +0000 (11:14 +1100)
sg_init_one is a nice tool for the block layer.  However, users
of struct scatterlist in other subsystems don't usually need the
DMA attributes.  For them it's a waste of time and space to
initialise the whole struct scatterlist structure.

Therefore this patch adds a new function sg_set_buf to initialise
a scatterlist without zeroing the DMA attributes.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
include/linux/scatterlist.h

index 7f717e95ae37703b2c1eb7c0ba642cb45ee754ef..66ff545552f71ebe11a9cefc373d98fdeedbf321 100644 (file)
@@ -1,14 +1,23 @@
 #ifndef _LINUX_SCATTERLIST_H
 #define _LINUX_SCATTERLIST_H
 
-static inline void sg_init_one(struct scatterlist *sg,
-                              u8 *buf, unsigned int buflen)
-{
-       memset(sg, 0, sizeof(*sg));
+#include <asm/scatterlist.h>
+#include <linux/mm.h>
+#include <linux/string.h>
 
+static inline void sg_set_buf(struct scatterlist *sg, void *buf,
+                             unsigned int buflen)
+{
        sg->page = virt_to_page(buf);
        sg->offset = offset_in_page(buf);
        sg->length = buflen;
 }
 
+static inline void sg_init_one(struct scatterlist *sg, void *buf,
+                              unsigned int buflen)
+{
+       memset(sg, 0, sizeof(*sg));
+       sg_set_buf(sg, buf, buflen);
+}
+
 #endif /* _LINUX_SCATTERLIST_H */