[RFC 0/4] cell offloaded stdio

jschopp jschopp@austin.ibm.com
Fri Oct 20 19:32:00 GMT 2006


> You mean like sys/stdio.h which is already included?

I need to think this through some more.  The goal is to get FILE* to be an int, and to 
have stdout, stderr, and stdin all initialized with 1, 2, & 3.  This instead of FILE* 
being a pointer to an __sFILE and stdout, stderr, and stdin all being pointers to real 
structures.

> I would have advised just adding a special spe_send function for I/O 
> which passes the FILE pointer in and does the magic on the other side. 
> This saves you having to edit each and every file if you decide to 
> change the mechanism.

I can't do that, as nice as it would be if I could.  The interface is already architected 
and can't be changed.  Besides which the real FILE pointer is in a totally different 
address space on the PowerPC part of the chip (in glibc).

> Remind me again why you are overriding all user-visible I/O functions 
> and not simply the underlying functions used internally by newlib (e.g. 
> __vfprintf_r which is used by the entire printf family of functions)? 
> For example, if a non stdio C function in newlib needs to do some I/O 
> internally for its purposes, it will call _xxxx_r routines which you 
> haven't overridden.

I did the user visible functions to save a branch (which are quite costly on the cell 
spe), because the user visible set maps better than the newlib internal set, and because I 
thought that the stdio C functions were the only users of the _xxx_r stdio functions.

If there are other users of the _xxx_r routines still existing I may need to override 
those referenced _xxx_r routines as well.  Right now everything I've tested works fine.

-Joel



More information about the Newlib mailing list