Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _LINUX_SCATTERLIST_H |
2 | #define _LINUX_SCATTERLIST_H | |
3 | ||
d32311fe HX |
4 | #include <asm/scatterlist.h> |
5 | #include <linux/mm.h> | |
6 | #include <linux/string.h> | |
1da177e4 | 7 | |
03fd9cee | 8 | static inline void sg_set_buf(struct scatterlist *sg, const void *buf, |
d32311fe HX |
9 | unsigned int buflen) |
10 | { | |
1da177e4 LT |
11 | sg->page = virt_to_page(buf); |
12 | sg->offset = offset_in_page(buf); | |
13 | sg->length = buflen; | |
14 | } | |
15 | ||
03fd9cee | 16 | static inline void sg_init_one(struct scatterlist *sg, const void *buf, |
d32311fe HX |
17 | unsigned int buflen) |
18 | { | |
19 | memset(sg, 0, sizeof(*sg)); | |
20 | sg_set_buf(sg, buf, buflen); | |
21 | } | |
22 | ||
96b418c9 JA |
23 | #define sg_next(sg) ((sg) + 1) |
24 | #define sg_last(sg, nents) (&(sg[(nents) - 1])) | |
25 | ||
26 | /* | |
27 | * Loop over each sg element, following the pointer to a new list if necessary | |
28 | */ | |
29 | #define for_each_sg(sglist, sg, nr, __i) \ | |
30 | for (__i = 0, sg = (sglist); __i < (nr); __i++, sg = sg_next(sg)) | |
31 | ||
1da177e4 | 32 | #endif /* _LINUX_SCATTERLIST_H */ |