DragonFly BSD
DragonFly kernel List (threaded) for 2003-07
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: just curious


From: Antonio Vargas <wind@xxxxxxxxxxxxxx>
Date: Mon, 21 Jul 2003 13:55:14 +0200

On Mon, Jul 21, 2003 at 11:30:40AM +0000, Gunther Nikl wrote:
> Peter da Silva <peter-200306@xxxxxxxxxxx> wrote:
> > Gunther Nikl  wrote:
> >>  In which way are the messages changed? Do you refer to ln_Type or some
> >>  private data in an extended message?
> > 
> > As I understand it the Dragonfly API allows for a message port to have any
> > Send() function it wants, so for intra-address-space calls there's no reason
> > to do anything but call the remote method directly or change a couple of
> > pointers to put the message on a queue and return EASYNC. That means you
> > could change the message (for example, adding more elements to a list)
> > before it's actually read.
> 
>   And such things happened with messages on AmigaOS? I fail to see any
>   benefit in doing so.
> 
>   Gunther

AmigaOS had no memory protection: any process could touch any memory.

This was great at the start because 68000 didn't have integrated MMU and
external ones were both expensive and slow.

It made sending messages easy: you get the message and attach it to the 
pending list of the message-port. When replying, you just tweak the
message header and attach it to the reply-port.

The message didn't have payload itself, it just had an opaque pointer to
the payload, so you could "transfer" any amount of data you needed
without overhead.

You were supposed to allocate memory with flag MEMF_PUBLIC if you wanted
to use it for communication or access it from interrupts, but usually
you didn't care because it always worked anyways.

AmigaOS was great :))))

Greets, Antonio.

-- 

1. Dado un programa, siempre tiene al menos un fallo.
2. Dadas varias lineas de codigo, siempre se pueden acortar a menos lineas.
3. Por induccion, todos los programas se pueden
   reducir a una linea que no funciona.



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