[Speex-dev] Re: os_support.h, libc overrides

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Fri Dec 7 20:00:01 PST 2007


OK, I got the patch to applied doing some conversion.

	Jean-Marc

Jim Crichton a écrit :
> Jean-Marc,
> 
> Attached is a patch (to build 14264) to fix the TI DSP builds with the
> recent restructuring of libspeex.  The change adds a hook in
> os_support.h to allow the user to override some memory allocation and
> I/O functions.  A similar hook was present in misc.c, but was lost when
> that file was removed. Also, the size of the private memory allocation
> area has been reduced, to match improvements in Speex memory utilization.
> 
> In this patch, the memory override functions are implemented as inline
> functions, which increases the code size by about 0.5kB in the test
> builds. This could be reduced by moving the guts of the routines to a
> separate C file, and reducing the inline functions to just call those
> routines.  I have not had time to test that approach, but the present
> patch is sufficient to get the build working again.
> 
> Also, ti/user_misc.h should be replaced by the similar
> ti/os_support_custom.h file, which is also attached.
> 
> I remember your having some trouble reading my patches (from Tortoise
> SVN) before, so let me know if I need to format this differently for you
> to use it.  Sorry if this was holding you up.
> 
> - Jim
> 
> 
> ----- Original Message ----- From: "Jim Crichton"
> <jim.crichton at comcast.net>
> To: "Jean-Marc Valin" <jean-marc.valin at usherbrooke.ca>
> Cc: <speex-dev at xiph.org>
> Sent: Tuesday, November 06, 2007 1:35 PM
> Subject: os_support.h, libc overrides
> 
> 
>> Jean-Marc,
>>
>>> That reminds me that I've just moved lots of stuff around with the
>>> allocation functions. Can you check that the TI stuff still works with
>>> that? In the end, it'll probably make things easier for you now. For
>>> example, if you link statically, wideband should be automatically left
>>> out if unused. Also, all the libc stuff is now in os_support.h, which is
>>> less messy than misc.h/misc.c were.
>>
>> The TI C64x build produces bit-exact results with build 12825 (April
>> 2007, a bit before 1.2beta2).  The C54x and C55x builds did not work
>> because the manual allocation scheme was broken when misc.c was removed.
>>
>> The old override mechanism was:
>>
>> 1.  Define USER_MISC in config.h
>> 2.  In, misc.c, include user_misc.h if USER_MISC is defined
>> 3.  Put the allocation override code in user_misc.h.
>>
>> The result is that the override code is included in one source file
>> (misc.c), so there are no duplicate definitions.  How would you like
>> to see this implemented under the current structure?  Including the
>> override functions in os_support.h does not work unless the overrides
>> are also static inlines (otherwise duplicate definitions occur).  For
>> code size efficiency, it would be nice if these functions were not
>> required to be static inline.
>>
>> The function prototypes were removed from misc.h, so now they are
>> defined nowhere when overrides are defined.  There is no way around
>> that without some change to the source.
>>
>> What do you think?
>>
>> - Jim 


More information about the Speex-dev mailing list