
Hi,
You don't have to write a kernel module (which would better be written in C), you can do everything in userspace and in Haskell with FUSE: https://en.wikipedia.org/wiki/Filesystem_in_Userspace It seems to already have Haskell bindings: https://hackage.haskell.org/package/HFuse-0.2.4.5/docs/System-Fuse.html
To implement the file system operations, you can use binary ( https://hackage.haskell.org/package/binary), Foreign.Ptr, Data.Bits, etc. You can write data on any real partition by using the associated block devices (e.g., /dev/sda1).
Sylvain
On 09/05/2016 20:50, Silent Leaf wrote:
Mostly all in the title.
I have a project of developing a personal filesystem, possibly at first virtual (the file(s) representing a virtual partition formatted with my filesystem, would be saved in a host filesys, eg ext4 or whatever), but
Thanks! FUSE seems a perfect way to do what I wanna do.
Hypothetically, what if I wanted to bypass the Haskell bindings, directly
use FUSE in C, but write most of the actual operations in Haskell?
AKA, is it possible to call haskell functions/programs *from* C code? And
have all individual calls to the Haskell parts be allowed to share private
data, rather than being independent, isolated calls?
It's just an idea, I figured since writing a fuse filesystem in C doesn't
seem too complicated (i found a tutorial, and it just looks like what the
Haskell bindings is proposing, except well in theory one has to write
everything in C) and i figured perhaps it'd be better/faster, possibly less
buggy (the Haskell bindings are tagged experimental, of which i couldn't
tell the true interpretation, but which doesn't seem terribly appealing at
first sight) to write the FUSE in C, *except* for, well most of the actual
"doing something" code, aka the FS operations, which would be written in
Haskell.
AKA, the final program would start with C, but under the hood use Haskell
for most of the meaningful code. This, of course, if such a thing is even
possible in the first place! And easily, needless to say. Considering for
that matter as I said that the Haskell parts should be able to save private
data of its own without having to "start over" the "situation analysis" for
each individual call to one of the filesystem operations.
Thanks a lot again!
Le lundi 9 mai 2016, Sylvain Henry
Can haskell do that kind of thing, aka writing data on a partition
Incidentally, if i wanted Linux to recognize the filesys, i've heard one has to write a module and put it in connection with the kernel or something. could haskell do that?
if that's a "no" somewhere for one of my questions, which parts can't be written in haskell (without horrible performances or code very very hard to write), and can they be written in C (or whatever) as foreign functions? which parts would that represent for the whole program?
Thanks a lot in advance!
PS: just in case, tips on sources of information on how to do any of the above will be extremely appreciated! (even if it's in, say C, for that matter, providing there's a way to translate the steps into a haskell
directly (without using a known filesys), etc? Is it at least more or less adapted for this task (not talking about performances, unless the consequences be a *really* slow filesys), aka doable, easily doable, relatively speaking (aka not worse than with another language)? program)
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners