[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] using mmap files as strings?
From: |
Alan Post |
Subject: |
Re: [Chicken-users] using mmap files as strings? |
Date: |
Sat, 23 Oct 2010 20:21:30 -0600 |
I've summarized this information and created an mmap example on the
wiki:
http://wiki.call-cc.org/manual/Unit%20posix#memory-mapped-io-example
I'm afraid to ask, for being told to do it myself, but the ability to
edit single docment sections rather than whole documents would be very
nice.
-Alan
On Sat, Oct 23, 2010 at 08:11:20PM -0500, Jim Ursetto wrote:
> On Sat, Oct 23, 2010 at 05:04, Peter Bex <address@hidden> wrote:
> > On Fri, Oct 22, 2010 at 05:58:02PM -0600, Alan Post wrote:
> >> This is excellent, I've learned a lot more about how all of this
> >> works together now.
> >>
> >> What method would I use to convert a pointer and a length to a
> >> string? Even though I'm copying the memory, how do I do it at
> >> all?
> >
> > Something like this:
> >
> > {
> > C_word *scheme_string;
> >
> > scheme_string = C_alloc(C_SIZEOF_STRING(the_length));
> > C_string(&scheme_string, the_length, the_pointer);
> > C_kontinue(the_continuation, scheme_string);
> > }
>
> I think this might be better:
>
> (let ((to (make-string len))
> (move-memory! from to len))
>
> Using your original example,
>
> (use posix lolevel)
>
> (let* ((fd (file-open "mmap.scm" (+ open/rdonly open/nonblock)))
> (size (file-size fd))
> (mmap (map-file-to-memory #f size prot/read (+ map/file map/shared)
> fd))
> (buf (memory-mapped-file-pointer mmap)))
> (let* ((len 10)
> (str (make-string len)))
> (move-memory! buf str len)
> (print str)))
>
> $ csi -script mmap.scm
> (use posix
>
> _______________________________________________
> Chicken-users mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/chicken-users
--
.i ko djuno fi le do sevzi
Re: [Chicken-users] using mmap files as strings?, F. Wittenberger, 2010/10/27
Re: [Chicken-users] using mmap files as strings?, Kon Lovett, 2010/10/27