Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / crypto / scatterwalk.h
index 4d56c92..e79925c 100644 (file)
@@ -34,14 +34,33 @@ static inline struct scatterlist *sg_next(struct scatterlist *sg)
 }
 
 static inline int scatterwalk_samebuf(struct scatter_walk *walk_in,
-                                     struct scatter_walk *walk_out,
-                                     void *src_p, void *dst_p)
+                                     struct scatter_walk *walk_out)
 {
        return walk_in->page == walk_out->page &&
-              walk_in->data == src_p && walk_out->data == dst_p;
+              walk_in->offset == walk_out->offset;
+}
+
+static inline unsigned int scatterwalk_clamp(struct scatter_walk *walk,
+                                            unsigned int nbytes)
+{
+       return nbytes > walk->len_this_page ? walk->len_this_page : nbytes;
+}
+
+static inline void scatterwalk_advance(struct scatter_walk *walk,
+                                      unsigned int nbytes)
+{
+       walk->data += nbytes;
+       walk->offset += nbytes;
+       walk->len_this_page -= nbytes;
+       walk->len_this_segment -= nbytes;
+}
+
+static inline unsigned int scatterwalk_aligned(struct scatter_walk *walk,
+                                              unsigned int alignmask)
+{
+       return !(walk->offset & alignmask);
 }
 
-void *scatterwalk_whichbuf(struct scatter_walk *walk, unsigned int nbytes, void *scratch);
 void scatterwalk_start(struct scatter_walk *walk, struct scatterlist *sg);
 int scatterwalk_copychunks(void *buf, struct scatter_walk *walk, size_t nbytes, int out);
 void scatterwalk_map(struct scatter_walk *walk, int out);