On Friday 17 August 2001 01:29, Calin Culianu wrote:
> On Thu, 16 Aug 2001, Victor Yodaiken wrote:
> > On Thu, Aug 16, 2001 at 04:17:48PM -0400, Calin Culianu wrote:
> > > Notice that unlike the rtf_put() function in rt-linux, the read()
> > > system call actually was well enough written to work with void *. 
> > > It escapes me why the rt-linux developers chose char * as opposed
> > > to void * for their second argument to rtf_put().  All I have seen
> > > it to do to date was confuse novices.  Can anyone enlighten me on
> > > this fine point?
> >
> > Yes. The answer is "lack of thought" - rtf_put was quite early and
> > the early UNIX "read" was prior to the invention of "void *" so we
> > didn't think about it.
>
> Actually it's pure aesthetics.  char * works fine.

Except that you have to do an explicit typecast to keep the C compiler 
from warning and the C++ compiler from refusing to compile.


>  And you can say
> that it emphasizes that the third argument is number of bytes.

OTOH, just as sizeof() returns the size in bytes, it makes sense if every 
size argument in every C API uses units.


> The
> only potential theoretical issue is if mankind ever builds a machine
> that runs rt-linux and that somehow has sizeof(char *) != sizeof(void
> *).  :)

You know, that's not all that unrealistic. Note that some MCUs use 
different memory areas (and different addressing modes) for read-only and 
random access data. And "certain architectures" (read: x86) still support 
obsolete and cumbersome memory models where there can be multiple, 
differently sized kinds of pointers in a system at the same time.

Now, someone else will have to figure out how that would make a void * 
different from a char *. :-)


> In that case weird unexpected errors could occur.  Hopefully on that
> machine the compiler will be smart enough to copy the pointers
> correctly anyway :).

If the pointers would really be different, it's entirely possible that 
they one type can't be translated into the other, and possibly vice 
versa. (Think about near and far pointers; one can be converted into the 
other, but not the other way around - copying the buffer is the only way.)


Uuurgh!!! I have to go and **** or something - too many DOS memories are 
coming back! ;-)


//David Olofson --- Programmer, Reologica Instruments AB

.- M A I A -------------------------------------------------.
|      Multimedia Application Integration Architecture      |
| A Free/Open Source Plugin API for Professional Multimedia |
`----------------------------> http://www.linuxdj.com/maia -'
.- David Olofson -------------------------------------------.
| Audio Hacker - Open Source Advocate - Singer - Songwriter |
`--------------------------------------> [EMAIL PROTECTED] -'

-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to