"G. Adam Stanislav" wrote:
> 
> On Mon, Dec 04, 2000 at 12:56:51PM +1000, Stephen McKay wrote:
> >Using pipes for temporary storage is still a crazy idea.  Pipes can be
> >smaller than 8K, depending on the flavour of Unix.
> 
> It was just a thought, and it did not work. :) Other flavors of Unix
> are not too important in this case: I'm writing a FreeBSD assembly
> language tutorial. Though I do discuss portability issues in it.
> I'm writing the tutorial, not because I'm the expert (I am, on assembly
> language, but not on Unix system calls--yet), but because, in my
> experience, it is the best way to learn.
> 
> > Use malloc() instead.
> 
> Unfortunately, that only works in C. :)

You are, of course, wrong here.  You can (and should) link your assembly
programs with the C library -- half the power of UNIX is in the libraries.
You can call all of the library functions just fine, as long as you under-
stand the calling conventions.

> I tried to figure out how to allocate memory, but, so far, was completely
> unsuccessful. I studied the source for the C malloc, but did not understand
> any of it. It uses something called mmap. I read the man page for mmap,
> and was totally frustrated. It talks about mapping files into memory,
> but I am not looking for files. It talks about passing an address to the
> function. I don't get it... What address? I want it to allocate memory
> for me and tell me its address. How am I supposed to know what address
> is available???

If you pass it NULL as the address, mmap will select an address for you.  
If you just want to allocate some memory, mmap /dev/null MAP_PRIVATE.   
You need to read the man pages and the malloc code more carefully.

-- 
            "Where am I, and what am I doing in this handbasket?"

Wes Peters                                                         Softweyr LLC
[EMAIL PROTECTED]                                           http://softweyr.com/


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to