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

Re: [MiNT] Re[2]: subversion (svn)



Ingo Schmidt wrote:

Yes and it fails and since I am no expert I cant tell you exactly
whats going wrong. There seems to be a module called apr and that one
couldnt be properly configured or something.
Was the error about mmap() ?  :)

APR is the Apache Portable Runtime. Its a library designed to make efficient servers portable. I'm sure there are plenty of issues with getting this ported to MiNT since even though MiNT supports a few "unixish" conventions, almost none of the high performance stuff is really well supported.

The first one is mmap(), and it looks like APR uses it. I don't know if there is any work-around in the code to not use mmap() but mmap() is so standard that I wouldn't think so. The problem is that implementing mmap() in MiNT means you pretty much have to have an MMU doing virtual->physical memory mapping. Basically, a file gets "mapped" into memory and you get a pointer back to the memory area as if the whole file had been read in, which can be larger than physical memory would allow. The system will swap in the pages as you need them. The jury is out as to how efficient it is to depend incurring a page fault to load data in from disk, but it makes memory management really easy for the application programmer.

Anyway ... without a demand paged memory system in MiNT, the best you can do is emulate mmap() in mintlib by reading in the whole file and you can emulate some of the other features of mmap() like memory sharing and different protection modes with MiNT. You just won't ever be able to mmap() large files. I ran into the same problem porting some other stuff, for example RPM - RPM files can be pretty large and may not fit into the largest block of free RAM you have.

So maybe someone with more experience could give it a go. It would be
great to have svn since it is muich better than cvs.

The lack of virtual address space is killing us. I thought someone was working on it. I could maybe look at fiddling with mintlib to see about emulating it in userspace for people with lots of RAM and small files to mmap().

-- Evan