Oren Laadan wrote:

+/*
+ * Helpers to write(read) from(to) kernel space to(from) the checkpoint
+ * image file descriptor (similar to how a core-dump is performed).
+ *
+ *   cr_kwrite() - write a kernel-space buffer to the checkpoint image
+ *   cr_kread() - read from the checkpoint image to a kernel-space buffer
+ */
+
+int cr_kwrite(struct cr_ctx *ctx, void *addr, int count)
+{
+       struct file *file = ctx->file;
+       mm_segment_t fs;
+       ssize_t nwrite;
+       int nleft;
+
+       fs = get_fs();
+       set_fs(KERNEL_DS);
+       for (nleft = count; nleft; nleft -= nwrite) {
+               nwrite = file->f_op->write(file, addr, nleft, &file->f_pos);
+               if (nwrite < 0) {
+                       if (nwrite == -EAGAIN)
+                               nwrite = 0;
+                       else

set_fs(fs) here

+                               return nwrite;
+               }
+               addr += nwrite;
+       }
+       set_fs(fs);
+       ctx->total += count;
+       return 0;
+}
+
+int cr_kread(struct cr_ctx *ctx, void *addr, int count)
+{
+       struct file *file = ctx->file;
+       mm_segment_t fs;
+       ssize_t nread;
+       int nleft;
+
+       fs = get_fs();
+       set_fs(KERNEL_DS);
+       for (nleft = count; nleft; nleft -= nread) {
+               nread = file->f_op->read(file, addr, nleft, &file->f_pos);
+               if (nread <= 0) {
+                       if (nread == -EAGAIN) {
+                               nread = 0;
+                               continue;
+                       } else if (nread == 0)
+                               nread = -EPIPE;         /* unexecpted EOF */

set_fs(fs) here as well

+                       return nread;
+               }
+               addr += nread;
+       }
+       set_fs(fs);
+       ctx->total += count;
+       return 0;
+}
+

--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to