chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] using mmap files as strings?


From: Felix
Subject: Re: [Chicken-users] using mmap files as strings?
Date: Fri, 22 Oct 2010 06:20:01 -0400 (EDT)

From: Alan Post <address@hidden>
Subject: [Chicken-users] using mmap files as strings?
Date: Thu, 21 Oct 2010 15:01:10 -0600

> I have the following file:
> 
> <++> mmap.scm
> (use posix)
> (use 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)))
>   (write fd)
>   (newline)
>   (write size)
>   (newline)
>   (write mmap)
>   (newline)
>   (write buf)
>   (newline)
>   (write (pointer-s8-ref buf))
>   (newline)
>   (write (integer->char (pointer-s8-ref buf)))
>   (newline))
> <-->
> 
> Which opens itself as an mmap and reads the first byte.  The output
> is:
> 
> <++> csc -o mmap mmap.scm && ./mmap
> 3
> 458
> #<mmap>
> #<pointer 0x8818c000>
> 40
> #\(
> <-->
> 
> So far so good, that is what I would expect.  I'd like to work with
> an mmap buffer like a string.  Is it possible to create an object
> that will treat the mmap area as a string that I can run regular
> string operations on without copying the mmap buffer? 

I can't think of a way in the moment. Strings require a header-word,
and the data pointed to by a pointer doesn't have that header, so it
isn't possible to "sneak in" a pointer as a replacement of a string.

> I'm
> specifically interested in running regular expressions across the
> mmap space.

irregex provides a "chunk" based API, perhaps it is possible to
define chunks over the data represented by the mmap pointer.
Alex or Peter might be able to tell more about this.


cheers,
felix



reply via email to

[Prev in Thread] Current Thread [Next in Thread]